CentOS 7系统安全加固配置参考

CentOS 7系统安全加固

准备工作
  • 确认系统版本信息

    • # more /proc/version 
      # more /etc/centos-release
      
账号与密码安全
  • 查看空口令账号

    • root下
      # awk -F: '($2 == ""){print $1}' /etc/shadow
      
  • 查看root权限账户

    • # awk -F: '($3==0){print $1}' /etc/passwd
      
  • 设置密码有效周期策略

    • 【建议全局指定】
      # vi /etc/login.defs
      PASS_MAX_DAYS	99999	# 一般可按 一个季度或者半年
      PASS_MIN_LEN	5			# >=8位
      
      【单独指定】
      # charge -M 3 [账号名]	【强制3天后过期】
      
      【新建账号强制密码过期】
      # chage -d 0 [账号名]
      
  • 设置密码复杂度

    • # vi /etc/pam.d/system-auth
      minlen=10		# 最小分数为10分,
      						# 数字、英文大小写、特殊字符的默认长度都=1
      						# 如果要使得任何字符不产生对minlen的影响,则我们必须将这些字符类型的默认信用分设为负数
      						# 例如:ocredit=-1,lcredit=-1,ucredit=-1,dcredit=-1
      						# 如上配置表示,特殊字符、大小写字母、数字的评分为负,不会影响minlen设置的最小密码长度,同时负号后面的数字表示设置的密码中必须包含1位指定的字符类型。比如:123!@#Qwea,类似这种密码才能符合标准
      dcredit=-1	# 必须要包含至少1个数字
      ocredit=-2	# 必须包含2个特殊符号
      ucredit=-1	# 必须包含1个大写字母
      lcredit=-1	# 必须包含1个小写字母
      enforce_for_root	# 确保即使是root帮助用户设置密码,也应强制执行复杂度策略
      
  • 设置用户登录失败次数与锁定

    • # vi  /etc/pam.d/sshd
      '''
      #%PAM-1.0
      auth       required     pam_tally2.so deny=3 unlock_time=15 even_deny_root root_unlock_time=10
      '''
      
      # 新增一行配置
      # 使用pam_tally2模块来锁定和解锁用户
      # root也遵守这个3次失败锁定的规则
      # 累计超过三次失败锁定
      # 普通用户15秒后自动解锁
      # root用户10秒后自动解锁
      
      # pam_tally2 --user [账号名]		【查看当前锁定的用户信息】
      # pam_tally2 -r -u 账号名			【解锁用户】
      
  • 禁用闲置、临时、过期等账号

    • 禁用账号
      # usermod -L 账号名	【例如:usermod -L test】
      
      账号解除禁用
      # usermod -U 账号名	【usermod -U test1】
      
      删除账号(保留其/home目录下的user目录)
      # userdel 账号名			【userdel test】
      
      删除账号与其/home目录下的user目录
      # userdel -r 账号名	【userdel -r test】
      
  • 重复密码

    • 配置文件

    • # 末尾添加 remember=3【表示第五次重置密码的时候,可以使用第一次重置的密码】仅在用户自己修改密码有效
      '''
      password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=3
      '''
      
访问控制
  • 禁用telnet

    • 查看telnet服务是否在运行
      # netstat -an |grep ":23"
      
      如有则禁止该服务运行,并且禁止开机启动
      # systemctl disable telnet
      
  • 设置指定管理源范围

    • 对接入服务器的IP、方式进行限制
    • 白名单文件/etc/hosts.allow
      • 参考.deny配置文件
      • 白名单配置文件优先级大于黑名单配置文件
    • 黑名单文件/etc/hosts.deny
      • 拒绝单一IP所有访问:ALL:172.16.82.1:deny 将该配置加入配置文件
      • 拒绝某个网段IP指定ssh不能访问:sshd:172.16.82.0/255.255.255.0:deny 将该配置加入配置文件
  • 限定闲置超时时间

    • 配置文件:/etc/profile
    • 添加配置,例如设置5分钟闲置则自动断开连接:exprot TMOUT=300 【时间单位为秒】
  • 限制FTP登录

    • ???
系统安全设定
  • 关闭不必要的服务
    • 例如:蓝牙功能可以直接关闭,并且设置开机不允许启动
    • 禁止开机自启动:$ systemctl disable bluetooth
权限设定
  • sudo权限

    • 使用命令$ visudo 来编辑/etc/sudoers配置文件

    • root    ALL=(ALL)       ALL	【默认有】
      test1   ALL=(root)/usr/sbin/visudo,/usr/bin/more /etc/shadow,/usr/bin/vi /etc/ssh/sshd_config【指定用户test1 可以使用sudo 来提取root权限,并且指定可以执行后面的三条命令】
      
    • 使用$ sudo -l命令来查看本账号的sudo权限

  • 禁止root用户远程登录

    • 找到配置文件/etc/ssh/sshd_config

    • 找到 #PermitRootLogin yes
      解除注释,并将其修改为 PermitRootLogin no
      

引用文字

安全日志审计
  • 开启本地日志服务

    • syslog存储目录/var/log/
    • 开启本地日志rsyslog$ service rsyslog start
  • 开启日志审计服务

    • 审计日志记录路径为 /var/log/audit/audit.log
    • 开启审计服务$ service auditd start
    • 查询审计日志,例如:查询用户登录审计日志$ ausearch -m USER_LOGIN
  • 查看开机自启动服务

    • # systemctl list-unit-files 
      
  • 日志转存,防止日志丢失、修改、覆盖、删除等操作

    • 日志转存配置文件:/etc/logrotate.conf

    • # rotate log files weekly
      weekly                  # 每周转存一次
      
      # keep 4 weeks worth of backlogs
      rotate 4                    # 保留四个日志备份文件
      
      # create new (empty) log files after rotating old ones
      create                      # rotate后,创建一个新的空文件
      
      # use date as a suffix of the rotated file
      dateext                     # 轮转的文件名字带有日期信息
      
      # uncomment this if you want your log files compressed
      #compress
      
      # RPM packages drop log rotation information into this directory
      include /etc/logrotate.d    # 此目录下的配置文件优先生效
      
      # no packages own wtmp and btmp -- we'll rotate them here
      /var/log/wtmp {             # 指定/var/log/wtmp日志文件;
          monthly                 # 每月轮转一次,优先于全局设定的每周轮转一次;
          minsize 1M              # 日志文件大于1M才会去轮转;
          create 0664 root utmp   # 新日志文件的权限,属主,属组;
          rotate 1                # 保留一个日志备份,优先于全局设置的四个;
      }
      /var/log/btmp {             # 指定/var/log/btmp日志文件;
          missingok               # 如果日志丢失,不报错;
          monthly
          create 0600 root utmp
          rotate 1
      }
      
      # system-specific logs may be also be configured here.
      # 系统特定的日志也可以在主文件中配置。例如nginx等
      
  • 设置bash保留历史命令的条数

    • 找到配置文件/etc/profile
    • 修改HISTSIZE,将其值改为10, 则只保留最后10条
posted @ 2021-02-04 16:34  名叫蛐蛐的喵  阅读(404)  评论(0编辑  收藏  举报