基线检查:Linux的加固和检测

  • A+
所属分类:站点建设

自从服务器搬到阿里云,阿里云倒是尽心尽责,态势感知天天提示网站被攻击。昨天看到安骑士提示“基线配置不当”,小白也不是很懂,索性就根据建议项和百度进行修复记录一下。

全文分为三部分

1、SSH登录基线检测,共5项;

2、密码策略合规检测,共3项;

3、Centos7系统基线合规检测,共39项。

小白不是很懂,欢迎指点

基线检查:Linux的加固和检测

 

 

1、SSH登录基线检测

SSH登录安全策略检测如下配置

1.登录端口是否为默认22端口

2.root账号是否允许直接登录

3.是否使用不安全的SSH V1协议

4.是否使用不安全的rsh协议

5.是否运行基于主机身份验证的登录

 

修复方案:

编辑sshd的配置文件sshd_config

1.Port 22(默认是22,可自行修改sshd监听的端口号)

 

2.PermitRootLogin yes(默认是yes,具体参数如下,可以根据自身需求选择,设置root能不能用ssh登录。这个选项尽量不要设成“yes”。)

参数类别是否允许ssh登陆登录方式交互shell
yes允许没有限制没有限制
without-password允许除密码以外没有限制
forced-commands-only允许仅允许使用密钥仅允许已授权的命令
no不允许N/AN/A

 

3.Protocol(2)

 

4.IgnoreRhosts yes(默认是yes,设置验证的时候是否使用“rhosts”和“shosts”文件。)

 

5.HostbasedAuthentication(默认是no,yes是开启主机认证,no允许用户自己设置shosts和rhosts,该设置对主机认证中root用户的登陆有关键作用。)

 

 

 

 2、密码策略合规检测

密码策略合规检测会检测如下Linux账户密码策略:

1.账号密码最大使用期限

2.密码修改最小间隔时间

3.密码最小长度

4.密码到期开始通知时间

 

文件名:login.defs

检测项目: 风险密码策略

PASS_MIN_LEN : 10(密码最小长度)

建议值: PASS_MIN_LEN 12

建议设置为12(如果因特殊场景需要用更少或更多的密码长度位数,可忽略该检测项)

 

PASS_WARN_AGE : 7(密码过期警告天数)

建议值: PASS_WARN_AGE 30

建议: 建议设置为30天

 

PASS_MAX_DAYS : 99999(密码最长过期天数)

建议值: PASS_MAX_DAYS 90

建议: 建议每90天更换一次密码

 

PASS_MAX_DAYS : 99999(密码最长过期天数)

建议值: PASS_MAX_DAYS 90

建议: 建议每90天更换一次密码

 

 

 

3、Centos7系统基线合规检测

按照CIS-Linux Centos7最新基线标准进行系统层面基线检测

 

检查项: 系统crontab权限设置

加固建议:

依次执行:

rm -f /etc/cron.deny

rm -f /etc/at.deny

touch /etc/cron.allow

touch /etc/at.allow

chmod 0600 /etc/cron.allow

chmod 0600 /etc/at.allow

 

检查项: 禁止转发ICMP重定向报文

加固建议: 执行sysctl -w net.ipv4.conf.all.send_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.send_redirects=0,不存在则添加

 

检查项: 禁止转发ICMP重定向报文

加固建议: 执行sysctl -w net.ipv4.conf.default.send_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.send_redirects=0,不存在则添加

 

检查项: 禁止包含源路由的ip包

加固建议: 执行sysctl -w net.ipv4.conf.all.accept_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.accept_redirects=0,不存在则添加

 

检查项: 禁止包含源路由的ip包

加固建议: 执行sysctl -w net.ipv4.conf.default.accept_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.accept_redirects=0,不存在则添加

 

检查项: 禁止转发安全ICMP重定向报文

加固建议: 执行sysctl -w net.ipv4.conf.all.secure_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.secure_redirects=0,不存在则添加

 

检查项: 禁止转发安全ICMP重定向报文

加固建议: 执行sysctl -w net.ipv4.conf.default.secure_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.secure_redirects=0,不存在则添加

 

检查项: 启用反转地址路径过滤

加固建议: 执行sysctl -w net.ipv4.conf.all.rp_filter=1

查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.rp_filter=1,不存在则添加

 

检查项: 启用反转地址路径过滤

加固建议: 执行sysctl -w net.ipv4.conf.default.rp_filter=1

查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.rp_filter=1,不存在则添加

 

检查项: 禁止ipv6路由广播

加固建议: 执行sysctl -w net.ipv6.conf.all.accept_ra=0

查看/etc/sysctl.conf中是否存在net.ipv6.conf.all.accept_ra=0,不存在则添加

 

检查项: 禁止ipv6路由广播

加固建议: 执行sysctl -w net.ipv6.conf.default.accept_ra=0

查看/etc/sysctl.conf中是否存在net.ipv6.conf.default.accept_ra=0,不存在则添加

 

检查项: 禁止ipv6路由重定向

加固建议: 执行sysctl -w net.ipv6.conf.all.accept_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv6.conf.all.accept_redirects=0,不存在则添加

 

检查项: 禁止ipv6路由重定向

