生产环境CentOS服务器系统安全配置发布时间:2018/8/30 18:57:00 阅读次数:

    第一章 账户安全及权限
  一、 禁用root以外的超级用户
  1. 检测方法:
  cat /etc/passwd 查看口令文件,文件格式如下
  login_name:password:user_ID:group_ID:comment:home_dir:command
  若user_ID=0,则该用户拥有超级用户的权限。查看此处是否有多个ID=0
  2. 检测命令:
  cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'
  3. 备份方法:
  cp -p /etc/passwd /etc/passwd_bak
  4. 加固方法:
  使用命令passwd -l <用户名>锁定不必要的超级账户
  使用命令passwd -u <用户名>解锁需要恢复的超级账户
  或把用户shell改为/sbin/nologin
  二、 删除不必要的账号
  1. 应该删除所有默认的被操作系统本身启动的并且不必要的账号,Linux提供了很多默认账号,而账号越多,系统就越容易受到攻击。
  2. 可删除的用户,如
  adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等
  3. 可删除的组,如
  adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等
  4. 删除命令
  userdel username
  groupdel groupname
  三、 用户口令设置
  用户口令是Linux/Unix安全的一个基本起点,很多人使用的用户口令过于简单,这等于给侵入者敞开了大门,虽然从理论上说,只要有足够的时间和资源可以利用,就没有不能破解的用户口令,但选取得当的口令是难于破解的。较好的用户口令是那些只有他自己容易记得并理解的一串字符,最好不要把密码记录出来,如果有需要的话,也要保管好记录密码的文件,或者将这个文件加密。
  生产环境口令要求:包含大写字母、小写字母、数字和特殊字符四种中的三种,并且口令整体长度大于10位,每台服务器的口令不相同。
  四、 检查空口令账号
  如果发现有账号口令为空,需要强制加入符合规格的口令
  检查方法:
  #awk -F: '($2 == "") { print $1}' /etc/shadow
  五、 口令文件加锁
  chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。
  #chattr +i/etc/passwd
  #chattr +i/etc/shadow
  #chattr +i/etc/group
  #chattr +i/etc/gshadow
  六、 设置root账户自动注销时限
  修改环境引导文件/etc/profile中的TMOUT参数,TMOUT参数按秒计算
  vim/etc/profile
  在"HISTFILESIZE="后面加入下面这行
  TMOUT=300
  改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能
  如果想修改某个用户的自动注销时限,可以在用户目录下的".bashrc"文件中添加该值,以便系统对该用户实行特殊的自动注销时间
  七、 限制su命令
  禁止任何人能够su切换为root,编辑/etc/pam.d/su文件,增加如下行:
  authrequired pam_wheel.so use_uid
  这时,仅wheel组的用户可以su作为root。此后,如果希望用户admin能够su作为root,可以运行如下命令:
  #usermod –G 10 admin
  八、 限制普通用户无法执行关机、重启、配置网络等敏感操作
  删除/etc/security/console.apps下的halt、reboot、poweroff、shutdown等程序的访问控制文件,以禁止普通用户执行该命令
  也可以整体删除/etc/security/console.apps下的所有配置文件
  rm –rf /etc/security/console.apps/*
  九、 禁用Ctrl+Alt+Delete组合键重新启动机器命令
  修改/etc/inittab文件,将"ca::ctrlaltdel:/sbin/shutdown-t3-rnow"一行注释掉。
  十、 设置开机启动服务文件夹权限
  设置/etc/rc.d/init.d/目录下所有文件的许可权限,此目录下文件
  为开机启动项,运行如下命令:
  #chmod –R 700 /etc/rc.d/init.d/
  这样便仅有root可以读、写或执行上述所有脚本文件。
  十一、避免login时显示系统和版本信息
  删除信息文件:
  rm –rf /etc/issue
  rm –rf /etc/issue.net
  第二章 限制网络访问
  一、 NFS访问
  使用NFS网络文件系统服务,应该确保/etc/exports具有最严格的访问权限设置,也就是意味着不要使用任何通配符、不允许root写权限并且只能安装为只读文件系统。编辑文件/etc/exports并加入如下两行。
  /dir/to/exporthost1.mydomain.com(ro,root_squash)
  /dir/to/exporthost2.mydomain.com(ro,root_squash)
  /dir/to/export是您想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。为了使改动生效,运行如下命令。
  #/usr/sbin/exportfs-a
  二、 登录终端设置
  /etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,可以编辑/etc/securetty且注释掉如下的行。
  #tty2
  #tty3
  #tty4
  #tty5
  #tty6
  这时,root仅可在tty1终端登录。
  第三章 防止攻击
  一、 防止IP欺骗
  编辑host.conf文件并增加如下几行来防止IP欺骗攻击。
  orderbind,hosts
  multioff
  nospoofon
  二、 防止DoS攻击
  对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行:
  *hardcore0
  *hardrss5000
  *hardnproc20
  然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。
  sessionrequired/lib/security/pam_limits.so
  上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。