1. 基本安全措施

1.1系统账号清理

在Linux系统中,除了用户手动创建的以外,还包括随系统或程序安装过程中生成的其他大量用户,除了超级用户root外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也成为非登录用户。

常见的非登录用户有:bin、adm、lp、mail、nobody、mysql、dbus、ftp、gdm、haldaemon等。为了确保系统安全,这些用户的登录Shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人改动。

p_w_picpath

各种非登录用户中,还有一部分很多少用到,例如:news、uucp、games、gopher。这些用户可以视为冗余账号,直接删除即可。此外还有一些随程序安装的用户,在卸载后,未自动删除,应以手动进行解决。

对于长期不适用的账号,若无法确定是否应该删除,可以暂时将其锁定,如图所示:

p_w_picpath

如果服务器中的用户已经固定,不再需要更改,则可以将其/etc/passwd和/etc/shadow两个文件锁定,这样即使root用户进行更改,也会处于只读状态,方法如下:

p_w_picpath

在锁定状态下,将无法对添加删除账号、修改用户密码、用户登录Shell、宿主目录属性等操作,做一个测试:

p_w_picpath

1.2密码安全控制

在不安全的网络环境中,为了密码被猜出或者暴力破解的风险,用户应养成定期更改南湖设置在密码的习惯,避免长期使用同一个密码.管理员可以在服务器端限制用户密码的最大有效天数,对于密码已经过期的用户,登录时必须更改密码(普通用户密码还必须符合复杂性要求),否则无法登录系统锁定.

例如:为用户设置30天的有效期限(chage命令用于设置密码时限)。

p_w_picpath

/etc/login.defs文件适于用更改此文件后的用户;

Chage命令适用于更改/etc/login.defs文件前的用户。

在某些特殊情况下,如要求批量创建的用户初次登录时必须更改自设密码,根据安全规划统一要求所有用户更新密码等,可以管理员执行强制策略,以便用户下次登录必须更改密码。例如,执行以下操作可以强制用户lisi下次登录时必须更改密码:

p_w_picpath

以李四用户登录做测试:

p_w_picpath

1.3命令历史,自动注销

Shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险,只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文密码,则无意之中服务器的安全壁垒又多了一个缺口。

Bash环境中,历史命令的记录条数由变量HISTSIZE控制,默认1000条,通过修改全局文件/etc/profile中的HISTSIZE变量值,可以影响所有用户历史命令的记录情况。

p_w_picpath

除此之外,还可以修改用户宿主目录下的“~/.bash_logout”文件,此文件中的内容,在用户退出系统后,将清除指定内容。再此文件中添加情况历史命令的操作语句,这样,当用户退出已登录的Bash环境以后,所记录的历史命令也将自动清空。(若希望做操作前,应把“~/.bash_history”文件中的历史命令记录也情况掉,若不清空,则此文件“~/.bash_history”之前的命令不会清空)

p_w_picpath

Bash环境中,还可以设置一个闲置超时时间,当超过指定的时间内无任何操作时,将会注销此用户。(闲置变量TMOUT来控制,默认单位为秒)

p_w_picpath

注意:当正在执行程序代码编译,修改系统配置等耗时较长的操作时,应避免设置TMOUT变量,必要时可以执行“unset TMOUT”命令取消TMOUT变量设置。

2用户切换与提权

2.1su命令__切换用户

使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限,当然,切换时需要对目标用户的密码进行验证,(root à任意用户,不验证密码普通用户à其他用户,验证目标用户的密码)

p_w_picpath

上述命令中,选项“-”等同于“-l”或“--login”表示将使用目标用户的登录Shell环境,若缺少仅切换身份,不切换用户环境,对于切换为root用户的情况,可以省略。

默认情况任何用户均可以使用“su”命令,进行切换用户,那如何指定用户进行使用呢?可以借助pam_wheel认证模块,只允许个别用户使用!实现过程如下:

p_w_picpath

p_w_picpath

启用pam_wheel认证模块后,未被授权的用户将无法使用“su”命令,会警告“密码不正确”来处理,从而将切换用户的权限控制在小范围内。

p_w_picpath

使用su命令切换用户的操作将会记录在安全日志/var/log/secure文件中,可以根据需要进行查看。(tail -f /var/log/secure)

2.2 sudo命令__提升执行权限

通过su命令可以非常方便地为用户切换为另一个用户,但前提条件是必须知道目标用户的登录密码。例如,若要从jerry用户切换为root用户,必须知道root密码。对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险就增加一分。