加固建议: 执行sysctl -w net.ipv6.conf.default.accept_redirects=0

查看/etc/sysctl.conf中是否存在net.ipv6.conf.default.accept_redirects=0,不存在则添加

 

检查项: 密码授权新密码与老密码不能重复

加固建议: 在/etc/pam.d/password-auth

添加:password sufficient pam_unix.so remember=3

remember的值表示此次设置密码与过去3次不同

 

检查项: 系统授权新密码与老密码不能重复

加固建议: 在/etc/pam.d/system-auth

添加:password sufficient pam_unix.so remember=3

remember的值表示此次设置密码与过去3次不同

 

检查项: rsyslog日志文件权限配置

加固建议: 在/etc/rsyslog.conf

添加:$FileCreateMode 0640

 

检查项: SSHD强制使用V2安全协议

加固建议: 在/etc/ssh/sshd_config

取消Protocol注释符号#

 

检查项: SSHD仅记录ssh用户登录活动

加固建议: 在/etc/ssh/sshd_config

取消LogLevel INFO注释符号#

 

检查项: SSHD仅记录ssh用户登录活动

加固建议: 在/etc/ssh/sshd_config

取消MaxAuthTries注释符号#,设置自定义最大密码尝试失败次数

 

检查项: 清理主机远程登录历史主机记录

加固建议: 在/etc/ssh/sshd_config

取消IgnoreRhosts yes注释符号#

 

检查项: 禁止主机认证登录

加固建议: 在/etc/ssh/sshd_config

取消HostbasedAuthentication no注释符号#

 

检查项: 禁止空密码用户登录

加固建议: 在/etc/ssh/sshd_config

取消PermitEmptyPasswords no注释符号#

 

检查项: 禁止用户修改环境变量

加固建议: 在/etc/ssh/sshd_config

取消PermitUserEnvironment no注释符号#

 

检查项: 设置输入密码间隔时间

加固建议: 在/etc/ssh/sshd_config

取消LoginGraceTime前注释符,同时设置输入密码时间间隔秒数

PS:设置用户身份验证过程的时间限制。如果这个时间过去了,并且用户还没有成功地进行认证,那么服务器关闭连接。将此值保留为默认值“ 2m ”,直到所有内容设置正确,以便您有足够的时间读取任何服务器消息。之后,你可以降低到一个合理的价值。我已经把它设定为“ 20s ”。

 

检查项: 设置用户密码最小长度

加固建议: 在/etc/security/pwquality.conf

取消minlen注释符号#,同时设置最小密码长度建议10位以上

 

检查项: 设置用户密码数字位数

加固建议: 在/etc/security/pwquality.conf

取消dcredit注释符号#,同时设置为负数建议-1最少包含1位数字

 

检查项: 设置用户密码大写字母位数

加固建议: 在/etc/security/pwquality.conf

取消ucredit注释符号#,同时设置为负数建议-1最少包含1位大写字母

 

检查项: 设置用户密码小写字母位数

加固建议: 在/etc/security/pwquality.conf

取消lcredit注释符号#,同时设置为负数建议-1最少包含1位小写字母

 

检查项: 设置用户密码特殊字符位数

加固建议: 在/etc/security/pwquality.conf

取消ocredit注释符号#,同时设置为负数建议-1最少包含1位特殊字符

 

检查项: 强制密码失效时间

加固建议: 在/etc/login.defs

修改 PASS_MAX_DAYS 的默认值

设置强制密码失效时间,建议值365

 

检查项: 密码修改最小间隔时间

加固建议: 在/etc/login.defs

修改 PASS_MIN_DAYS 的默认值

设置密码修改最小间隔时间,建议值7

 

检查项: 设置有密码账户不活动最大时间

加固建议: 使用如下命令设置有密码账户不活动最大时间值:useradd -D -f 90,建议值90

 

检查项: 检查/boot/grub2/grub.cfg文件ACL属性

加固建议: 执行:chmod 0600 /boot/grub2/grub.cfg

 

检查项: 检查/etc/crontab文件ACL属性

加固建议: 执行:chmod 0600 /etc/crontab

 

检查项: 检查/etc/cron.hourly文件ACL属性

加固建议: 执行:chmod 0600 /etc/cron.hourly

 

检查项: 检查/etc/cron.daily文件ACL属性

加固建议: 执行:chmod 0600 /etc/cron.daily

 

检查项: 检查/etc/cron.weekly 文件ACL属性

加固建议: 执行:chmod 0600 /etc/cron.weekly

 

检查项: 检查/etc/cron.monthly 文件ACL属性

加固建议: 执行:chmod 0600 /etc/cron.monthly

 

检查项: 检查/etc/cron.d 文件ACL属性

加固建议: 执行:chmod 0600 /etc/cron.d

 

百度了文件ACL属性,对这个不是很了解。也只能按照提示的命令执行了。

 

 

 

 

 

  • 扫扫关注公众号
  • weinxin
  • 扫扫体验小程序
  • weinxin
亦枫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  5   博主  0

    • avatar 钟水洲博客 1

      贵站文章写得很好!

      • avatar 夏日博客 1

        centos真的有好多地方都需要加固检测。

        • avatar game over 2

          多谢整理 :bq: :bq: :bq: