系统安全常规优化<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一:用户账户安全优化
用户账号,是计算机使用者的身份凭证或标识,每一个要访问系统资源的人,必须凭借他的用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。
(一):基本安全措施
1:删除系统中不适用的用户和组(两种方式)
在Linux系统中,一些程序在安装时会创建特有的用户和组,这些用户仅仅用于启动服务或运行进程,通常是不允许登录的,例如MySQL、Apache、named、news…….。当***者假冒这些用户或组身份时,往往不易被管理员发现。
根据当前服务器的具体应用情况,可以将不使用的用户和组删除。例如,很少使用的用户、组包括;news、uucp、games、gopher等。如果服务不需要启用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不可用
主要检查服务器运行必须的系统服务或程序的运行账号,如:rpm、ftp、apache、dovecot等,将这些用户账号的登录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系统为我们提供了su(substitute user,潜换用户)命令工具,主要用于切换用户身份,使用su命令,可以临时以另一个系统用户的身份来完成工作,当然,需要提供目标用户的密码。
Su 【-】 用户名 其中“-”可选项相当于“—login”,表示使用目标用户的登录Shell(login 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=smtp,pop |
Cmnd_Alias |
SOFTWARE=/bin/rpm, /usr/bin/yum |
(2) 通过别名定义一组命令,并授权用户zhangsan可以使用改组命令
(3) 授权wheel组的用户不需要验证密码即可执行所有命令
(4) 在指定允许用户执行的命令列表时,可以使用通配符“*”、 取反符号“!”(可以禁止用户使用某些命令)
2:使用sudo执行命令
sudo –l 查看当前用户被授权使用的命令
sudo –k 可以清除timestamp时间戳标记,再次使用sudo命令 时需要重新验证密码
sudo-v 可以重新更新时间戳(必要时系统会再次询问用户密码)
转载于:https://blog.51cto.com/springlove/366123