Linux安全加固指南之葵花宝典

转载:

https://blog.csdn.net/m0_50800033/article/details/110100243

一、账号管理



1、口令锁定策略

①判定依据
用户连续认证失败次数设置为5则合规,否则不合规。

②检测方法
redhat系统编辑文件/etc/pam.d/system-auth、suse9编辑/etc/pam.d/passwd、suse10以上编辑/etc/pam.d/common-password查看是否存在如下内容:
auth required pam_tally2.so deny=5 onerr=fail no_magic_root unlock_time=180(redhat5.1以下版本及suse只支持pam_tally.so)
account required pam_tally2.so

③加固方案
参考配置操作
1、执行备份
(1)redhat:
#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
(2)SUSE9:
#cp -p /etc/pam.d/passwd /etc/pam.d/passwd.bak
(3)SUSE10:
#cp -p /etc/pam.d/common-password /etc/pam.d/common-password.bak
2、修改策略设,编辑文件/etc/pam.d/system-auth(SUSE:/etc/pam.d/passwd)增加如下内容:
auth required pam_tally2.so deny=5 onerr=fail no_magic_root unlock_time=180 #unlock_time单位为秒
account required pam_tally2.so #(redhat5.1以上版本支持 pam_tally2.so,其他版本使用pam_tally.so)



2、口令生存期

①判定依据
PASS_MAX_DAYS不大于90,PASS_MIN_DAYS等于10,PASS_WARN_AGE等于7则合规,否则不合规。

②检测方法
查看文件/etc/login.defs( more /etc/login.defs),检查如下参数值是否满足要求:
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数不大于90
PASS_MIN_DAYS 10 #新建用户的密码最短使用天数为10
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数为7

③加固方案
参考配置操作
1、执行备份:
#cp -p /etc/login.defs /etc/login.defs_bak
2、修改策略设置,编辑文件/etc/login.defs(vi /etc/login.defs),在文件中加入如下内容(如果存在则修改,不存在则添加):
PASS_MAX_DAYS 90
PASS_MIN_DAYS 10
PASS_WARN_AGE 7



3、口令复杂度

①判定依据
设置了口令复杂度则合规,否则不合规。

②检测方法
1、redhat系统编辑文件/etc/pam.d/system-auth,是否存在如下配置:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
2、suse9编辑/etc/pam.d/passwd、suse10以上编辑/etc/pam.d/common-password是否存在如下配置:
password required pam_pwcheck.so nullok
password requisite pam_cracklib.so minlen=8 lcredit=-1 ocredit=-1 ucredit=-1 dcredit=-4 use_authtok
password required pam_unix2.so nullok use_first_pass use_authtok

③加固方案
参考配置操作
1、redhat系统
编辑文件/etc/pam.d/system-auth,在文件中找到如下内容:
password requisite pam_cracklib.so,将其修改为:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8 #至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8
2、suse9编辑/etc/pam.d/passwd、suse10以上编辑/etc/pam.d/common-password,在文件中加入如下内容(如果文件中存在password的行请首先注释掉):
password required pam_pwcheck.so nullok
password requisite pam_cracklib.so dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8 use_authtok
password required pam_unix2.so nullok use_first_pass use_authtok



4、删除无关账号

①判定依据
1、lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody用户不存在或/etc/shadow文件中对应密码字段以*或者!!开头
2、lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody用户不存在或者/etc/passwd文件中对应shell域为/bin/false
以上二者均满足则合规,否则不合规。

②检测方法
1、查看/etc/shadow文件,确认以下用户(lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody)的密码列字段是否以或者!!开头:
#egrep “lp:|sync:|halt:|news:|uucp:|operator:|games:|gopher:|smmsp:|nfsnobody:|^nobody:” /etc/shadow|awk -F: '($2!~/^
/) && ($2!~/^!!/) {print $1":"}’
2、查看/etc/passwd文件确认以下用户(lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody)的shell域字段值是否为/bin/false
#egrep “lp:|sync:|halt:|news:|uucp:|operator:|games:|gopher:|smmsp:|nfsnobody:|^nobody:” /etc/passwd|awk -F: ‘($7!~/bin/false/) {print $1":"$7}’

③加固方案
参考配置操作
1、如果以下用户(lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody)没有被删除或锁定,可以使用如下命令对其进行操作:
(1)、删除用户:
#userdel username
(2)、锁定用户:
#passwd -l username #锁定用户,只有具备超级用户权限的使用者方可使用。
#passwd –d username #解锁用户,解锁后原有密码失效,登录设置新密码才能登录。
#passwd -u username #解锁用户后,原密码仍然有效。
(3)、修改用户shell域为/bin/false
#usermod -s /bin/false username #命令来更改相应用户的shell为/bin/false,其中[name]为要修改的具体用户名。



5、设置账号组

①判定依据
存在组id>=GID_MIN且<=GID_MAX的用户则合规,否则不合规。

②检测方法
1、使用如下命令查看文件/etc/login.defs,确认文件中变量GID_MIN和GID_MAX的值:
#grep -v ^# /etc/login.defs |grep “^GID_MIN”|awk ‘($1=“GID_MIN”) {print $2}’
#grep -v ^# /etc/login.defs |grep “^GID_MAX”|awk ‘($1=“GID_MAX”) {print $2}’
2、使用以下命令查看系统中是否存在用户id>=GID_MIN且<=GID_MAX的用户:
#UP_GIDMIN=(grep -v ^# /etc/login.defs |grep "^GID_MIN"|awk '($1="GID_MIN") {print $2}')
#UP_GIDMAX=(grep -v ^# /etc/login.defs |grep "^GID_MAX"|awk '($1="GID_MAX") {print $2}')
#egrep -v “oracle|sybase|postgres” /etc/passwd|awk -F: ‘(4 > = ′ 4>='4>=′UP_GIDMIN’ && 4 < = ′ 4<='4<=′UP_GIDMAX’) {print

③加固方案
参考配置操作
1、创建用户组
#cp -p /etc/group /etc/group_bak #备份文件
#groupadd groupname #创建一个组
#usermod –g group username #将用户username分配到group组中



6、禁止存在空密码的账号

①判定依据
系统中口令为空的账号个数为0则合规,否则不合规。

②检测方法
执行以下命令查看系统中是否存在空口令账号
#awk -F: ‘( $2 == “” ) { print $1 }’ /etc/shadow

③加固方案
参考配置操作
1、执行备份:
#cp -p /etc/passwd /etc/passwd_bak
#cp -p /etc/shadow /etc/shadow_bak
2、为帐户设置满足密码复杂度的密码:
#passwd username



7、避免帐号共享

①判定依据
存在用户id>=UID_MIN且<=UID_MAX的用户则合规,否则不合规。

②检测方法
1、使用如下命令查看文件/etc/login.defs,确认文件中变量UID_MIN和UID_MAX的值:
#grep -v ^# /etc/login.defs |grep “^UID_MIN”|awk ‘($1=“UID_MIN”){print $2}’
#grep -v ^# /etc/login.defs |grep “^UID_MAX”|awk ‘($1=“UID_MAX”){print $2}’
2、使用以下命令查看系统中是否存在用户id>=UID_MIN且<=UID_MAX的用户:
#up_uidmin=(grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}')
#up_uidmax=(grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}')
#egrep -v “oracle|sybase|postgres” /etc/passwd|awk -F: ‘(3 > = ′ 3>='3>=′up_uidmin’ && 3 < = ′ 3<='3<=′up_uidmax’) {pri