使用速冻命令可以提升执行权限,既可以让普通用户拥有一部分管理权限,又不需要将root用户的密码告诉对方。但需要对其进行授权。

1)/etc/sudoers

此文件的默认权限为440,需要使用专门工具进行编辑(visudo),当使用vim编辑时,会提示“此文件为只读”,需使用“:wq!”进行保存。

授权记录格式:user MACHINE=COMMANDS

授权配置包括:用户、主机、命令三部分。

用户(user):授权的用户名,或采用“%组名”的形式。

计算机(MACHINE):使用此配置文件的主机名,主要是方便在多个主机间共用同一份(sudoers)文件,一般设置为“localhost”或者实际主机名。

命令(COMMANDS):允许执行的命令,但注意要输入命令的绝对路径,在多个命令之间使用“,”进行分隔。

典型的sudo配置记录中,每一行为一个有效授权记录配置。例如:若要授权用户jerry能够执行ifconfig命令来修改IP地址,而wheel组的用户不需要验证密码即可执行任何命令:

p_w_picpath

当授权的用户比较多,或命令较多的时候,可以采用集中定义的别名。用户名、主机名、命令都可以使用自定义别名(必须为大写),关键字为User_Alias、Host_Alias、 CMnd_Alias来设置。例如,以下操作通过别名方式添加授权记录,允许用户jerry、tom、tsengyia在主机smtp、pop中执行rpm、yum命令。

p_w_picpath

sudo配置记录的命令部分允许使用通配符“*”,取反符号“!”,当需要授权整个目录下的所有命令或取消其中的个别命令时特别有用。

p_w_picpath

默认情况下,通过sudo方式执行的操作并不会记录,需要在其文件中添加“Defaults logfile”配置项:

p_w_picpath

p_w_picpath

3.系统引导和登录控制

3.1 开关机安全控制

1)调整BIOS引导设置

A:将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。

B:禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为“Disable”

C:将BIOS的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改。

2)禁止Ctrol+Alt+Del快捷键重启

在其中RHEL6,Ctrol+Alt+Del快捷键的位置位于/etc/init/control-alt-delete.conf,注释掉里面的信息即可。

p_w_picpath

3)限制更改GRUB引导参数

从系统安全的角度来看,如果任何人都能够修改GRUB引导参数,对服务器本身显然是一个极大的威胁,为了加强对引导过程的安全控制,可以为GRUB设置一个密码。

使用“grub-md5-crypt”命令生成,表现为经过MD5算法加密的字符串,安全性更好。在grub。conf配置文件中,使用“password --md5”配置项来指定MD5加密的密码字符串。

PS:默认情况下RHEL6.5的字符模式下,不可以使用光标,安装gpm软件包,并启动服务“service gpm start”。当想要复制某些内容时,直接用光标选中内容并回车就复制成功了,然后单击右键即可粘贴内容。

当使用“grub-md5-crypt”命令生成MD5密文密码后,并不能直接复制到一个文件中,可以使用变量方式将其重定向到指定文件中。

步骤如下:

p_w_picpath

p_w_picpath

p_w_picpath

验证:

p_w_picpath

p_w_picpath

4.终端及登录控制

4.1减少开放的tty终端个数

对于远程维护的Linux服务器,六个tty终端实际上有点多余,在RHEL6.5系统中,控制终端配置文件如下:

/etc/init/tty.conf //控制tty终端的开启

/etc/init/start-ttys.conf //控制tty终端的开启数量、设备文件

/etc/sysconfig/init //控制tty终端的开启数量、终端颜色

通过修改//etc/init/start-ttys.conf和/etc/sysconfig/init ,可以减少开放终端数量,例如只希望开启tty4、tty5、tty6三个终端,修改后的操作如下:

p_w_picpath

4.2 禁止root用户登录

login程序会读取/etc/securetty文件,以决定root用户从哪些终端(安全终端)登录系统。若要禁止root用户从指定的终端登录,只需要注释或删除掉对应得行即可。

禁用root从tty5、tty6登录,修改/etc/securetty文件如下:

p_w_picpath

4.3禁止普通用户登录

当服务器正在进行备份或调试等运维工作时,可能不希望再有新的用户登录系统。这时候,只需要简单地创建/etc/nologin文件即可。login程序会检查/etc/nologin文件是否存在,如果存在则拒绝普通用户登录系统(root不受限制)

p_w_picpath

此方法实际上是利用了shutdown延迟关机的限制机制,只建议在服务器维护期间临时使用。当手动删除此文件或重启启动主机以后,即可恢复正常。