CentOS7系统安全加固实施计划方案.docx
《CentOS7系统安全加固实施计划方案.docx》由会员分享,可在线阅读,更多相关《CentOS7系统安全加固实施计划方案.docx(16页珍藏版)》请在冰豆网上搜索。
CentOS7系统安全加固实施计划方案
CentOS7.0系统安全加固手册
以下安全设置均是在CentOS7.0_x64环境下minimal安装进行的验证。
一、用户和环境
检查项
注释:
1
清除了operator、lp、shutdown、halt、games、gopher
删除的用户组有:
lp、uucp、games、dip
其它系统伪均处于锁定SHELL登录的状态
2
验证是否有账号存在空口令的情况:
awk-F:
'($2==""){print$1}'/etc/shadow
3
检查除了root以外是否还有其它账号的UID为0:
awk-F:
'($3==0){print$1}'/etc/passwd
任何UID为0的账号在系统上都具有超级用户权限.
4
检查root用户的$PATH中是否有’.’或者所有用户/组用户可写的目录
超级用户的$PATH设置中如果存在这些目录可能会导致超级用户误执行一个特洛伊木马
5
用户的home目录许可权限设置为700
用户home目录的许可权限限制不严可能会导致恶意用户读/修改/删除其它用户的数据或取得其它用户的系统权限
6
是否有用户的点文件是所有用户可读写的:
fordirin\
`awk-F:
'($3>=500){print$6}'/etc/passwd`
do
forfilein$dir/.[A-Za-z0-9]*
do
if[-f$file];then
chmodo-w$file
fi
done
done
Unix/Linux下通常以”.”开头的文件是用户的配置文件,如果存在所有用户可读/写的配置文件可能会使恶意用户能读/写其它用户的数据或取得其它用户的系统权限
7
为用户设置合适的缺省umask值:
cd/etc
forfileinprofilecsh.logincsh.cshrcbashrc
do
if[`grep-cumask$file`-eq0];
then
echo"umask022">>$file
fi
chownroot:
root$file
chmod444$file
done
为用户设置缺省的umask值有助于防止用户建立所有用户可写的文件而危及用户的数据.
8
设备系统口令策略:
修改/etc/login.defs文件
将PASS_MIN_LEN最小密码长度设置为12位。
10
限制能够su为root的用户:
#vi/etc/pam.d/su
在文件头部添加下面这样的一行
authrequiredpam_wheel.souse_uid
这样,只有wheel组的用户可以su到root
操作样例:
#usermod-G10test将test用户加入到wheel组
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
13
修改TMOUT值,设置自动注销时间
vi/etc/profile
增加TMOUT=600
无操作600秒后自动退出
14
设置Bash保留历史命令的条数
#vi/etc/profile
修改HISTSIZE=5
即只保留最新执行的5条命令
16
防止IPSPOOF:
#vi/etc/host.conf添加:
nospoofon
不允许服务器对IP地址进行欺骗
17
使用日志服务器:
#vi/etc/rsyslog.conf照以下样式修改
*.info;mail.none;authpriv.none;cron.none192.168.10.199
这里只是作为参考,需要根据实际决定怎么配置参数
二、系统访问认证和授权
检查项
注释:
1
限制at/cron给授权的用户:
cd/etc/
rm-fcron.denyat.deny
echoroot>cron.allow
echoroot>at.allow
chownroot:
rootcron.allowat.allow
chmod400cron.allowat.allow
Cron.allow和at.allow文件列出了允许允许crontab和at命令的用户,在多数系统上通常只有系统管理员才需要运行这些命令
5
Crontab文件限制访问权限:
chownroot:
root/etc/crontab
chmod400/etc/crontab
chown-Rroot:
root/var/spool/cron
chmod-Rgo-rwx/var/spool/cron
chown-Rroot:
root/etc/cron.*
chmod-Rgo-rwx/etc/cron.*
系统的crontab文件应该只能被cron守护进程(它以超级用户身份运行)来访问,一个普通用户可以修改crontab文件会导致他可以以超级用户身份执行任意程序
6
建立恰当的警告banner:
echo"Authorizedusesonly.Allactivitymaybe\
monitoredandreported.">>/etc/motd
chownroot:
root/etc/motd
chmod644/etc/motd
echo"Authorizedusesonly.Allactivitymaybe\
monitoredandreported.">>/etc/issue
echo"Authorizedusesonly.Allactivitymaybe\
monitoredandreported.">>/etc/
改变登录banner可以隐藏操作系统类型和版本号和其它系统信息,这些信息可以会对攻击者有用.
7
限制root登录到系统控制台:
cat</etc/securetty
tty1
tty2
tty3
tty4
tty5
tty6
END_FILE
chownroot:
root/etc/securetty
chmod400/etc/securetty
通常应该以普通用户身份访问系统,然后通过其它授权机制(比如su命令和sudo)来获得更高权限,这样做至少可以对登录事件进行跟踪
8
设置守护进程掩码
vi/etc/rc.d/init.d/functions
设置为umask022
系统缺省的umask值应该设定为022以避免守护进程创建所有用户可写的文件
三、核心调整
设置项
注释:
1
禁止coredump:
cat<>/etc/security/limits.conf
*softcore0
*hardcore0
END_ENTRIES
允许coredump会耗费大量的磁盘空间.
2
chownroot:
root/etc/sysctl.conf
chmod600/etc/sysctl.conf
log_martians将进行ip假冒的ip包记录到/var/log/messages
其它核心参数使用CentOS默认值。
四、需要关闭的一些服务
设置项
注释:
1
关闭MailServer
chkconfigpostfixoff
多数Unix/Linux系统运行Sendmail作为服务器,而该软件历史上出现过较多安全漏洞,如无必要,禁止该服务
五、SSH安全配置
设置项
注释:
1
配置空闲登出的超时间隔:
ClientAliveInterval300
ClientAliveCountMax0
Vi/etc/ssh/sshd_config
2
禁用.rhosts文件
IgnoreRhostsyes
Vi/etc/ssh/sshd_config
3
禁用基于主机的认证
HostbasedAuthenticationno
Vi/etc/ssh/sshd_config
4
禁止root通过SSH登录
PermitRootLoginno
Vi/etc/ssh/sshd_config
5
用警告的Banner
Banner/etc/issue
Vi/etc/ssh/sshd_config
6
iptables防火墙处理SSH端口#64906
-AINPUT-s192.168.1.0/24-mstate--stateNEW-ptcp--dport64906-jACCEPT
-AINPUT-s202.54.1.5/29-mstate--stateNEW-ptcp--dport64906-jACCEPT
这里仅作为参考,需根据实际需要调整参数
7
修改SSH端口和限制IP绑定:
Port64906
安装selinux管理命令
yum-yinstallpolicycoreutils-python
修改portcontexts(关键),需要对context进行修改
semanageport-a-tssh_port_t-ptcp64906
semanageport-l|grepssh----查看当前SElinux允许的ssh端口
Vi/etc/ssh/sshd_config
仅作为参考,需根据实际需要调整参数。
8
禁用空密码:
PermitEmptyPasswordsno
禁止使用空密码进行远程登录SSH
9
记录日志:
LogLevelINFO
确保在sshd_config中将日志级别LogLevel设置为INFO或者DEBUG,可通过 logwatch or
logcheck 来阅读日志。
10
重启SSH
systemctlrestartsshd.service
重启ssh
六、封堵openssl的Heartbleed漏洞
检测方法:
在服务器上运行以下命令确认openssl版本
#opensslversion
OpenSSL1.0.1e-fips11Feb2013
以上版本的openssl存在Heartbleedbug,需要有针对性的打补丁。
升及补丁:
#yum-yinstallopenssl
验证:
#opensslversion-a
OpenSSL1.0.1e-fips11Feb2013
builton:
ThuJun512:
49:
27UTC2014
以上builton的时间是2014.6.5号,说明已经修复了该漏洞。
注:
如果能够临时联网安装以上补丁,在操作上会比较简单一些。
如果无法联网,则有两种处理办法:
首选从安装光盘拷贝独立的rpm安装文件并更新;另一个办法是提前下载最新版本的openssl源码,编译并安装。
七、开启防火墙策略
在CentOS7.0中默认使用firewall代替了iptablesservice。
虽然继续保留了iptables命令,但已经仅是名称相同而已。
除非手动删除firewall,再安装iptables,否则不能继续使用以前的iptables配置方法。
以下介绍的是firewall配置方法:
#cd/usr/lib/firewalld/services//该目录中存放的是定义好的网络服务和端口参数,只用于参考,不能修改。
这个目录中只定义了一部分通用网络服务。
在该目录中没有定义的网络服务,也不必再增加相关xml定义,后续通过管理命令可以直接增加。
#cd/etc/firewalld/services///从上面目录中将需要使用的服务的xml文件拷至这个目录中,如果端口有变化则可以修改文件中的数值。
#Checkfirewallstate.
firewall-cmd--state
#Checkactivezones.
firewall-cmd--get-active-zones
#Checkcurrentactiveservices.
firewall-cmd--get-service
#Checkservicesthatwillbeactiveafternextreload.
firewall-cmd--get-service--permanent
查看firewall当前的配置信息,最后一个命令是查看写入配置文件的信息。
##Setpermanentandreloadtheruntimeconfig.
#firewall-cmd--permanent--zone=public--add-service=http
#firewall-cmd--reload
#firewall-cmd--permanent--zone=public--list-services
打开HTTP服务端口并写入配置文件
从配置文件中重载至运行环境中。
#firewall-cmd--permanent--zone=public--remove-service=https
#firewall-cmd--reload
从已有配置中删除一个服务端口
#firewall-cmd--permanent--zone=public--add-port=8080-8081/tcp
#firewall-cmd--reload
#firewall-cmd--zone=public--list-ports
8080-8081/tcp
#firewall-cmd--permanent--zone=public--list-ports
8080-8081/tcp
#
#firewall-cmd--permanent--zone=public--remove-port=8080-8081/tcp
#firewall-cmd--reload
打开或关闭一段TCP端口的方法,同理如果使用了其它非通用端口,那么也可以这么操作。
#firewall-cmd--permanent--zone=public--add-rich-rule="rulefamily="ipv4"\
sourceaddress="192.168.0.4/24"servicename="http"accept"
#firewall-cmd--permanent--zone=public--remove-rich-rule="rulefamily="ipv4"\
sourceaddress="192.168.0.4/24"servicename="http"accept"
Thefollowingcommandallowsyoutoopen/closeHTTPaccesstoaspecificIPaddress.
八、启用系统审计服务
审计容包括:
系统调用、文件访问、用户登录等。
编辑/etc/audit/audit.rules,在文中添加如下容:
-w/var/log/audit/-kLOG_audit
-w/etc/audit/-pwa-kCFG_audit
-w/etc/sysconfig/auditd-pwa-kCFG_auditd.conf
-w/etc/libaudit.conf-pwa-kCFG_libaudit.conf
-w/etc/audisp/-pwa-kCFG_audisp
-w/etc/cups/-pwa-kCFG_cups
-w/etc/init.d/cups-pwa-kCFG_initd_cups
-w/etc/netlabel.rules-pwa-kCFG_netlabel.rules
-w/etc/selinux/mls/-pwa-kCFG_MAC_policy
-w/usr/share/selinux/mls/-pwa-kCFG_MAC_policy
-w/etc/selinux/semanage.conf-pwa-kCFG_MAC_policy
-w/usr/sbin/stunnel-px
-w/etc/security/rbac-self-test.conf-pwa-kCFG_RBAC_self_test
-w/etc/aide.conf-pwa-kCFG_aide.conf
-w/etc/cron.allow-pwa-kCFG_cron.allow
-w/etc/cron.deny-pwa-kCFG_cron.deny
-w/etc/cron.d/-pwa-kCFG_cron.d
-w/etc/cron.daily/-pwa-kCFG_cron.daily
-w/etc/cron.hourly/-pwa-kCFG_cron.hourly
-w/etc/cron.monthly/-pwa-kCFG_cron.monthly
-w/etc/cron.weekly/-pwa-kCFG_cron.weekly
-w/etc/crontab-pwa-kCFG_crontab
-w/var/spool/cron/root-kCFG_crontab_root
-w/etc/group-pwa-kCFG_group
-w/etc/passwd-pwa-kCFG_passwd
-w/etc/gshadow-kCFG_gshadow
-w/etc/shadow-kCFG_shadow
-w/etc/security/opasswd-kCFG_opasswd
-w/etc/login.defs-pwa-kCFG_login.defs
-w/etc/securetty-pwa-kCFG_securetty
-w/var/log/faillog-pwa-kLOG_faillog
-w/var/log/lastlog-pwa-kLOG_lastlog
-w/var/log/tallylog-pwa-kLOG_tallylog
-w/etc/hosts-pwa-kCFG_hosts
-w/etc/sysconfig/network-scripts/-pwa-kCFG_network
-w/etc/inittab-pwa-kCFG_inittab
-w/etc/rc.d/init.d/-pwa-kCFG_initscripts
-w/etc/ld.so.conf-pwa-kCFG_ld.so.conf
-w/etc/localtime-pwa-kCFG_localtime
-w/etc/sysctl.conf-pwa-kCFG_sysctl.conf
-w/etc/modprobe.conf-pwa-kCFG_modprobe.conf
-w/etc/pam.d/-pwa-kCFG_pam
-w/etc/security/limits.conf-pwa-kCFG_pam
-w/etc/security/pam_env.conf-pwa-kCFG_pam
-w/etc/security/namespace.conf-pwa-kCFG_pam
-w/etc/security/namespace.init-pwa-kCFG_pam
-w/etc/aliases-pwa-kCFG_aliases
-w/etc/postfix/-pwa-kCFG_postfix
-w/etc/ssh/sshd_config-kCFG_sshd_config
-w/etc/vsftpd.ftpusers-kCFG_vsftpd.ftpusers
-aexit,always-Farch=b32-Ssethostname
-w/etc/issue-pwa-kCFG_issue
-w/etc/-pwa-kCFG_
重启audit服务
#serviceauditdrestart
九、部署完整性检查工具软件
AIDE(AdvancedIntrusionDetectionEnvironment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。
AIDE能够构造一个指定文档的数据库,他使用aide.conf作为其配置文档。
AIDE数据库能够保存文档的各种属性,包括:
权限(permission)、索引节点序号(inodenumber)、所属用户(user)、所属用户组(group)、文档大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小连同连接数。
AIDE还能够使用下列算法:
sha1、md5、rmd160、tiger,以密文形式建立每个文档的校验码或散列号。
在系统安装完毕,要连接到网络上之前,系统管理员应该建立新系统的AIDE数据库。
这第一个AIDE数据库是系统的一个快照和以后系统升级的准绳。
数据库应该包含这些信息:
关键的系统二进制可执行程式、动态连接库、头文档连同其他总是保持不变的文档。
这个数据库不应该保存那些经常变动的文档信息,例如:
日志文档、、/proc文档系统、用户起始目录连同临时目录
安装方法:
#yum-yinstallaide
注:
如果主机不能联网安装AIDE,那么也可以从安装光盘拷贝至目标主机。
检验系统文件完整性的要求:
因为AIDE可执行程序的二进制文档本身可能被修改了或数据库也被修改了。
因此,应该把AIDE的数据库放到安全的地方,而且进行检查时要使用确保没有被修改过的程序,最好是事先为AIDE执行程序生成一份MD5信息。
再次使用AIDE可执行程序时,需要先验证该程序没有被篡改过。
配置说明:
序号
参数
注释
1
/etc/aide.conf
配置文件
2
database
Aide读取文档数据库的位置,默认为/var/lib/aide,默认文件名为aide.db.gz
3
database_out
A