Centos6.x
一、口令策略
1、检查是否设置口令生存周期
理论依据:
攻击者利用网络暴力攻击的机会,通过网络暴力攻击的机会窗口,
受到密码生存周期的限制。因此,减少密码的最大年龄也会减少
攻击者的机会窗口。
配置要求:
建议将PASS_MAX_DAYS参数设置为小于或等于90天。
审计步骤:
检测步骤:
查看文件/etc/login.defs,检查如下参数值是否满足要求:
PASS_MAX_DAYS
合规标准:
PASS_MAX_DAYS不大于90则合规,否则不合规。
加固方案:
*执行备份:
#cp -p /etc/login.defs /etc/login.defs_bak
*修改策略设置,编辑文件/etc/login.defs,在文件中加入如
下内容(如果存在则修改,不存在则添加):
PASS_MAX_DAYS 90
2、检查是否设置口令更改最小间隔天数(配置文件同1)
理论依据:
通过限制密码更改的频率,管理员可以防止用户重复更改密码,
从而避免密码重用控制。
配置要求:
建议将参数PASS_MIN_DAYS设置为不小于7天。
审计步骤:
检测步骤:
查看文件/etc/login.defs,检查如下参数值是否满足要求:
PASS_MIN_DAYS
合规标准:
PASS_MIN_DAYS不小于7天则合规,否则不合规。
加固方案:
*执行备份:
#cp -p /etc/login.defs /etc/login.defs_bak
*修改策略设置,编辑文件/etc/login.defs,在文件中加入
如下内容(如果存在则修改,不存在则添加):
PASS_MIN_DAYS 7
3、检查设备密码复杂度策略
理论依据:
强大的密码保护系统不被暴力破解。
配置要求:
pam_cracklib模块检查密码的强度。它执行检查,
例如确保密码不是字典单词,它是一定长度的,
包含字符的混合(如字母、数字、其他)等
retry= 3 -在返回失败前允许3次尝试。
minlen = 14 -密码必须是14个字符或更多
dcredit = - 1 -提供至少1位数字
ucredit = - 1 -提供至少一个大写字符
ocredit = - 1 -提供至少一个特殊字符
lcredit = - 1 -提供至少一个小写字符
上面所示的设置是一种可能的策略。更改这些值以符合您自己的组织的密码策略。
审计步骤:
检测步骤:
查看文件/etc/pam.d/system-auth,确认密码强度校验配置。
合规标准:
密码长度>=8,且至少包含大写字母、小写字母、数字、特殊
字符中的3类则合规,否则不合规。
加固方案:
*配置文件备份
#cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
*编辑配置文件/etc/pam.d/system-auth,在文件中找到开头为如下字样的内容:
password requisite pam_cracklib.so
将其修改为:
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
#口令长度不小于8,至少包含1位数字、大写字母、特殊字符、小写字母。
4、检查是否设置口令过期前警告天数(配置文件同1)
理论依据:
提供一个预先警告,密码将会到期给用户时间来考虑一个安全的密码。
不知情的用户可能会选择一个简单的密码,或者把它写在可能被发现的地方。
配置要求:
建议将参数PASS_WARN_AGE设置为7天。
审计步骤:
检测步骤:
查看文件/etc/login.defs,检查如下参数值是否满足要求:
PASS_WARN_AGE
合规标准:
PASS_WARN_AGE等于7天则合规,否则不合规。
加固方案:
*执行备份:
#cp -p /etc/login.defs /etc/login.defs_bak
*修改策略设置,编辑文件/etc/login.defs,在文件中加入
如下内容(如果存在则修改,不存在则添加):
PASS_WARN_AGE 7
5、检查是否存在空口令账号
理论依据:
所有帐户都必须有密码以防止帐户被未经授权的用户使用。
配置要求:
不允许存在空口令的账号。
审计步骤:
检查步骤
执行以下命令查看系统中是否存在空口令账号
#/bin/cat /etc/shadow | /bin/awk -F: '($2 == "" ) { print "user " $1 " does not have a password "}'
合规标准
不存在空口令的账号则合规,否则不合规。
加固方案:
*执行备份
#cp -p /etc/passwd /etc/passwd.bak
#cp -p /etc/shadow /etc/shadow.bak
*为帐户设置满足密码复杂度的密码
#passwd username
二、认证授权
1、检查用户目录缺省访问权限设置
理论依据:
为umask设置一个非常安全的默认值,确保用户对其文件权限做出一个有意识的选择。
配置要求:
控制用户缺省访问权限,当在创建新文件或目录时,应屏蔽掉新文件或目录不应有的
访问允许权限,防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制。
审计步骤:
检查步骤
查看文件/etc/profile,是否设置文件目录缺省权限。
合规标准
/etc/profile文件末尾存在umask 027,则合规,否则为不合规。
加固方案:
*执行备份
#cp /etc/profile /etc/profile.bak
*编辑文件/etc/profile,在文件末尾加上如下内容:
umask 027
*执行以下命令让配置生效:
#source /etc/profile
三、日志审计
1、检查是否对登录进行日志记录
理论依据:
配置要求:
设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,
登录是否成功,登录时间,以及远程登录时,用户使用的IP地址。
审计步骤:
检查步骤
查看文件/etc/rsyslog.conf,是否存在如下类似配置:
authpriv.* /var/log/secure
或者 authpriv.info /var/log/secure
合规标准
配置记录了登录日志则合规,否则不合规。
加固方案:
*编辑文件/etc/rsyslog.conf,增加如下配置(有则修改,无则添加):
authpriv.* /var/log/secure或者authpriv.info /var/log/secure
*创建日志文件,并赋予其权限
#touch /var/log/secure
#chmod 600 /var/log/secure
*重启syslog服务
#/etc/init.d/rsyslog restart
四、网络通信
1、检查是否禁止root用户远程登录
理论依据:
在SSH上不允许root登录,需要服务器管理员使用自己的帐户进行身份验证,
然后通过sudo或su升级到根,这反过来限制了不可抵赖的机会,并在发生安
全事件时提供了清晰的审计线索
配置要求:
限制具备超级管理员权限的用户远程登录,远程执行管理员权限操作,应先以普
通权限用户远程登录后,再切换到超级管理员权限账号后执行相应操作。
审计步骤:
检查步骤
1、查看文件/etc/ssh/sshd_config,是否存在拒绝root用户通过ssh协议远程登录的配置。
2、执行以下命令查看ssh协议版本是否为2。
#grep -v "^[[:space:]]*#" /etc/ssh/sshd_config|grep -i "^protocol"
合规标准
ssh协议拒绝root用户远程登录,且使用的是协议ssh 2则合规,否则不合规。
加固方案:
1、执行备份:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
2、新建一个普通用户并设置高强度密码(防止设备上只存在root用户可用时,无法远程访问):
#useradd username
#passwd username
3、禁止root用户远程登录系统
编辑文件/etc/ssh/sshd_config,修改PermitRootLogin值为no并去掉注释。
PermitRootLogin no
4、重启SSH服务
#/etc/init.d/sshd restart
2、检查使用IP协议远程维护的设备是否配置SSH协议,禁用Telnet协议
理论依据:
配置要求:
对于使用IP协议进行远程维护的设备,设备应配置使用SSH等加密协议,并安全配置SSHD的设置。
审计步骤:
检查步骤
使用以下命令查看telnet和ssh服务状态:
#chkconfig --list |grep "telnet|ssh"
判定条件
SSH服务启用,Telnet服务关闭则合规,否则不合规。
加固方案:
1、关闭Telnet服务:
1)、备份
#cp -p /etc/xinetd.d/telnet /etc/xinetd.d/telnet_bak
2)、编辑文件/etc/xinetd.d/telnet,把disable项改为yes.
3)、执行以下命令重启xinetd服务。
#service xinetd restart
2、开启SSH服务:
#/etc/init.d/sshd start
3、检查是否使用PAM认证模块禁止wheel组之外的用户su为root
理论依据:
配置要求:
使用PAM禁止任何人su为root。
审计步骤:
检查步骤
执行命令cat /etc/pam.d/su,查看文件中是否存在如下配置:
auth sufficient pam_rootok.so
auth required pam_wheel.so group=wheel
合规标准
只允许wheel组的用户才能su为root则合规,否则不合规。
加固方案:
1、编辑文件/etc/pam.d/su
在文件开头加入如下两行(有则修改,没有则添加):
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
#注意auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开
说明:(这表明只有wheel组中的用户可以使用su命令成为root用户。你可以把用户添加到wheel组,
以使它可以使用su命令成为root用户。) 添加方法:
#usermod -G wheel username #username为需要添加至wheel组的账户名称。
五、其他配置
1、检查是否禁止匿名用户登录FTP
理论依据:
配置要求:
禁止匿名用户登录FTP服务器。
审计步骤:
检查步骤:
查看配置文件/etc/vsftpd/vsftpd.conf,是否存在匿名账号登录ftp服务器的配置。
合规标准:
ftp服务未启用或者限制了匿名账号登录ftp服务器则合规,否则不合规。
加固方案:
1、编辑文件/etc/vsftpd/vsftpd.conf,修改参数anonymous_enable的值为NO:
anonymous_enable=NO
2、重启ftp服务
2、检查是否删除了潜在危险文件
理论依据:
限制.rhosts、.netrc和/etc/hosts.equiv文件的使用。r系列命令使用这些文件来访问系统。
配置要求:
.rhosts,.netrc,hosts.equiv等文件都具有潜在的危险,如果没有应用,应该删除。
审计步骤:
检查步骤:
使用locate命令查看系统是否存在如下文件".rhost、.netrc、hosts.equiv"
#locate .rhost
#locate .netrc
#locate hosts.equiv
合规标准:
系统不存在".rhost、.netrc、hosts.equiv"这三个文件则合规,否则不合规。
加固方案:
此项检查若不合规,请使用rm命令删除如下三个文件:
.rhost、.netrc、hosts.equiv
3、检查是否设置命令行界面超时退出
理论依据:
对于具备字符交互界面的设备,应配置定时帐户自动登出,避免管理员忘记注销登录,减少安全隐患。
配置要求:
设置命令行界面登录后300s内无任何操作自动登出。
审计步骤:
检查步骤
查看/etc/profile文件中是否配置超时设置:
#cat /etc/profile |grep -i TMOUT
合规标准
命令行界面超时自动登录时间设置为不大于300s则合规,否则不合规。
加固方案:
1、执行备份
#cp -p /etc/profile /etc/profile_bak
2、在/etc/profile文件中增加如下两行(存在则修改,不存在则添加):
TMOUT=300
export TMOUT
3、执行以下命令使TMOUT参数立即生效
#source /etc/profile
4、检查系统openssh安全配置
理论依据:
配置要求:
强烈建议系统放弃旧的明文登录协议,使用SSH防止会话劫持和嗅探网络上的敏感数据。
审计步骤:
检查步骤
查看配置文件/etc/ssh/sshd_config,检查以下几个参数的配置值是否满足安全要求:
X11Forwarding #x11转发功能,如果没有需要使用此功能的应用应该关闭该功能。
MaxAuthTries #指定每个连接允许的身份验证尝试的最大数量。建议配置为4次或者更少。
IgnoreRhosts #此参数将强制用户在使用ssh进行身份验证时输入密码,建议开启开功能。
HostbasedAuthentication #开启主机认证,建议关闭该功能。
PermitEmptyPasswords #允许空密码登录,建议关闭该功能
合规标准
1、关闭x11转发功能;
2、单个连接允许的最大身份验证尝试次数不大于4次;
3、开启使用ssh进行身份验证时,强制输入密码功能;
4、关闭主机认证功能;
5、关闭允许空密码登录功能;
以上5个条件同时满足时则合规,否则不合规。
加固方案:
1、编辑配置文件/etc/ssh/sshd_config,修改下面几个参数的值:
X11Forwarding no
MaxAuthTries 4
IgnoreRhosts yes
HostbasedAuthentication no
PermitEmptyPasswords no
2、重启ssh服务
/etc/init.d/sshd restart