③加固方案
参考配置操作
1、创建用户
#useradd username #创建账号
#passwd username #设置密码修改权限



8、口令重复次数限制

①判定依据
文件/etc/pam.d/system-auth(SUSE9:/etc/pam.d/passwd、SUSE10以上/etc/pam.d/common-password)中包含类似如下内容则合规,否则不合规:
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

②检测方法
1、redhat系统编辑文件/etc/pam.d/system-auth,
2、suse9编辑检查文件/etc/pam.d/passwd,
3、suse10以上编辑/etc/pam.d/common-password,查看类似password sufficient pam_unix.so所在行是否存在remember=5,如果没有则新增,例如:
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

③加固方案
参考配置操作
1、执行备份
#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
#cp -p /etc/pam.d/passwd /etc/pam.d/passwd.bak
#cp -p /etc/pam.d/common-password /etc/pam.d/common-password.bak
2、创建文件/etc/security/opasswd用于存储旧密码,并设置权限。
#touch /etc/security/opasswd
#chown root:root /etc/security/opasswd
#chmod 600 /etc/security/opasswd
3、修改策略设置
#vi /etc/pam.d/system-auth((SUSE9:/etc/pam.d/passwd、SUSE10以上/etc/pam.d/common-password)在类似password sufficient pam_unix.so所在行末尾增加remember=5,中间以空格隔开.如果没有则新增,例如:
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5



二、口令策略



1、文件与目录缺省权限控制

①判定依据
/etc/profile文件末尾存在umask 027,则合规,否则为不合规。

②检测方法
查看文件/etc/profile的末尾是否设置umask值:
#awk ‘{print $1":"$2}’ /etc/profile|grep umask|tail -n1

③加固方案
参考配置操作
1、首先对/etc/profile进行备份:
#cp /etc/profile /etc/profile.bak
2、编辑文件/etc/profile,在文件末尾加上如下内容:
umask 027
3、执行以下命令让配置生效:
#source /etc/profile



2、账号文件权限设置

①判定依据
1、/etc/passwd文件的权限<=644 (所有用户必须要有读权限,只有root用户有写的权限)
2、/etc/shadow文件的权限<=600 (只有root用户拥有该文件的读写权限)
3、/etc/group文件的权限<=644 (所有用户必须要有读权限,只有root用户有写的权限)
以上三个条件同时满足则合规,否则不合规。

②检测方法
执行以下命令查看用户及组文件权限
#ls -alL /etc/passwd /etc/shadow /etc/group

③加固方案
参考配置操作
1、使用如下命令查看一下文件的权限:
#ls -alL /etc/passwd /etc/shadow /etc/group
2、执行备份:使用cp命令备份需要修改权限的文件或目录。
3、权限修改:
(1)、修改/etc/passwd文件的权限为644
#chmod 644 /etc/passwd (所有用户必须要有读权限,只有root用户有写的权限)。
(2)、修改/etc/shadow文件的权限
#chmod 600 /etc/shadow (只有root用户拥有该文件的读写权限)。
(3)、修改/etc/group文件的权限
#chmod 644 /etc/group (所有用户必须要有读权限,只有root用户有写的权限)。



3、小授权

①判定依据
1、/etc/passwd文件的权限小于等于644
2、/etc/shadow文件的权限小于等于400
3、/etc/group文件的权限小于等于644
4、/etc/services文件权限小于等于644
5、/etc/xinetd.conf文件权限小于等于600
6、/etc/security目录权限权限小于等于600
以上六者同时满足则合规,否则不合规。

②检测方法
使用以下命令查看如下文件的权限设置:
#ls -lL /etc/passwd 2>/dev/null
#ls -lL /etc/group 2>/dev/null
#ls -lL /etc/services 2>/dev/null
#ls -lL /etc/shadow 2>/dev/null
#ls -lL /etc/xinetd.conf 2>/dev/null
#ls -lLd /etc/security 2>/dev/null

③加固方案
参考配置操作
1、赋予用户相关账号文件最小权限
#chmod 644 /etc/passwd
#chmod 400 /etc/shadow
#chmod 644 /etc/group
#chmod 644 /etc/services
#chmod 600 /etc/xinetd.conf
#chmod 600 /etc/security



4、SSH的Banner警告信息

①判定依据(检查ssh服务开启状态下,是否设置ssh登录告警信息。
实际值:为true表示ssh服务开启,且设置了登录告警banner信息。

1、SSH服务未开启
2、SSH服务开启,且设置了变量Banner的值,并且Banner对应的文件不为空。
二者满足其一则合规,否则不合规。

②检测方法
1、执行以下命令验证SSH服务是否开启
#/etc/init.d/sshd status
2、如果SSH服务开启,请查看文件/etc/ssh/sshd_config文件,是否配置如下内容:
Banner /etc/sshbanner
查看对应的/etc/sshbanner文件中是否配置警告标示:
"Authorized users only. All activity may be monitored and reported "

③加固方案
参考配置操作
1、如果此项检查不合规,执行以下步骤进行修复。
执行如下命令创建ssh banner信息文件:
#touch /etc/ssh_banner
#chown bin:bin /etc/ssh_banner
#chmod 644 /etc/ssh_banner
#echo " Authorized only. All activity will be monitored and reported " > /etc/ssh_banner
可根据实际需要修改该文件的内容。
2、修改/etc/ssh/sshd_config文件,添加如下行:
Banner /etc/ssh_banner
3、重启sshd服务:
#/etc/init.d/sshd restart



5、设置关键文件的属性

①判定依据
以上两个文件的权限第六位为a则合规,否则不合规。

②检测方法
使用命令查看messages文件是否只可追加不可修改:
#lsattr /var/log/messages

③加固方案
参考配置操作
1、更改该日子文件属性
#chattr +a /var/log/messages #如果不存在则忽略



三、认证授权



1、启用远程日志功能

①判定依据

②检测方法
1、linux
查看文件 /etc/syslog.conf或者/etc/rsyslog.conf存在类似如下语句:
. @192.168.56.168
2、suse
查看文件/etc/syslog-ng/syslog-ng.conf,存在类似如下内容:
destination logserver { udp(“192.168.56.168” port(514)); };
log { source(src); destination(logserver); };

③加固方案
参考配置操作
1、linux
编辑文件 /etc/syslog.conf或者/etc/rsyslog.conf,增加如下内容:
. @<日志服务器ip或者域名>
2、suse
编辑文件/etc/syslog-ng/syslog-ng.conf,增加如下内容:
destination logserver { udp(“192.168.56.168” port(514)); };
log { source(src); destination(logserver); };
#日志服务器ip视实际情况来确定。
3、重启syslog服务
#/etc/init.d/syslog stop
#/etc/init.d/syslog start



2、记录安全事件日志

①判定依据
②检测方法
1、redhat5.x之前编辑/etc/syslog.conf、redhat6.x编辑etc/rsyslog.conf,在文件中加入如下内容:
*.err;kern.debug;daemon.notice /var/adm/messages
2、SUSE编辑文件/etc/syslog-ng/syslog-ng.conf,在文件中加入如下内容:
filter f_msgs { level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice); };
destination msgs { file("/var/adm/msgs"); };
log { source(src); filter(f_msgs); destination(msgs); };

