LINUX基线要求及加固方法
《YDT 2701-2014 电信网和互联网安全防护基线配置要求及检测要求 操作系统? LINUX篇》
一、账号
应按照不同用户分配不同账号
检查/etc/passwd是否有只有root用户,应用应使用其他用户账号部署
限制用户su到root
编辑su文件(vi /etc/pam.d/su),在开头添加下面两行:
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so group=wheel
这表明只有wheel组的成员可以使用su命令成为root用户。
删除或锁定无关账号
使用删除或锁定的与工作无关的账号登录系统;
需要锁定的用户:listen,gdm,webservd,nobody,nobody4、noaccess。
vi /etc/passwd --修改需要锁定的用户登录方式为/bin/false
建立多账户组
cat /etc/passwd;cat /etc/group,检查是否有只有root用户组,应用应使用其他用户组部署
二、口令
密码创建要求是否配置
口令长度至少8 位,并包括数字、小写字母、大写字母和特殊符号4 类中至少3 类。
vi /etc/login.defs ,修改设置如下
PASS_MIN_LEN=8 #设定最小用户密码长度为8 位
vi /etc/pam.d/system-auth
password ? ?requisite ? ? pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 ? lcredit=-1 ? dcredit=-3 ?ocredit=-1 #设定密码策略
帐户口令的生存期不长于90天
1、参考配置操作
vi /etc/login.defs
PASS_MAX_DAYS=90 #设定口令的生存期不长于90 天注:该设置对已存在的用户的口令不产生影响,新建用户,默认密码会强制90天过期。
三、授权
配置用户最小授权
1、参考配置操作
通过 chmod 命令对目录的权限进行实际设置。
2、补充操作说明
/etc/passwd 必须所有用户都可读,root 用户可写 –rw-r—r—
/etc/shadow 只有root 可读 –r--------
/etc/group 须所有用户都可读,root 用户可写 –rw-r—r—
使用如下命令设置:
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
配置文件与目录缺省权限控制
设置默认权限:
vi /etc/login.defs 在末尾增加umask 027,将缺省访问权限设
置为750
用户 FTP 访问安全是否配置
编辑 /etc/vsftpd/chroot_list 文件,将需要限制的用户名加入到文件中
四、远程登录
限制 root 用户远程登录
1、参考配置操作
修改/etc/ssh/sshd_config 文件,将
PermitRootLogin yes 改为PermitRootLogin no,重启sshd 服务。
使用ssh加密登录
应配置使用ssh服务进行远程登录,开启使用密码参数,并禁止使用telnet
五、补丁
系统是否安装最新补丁
uname -a检查系统版本,升级到最新版本
yum update?
注:升级应最好相关备份动作,以防升级后对部分应用的不兼容。
六、日志
启用 Syslog 日志审计
1、参考配置操作
#cat /etc/syslog.conf 查看是否有#authpriv.* /var/log/secure
配置日志文件安全权限
系统日志文件由 syslog 创立并且不可被其他用户修改;其它的系统日志文件不是全局可写
chmod 600 /var/log/messages
chmod 600 /var/log/boot.log
chmod 600 /var/log/cron
chmod 600 /var/log/secure
chmod 600 /var/log/maillog
chmod 600 /var/log/spooler
chmod 600 /var/log/mail
chmod 600 /var/log/cron
启用记录cron行为日志功能
1、参考配置操作
Vi /etc/syslog.conf
# Log cron stuff
cron.*
配置远程日志功能
1、参考配置操作
修改配置文件 vi /etc/syslog.conf,
加上这一行:
*.* @192.168.0.1
可以将"*.*"替换为你实际需要的日志信息。比如:kern.* ; mail.* 等等。
可以将此处 192.168.0.1 替换为实际的IP 或域名。
七、不必要的服务、端口
关闭不必要的服务
1、参考配置操作
查看所有开启的服务:
#ps –ef
#chkconfig --list
#cat /etc/xinetd.conf
在xinetd.conf中关闭不用的服务首先复制/etc/xinetd.conf。 #cp
/etc/xinetd.conf /etc/xinetd.conf.backup 然后用vi编辑器编辑
xinetd.conf文件,对于需要注释掉的服务在相应行开头标记"#"字
符,重启xinetd服务,即可。
八、系统Banner 设置
修改系统 banner
mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak
九、登陆超时时间设置
对于具备字符交互界面的设备,配置定时帐户自动登出
1、参考配置操作
通过修改账户中“TMOUT”
参数,可以实现此功能。TMOUT 按秒计算。编辑profile 文
件(vi /etc/profile),在“HISTFILESIZE=”后面加入下
面这行:
建议 TMOUT=300(可根据情况设定)
十、删除潜在危险文件
删除潜在危险文件
1、参考配置操作
执行:find / -name .netrc,检查系统中是否有.netrc 文件,
执行:find / -name .rhosts ,检查系统中是否有.rhosts 文件
如无应用,删除以上文件:
十一、FTP设置
禁止匿名 FTP
1、参考配置操作
以 vsftpd 为例:
打开vsftd.conf文件,修改下列行为:
anonymous_enable=NO
修改ftp banner信息
修改/etc/vsftpd/vsftpd.conf;banner /path/to/ftpbanner,在指定目录下创建包含ftp信息的banner文件
禁止 root 用户登录 FTP
1、参考配置操作
在 ftpaccess 文件中加入下列行
sed -i "s/root/\#root/g" /etc/vsftpd/ftpusers
sed -i "/\#root/a root" ? /etc/vsftpd/ftpusers
十二、一键加固脚本
#!/bin/bash
####running for redhat 2701-2014##########################
####1、禁止su至root用户###################################
sed -i -r -e " /\#\%PAM/a auth\t\trequired\tpam_wheel.so group=wheel" /etc/pam.d/su
sed -i -r -e " /\#\%PAM/a auth\t\tsufficient\tpam_rootok.so" /etc/pam.d/su
####2、密码最小长度策略###################################
sed -i -r -e "/[[:space:]]*PASS_MIN_LEN/d" /etc/login.defs
echo -e "PASS_MIN_LEN\t8" >> /etc/login.defs
####3、密码复杂度(加入限制root创建弱密码)################
echo "#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-3 ocredit=-1 enforce_for_root
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
" >/etc/pam.d/system-auth
####4、帐户口令的生存期不长于90天#####################
sed -i "s/PASS_MAX_DAYS/\#PASS_MAX_DAYS/g" /etc/login.defs
echo "PASS_MAX_DAYS 90" >> /etc/login.defs
####5、配置用户最小授权##################################
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
####6、配置文件与目录缺省权限控制########################
sed -i -r -e "/umask|UMASK/d" /etc/login.defs
echo -e "UMASK\t027" >> /etc/login.defs
####7、禁止root登录###################################
sed -i "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
service sshd restart
####8、日志审计及远程日志功能(替换日志转发地址)############
echo "*.* @192.168.1.1" >> /etc/rsyslog.conf
echo "cron.*" >> /etc/rsyslog.conf
echo "authpriv.*" /var/log/secure
systemctl restart rsyslog
####9、配置日志文件安全权限##############################
if [ -f /var/log/messages ]; then chmod 600 /var/log/messages; else touch /var/log/messages; chmod 600 /var/log/messages; fi
if [ -f /var/log/secure ]; then chmod 600 /var/log/secure; else touch /var/log/secure; chmod 600 /var/log/secure; fi
if [ -f /var/log/maillog ]; then chmod 600 /var/log/maillog; else touch /var/log/maillog; chmod 600 /var/log/maillog; fi
if [ -f /var/log/cron ]; then chmod 600 /var/log/cron; else touch /var/log/cron; chmod 600 /var/log/cron; fi
if [ -f /var/log/spooler ]; then chmod 600 /var/log/spooler; else touch /var/log/spooler; chmod 600 /var/log/spooler; fi
if [ -f /var/log/boot.log ]; then chmod 600 /var/log/boot.log; else touch /var/log/boot.log; chmod 600 /var/log/boot.log; fi
####10、关闭不必要的服务#################################
systemctl disable firewalld.service
systemctl disable irqbalance.service
systemctl disable NetworkManager.service
systemctl disable postfix.service
####11、修改系统 banner#################################
mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak
####12、登录超时设置###################################
sed -i -r -e "/TMOUT/d" /etc/profile
echo "TMOUT=300" >> /etc/profile
####13、删除潜在危险文件###############################
find / -maxdepth 3 -name .netrc 2>/dev/null
find / -maxdepth 3 -name hosts.equiv 2>/dev/null
find / -maxdepth 3 -name .rhosts 2>/dev/null
####14、ftp相关设置###################################
sed -i "s/anonymous_enable/\#anonymous_enable/g" /etc/vsftpd/vsftpd.conf
sed -i "/\#anonymous_enable/a anonymous_enable=NO" /etc/vsftpd/vsftpd.conf
sed -i "s/root/\#root/g" /etc/vsftpd/ftpusers
sed -i "/\#root/a root" /etc/vsftpd/ftpusers
? ? ?There are many things that can not be broken!
? ? ?如果觉得本文对你有帮助,欢迎点赞、收藏、评论!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!