zoukankan      html  css  js  c++  java
  • 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条
  • 相关阅读:
    毕业设计一周一记04
    毕业设计一周一记03
    毕业设计一周一记02
    毕业设计一周一记01
    课后作业
    大道至简第7,8章读后感
    课后作业和动手动脑
    大道至简-从编程到过程读后感
    数组求和与课后作业
    大道至简——失败的过程也是过程读后感
  • 原文地址:https://www.cnblogs.com/lich1x/p/14373427.html
Copyright © 2011-2022 走看看