③加固方案
参考配置操作
1、redhat5.x之前编辑/etc/syslog.conf,在文件中加入如下内容:
*.err;kern.debug;daemon.notice /var/adm/messages,其中/var/adm/messages为日志文件。
(1)、如果该文件不存在,则创建该文件,命令为:
#touch /var/adm/messages
(2)、修改权限为666,命令为:
#chmod 666 /var/adm/messages
(3)、重启日志服务:
#/etc/init.d/syslog restart
2、redhat6.x编辑etc/rsyslog.conf,在文件中加入如下内容:
*.err;kern.debug;daemon.notice /var/adm/messages,其中/var/adm/messages为日志文件。
(1)、如果该文件不存在,则创建该文件,命令为:
#touch /var/adm/messages
(2)、修改权限为666,命令为:
#chmod 666 /var/adm/messages
(3)、重启日志服务:
#/etc/init.d/syslog restart
3、SUSE编辑文件/etc/syslog-ng/syslog-ng.conf,在文件中加入如下内容:
filter f_msgs { level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice); };
destination msgs { file("/var/adm/msgs"); };
log { source(src); filter(f_msgs); destination(msgs); }; 其中/var/adm/msgs为日志文件。
(1)、如果该文件不存在,则创建该文件,命令为:
#touch /var/adm/msgs
(2)、修改权限为666,命令为:
#chmod 666 /var/adm/msgs
(3)、重启日志服务:
#/etc/init.d/syslog restart



3、记录帐户登录日志

①判定依据

②检测方法
1、redhat5.x之前查看文件 /etc/syslog.conf、redhat6.x查看文件/etc/rsyslog.conf存在类似如下语句:
authpriv.* /var/log/authlog
或者
authpriv.info /var/log/authlog
2、SUSE查看文件/etc/syslog-ng/syslog-ng.conf,存在类似如下内容:
filter f_auth { facility(auth); };
destination f_authlog { file("/var/log/authlog"); };
log { source(src); filter(f_auth); destination(f_authlog); };

③加固方案
参考配置操作
1、redhat5.x之前查看文件 /etc/syslog.conf、redhat6.x查看文件/etc/rsyslog.conf,增加如下内容:
authpriv.* /var/log/authlog
或者
authpriv.info /var/log/authlog
2、SUSE编辑文件/etc/syslog-ng/syslog-ng.conf,增加如下内容:
filter f_auth { facility(auth); };
destination f_authlog { file("/var/log/authlog"); };
log { source(src); filter(f_auth); destination(f_authlog); };
3、创建日志文件,并赋予其权限
#touch /var/log/authlog
#chmod 640 /var/log/authlog
4、重启syslog服务
#/etc/init.d/syslog stop
#/etc/init.d/syslog start



4、日志文件安全

①判定依据
不存在权限>640的日志文件则合规,否则不合规。

②检测方法
1、使用以下命令查看日志文件的权限
(1)、redhat5.x之前:
#LOGDIR=if [ -f /etc/syslog.conf ];then cat /etc/syslog.conf| grep -v "^[[:space:]]*#"|awk '{print $2}'|sed 's/^-//g'|grep '^\s*\/';fi;
#ls -l $LOGDIR 2>/dev/null|grep -v “[r-][w-]-[r-]-----”|awk ‘{print $1" “$8” "$9}’;
#unset LOGDIR
(2)、redhat6.x之前:
#LOGDIR=cat /etc/rsyslog.conf | grep -v "^[[:space:]]*#"|awk '{print $2}'|sed 's/^-//g'|grep '^\s*\/';
#ls -l $LOGDIR 2>/dev/null|grep -v “[r-][w-]-[r-]-----”|awk ‘{print $1" “$8” "$9}’;
#unset LOGDIR
(3)、suse:
#LOGDIR=cat /etc/syslog-ng/syslog-ng.conf|grep -v "^[[:space:]]*#"|grep "^destination"|grep file|cut -d\" -f2;
#ls -l $LOGDIR 2>/dev/null|grep -v “[r-][w-]-[r-]-----”|awk ‘{print $1" “$8” "$9}’;
#unset LOGDIR

③加固方案
参考配置操作
1、对权限>640的日志文件赋予640权限
#chmod 640 file #file检测步骤中输出的权限>640的日志文件



5、配置su命令使用情况记录

①判定依据
检测方法1或者2满足其一则合规,否则不合规。

②检测方法
1、redhat5.x之前查看文件 /etc/syslog.conf、redhat6.x查看文件/etc/rsyslog.conf存在类似如下语句:
authpriv.* /var/log/secure
2、SUSE查看文件/etc/syslog-ng/syslog-ng.conf,存在类似如下内容:
filter f_secure { facility(authpriv); };
destination f_authprive { file("/var/log/secure"); };
log { source(src); filter(f_secure); destination(f_secure); };

③加固方案
参考配置操作
1、redhat5.x之前查看文件 /etc/syslog.conf,增加如下内容:
authpriv.* /var/log/secure
2、redhat6.x查看文件/etc/rsyslog.conf,增加如下内容:
authpriv.* /var/log/secure
3、SUSE编辑文件/etc/syslog-ng/syslog-ng.conf,增加如下内容:
filter f_secure { facility(authpriv); };
destination f_authprive { file("/var/log/secure"); };
log { source(src); filter(f_secure); destination(f_authprive); };
4、创建日志文件,并赋予其权限
#touch /var/log/secure
#chmod 640 /var/log/secure
5、重启syslog服务
#/etc/init.d/syslog stop
#/etc/init.d/syslog start



6、记录cron行为日志

①判定依据

②检测方法
1、redhat5.x之前查看文件/etc/syslog.conf、redhat6.x查看文件/etc/rsyslog.conf,看文件中是否存在如下配置:
cron.* /var/log/cron
2、SUSE系统查看文件/etc/syslog-ng/syslog-ng.conf,看文件中是否存在如下内容:
filter f_cron { facility(cron); };
destination cron { file("/var/log/cron"); };
log { source(src); filter(f_cron); destination(cron); };

③加固方案
参考配置操作
1、redhat5.x之前编辑文件/etc/syslog.conf,在文件新增一行(如果存在则无需新增)如下内容:
cron.* /var/log/cron 其中/var/log/cron为日志文件。
(1)、如果该文件不存在,则创建该文件,命令为:
#touch /var/log/cron
(2)、同时修改其权限为640,命令为:
#chmod 640 /var/log/cron 。
2、redhat6.x编辑文件/etc/syslog.conf,在文件新增一行(如果存在则无需新增)如下内容:
cron.* /var/log/cron 其中/var/log/cron为日志文件。
(1)、如果该文件不存在,则创建该文件,命令为:
#touch /var/log/cron
(2)、同时修改其权限为640,命令为:
#chmod 640 /var/log/cron 。
3、SUSE系统,编辑文件/etc/syslog-ng/syslog-ng.conf(vi /etc/syslog-ng/syslog-ng.conf),在文件增加如下内容(如果存在则无需新增)如下内容:
filter f_cron { facility(cron); };
destination cron { file("/var/log/cron"); };
log { source(src); filter(f_cron); destination(cron); }; 其中/var/log/cron为日志文件。
(1)、如果该文件不存在,则创建该文件,命令为:
#touch /var/log/cron
(2)、同时修改其权限为640,命令为:
#chmod 640 /var/log/cron 。



