当前位置:   article > 正文

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

十二、一键加固脚本

  1. #!/bin/bash
  2. ####running for redhat 2701-2014##########################
  3. ####1、禁止su至root用户###################################
  4. sed -i -r -e " /\#\%PAM/a auth\t\trequired\tpam_wheel.so group=wheel" /etc/pam.d/su
  5. sed -i -r -e " /\#\%PAM/a auth\t\tsufficient\tpam_rootok.so" /etc/pam.d/su
  6. ####2、密码最小长度策略###################################
  7. sed -i -r -e "/[[:space:]]*PASS_MIN_LEN/d" /etc/login.defs
  8. echo -e "PASS_MIN_LEN\t8" >> /etc/login.defs
  9. ####3、密码复杂度(加入限制root创建弱密码)################
  10. echo "#%PAM-1.0
  11. # This file is auto-generated.
  12. # User changes will be destroyed the next time authconfig is run.
  13. auth required pam_env.so
  14. auth required pam_faildelay.so delay=2000000
  15. auth sufficient pam_unix.so nullok try_first_pass
  16. auth requisite pam_succeed_if.so uid >= 1000 quiet_success
  17. auth required pam_deny.so
  18. account required pam_unix.so
  19. account sufficient pam_localuser.so
  20. account sufficient pam_succeed_if.so uid < 1000 quiet
  21. account required pam_permit.so
  22. password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-3 ocredit=-1 enforce_for_root
  23. password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
  24. password required pam_deny.so
  25. session optional pam_keyinit.so revoke
  26. session required pam_limits.so
  27. -session optional pam_systemd.so
  28. session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
  29. session required pam_unix.so
  30. " >/etc/pam.d/system-auth
  31. ####4、帐户口令的生存期不长于90天#####################
  32. sed -i "s/PASS_MAX_DAYS/\#PASS_MAX_DAYS/g" /etc/login.defs
  33. echo "PASS_MAX_DAYS 90" >> /etc/login.defs
  34. ####5、配置用户最小授权##################################
  35. chmod 644 /etc/passwd
  36. chmod 400 /etc/shadow
  37. chmod 644 /etc/group
  38. ####6、配置文件与目录缺省权限控制########################
  39. sed -i -r -e "/umask|UMASK/d" /etc/login.defs
  40. echo -e "UMASK\t027" >> /etc/login.defs
  41. ####7、禁止root登录###################################
  42. sed -i "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
  43. service sshd restart
  44. ####8、日志审计及远程日志功能(替换日志转发地址)############
  45. echo "*.* @192.168.1.1" >> /etc/rsyslog.conf
  46. echo "cron.*" >> /etc/rsyslog.conf
  47. echo "authpriv.*" /var/log/secure
  48. systemctl restart rsyslog
  49. ####9、配置日志文件安全权限##############################
  50. if [ -f /var/log/messages ]; then chmod 600 /var/log/messages; else touch /var/log/messages; chmod 600 /var/log/messages; fi
  51. if [ -f /var/log/secure ]; then chmod 600 /var/log/secure; else touch /var/log/secure; chmod 600 /var/log/secure; fi
  52. if [ -f /var/log/maillog ]; then chmod 600 /var/log/maillog; else touch /var/log/maillog; chmod 600 /var/log/maillog; fi
  53. if [ -f /var/log/cron ]; then chmod 600 /var/log/cron; else touch /var/log/cron; chmod 600 /var/log/cron; fi
  54. if [ -f /var/log/spooler ]; then chmod 600 /var/log/spooler; else touch /var/log/spooler; chmod 600 /var/log/spooler; fi
  55. 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
  56. ####10、关闭不必要的服务#################################
  57. systemctl disable firewalld.service
  58. systemctl disable irqbalance.service
  59. systemctl disable NetworkManager.service
  60. systemctl disable postfix.service
  61. ####11、修改系统 banner#################################
  62. mv /etc/issue /etc/issue.bak
  63. mv /etc/issue.net /etc/issue.net.bak
  64. ####12、登录超时设置###################################
  65. sed -i -r -e "/TMOUT/d" /etc/profile
  66. echo "TMOUT=300" >> /etc/profile
  67. ####13、删除潜在危险文件###############################
  68. find / -maxdepth 3 -name .netrc 2>/dev/null
  69. find / -maxdepth 3 -name hosts.equiv 2>/dev/null
  70. find / -maxdepth 3 -name .rhosts 2>/dev/null
  71. ####14、ftp相关设置###################################
  72. sed -i "s/anonymous_enable/\#anonymous_enable/g" /etc/vsftpd/vsftpd.conf
  73. sed -i "/\#anonymous_enable/a anonymous_enable=NO" /etc/vsftpd/vsftpd.conf
  74. sed -i "s/root/\#root/g" /etc/vsftpd/ftpusers
  75. sed -i "/\#root/a root" /etc/vsftpd/ftpusers

     There are many things that can not be broken!

     如果觉得本文对你有帮助,欢迎点赞、收藏、评论!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/825544
推荐阅读
相关标签
  

闽ICP备14008679号