系统安全常规优化<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一:用户账户安全优化

     用户账号,是计算机使用者的身份凭证或标识,每一个要访问系统资源的人,必须凭借他的用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。

(一):基本安全措施

1:删除系统中不适用的用户和组(两种方式)

Linux系统中,一些程序在安装时会创建特有的用户和组,这些用户仅仅用于启动服务或运行进程,通常是不允许登录的,例如MySQLApachenamednews…….。当***者假冒这些用户或组身份时,往往不易被管理员发现。

根据当前服务器的具体应用情况,可以将不使用的用户和组删除。例如,很少使用的用户、组包括;newsuucpgamesgopher等。如果服务不需要启用named服务器,那么就可以删除named用户、named组;如果不需要提供FTP服务,就可以删除ftp用户、ftp………

如果不确定用户是否应该删除,也可以暂时禁用该用户。

(1)   使用带“-l”选项的passwd命令可以锁定(lock)用户,“-u”选项用于解锁

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

这里可以看到在/etc/shadow文件中zhangsan用户加了“!”表示用户被锁定

只需将“!”去掉即可解锁或者使用“-u

检测张三用户是否可以登录

(2)   直接修改shadow文件,在用户的密码字符串前加“!”

 2:确认程序或服务用户的登录Shell不可用

     主要检查服务器运行必须的系统服务或程序的运行账号,如:rpmftpapachedovecot等,将这些用户账号的登录shell修改为“/sbin/nologin,即可禁止登录。

将不需要使用终端的用户的登录Shell改为/sbin/nologin

Vim /etc/shadow 或者usermod –s /sbin/nologin  rpm

 3: 限制用户的密码有效期(最大天数)

       在不安全的网络环境中,为了降低密码被猜出或被暴力破解的风险,用户应养成定期更改密码的习惯,避免长期使用同一个密码。管理员可以在服务器端口限制用户密码的最大有效天数。

用户在登录服务器时,如果密码已经超过有效期,系统会要求重新设置一个新的密码,否则将无法登录。

 4:制定用户在下次登录时必须修改密码

或者将shadow文件中zhangsan用户LAST DAY域(冒号“:”分隔的第3列)的值设为0

  5:限制用户密码的最小长度

        red hat Linux 系统中,主要基于cracklib模块检查用户密码的复杂性和安全强度,增加minlen(最小长度)参数的值可以有效地提高密码的安全性。缺省情况下,minlen的默认值为10.,对应的用户口令最短长度约为6(需要注意,cacklib基于密码串长度和复杂性同时进行检查,因此minlen的值并不直接代表用户设置密码的长度)。

        例;通过PAM(可插拔认证模块)机制修改密码最小长度限制,强制提高用户自设密码时的安全强度(密码太短或太简单时将设置不成功)。

  6:限制记录命令历史的条数

         在使用Linux命令终端的过程中,shell的命令历史机制为用户提供了极大的便利。另一方面,命令历史记录也给用户带来了潜在的风险。只要获得用户的命令历史记录文件,那么该用户在服务器中的命令操作过程将会一览无余,假设该用户曾经在命令历史输入过明文的密码,则无意中又为服务器系统的安全性打开了一个缺口。

设置当前用户在注销登录后自动清空历史命令

  7:设置闲置超时自动注销终端

         在使用bash终端时,可以设置一个TMOUT变量,当超过指定的时间(默认单位为秒)没有输入即自动注销终端。设置恰当的终端闲置超时时间,可以有效的避免当管理员不在时其他人员对服务器的误操作风险。

(二): 使用su切换用户身份

      在大多数的Linux系统服务中,通常不建议用户直接使用root用户登录系统。这样一方面尽可能的减少了以“超级用户”身份发生误操作的可能性,另一方面也降低了root密码在不安全的网络中被泄露(或者暴力破解)的风险。

      Linux系统为我们提供了susubstitute user,潜换用户)命令工具,主要用于切换用户身份,使用su命令,可以临时以另一个系统用户的身份来完成工作,当然,需要提供目标用户的密码。

     Su - 用户名  其中“-”可选项相当于“—login”,表示使用目标用户的登录Shelllogin Shell)环境、工作目录、PATH变量等。若不是用“-”选项,则保持原有的用户环境不变。

     如果当前用户不是root用户,则使用su命令切换为其他用户(包括root用户)时,需要输入目标用户登录的密码,省略用户名参数时,su命令默认将用户身份切换为root

   Su权限设置的用法:

修改PAM设置,添加pam_wheel认证(将此行首#去掉)

验证su限制效果

(三): 使用sudo提升执行权限

sudo命令工具提供了一种机制,只需要预先在/etc/sudoers配置文件中进行授权,即可以允许特定的用户以超级用户(或其他普通用户)的身份执行命令,而该用户不需要知道root用户(或其他普通用户)的密码。

1/etc/sudoers配置文件

  /etc/sudoers文件的默认权限为440,通常使用专门的visudo命令进行编辑,如果直接使用vim命令编辑,则在保存文件的时候需要使用:w!,否则系统将提示为只读文件而拒绝保存。在/etc/sudoers

  文件中,常见的配置语法格式为:user+主机+命令

(1)        授权用户zhangsan可以以root权限执行ifconfig命令

或者可以用别名(将表中内容对应写入配置文件中)

User-Alias

SYSVCTRL=jerry,tom,zhangsan

Host_Alias

MAILSERVERS=smtppop

Cmnd_Alias

SOFTWARE=/bin/rpm, /usr/bin/yum

 

(2)        通过别名定义一组命令,并授权用户zhangsan可以使用改组命令

(3)        授权wheel组的用户不需要验证密码即可执行所有命令

(4)        在指定允许用户执行的命令列表时,可以使用通配符“*”、 取反符号“!”(可以禁止用户使用某些命令)

 2:使用sudo执行命令

sudo –l  查看当前用户被授权使用的命令

sudo –k  可以清除timestamp时间戳标记,再次使用sudo命令 时需要重新验证密码

sudo-v   可以重新更新时间戳(必要时系统会再次询问用户密码)