四、系统服务



1、限制root用户SSH远程登录

①判定依据

②检测方法
1、执行以下命令查看配置文件/etc/ssh/sshd_config是否配置拒绝root用户通过ssh协议远程登录:
#grep -v “1#" /etc/ssh/sshd_config|grep “PermitRootLogin no”
2、执行以下命令查看ssh协议版本是否为2:
#grep -v "2
#” /etc/ssh/sshd_config|egrep “protocol\s*2|Protocol\s*2”

③加固方案
参考配置操作
1、执行备份:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
2、新建一个普通用户并设置高强度密码(防止设备上只存在root用户可用时,无法远程访问):
#useradd username
#passwd username
3、禁止root用户远程登录系统
(1)、编辑文件/etc/ssh/sshd_config(vi /etc/ssh/sshd_config),修改PermitRootLogin值为no并去掉注释。
PermitRootLogin no #则禁止了root从ssh登录。
(2)、重启SSH服务
#/etc/init.d/sshd restart
4、修改SSH协议版本
(1)、编辑文件/etc/ssh/sshd_config(vi /etc/ssh/sshd_config),修改Protocol的值为2并去掉注释。
Protocol 2
(2)、重启ssh服务
#/etc/init.d/sshd restart



2、使用SSH协议进行远程维护

①判定依据

②检测方法
使用以下命令查看telnet和ssh服务状态:
# chkconfig --list |grep “telnet|ssh”

③加固方案
参考配置操作
1、关闭TELNET服务(如果设备安装了TELNET服务则执行以下操作关闭,否则无需操作):
(1)、备份
#cp -p /etc/xinetd.d/telnet /etc/xinetd.d/telnet_bak
(2)、编辑文件/etc/xinetd.d/telnet(vi /etc/xinetd.d/telnet),把disable项改为yes,即disable = yes。
(3)、执行以下命令重启xinetd服务。
#service xinetd restart
2、开启SSH服务:
(1)、安装SSH软件包。
(2)、通过以下命令启动ssh服务:
#/etc/init.d/sshd start



3、限制root用户TELNET远程登录

①判定依据

②检测方法
1、使用命令chkconfig --list |egrep “telnet"查看TELNET服务是否开启。
2、使用以下命令查看文件/etc/securetty中是否有配置有(pts/)这样的内容:
#cat /etc/securetty|grep -v "3
#”|grep “pts/*”

