系统安全常规优化
一:用户账户安全优化
用户账号,是计算机使用者的身份凭证或标识,每一个要访问系统资源的人,必须凭借他的用户账号才能进入计算机。在
Linux
系统中,提供了多种机制来确保用户账号的正当、安全使用。
(一):基本安全措施
1
:删除系统中不适用的用户和组(两种方式)
在
Linux
系统中,一些程序在安装时会创建特有的用户和组,这些用户仅仅用于启动服务或运行进程,通常是不允许登录的,例如
MySQL
、
Apache
、
named
、
news…….
。当攻击者假冒这些用户或组身份时,往往不易被管理员发现。
根据当前服务器的具体应用情况,可以将不使用的用户和组删除。例如,很少使用的用户、组包括;
news
、
uucp
、
games
、
gopher
等。如果服务不需要启用
named
服务器,那么就可以删除
named
用户、
named
组;如果不需要提供
FTP
服务,就可以删除
ftp
用户、
ftp
组
………
。
如果不确定用户是否应该删除,也可以暂时禁用该用户。
(1)
使用带“
-l
”选项的
passwd
命令可以锁定(
lock
)用户,“
-u
”选项用于解锁
这里可以看到在
/etc/shadow
文件中
zhangsan
用户加了“!”表示用户被锁定
只需将“!”去掉即可解锁或者使用“
-u
”
检测张三用户是否可以登录
(2)
直接修改
shadow
文件,在用户的密码字符串前加“!”
2
:确认程序或服务用户的登录
Shell
不可用
主要检查服务器运行必须的系统服务或程序的运行账号,如:
rpm
、
ftp
、
apache
、
dovecot
等,将这些用户账号的登录
shell
修改为“
/sbin/nologin
”
,
即可禁止登录。
将不需要使用终端的用户的登录
Shell
改为
/sbin/nologin
Vim /etc/shadow
或者
usermod �Cs /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 �Cl
查看当前用户被授权使用的命令
sudo �Ck
可以清除
timestamp
时间戳标记,再次使用
sudo
命令
时需要重新验证密码
sudo-v
可以重新更新时间戳(必要时系统会再次询问用户密码)