目录
一、用户帐号和环境 .................................................................. 2 二、系统访问认证和授权 .......................................................... 4 三、核心调整 .............................................................................. 5 四、需要关闭的一些服务 .......................................................... 5 五、SSH安全配置 ...................................................................... 6 六、封堵openssl的Heartbleed漏洞 ......................................... 6 七、开启防火墙策略 .................................................................. 7 八、启用系统审计服务 .............................................................. 8 九、部署完整性检查工具软件 ................................................ 10 十、部署系统监控环境 ............................................................ 11
以下安全设置均是在CentOS6.5_x86环境basic server下进行的验证。
一、用户帐号和环境
检查项 查看用户:awk -F \查看用户组:cat /etc/group 删除用户:userdel lp
注释:
1
删除用户组:groupdel lp 用户列表文件:/etc/passwd 用户组列表文件:/etc/group
查看系统中有哪些用户:cut -d : -f 1 /etc/passwd
查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
清除了uucp、operator、lp、shutdown、halt、games、gopher 帐号 删除的用户组有: lp、uucp、games、dip 其它系统伪帐号均处于锁定SHELL登录的状态
2 3 4 5
验证是否有账号存在空口令的情况:
awk -F: '($2 == \
检查除了root以外是否还有其它账号的UID为0:
任何UID为0的账号在系统上都具有超级用户权限.
awk -F: '($3 == 0) { print $1 }' /etc/passwd
检查root用户的$PATH中是否有’.’或者所有用户/组用户可写的目录
超级用户的$PATH设置中如果存在这些目录可能会导致超级用户误执行一个特洛伊木马
用户的home目录许可权限设置为700 用户home目录的许可权限限制不严可能会导致恶意用户读/修改/删除其它用户的数据或取得其它用户的系统权限
6
是否有用户的点文件是所有用户可读写的: Unix/Linux下通常以”.”开头的文件是用户的配置文件,如果存在所有用户可读/写的配置文件可能会使恶意用户能读/写其它用户的数据或取得其它用户的系统权限
for dir in \\
`awk -F: '($3 >= 500) { print $6 }' /etc/passwd` do
for file in $dir/.[A-Za-z0-9]* do
if [ -f $file ]; then chmod o-w $file fi done done
7
为用户设置合适的缺省umask值: 为用户设置缺省的umask值有助于防止用户建立所有用户可写的文件而危及用户的数据.
cd /etc
for file in profile csh.login csh.cshrc bashrc do
if [ `grep -c umask $file` -eq 0 ]; then
echo \fi
chown root:root $file chmod 444 $file done
设备系统口令策略:修改/etc/login.defs文件 将PASS_MIN_LEN最小密码长度设置为12位。
设置系统口令复杂度:修改/etc/pam.d/system-auth文件下面这一行 dcredit=1 ucredit=1 lcredit=1 ocredit=1
8 9 10
这里限制的是普通用户修改自root是无效的。
这样,只有wheel组的用户可以su到root 操作样例:
#usermod -G10 test 将test用户加入到wheel组
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 己口令时的复杂度。这个设置对限制能够su为root 的用户:#vi /etc/pam.d/su 在文件头部添加下面这样的一行
auth required pam_wheel.so use_uid
11
修改别名文件/etc/aliases:#vi /etc/aliases
注释掉不要的 #games: root #ingres: root #system: root #toor: root #uucp: root #manager: root #dumper: root #operator: root #decode: root #root: marc 修改后执行/usr/bin/newaliases
12 13 14 15 16 17
设置帐户锁定登录失败锁定次数、锁定时间 Vi /etc/pam.d/system-auth 并增加下面一行内容
auth required pam_tally2.so onerr=fail deny=6 unlock_time=300 修改帐户TMOUT值,设置自动注销时间 vi /etc/profile 增加TMOUT=600
设置Bash保留历史命令的条数 #vi /etc/profile 修改HISTSIZE=5
防止误使用Ctrl+Alt+Del重启系统 #vi /etc/init/control-alt-delete.conf 注掉重启系统的相关命令 防止IP SPOOF:
#vi /etc/host.conf 添加:nospoof on 使用日志服务器:
#vi /etc/rsyslog.conf 照以下样式修改
连续输入密码错误6次,则自动锁定5分钟。
解锁用户 faillog -u <用户名> -r 无操作600秒后自动退出
即只保留最新执行的5条命令
不允许服务器对IP地址进行欺骗
这里只是作为参考,需要根据实际决定怎么配置参数
*.info;mail.none;authpriv.none;cron.none @192.168.10.199
二、系统访问认证和授权
检查项 限制 at/cron给授权的用户:
注释: Cron.allow和at.allow文件列出了允许允许crontab和at命令的用户名单, 在多数系统上通常只有系统管理员才需要运行这些命令
1
cd /etc/
rm -f cron.deny at.deny echo root >cron.allow echo root >at.allow
chown root:root cron.allow at.allow chmod 400 cron.allow at.allow
Crontab文件限制访问权限:
5
系统的crontab文件应该只能被cron守护进程(它以超级用户身份运行)来访问,一个普通用户可以修改crontab文件会导致他可以以超级用户身份执行任意程序
chown root:root /etc/crontab chmod 400 /etc/crontab
chown -R root:root /var/spool/cron chmod -R go-rwx /var/spool/cron chown -R root:root /etc/cron.* chmod -R go-rwx /etc/cron.*
建立恰当的警告banner:
6
改变登录banner可以隐藏操作系统
echo %uses only. All activity may be \\ 类型和版本号和其它系统信息,这些monitored and reported.\信息可以会对攻击者有用. chown root:root /etc/motd chmod 644 /etc/motd
echo %uses only. All activity may be \\ monitored and reported.\
echo %uses only. All activity may be \\ monitored and reported.\
限制root登录到系统控制台:
通常应该以普通用户身份访问系统,然后通过其它授权机制(比如su命令和sudo)来获得更高权限,这样做至少可以对登录事件进行跟踪
7
cat <
END_FILE
chown root:root /etc/securetty
chmod 400 /etc/securetty
设置守护进程掩码 vi /etc/rc.d/init.d/functions 设置为 umask 022
8
系统缺省的umask 值应该设定为022以避免守护进程创建所有用户可写的文件
三、核心调整
设置项 禁止core dump:
cat <
注释: 允许core dump会耗费大量的磁盘空间.
1
2
echo “1” > /proc/sys/net/ipv4/conf/all/log_martians chown root:root /etc/sysctl.conf chmod 600 /etc/sysctl.conf
log_martians将进行ip假冒的ip包记录到/var/log/messages
其它核心参数使用CentOS默认值。
四、需要关闭的一些服务
设置项 关闭NFS客户端进程: 运行 chkconfig nfslock off chkconfig autofs off
注释:
1 2 3
禁止Netfs脚本 chkconfig netfs off 关闭Mail Server chkconfig postfix off
如果不需要文件共享可禁止该脚本
多数Unix/Linux系统运行Sendmail作为邮件服务器, 而该软件历史上出现过较多安全漏洞,如无必要,禁止该服务
4 5 6 7
关闭cpuspeed
Chkconfig cpuspeed off 关闭IPv6
chkconfig ip6tables off 关闭cups
chkconfig cups off 关闭atd
chkconfig atd off
调节cpu速度用来省电,常用在Laptop上,对服务器没用
通用unix打印服务
在指定时间执行命令。建议使用crond