③加固方案
参考配置操作
1、 编辑文件/etc/securetty(vi /etc/securetty)注释掉pts/*这样的内容并保存。



4、修改SNMP的默认Community

①判定依据
1、SNMP服务未开启
2、SNMP服务开启,且修改了默认团体名称
两个条件满足其中一个则合规,否则不合规。

②检测方法
1、查看snmpd服务状态:
#chkconfig snmpd
2、查看SNMP共同体字符串配置:
(1)、SUSE9:
#cat /etc/snmpd.conf
(2)、SUSE 10:
#cat /etc/snmp/snmpd.conf
(3)、linux:
#cat /etc/snmp/snmpd.conf

③加固方案
参考配置操作
1、SUSE 9步骤:
(1)、修改snmp配置文件 /etc/snmpd.conf找到以rocommunity或rwcommunity开头的行,如:rocommunity public 127.0.0.1其中的第二个字段(public)即为团体名,用新的团体名称替换该字段:rocommunity community_name 127.0.0.1
(2)、重启snmp服务:
#rcsnmpd restartb
2、SUSE 10\linux步骤
(1)、修改snmp配置文件/etc/snmp/snmpd.conf找到以rocommunity或rwcommunity开头的行,如:rocommunity public 127.0.0.1其中的第二个字段(public)即为团体名,用新的团体名称替换该字段:
rocommunity community_name 127.0.0.1
(2)、重启snmp服务:
#service snmpd restart



5、禁止root用户登录FTP

①判定依据
1、FTP进程不存在
2、vsftp服务器,/etc/pam.d/vsftpd中指定了ftpusers,且对应的ftpusers中存在root用户或者在配置文件/etc/vsftpd/vsftpd.conf(/etc/vsftpd.conf)配置了userlist_enable=YES、userlist_deny=NO、userlist_file=,且中不存在root用户。
3、pure-ftp服务器,pure-ftpd.conf文件中设置了MinUID 100,限制了uid<=100的用户登录FTP。
4、wu-ftp服务器,/etc/ftpd/ftpusers(/etc/ftpusers)文件中存在root用户。
5、proftp服务器,proftpd.conf文件中不存在如下配置:
RootLogin on
以上五个条件满足其一则合规,否则不合规。

②检测方法
1、如果是vsftp服务器,查看如下配置文件/etc/pam.d/vsftpd、/etc/vsftpd/vsftpd.conf(/etc/vsftpd.conf)。
2、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf。
3、如果是wu-ftp服务器,查看如下配置文件/etc/ftpd/ftpusers(/etc/ftpusers)。
4、如果是proftp服务器,查看如下配置文件proftpd.conf。

③加固方案
参考配置操作
1、vsftp
(1)、修改ftpusers文件,增加不能通过FTP登录的用户
1)、首先需确定ftpusers文件位置,可以通过以下命令知道
#cat /etc/pam.d/vsftpd
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
#其中file=/etc/vsftpd/ftpusers即为当前系统上的ftpusers文件.
2)、修改file对应的文件在文件中增加以下用户,则该用户均不允许通过FTP登录(每隔用户占一行):
root
daemon
bin
sys
adm
lp
uucp
nuucp
listen
nobody
noaccess
nobody4
(2)、配置vsftpd.conf文件,设定只允许特定用户通过FTP登录:
1)、vsftpd.conf文件路径一般为/etc/vsftpd.conf或者/etc/vsftpd/vsftpd.conf。
修改其中内容:
userlist_enable=YES #此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。
userlist_deny=NO #决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器,YES默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示,NO只允许在文件中的用户登录FTP服务器.
userlist_file=/etc/vsftpd/user_list
2)、编辑userlist_file对应的文件去掉root.
2、wu-ftp
编辑/etc/ftpusers或者/etc/ftpd/ftpusers,在文件中另取一行录入root,例如:
root
venustech
说明:ftpusers文件中用户将禁止登录FTP
3、proftp
编辑配置文件proftpd.conf,在文件中查看是否存在如下内容,存在则将其注释掉:
RootLogin on
4、pure-ftp
编辑配置文件pure-ftpd.conf,在文件中查看是否存在如下内容,没有则新增:
MinUID 100 #即禁止uid<=100的用户登录FTP
5、 重启FTP服务



6、禁止匿名FTP

①判定依据
1)ftp进程不存在
2)vsftp服务器,配置文件中存在anonymous_enable的值为NO
3)pure-ftp服务器,配置文件中存在NoAnonymous的值为yes
4)proftp服务器,配置文件中将匿名用户配置注释掉或者匿名用户配置中存在AnonRequirePassword的值为on.
5)wu-ftp服务器,配置文件中不存在class <class_name> [guest|anonymous] <ip_address>
以上四个条件满足其一则合规,否则不合规

②检测方法
一、如果是vsftp服务器,查看如下配置文件/etc/vsftpd.conf(或者/etc/vsftpd/vsftpd.conf).
二、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf.
三、如果是wu-ftp服务器,查看如下配置文件ftpaccess.
四、如果是proftp服务器,查看如下配置文件proftpd.conf.

③加固方案
参考配置:
1)vsftp
编辑文件编辑vi /etc/vsftpd.conf(或vi /etc/vsftpd/vsftpd.conf)文件
设置:
anonymous_enable=NO #如果存在anonymous_enable则修改,如果不存在则手动增加
2)pure-ftp
编辑配置文件pure-ftpd.conf,在文件中找到如下行,修改NoAnonymous的值为yes(没有则添加)
NoAnonymous yes
3)wu-ftp
编辑配置文件ftpaccess,如果文件中存在类似如下行,则注释掉:
class [类名] [guest/anonymous] [IP地址]
说明:用户类型不能为guest或者anonymous
4)proftp
编辑配置文件proftpd.conf,查看文件中找到如下结构:
<Anonymous ~ftp>
Group ftp
UserAlias anonymous ftp

在该结构中添加如下行:
AnonRequirePassword on #启用认证功能,注意AnonRequirePassword后面更得是多个tab符.
或者将<Anonymous ~ftp>…结构注释掉.
5)重启ftp服务



7、禁止存在心血漏洞

①判定依据
openssl版本不在以下列表的则合规,否则不合规:
1.0.0、1.0.1f、1.0.1e、1.0.1d、1.0.1c、1.0.1b、1.0.1a、1.0.1、1.0.2-beta、1.0.2-beta1

②检测方法
执行如下命令查看openssl版本。
#openssl version

③加固方案
参考配置操作
1、请立即升级openssl版本。



五、文件权限



1、查找未授权的SUID-SGID文件

①判定依据
②检测方法
用下面的命令查找系统中所有的SUID和SGID程序,执行:
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -type f ( -perm -04000 -o -perm -02000 ) -xdev -exec ls -lg {} ; 2>>/dev/null
done

③加固方案
参考配置操作
1、找出系统中所有含有“s”属性的文件,把不必要的“s”属性去掉,或者把不用的直接删除。
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -type f ( -perm -04000 -o -perm -02000 ) -xdev -exec ls -lg {} ; 2>>/dev/null
done
2、使用如下命令去掉文件的s属性:
#chmod a-s



2、登陆超时时间设置

①判定依据
输出存在TMOUT,且其值=300秒则合规,否则不合规。

②检测方法
查看/etc/profile文件中是否配置超时设置:
#cat /etc/profile |grep -i TMOUT

③加固方案
参考配置操作
1、执行备份
#cp -p /etc/profile /etc/profile_bak
2、在/etc/profile文件增加以下两行(如果存在则修改,否则手工添加):
#vi /etc/profile
TMOUT=300 #TMOUT按秒计算
export TMOUT



3、删除潜在危险文件

①判定依据
系统中不存在文件.rhosts,.netrc,hosts.equiv则合规,否则不合规。

②检测方法
通过如下命令查看系统中是否存在这三个文件(.rhosts,.netrc,hosts.equiv):
#find / -maxdepth 3 -name .netrc 2>/dev/null|wc -l
#find / -maxdepth 3 -name .rhosts 2>/dev/null|wc -l
#find / -maxdepth 3 -name hosts.equiv 2>/dev/null|wc -l

③加固方案
参考配置操作
1、需要删除的文件(.netrc、.rhosts、hosts.equiv)
如无应用,删除以上文件
(1)、备份:
#mv .rhost .rhost.bak
#mv .netr .netr.bak
#mv host.equiv host.equiv.bak
(2)、删除:
#rm .netrc
#rm .rhosts
#rm hosts.equiv



4、禁止UID为0的用户存在多个

①判定依据
不存在root用户外的其他用户UID为0则合规,否则不合规。

②检测方法
通过如下命令查看/etc/passwd文件中UID为0的账号:
#awk -F: ‘($3 == 0) { print $1 }’ /etc/passwd

③加固方案
参考配置操作
1、执行配置文件备份:
#cp –p /etc/passwd /etc/passwd_bak
#cp –p /etc/shadow /etc/shadow_bak
#cp –p /etc/group /etc/group_bak
2、查询UID为0的账号信息
#awk -F: ‘($3 == 0) { print $1 }’ /etc/passwd
如果命令的输出存在非root账号,则使用如下命令删除该账户(切记不要删除root用户)。
#userdel username



5、root用户环境变量的安全性

①判定依据
$PATH环境变量中不存在.或者…的路径则合规,否则不合规。

②检测方法
使用命令echo $PATH查看PATH环境变量的值,确认PATH环境变量中是否存在.或者…的路径:
.:/usr/bin:…:/usr/sbin

③加固方案
参考配置操作
1、修改文件/etc/profile或/root/.bash_profile
修改环境变量$PATH,删除环境变量值包含的(.和…)的路径。



6、删除任何人都有写权限的目录的写权限

①判定依据
②检测方法
使用如下命令查看系统中任何人都有写权限的目录:
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -xdev -exec ls -ld {} ; 2>>/dev/null;
done

③加固方案
参考配置操作
1、查看系统中任何用户都有写权限的目录(使用以下命令):
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -xdev -exec ls -ld {} ; 2>>/dev/null;
done
2、去掉步骤1输出文件的其他用户写权限。
#chmod o-w



7、删除任何人都有写权限的文件的写权限

①判定依据
②检测方法
使用如下命令查看系统中任何人都有写权限的文件:
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -xdev -type f ( -perm -0002 -a ! -perm -1000 ) -xdev -exec ls -ld {} ; 2>>/dev/null;
done

③加固方案
参考配置操作
1、查看系统中任何用户都有写权限的文件(使用以下命令):
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -xdev -type f ( -perm -0002 -a ! -perm -1000 ) -xdev -exec ls -ld {} ; 2>>/dev/null;
done
2、去掉步骤1输出文件的其他用户写权限。
#chmod o-w



8、删除没有属主的文件

①判定依据
②检测方法
查看系统中没有属主的(没有所属用户或所属主)文件(使用如下命令):
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -nouser -o -nogroup -print 2>>/dev/null
done

③加固方案
参考配置操作
1、查看系统中没有属主的文件(使用以下命令):
#for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'
do
find $PART -nouser -o -nogroup -print 2>>/dev/null
done
2、给步骤1输出的文件赋予一个属主或者删除该文件。
#chown : #uname为用户名称,groupname为组名称,filename为要赋予其属主的文件名称。



9、系统core dump状态

①判定依据
设置* soft core、* hard core为0,且注释掉ulimit -S -c 0 > /dev/null 2>&1行则合规,否则不合规。

②检测方法
1、查看/etc/security/limits.conf文件中是否配置如下内容:
* soft core 0
* hard core 0
2、查看/etc/profile文件中是否存在如下配置,存在则注释掉:
ulimit -S -c 0 > /dev/null 2>&1

③加固方案
参考配置操作
1、编辑文件/etc/security/limits.conf(vi /etc/security/limits.conf),在文件末尾加入如下两行(存在则修改,不存在则新增):
* soft core 0
* hard core 0
2、编辑文件/etc/profile(vi /etc/profile)注释掉如下行:
#ulimit -S -c 0 > /dev/null 2>&1



10、修改SSH的Banner信息

①判定依据
1、SSH服务未开启
2、SSH开启,且文件/etc/motd不为空
二者满足其一则合规,否则不合规。

②检测方法
1、执行以下命令验证SSH服务是否开启
#/etc/init.d/sshd status
2、如果SSH服务开启,请查看文件/etc/motd中是否设置banner信息。

③加固方案
参考配置操作
1、修改文件/etc/motd的内容,如没有该文件,则创建它:
#touch /etc/motd
2、使用如下命令在文件/etc/motd中添加banner信息。
#echo " Authorized users only. All activity may be monitored and reported " > /etc/motd
可根据实际需要修改该文件的内容。



11、禁止IP路由转发

①判定依据
net.ipv4.ip_forward的值为0表示合规,否则不合规。

②检测方法
使用如下命令查看net.ipv4.ip_forward的值:
#sysctl -n net.ipv4.ip_forward

③加固方案
参考配置操作
1、备份文件:
#cp -p /etc/sysctl.conf /etc/sysctl.conf_bak
2、编辑文件sysctl.conf加上
net.ipv4.ip_forward=0
3、使配置文件生效
#sysctl -p



12、配置NFS服务限制

①判定依据
1、不存在与NFS有关的守护进程
2、如果存在NFS守护进程,但/etc/hosts.allow设置了允许访问nfs的远程地址且/etc/hosts.deny设置了拒绝所有访问NFS的远程地址。
二者满足其中之一则合规,否则不合规。

②检测方法
1、查看系统是否存在如下NFS守护进程:rpc.lockd, rpc.nfsd, rpc.statd, rpc.mountd
2、查看NFS服务状态:
# chkconfig --list |grep nfs
nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
3、查看是否对NFS服务访问做限制:
#more /etc/hosts.allow
#more /etc/hosts.deny

③加固方案
参考配置操作
1、杀掉如下NFS进程:rpc.lockd, rpc.nfsd, rpc.statd, rpc.mountd
2、禁用NFS
#chkconfig --level 235 nfs off
3、如需要nfs服务,设置限制能够访问NFS服务的IP范围:
编辑文件/etc/hosts.allow增加一行:
nfs:允许访问的IP
编辑文件/etc/hosts.deny增加一行:
nfs:all或者all:all



13、禁止组合键关机

①判定依据
文件/etc/inittab中不存在如下内容则合规,否则不合规:
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

②检测方法
执行命令查看文件/etc/inittab是否存在如下内容:
#cat /etc/inittab|grep -v “^#”|grep “ctrlaltdel”
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

③加固方案
参考配置操作
编辑文件/etc/inittab,将以下行删除、注释,或者将此行:
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now
修改为:
ca::ctrlaltdel:/bin/true



14、控制远程访问的IP地址

①判定依据
1、/etc/hosts.allow中设置了允许访问的IP地址范围。
2、/etc/hosts.deny中设置了拒绝所有远程访问。
两者同时满足则合规,否则不合规。

②检测方法
查看/etc/hosts.allow和/etc/hosts.deny两个文件中是否设定了IP范围限制:
#cat /etc/hosts.allow
#cat /etc/hosts.deny

③加固方案
参考配置操作
1、执行备份:
#cp -p /etc/hosts.allow /etc/hosts.allow_bak
#cp -p /etc/hosts.deny /etc/hosts.deny_bak
2、编辑/etc/hosts.allow文件,增加一行 service: 允许访问的IP(service为服务,例如sshd),举例如下:all:192.168.4.44:allow #允许单个IP访问所有服务进程
sshd:192.168.1.*:allow #允许192.168.1.0的整个网段访问SSH服务进程
#编辑文件/etc/hosts.deny增加一行(deny优先级高于allow)
all:all #拒绝一切远程访问配合文件hosts.allow使用。
注:以上内容仅供参考,请根据实际网段和需求进行实施。



15、配置NTP

①判定依据
1、NTP服务处于开启状态
2、设置了NTP时间同步服务器
两者需要同时满足则合规,否则不合规。

②检测方法
1、执行以下命令验证NTP服务是否开启
#ps -ef|egrep “ntp|ntpd”|grep -v grep
2、如果NTP服务未开启,执行以下命令启动服务
#/etc/init.d/ntpd start #suse9启动ntp服务为:/etc/init.d/xntpd start
3、查看文件/etc/ntp.conf中是否有类似server 10.5.1.1的行:
server 10.5.1.1

③加固方案
参考配置操作
1、编辑ntp 的配置文件:
#vi /etc/ntp.conf 在server一行添加ntp服务器的IP地址
2、启动ntpd服务:
#/etc/init.d/ntpd start #suse9启动ntp服务为:/etc/init.d/xntpd start



16、禁止ICMP重定向

①判定依据
net.ipv4.conf.all.accept_redirects的值为0则合规,否则不合规。

②检测方法
使用如下命令查看参数net.ipv4.conf.all.accept_redirects的值:
#sysctl -n net.ipv4.conf.all.accept_redirects

③加固方案
参考配置操作
1、备份文件
#cp -p /etc/sysctl.conf /etc/sysctl.conf_bak
2、编辑文件 /etc/sysctl.conf,将net.ipv4.conf.all.accept_redirects的值改为0
2、 使配置生效#sysctl -p



17、修改FTP的Banner信息

①判定依据
1、FTP进程不存在
2、vsftp服务器,查看/etc/vsftpd.conf(/etc/vsftpd/vsftpd.conf)是否存在如下内容:
ftpd_banner=” Authorized users only. All activity may be monitored and reported.”
3、wu-ftp服务器,如果ftpaccess文件中存在类似如下内容:
banner /etc/ftpd/banner.msg
且/etc/ftpd/banner.msg内容非空。
4、pure-ftp服务器,查看pure-ftpd.conf文件中是否存在如下内容:
FortunesFile
且内容非空。
5、proftpd服务器,查看proftpd.conf文件中是否存在如下内容:
DisplayConnect
且内容为非空。
以上5个条件满足其一则合规,否则不合规。

②检测方法
1、如果是vsftp服务器,查看如下配置文件/etc/vsftpd.conf(或者/etc/vsftpd/vsftpd.conf)。
2、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf。
3、如果是wu-ftp服务器,查看如下配置文件ftpaccess。
4、如果是proftpd服务器,查看如下配置文件proftpd.conf。

③加固方案
参考配置操作
1、vsftp
修改vsftp回显信息
#vi /etc/vsftpd.conf (或者/etc/vsftpd/vsftpd.conf)
修改ftpd_banner的值为ftpd_banner=” Authorized users only. All activity may be monitored and reported.”
可根据实际需要修改该文件内容
2、pure-ftp
修改Pure-FTP回显信息Pure-ftp回显信息分为两种:
自带回显信息:
Pure-ftp自带回显信息没法通过更改配置来更改,只能在安装的时候选择withoutbanner选项去掉自带BANNER信息。
自定义回显信息:Pure-ftp还有自定义回显信息,配置方法如下:
(1)、修改pure-ftp配置文件:
#vi /etc/pure-ftpd/pure-ftpd.conf找到以下行,确保该行未被注释。
FortunesFile
(2)、编辑/usr/share/fortune/zippy文件(如没有fortune文件夹或者zippy文件,则新建该文件夹或该文件):
#vi /usr/share/fortune/zippy将自定义BANNER写入其中。
3、wu-ftp
(1)、#vi /etc/ftpd/ftpaccess(/etc/ftpaccess),找到以下行,确保该行未被注释:
banner /etc/ftpd/banner.msg
(2)、编辑文件/etc/ftpd/banner.msg(如果没有则新建):
#vi /etc/ftpd/banner.msg将自定义BANNER写入其中。
4、proftpd
(1)、#vi /usr/local/etc/proftpd.conf找到以下行,查看Banner信息文件是否存在:
DisplayConnect #Banner信息文件
(2)、如果Banner文件不存在则新建:
#touch
#vi #编辑该文件并添加自定义Banner信息
5、 重启FTP服务



18、设置屏幕锁定

①判定依据
1、idle_activation_enabled的值为true #启用空闲激活
2、lock_enabled的值为true #启用屏幕锁定
3、/apps/gnome-screensaver/mode的值为blank-only #屏保模式
4、idle_delay的值<=15 #空闲激活时间
四个条件同时满足则合规,否则不合规。

②检测方法
使用如下命令查看屏幕锁定配置:
# gconftool-2 -g /apps/gnome-screensaver/idle_activation_enabled
# gconftool-2 -g /apps/gnome-screensaver/lock_enabled
# gconftool-2 -g /apps/gnome-screensaver/mode
# gconftool-2 -g /apps/gnome-screensaver/idle_delay

③加固方案
参考配置操作
1、启用空闲激活
#gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-screensaver/idle_activation_enabled true
2、启用屏幕锁定
#gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-screensaver/lock_enabled true
3、设置屏保模式
#gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /apps/gnome-screensaver/mode blank-only
4、设置空闲激活时间
#gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int --set /apps/gnome-screensaver/idle_delay 15



19、用户FTP访问安全配置

①判定依据
1、FTP进程不存在。
2、vsftp服务器,查看/etc/vsftpd.conf(/etc/vsftpd/vsftpd.conf)是否存在如下内容:
ls_recurse_enable=YES
local_umask=022 //设置用户上传文件的属性为755
anon_umask=022 //匿名用户上传文件(包括目录)的 umask
3、proftp服务器,查看proftpd.conf是否存在如下内容:
Umask 022
4、wu-ftp服务器,如果ftpaccess文件中存在类似如下内容:
upload /home/ftpd /incoming yes real guest anonymous 0644 dirs
其文件上载权限必须为0644
5、pure-ftp服务器,查看pure-ftpd.conf文件中是否存在如下配置:
Umask 177:077
以上5个条件满足其一则合规,否则不合规。

②检测方法
1、如果是vsftp服务器,查看如下配置文件/etc/vsftpd.conf(或者/etc/vsftpd/vsftpd.conf)。
2、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf。
3、如果是wu-ftp服务器,查看如下配置文件ftpaccess。
4、如果是proftp服务器,查看如下配置文件proftpd.conf。

③加固方案
参考配置操作
1、vsftp
修改/etc/vsftpd.conf(或者为/etc/vsftpd/vsftpd.conf),确保以下行未被注释掉,如果没有该行,请添加:
ls_recurse_enable=YES
local_umask=022 //设置用户上传文件的属性为755
anon_umask=022 //匿名用户上传文件(包括目录)的 umask
2、pure-ftp
编辑配置文件pure-ftpd.conf,查看是否存在如下设置
Umask 177:077 #此权限限制比较苛刻,如果配置后影响使用请通过系统自定义策略参数修改其值为133:022
3、proftp
编辑配置文件proftpd.conf,查看是否存在如下配置
Umask 022
4、wu-ftp
编辑配置文件ftpaccess,如果文件中存在类似如下配置:
upload /home/ftpd /incoming yes real guest anonymous 0644 dirs
确保其上载的文件权限为0644
5、 重启FTP服务器



20、关闭不必要启动项

①判定依据
系统中不存以上名称以S开头的脚本文件则合规,否则不合规。

②检测方法
以下脚本如果以S开头,需要修改:lp|rpc|snmpdx|keyserv|nscd|Volmgt|uucp|dmi|sendmail|autoinstall
使用命令检查/etc/rc2.d、/etc/rc3.d、/etc/rc4.d、/etc/rc5.d目录下的所有"S"打头的脚本文件,将以上启动不必要服务的脚本文件改名确认新文件名不以"S"打头。
# ls /etc/rc2.d/* /etc/rc3.d/* /etc/rc4.d/* /etc/rc5.d/|egrep “lp|rpc|snmpdx|keyserv|nscd|Volmgt|uucp|dmi|sendmail|autoinstall”|grep "^S"

③加固方案
参考配置操作
此项扫描不合规,请将那些启动不必要服务的脚本文件改名,确认新文件名不以"S"打头,修改前切记要进行备份。



21、补丁安装

①判定依据
手工确认项。

②检测方法
1、对于SuSe系统,查看/etc/SuSe-release文件内容或者使用命令uname -a查看系统版本信息:
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 1
2、对于redhat系统查看文件/etc/redhat-release的内容或者使用uname -a查看系统版本,例如:
Red Hat Enterprise Linux Server release 5.5 (Tikanga)

③加固方案
参考配置操作
1、可以从以下链接获取各系统的最新补丁包:
RedHat Linux:http://www.redhat.com/support/errata/
Slackware Linux:ftp://ftp.slackware.com/pub/slackware/
SuSE Linux:http://www.suse.com/us/support/security/index.html
TurboLinux:http://www.turbolinux.com/security/
3、 使用Online Update或Patch CD Update等方式升级系统补丁。



22、限制FTP用户登录后能访问的目录

①判定依据
1、FTP进程不存在
2、vsftp服务器,配置文件中存在如下内容:
chroot_list_enable=YES
chroot_local_user=NO
chroot_list_file=/etc/vsftpd/chroot_list
3、pure-ftp服务器,配置文件中存在ChrootEveryone的值为yes
4、proftp服务器,配置文件中存在DefaultRoot ~.
5、wu-ftp服务器,配置文件中存在restricted-uid *
以上四个条件满足其一则合规,否则不合规。

②检测方法
1、如果是vsftp服务器,查看如下配置文件/etc/vsftpd.conf(或者/etc/vsftpd/vsftpd.conf)。
2、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf。
3、如果是wu-ftp服务器,查看如下配置文件ftpaccess。
4、如果是proftp服务器,查看如下配置文件proftpd.conf。

③加固方案
参考配置操作
1、vsftp
(1)、编辑文件/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf
如果存在chroot_list_enable,去掉前面的注释符,修改其值等于YES。不存在则手工增加一行:
chroot_list_enable=YES
注释掉chroot_local_user或者修改其值等于NO。
如果存在chroot_list_file,去掉前面的注释符,不存在则手工增加一行,例如:
chroot_list_file=/etc/vsftpd/chroot_list
(2)、创建chroot_list_file对应的文件
例如:
#touch /etc/vsftpd/chroot_list
#chmod 750 /etc/vsftpd/chroot_list
(3)、在文件/etc/vsftpd/chroot_list里添加用户,里面的用户登录后,只能活动在其家目录,无法切换目录,每个用户占一行。例如:
test
test1
2、pure-ftp
编辑配置文件pure-ftpd.conf,在文件中找到如下行,修改ChrootEveryone的值为yes(没有则添加)
ChrootEveryone yes #启用chroot,所有用户登录后,只能在自己的家目录里活动。
3、wu-ftp
编辑配置文件ftpaccess,如果文件中存在类似如下行:
restricted-uid * #为*代表所有用户,也可以为具体的用户名。
4、proftp
编辑配置文件proftpd.conf,查看文件中是否存在如下行:
DefaultRoot ~ #将用户限制在自己的目录下
或者
DefaultRoot ~ group1,!group2 #将用户限制在自己的目录下,对group1有效,对group2无效。
5、 重启FTP服务



23、关闭不必要的服务和端口

①判定依据
手工判断

②检测方法
1、执行以下命令查看服务列表:
#chkconfig --list
查看所有服务的开启关闭列表检查基本的网络服务的开启或禁止情况,根据实际情况关闭不必要的服务。
2、查看开放的端口列表:
#netstat -an
3、编辑文件/etc/service,查看服务与端口对应表 。

③加固方案
参考配置操作
1、禁止非必要服务
#chkconfig [service] off
2、编辑文件 /etc/services
在文件中找到对应服务的端口,注释掉改行内容。



24、使用PAM认证模块禁止wheel组之外的用户su为root

①判定依据
使用pam_rootok.so认证模块认证且配置了只允许wheel组的用户才能su为root则合规,否则不合规。

②检测方法
执行命令cat /etc/pam.d/su,查看文件中是否存在如下配置:
auth sufficient pam_rootok.so
auth required pam_wheel.so group=wheel

③加固方案
参考配置操作
1、编辑文件(vi /etc/pam.d/su)
(1)、redhat4.x(32位)在文件开头加入如下两行(有则修改,没有则添加):
auth sufficient /lib/security/I S A / p a m r o o t o k . s o a u t h r e q u i r e d / l i b / s e c u r i t y / ISA/pam_rootok.so auth required /lib/security/ISA/pamr​ootok.soauthrequired/lib/security/ISA/pam_wheel.so use_uid
#注意auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开
(2)、redhat4.x(64位)在文件开头加入如下两行(有则修改,没有则添加):
auth sufficient /lib64/security/I S A / p a m r o o t o k . s o a u t h r e q u i r e d / l i b 64 / s e c u r i t y / ISA/pam_rootok.so auth required /lib64/security/ISA/pamr​ootok.soauthrequired/lib64/security/ISA/pam_wheel.so use_uid
#注意auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开
(3)、redhat5.x和redhat6.x在文件开头加入如下两行(有则修改,没有则添加):
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组的账户名称。



25、修改TELNET的Banner信息

①判定依据
1、TELNET服务未开启。
2、TELNET服务开启,但文件/etc/issue和/etc/issue.net不包含系统敏感信息。
二者满足其一则合规,否则不合规。

②检测方法
使用命令查看TELNET默认Banner信息(cat /etc/issue和cat /etc/issue.net),确认是否不存在如下版本信息内容:
red hat Enterprise Linux Server release 5.5 (Tikanga)
Kernel \r on an \m #Linux
Welcome to SUSE Linux Enterprise Server 10 (i586) - Kernel \r (\l).
dfdfasd #suse

③加固方案
参考配置操作
1、修改TELNET回显信息,修改文件/etc/issue 和/etc/issue.net中的内容,执行如下两条命令:
#echo " Authorized users only. All activity may be monitored and reported " > /etc/issue
#echo " Authorized users only. All activity may be monitored and reported " > /etc/issue.net
可根据实际需要修改该文件的内容,但是不要出现系统敏感信息,如redhat,suse等。
2、重启服务:
#/etc/init.d/xinetd restart



26、禁止IP源路由

①判定依据
accept_source_route的值为0则合规,否则为不合规。

②检测方法
执行以下命令查看参数accept_source_route的值。
#cat /proc/sys/net/ipv4/conf/*/accept_source_route

③加固方案
参考配置操作
1、如果此项检查失败,请执行以下命令进行修复:
#for f in /proc/sys/net/ipv4/conf/*/accept_source_route
do
echo 0 > $f
done



27、打开syncookie缓解syn flood攻击

①判定依据
tcp_syncookies的值为1则合规,否则为不合规。

②检测方法
执行以下命令查看参数tcp_syncookies的值。
#cat /proc/sys/net/ipv4/tcp_syncookies

③加固方案
参考配置操作
1、方法一
命令行输入如下命令:
#echo 1 > /proc/sys/net/ipv4/tcp_syncookies
注意:此方法在重启后会失效。
2、方法二
#vi /etc/sysctl.conf
在文件中查找net.ipv4.tcp_syncookies修改为:
net.ipv4.tcp_syncookies = 1
如果没找到,则在单独一行添加即可。
3、保存后退出
4、#sysctl -p
此方法在重启后依然有效,网络与服务。



28、更改主机解析地址的顺序

①判定依据
文件/etc/host.conf存在如上配置则合规,否则不合规。

②检测方法
编辑文件/etc/host.conf,看是否存在如下内容:
order hosts,bind
multi on
nospoof on

③加固方案
参考配置操作
1、编辑/etc/host.conf文件
#vi /etc/host.conf,在空白处加入下面三行:
order hosts,bind #第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。
multi on #第二项设置检测是否"/etc/hosts"文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。
nospoof on #第三项设置说明要注意对本机未经许可的IP欺骗。



29、历史命令设置

①判定依据
HISTFILESIZE和HISTSIZE的值小于等于5则合规,否则不合规。

②检测方法
编辑文件/etc/profile查看是否存在如下内容:
HISTFILESIZE=5
HISTSIZE=5

③加固方案
参考配置操作
1、编辑文件/etc/profile,在文件中加入如下两行(存在则修改):
HISTFILESIZE=5
HISTSIZE=5
2、执行以下命令让配置生效
#source /etc/profile



30、对root为ls、rm设置别名

①判定依据
给root用户设备了ls和rm命令别名则合规,否则不合规。

②检测方法
执行以下操作查看系统是否为root设置rm和ls别名设置:
#echo $SHELL
(1)、如果输出csh:
#vi ~/.cshrc 是否存在如下内容:
alias ls=‘ls -aol’
alias rm=‘rm -i’
(2)、如果输出bash:
# vi ~/.bashrc查看是否存在如下内容:
alias ls=‘ls -aol’
alias rm=‘rm -i’

③加固方案
参考配置操作
1、#echo $SHELL
(1)、如果输出csh:
#vi ~/.cshrc 在文件末尾增加如下两行
alias ls=‘ls -aol’
alias rm=‘rm -i’
(2)、如果输出bash:
# vi ~/.bashrc在文件末尾增加如下两行
alias ls=‘ls -aol’
alias rm=‘rm -i’



31、禁止存在bash安全漏洞

①判定依据
看检测方法的输出为以下内容则不合规:
vulnerable
②检测方法
执行如下命令查看设备是否存在bash安全漏洞。
#env -i X=’() { (a)=>’ bash -c ‘/dev/stdout echo vulnerable’ 2>/dev/null

③加固方案
参考操作步骤:
(1).目前官网已经提供了升级包bash-4.1.2-15.el6_5.1.x86_64.rpm,请自行下载升级.


  1. [:space:] ↩︎

  2. [:space:] ↩︎

  3. [:space:] ↩︎

上一篇:CentOS操作系统密码复杂度策略查看和设置


下一篇:Kali 和 Centos、Windows三系统的安装事项!