CentOS -Linux 等保-安全加固相关配置

 

1、口令锁定策略

规则描述:设置口令认证失败后的锁定策略 为了保障用户系统的安全,建议用户设置口令出错次数的阈值,以及由于口令尝试被锁定用户的自动解锁时间。用户锁定期间,任何输入被判定为无效,锁定时间不因用户的再次输入而重新计时;解锁后,用户的错误输入记录被清空。通过上述设置可以有效防范口令被暴力破解,增强系统的安全性。

修改方法:例如设置口令最大的出错次数 5 次,系统锁定后的解锁时间为 180 秒 在配置文件/etc/pam.d/system-auth 和/etc/pam.d/password-auth 中添加

pam_faillock.so 配置项说明

  • authfail:捕获用户登录失败的事件
  • deny=5:用户连续登录失败次数超过 5 次即被锁定
  • unlock_time=180:普通用户自动解锁时间为 180 秒(即 3 分钟)
  • even_deny_root:同样限制 root 帐户

操作步骤截图

修改前

descript

修改后

descript

descript

验证测试

centos用户ssh登录多次输错密码  

faillock命令查看锁定情况  

faillock --user username --reset解锁操作

descript

2、口令生存期

出于系统安全性考虑,建议设置口令有效期限,且口令到期前通知用户更改口令。

规则描述:该设置确定在系统要求用户更改某个密码之前可以使用改口令的期限及口令过期提前告警时间(以天为单位),此策略使得攻击者用来破解用户密码以及访问网络资源的时间受到限制

审计描述:设置检查配置文件/etc/login.defs 的选项:应设置 PASS_MAX_DAYS 的值大于等于 10 且小于等于 90,PASS_MIN_DAYS 的值为 10, PASS_WARN_AGE(口令过期提前时间)的值为 7,同时还要检查文件/etc/shadow 中有口令且可登录用户(root 用户除外)的口令保持有效的最大天数为大于等于 10 且小于等于 90,两次修改口令之间所需的最小天数为 10,口令失效告警时间为 7。

修改建议:设置配置文件/etc/login.defs 的选项:PASS_MAX_DAYS 90(10~90), PASS_MIN_DAYS 10, PASS_WARN_AGE 7,同时对已有用户还需要修改/etc/shadow 文件中有密码且可登录用户(root 用户除外)的口令保持有效的最大天数为大于等于 10 且小于等于 90,两次修改口令之间所需的最小天数为 10,口令失效告警时间为 7

实现:口令有效期的设置通过修改/etc/login.defs 文件实现

login.defs 配置项说明

  • PASS_MAX_DAYS 口令最大有效期:建议设置为 90
  • PASS_MIN_DAYS 两次修改口令的最小间隔时间:建议设置为 10
  • PASS_WARN_AGE 口令过期前开始提示天数:建议设置为 7

说明:login.defs 是设置用户帐号限制的文件,可配置口令的最大过期天数、最大长度约束等。该文件里的配置对 root 用户无效。如果/etc/shadow 文件里有相同的选项,则以/etc/shadow 配置为准,即/etc/shadow 的配置优先级高于/etc/login.defs。口令过期后用户重新登录时,提示口令过期并强制要求修改,不修改则无法进入系统。

修改前

descript

修改后

descript

3、口令复杂度

规则描述:该设置确定用户账户口令包含的最少字符数

审计描述:执行命令:cat /etc/pam.d/password-auth /etc/pam.d/system-auth | grep -v '^\s*#' | grep password | grep pam_pwquality.so

检查是否存在以下内容:password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1

执行命令:cat /etc/security/pwquality.conf

检查是否存在以下内容:minlen = 8 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1

修改建议:编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth 文件,分别修改包含 minlen 的 pam_pwquality.so 模块如下:password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 或编辑/etc/security/pwquality.conf 文件,修改以下内容:minlen = 8 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1

备注:当配置文件/etc/pam.d/password-auth 和/etc/pam.d/system-auth 未配置 minlen、dcredit、ucredit、ocredit、lcredit 时,/etc/security/pwquality.conf 文件设置生效

编辑/etc/security/pwquality.conf 文件,修改以下内容:

  • minlen = 8 口令长度至少包含 8 个字符
  • dcredit = -1 口令包含N个数字
  • ucredit = -1 口令包含N大写字母
  • ocredit = -1 口令包含N个特殊字符
  • lcredit = -1 口令包含N个小写字母
  • N<0可以自行man pwquality.conf查看解释

cat >>/etc/security/pwquality.conf << EOF minlen = 8 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1 EOF

descriptdescript

4、删除无关账号

规则描述:删除无关账号

审计描述:检查/etc/shadow文件,确认是否有以下用户(adm|lp|sync|halt|news|nfsnobody|mail|uucp|operator|games|gopher|ftp|nobody|nobody4|noaccess|listen|webservd|rpm|dbus|avahi|mailnull|smmsp|nscd|vcsa|rpc|rpcuser|nfs|sshd|pcap|ntp|haldaemon|distcache|apache|webalizer|squid|xfs|gdm|sabayon|named)

若有则检查文件中是否存在系统中未锁定的无关用户(用户密码字段列不是以*或者!开头)和需要锁定和删除的shell域设置的用户(用户shell域不是/bin/false或/sbin/nologin),均不存在则pass

修改建议:删掉不符规范的用户,执行:userdel username。或者编辑/etc/passwd文件,修改用户的密码字段和shell域。

返回的结果中含有 sync:/bin/sync halt:/sbin/halt

解决方法

userdel sync userdel halt

descript

5、禁止存在空密码的帐号

安全起见,在/etc/passwd 中用户的密码是被保护的状态,即使用了*号来隐藏。而实际的密码内容是加密后保存在/etc/shadow 文件中,我们确认是否存在空口令的用户就确认该文件中密码对应字段的长度是否为 0, 如果为 0 则证明该用户密码为空。通过使用命令来查找是否存在该字段长度为 0 的用户

awk -F: 'length($2)==0 {print $1}' /etc/shadow

passwd -d 将用户密码设置为空

descript

6、口令重复次数限制

规则描述:重新启用某个旧密码,要确保此密码在继上次使用后已被修改过几次。此策略是管理员能够通过确保旧密码不被连续重新使用来增强安全性

审计描述:检查文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth是否存在如下配置:password sufficient pam_unix.so remember=5  或password required pam_pwhistory.so remember=5  其中remember选项大于等于5

修改建议:编辑配置文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth修改或添加配置:password sufficient pam_unix.so remember=5  或password required pam_pwhistory.so remember=5  备注:使用remember=5配置覆盖原有模块配置

实际解决方法:编辑配置文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth修改或添加如下配置

password required pam_pwhistory.so use_authtok remember=5

descriptdescript

7、文件与目录缺省权限控制

规则描述:该设置确定新创建的目录和文件的默认权限

审计描述:检查/etc/profile,  /etc/profile.d/.sh,  /etc/bashrc的umask配置为027(或者0027)

修改建议:设置/etc/profile /etc/profile.d/.sh、/etc/bashrc文件中的umask配置为027(或者0027)

umask值含义:当用户新创建文件或目录时,该文件或目录具有一个缺省权限。该缺省权限由umask值来指定。umask值代表的是权限的“补码”,即用缺省最大权限值减去umask值得到实际权限值。

文件的缺省最大权限为可读可写,目录的缺省最大权限为可读可写可执行。

即一个文件的实际缺省权限为666减去umask值。目录的实际缺省权限为777减去umask值

解决方法

sed -i 's/umask 022/umask 027/g' /etc/profile sed -i 's/umask 022/umask 027/g' /etc/bashrc

修改前

descript

修改后

descript

8、配置用户最小授权

规则描述:检查文件/etc/passwd、/etc/shadow、/etc/group、/etc/services、/etc/xinetd.conf和目录/etc/security的权限

审计描述:检查文件/etc/passwd、/etc/group、/etc/services的权限是否小于或等于644,检查文件/etc/shadow的权限是否小于或等于400,检查/etc/xinetd.conf文件、/etc/security目录权限是否小于等于600,检查以上文件及目录的属主和属组是否均为root:root

修改建议:设置文件/etc/passwd、/etc/group、/etc/services的权限为0644,设置文件/etc/shadow的权限为0400,设置文件/etc/xinetd.conf、目录/etc/security的权限为0600,

例如执行:chmod 600 /etc/passwd。设置以上文件及目录的属主和属组为root:root,例如执行:chown root:root /etc/passwd

检测用例信息:{ "checkDescription": "在目录/etc/security存在时,检查文件的权限,不存在则pass: stat --format="%U:%G %a" /etc/security 2>/dev/null", "current_value": "/etc/security root:root 0755", "suggest_value": "文件不存在或者/etc/security root:root 600(或者更严格)" }

解决过程

stat --format="%U:%G %a" /etc/passwd stat --format="%U:%G %a" /etc/shadow ll /etc/shadow stat --format="%U:%G %a" /etc/group stat --format="%U:%G %a" /etc/services stat --format="%U:%G %a" /etc/security chmod 600 /etc/security stat --format="%U:%G %a" /etc/security

descript

9、修改SSH的Banner警告信息

规则描述:检查ssh服务状态,若不开启则pass,若开启则检查是否设置ssh登录告警信息,设置则pass

审计描述:检查ssh服务状态,若不开启则pass,若开启则检查/etc/ssh/sshd_config文件,是否配置Banner,获取其路径文件,检查该文件是否不为空,不为空则pass

修改建议:如果ssh服务不需要,需要关闭该服务。如果需要ssh服务,则需要配置/etc/ssh/sshd_config文件中Banner,并在对应的路径文件中配置警告标示:Authorized users only. All activity may be monitored and reported.

[root@VM_Server ~]# grep "^\s*Banner\s*" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' [root@VM_Server ~]# grep "Banner*" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' none [root@VM_Server ~]# grep "Banner*" /etc/ssh/sshd_config 2>/dev/null #Banner none [root@VM_Server ~]# sed -i "s/#Banner none/Banner \/etc\/issue.net/g" /etc/ssh/sshd_config [root@VM_Server ~]# echo "Authorized users only. All activity may be monitored and reported.">/etc/issue.net [root@VM_Server ~]# service sshd restart

descriptdescript

10、设置关键文件的属性

规则描述:检查/var/log/messages文件是否存在a属性

审计描述:检查/var/log/messages文件是否存在a属性:lsattr /var/log/messages | cut -b 6

修改建议:使用命令更改该日志文件属性:chattr +a /var/log/messages

lsattr /var/log/messages lsattr /var/log/messages | cut -b 6 chattr +a /var/log/messages lsattr /var/log/messages | cut -b 6

descript

11、检查不活跃的密码锁定是否小于等于 30 天

规则描述:在给定时间段内已停用的用户帐户可以自动禁用。建议在密码到期后 30 天内处于非活动状态的帐户被禁用。

审计描述:执行以下命令检查 INACTIVE 是否为 30 或更少:

INACTIVE=30(或更少)

检查所有使用密码的用户是否将密码设置为在密码过期后的 30 天内停用:

检查是否输出为空

修改建议:执行以下命令

将默认密码不活动期限设置为 30 天:useradd -D -f 30

修改不合规用户的用户参数:chage --inactive 30

例如添加一下centos用户用于测试

descript

12、禁止 wheel 组以外的用户使用 su - root 命令

规则描述:使用 PAM 认证模块进行 su 权限控制,禁止 wheel 组之外的用户使用 su - root 命令

审计描述:执行命令 cat /etc/pam.d/su,查看文件中是否存在如下配置:

auth sufficient pam_rootok.so 使用 pam_rootok.so 认证模块认证

auth required pam_wheel.so group=wheel 或 auth required pam_wheel.so use_uid 且配置了只允许 wheel 组的用户才能使用 su - root 命令

修改建议:修改或添加配置文件/etc/pam.d/su 的条目:auth sufficient pam_rootok.so auth required pam_wheel.so group=wheel 或 auth required pam_wheel.so use_uid

限制使用 su 命令的账户 说明:su 命令用于在不同账户之间切换。为了增强系统安全性,有必要对 su 命令的使用权进行控制,只允许 root 和 wheel 群组的账户使用 su 命令,限制其他账户使用。

修改前centos用户可以正常su - root

descript修改后descript将centos用户加入到wheel组后也可以正常su - root

13、限制 root 用户 SSH 远程登录

规则描述:拒绝 root 用户通过 ssh 协议远程登录且 ssh 协议版本为 2

审计描述:查看配置文件/etc/ssh/sshd_config 是否有以下配置:

(1)拒绝 root 用户通过 ssh 协议远程登录 PermitRootLogin no

(2)ssh 协议版本是否为 2 Protocol 2

修改建议:在文件/etc/ssh/sshd_config 添加如下配置:PermitRootLogin no Protocol 2

备注:PermitRootLogin 的默认值为 yes,Protocol 的默认值为 2

descriptdescript

只能先用其它用户SSH登录再su - root

descript

14、检查 AIDE 是否安装

规则描述:AIDE 生产一个文件系统状态的快照,其中包括修改时间,权限和文件哈希值,然后可以其与文件系统的当前状态进行比较,以检测对系统的修改。

审计描述:检查 AIDE 是否安装,执行:rpm -q aide 2>/dev/null

修改建议:执行以下命令安装 AIDE:# yum install aide

AIDE:Advanced Intrusion Detection Environment,是一款入侵检测工具,主要用途是检查文档的完整性。AIDE 在本地构造了一个基准的数据库,一旦操作系统被入侵,可以通过对比基准数据库而获取文件变更记录,使用 aide.conf 作为其配置文档。AIDE 数据库能够保存文档的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文档大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小连同连接数。

一旦出现 AIDE 监控的文件被篡改的情况,AIDE 会触发告警,通知管理员。AIDE 还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文档的校验码或散列号

1).安装 aide

2).配置文件所在路径:/etc/aide.conf

3).对 AIDE 的配置文件进行检测:aide -D

4).aide -i 生成出初化数据库 ,初始化的时间会比较长,耐心等待下

5)根据/etc/aide.conf 生成的/var/lib/aide/aide.db.new.gz 文件需要重命名 为/var/lib/aide/aide.db.gz,以便让 AIDE 能读取它

6)、测试 添加一个用户,aide -C 或者 aide --check descriptdescript

AIDE 的介绍可以参考 https://linux.cn/article-4242-1.html

15、检查SSH的MaxAuthTries是否设置

规则描述:MaxAuthTries参数指定每个连接允许的最大验证尝试次数。当登录失败次数达到设置的一半时,错误消息将被写入syslog文件详细记录登录失败。

审计描述

检查/etc/ssh/sshd_config文件中是否存在 MaxAuthTries 参数,且值小于等于4

检查SSH的MaxAuthTries是否设置: cat /etc/ssh/sshd_config | grep -v '^\s*#' | grep MaxAuthTries

修改建议:编辑/etc/ssh/sshd_config文件将 MaxAuthTries 设置为:小于等于4,并重启服务。备注:MaxAuthTries的默认值为6

实现方法:

sed -i "s/#MaxAuthTries 6/MaxAuthTries 4/g" /etc/ssh/sshd_config

descript

MaxAuthTries要生效,必须修改SSH服务端、客户端的该项配置

ssh localhost -o NumberOfPasswordPrompts=6

//通过-o NumberOfPasswordPrompts指定1次连接可以尝试的密码,默认是3次

-o NumberOfPasswordPrompts=6即1次连接可以输入6次密码 这样就可以验证MaxAuthTries参数每个连接允许的最大验证尝试次数

descript

规则描述:ClientAliveInterval和ClientAliveCountMax这两个选项控制ssh会话超时

ClientAliveInterval设置了ssh服务器端向其客户端发送请求消息(alive消息)的间隔时间,以检测客户端是否还存在;

ClientAliveCountMax设置了ssh服务允许客户端在接收到服务端的alive消息未响应的最大超时次数,如果客户端在最大超时次数内均未响应,ssh服务会自动终止与客户端的会话。

例如,如果ClientAliveInterval设置为15,ClientAliveCountMax设置为3,那么无应答的客户端会在45秒后被强制断开。

审计描述:检查/etc/ssh/sshd_config文件中是否存在 ClientAliveInterval 300  ClientAliveCountMax 3

修改建议:编辑/etc/ssh/sshd_config文件将ClientAliveInterval设置为:小于等于300,ClientAliveCountMax设置为:小于等于3,并重启服务。备注:ClientAliveInterval的默认值为0,ClientAliveCountMax的默认值为3

为了演示方便设置成60秒就超时,实际建议设置大一点,60s秒太短 descript

16、登陆超时时间设置

规则描述:设置定时帐户自动登出时间。

审计描述:检查/etc/profile文件中是否配置超时设置:TMOUT小于等于300.

修改建议:在/etc/profile文件中添加以下内容:TMOUT 300 检测用例信息:检查/etc/profile文件中是否存在TMOUT: cat /etc/profile | egrep -v ^\s*# | grep -i TMOUT

descriptdescript

17、系统core dump状态

规则描述:系统core dump状态

审计描述:查看/etc/security/limits.conf文件中是否配置如下内容:* soft core 0、* hard core 0,查看/etc/profile文件中是否存在如下配置:ulimit -S -c 0 > /dev/null 2>&1

修改建议:在/etc/security/limits.conf文件中设置* soft core、* hard core为0,且在/etc/profile文件中注释掉ulimit -S -c 0 > /dev/null 2>&1行

检测用例信息:检查/etc/security/limits.conf文件中是否存在配置* soft core 0:

grep -v "^\s*#"  /etc/security/limits.conf | egrep "*\s+soft\s+core\s+0"

检查/etc/security/limits.conf文件中是否存在配置* hard core 0:

grep -v "^\s*#"  /etc/security/limits.conf | egrep "*\s+hard\s+core\s+0"

descript

18、禁止组合键关机

规则描述:禁止Control-Alt-Delete重启动机器命令

审计描述:检查/usr/lib/systemd/system/reboot.target文件,如果该文件不存在、该文件都注释掉、该文件为空则pass,或者如果软链接文件/usr/lib/systemd/system/ctrl-alt-del.target不存在,也pass

修改建议:删掉/usr/lib/systemd/system/reboot.target文件

实现方法:

descript

虚拟机测试发送Ctrl+Alt+Del不会重启,已验证

descript

19、更改主机解析地址的顺序

规则描述

1、检查是否设置首先通过DNS解析IP地址,然后通过hosts文件解析。

2、检查设置检测是否"/etc/hosts"文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。

3、检查是否设置说明要注意对本机未经许可的IP欺骗。

审计描述:检查文件/etc/host.conf,看是否存在如下内容:

order hosts,bind

multi on

nospoof on

修改建议:在文件/etc/host.conf中修改或添加如下内容:

order hosts,bind

multi on

nospoof on

检测用例信息:检查文件中是否存在order hosts,bind:

descriptdescript

20、历史命令设置

规则描述:历史命令设置

审计描述:编辑文件/etc/profile查看是否存在如下内容:

HISTFILESIZE=5

HISTSIZE=5

修改建议:在文件/etc/profile中修改添加如下配置:

HISTFILESIZE=5

HISTSIZE=5

检测用例信息

1)检查文件中是否存在HISTFILESIZE配置:

cat /etc/profile|grep -v "^\s*#"|grep "HISTFILESIZE\s*=" | tail -1

HISTFILESIZE的值小于等于5

2)检查文件中是否存在HISTSIZE配置:

cat /etc/profile|grep -v "^\s*#"|grep "HISTSIZE\s*=" | tail -1

HISTSIZE的值小于等于5

解决办法:

descript

21、加固内核参数

1)禁止ICMP重定向

规则描述:禁止ICMP重定向

审计描述:禁止ICMP重定向,查看文件/etc/sysctl.conf或/etc/sysctl.d/中net.ipv4.conf.all.accept_redirects参数,值为0合规

执行命令:1.sysctl net.ipv4.conf.all.accept_redirects ;

2.cat /etc/sysctl.conf /etc/sysctl.d/ | grep -v '^\s*#' | grep "net.ipv4.conf.all.accept_redirects" | uniq

修改建议:设置配置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数:net.ipv4.conf.all.accept_redirects=0, 执行命令sysctl -p重新加载配置文件使其生效

2)禁止IP路由转发

规则描述:禁止IP路由转发

审计描述:检查系统是否禁用IP路由转发功能,查看文件/etc/sysctl.conf或/etc/sysctl.d/中net.ipv4.ip_forward参数,值为0表示合规,

执行命令: 1.sysctl net.ipv4.ip_forward 2.cat /etc/sysctl.conf /etc/sysctl.d/ | grep -v '^\s*#' | grep "net.ipv4.ip_forward" | uniq

3)禁止IP源路由

规则描述:禁止IP源路由

审计描述:检查文件/etc/sysctl.conf或/etc/sysctl.d/参数accept_source_route值均为0合规,

执行命令:

1.sysctl net.ipv4.conf.all.accept_source_route

2.cat /etc/sysctl.conf /etc/sysctl.d/ | grep -v'^\s*#' | grep 'net.ipv4.conf.all.accept_source_route' | uniq

3.sysctl net.ipv4.conf.default.accept_source_route

4.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep 'net.ipv4.conf.default.accept_source_route' | uniq

修改建议:设置文件/etc/sysctl.conf或/etc/sysctl.d/*的以下参数:net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

执行命令:sysctl -p 重新加载配置文件,使其生效

4)确保忽略广播的ICMP请求

规则描述:系统忽略所有广播和多播地址的ICMP回显和时间戳记请求,把配置文件/etc/sysctl.conf或/etc/sysctl.d/中net.ipv4.icmp_echo_ignore_broadcasts的参数设置为1

审计描述:检查系统是否开启忽略广播ICMP请求功能,检查文件/etc/sysctl.conf或/etc/sysctl.d/中net.ipv4.icmp_echo_ignore_broadcasts参数,值为1表示合规,

执行命令:

1.sysctl net.ipv4.icmp_echo_ignore_broadcasts

2.cat /etc/sysctl.conf /etc/sysctl.d/ | grep -v '^\s#' | grep "net.ipv4.icmp_echo_ignore_broadcasts" | uniq

修改建议:设置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数为:net.ipv4.icmp_echo_ignore_broadcasts = 1,执行命令:sysctl -p 加载配置文件,使该策略项生效

5)检查可疑数据包是否被记录

规则描述:开启功能后,将不可发送源地址的数据包记录到内核日志

审计描述:检查文件/etc/sysctl.conf或/etc/sysctl.d/的参数net.ipv4.conf.all.log_martians和net.ipv4.conf.default.log_martians,值为1表示合规,

执行命令:

1.sysctl net.ipv4.conf.all.log_martians

2.cat /etc/sysctl.conf /etc/sysctl.d/ | grep -v '^\s*#' | grep "net.ipv4.conf.all.log_martians"

3.sysctl net.ipv4.conf.default.log_martians

4.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net.ipv4.conf.default.log_martians"

修改建议:设置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数:net.ipv4.conf.all.log_martians=1 和 net.ipv4.conf.default.log_martians=1,执行命令:sysctl -p重新加载配置文件使策略项生效

6)打开syncookie缓解syn flood攻击

规则描述:打开syncookie缓解syn flood攻击

审计描述:检查文件/etc/sysctl.conf或/etc/sysctl.d/的参数net.ipv4.tcp_syncookies,值为1表示合规,

执行命令:

1.sysctl net.ipv4.tcp_syncookies

2.cat /etc/sysctl.conf /etc/sysctl.d/ | grep -v '^\s*#' | grep "net.ipv4.tcp_syncookies" | uniq

修改建议:修改文件/etc/sysctl.conf或/etc/sysctl.d/*的参数net.ipv4.tcp_syncookies = 1,执行命令sysctl -p 重新加载配置文件,使其生效

descript

sysctl -p生效  

或者sysctl -p  /etc/sysctl.conf加载sysctl.conf文件中设置的内核参数

验证

descript

其它内核安全建议descript

  • net.ipv4.icmp_echo_ignore_all:忽略ICMP请求。出于安全考虑,建议开启此项(当前默认值为0,开启将值设为1)。但开启后会忽略所有接收到的icmp echo请求的包(会导致机器无法ping通),建议用户根据实际组网场景决定是否开启此项。
  • net.ipv4.conf.all.log_martians/net.ipv4.conf.default.log_martians:对于仿冒/源路由/重定向数据包开启日志记录。出于安全考虑,建议开启此项(当前默认值为0,开启将值设为1)。但是开启后会记录带有不允许的地址的数据到内核日志中,存在冲日志风险,建议用户根据实际使用场景决定是否开启此项。
  • net.ipv4.tcp_timestamps:关闭tcp_timestamps。出于安全考虑,建议关闭tcp_timestamps(当前默认值为1,关闭将值设为0)。但是关闭此项会影响TCP超时重发的性能,建议用户根据实际使用场景决定是否关闭此项。
  • net.ipv4.tcp_max_syn_backlog:决定了SYN_RECV状态队列的数量。该参数决定了SYN_RECV状态队列的数量,超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。建议由用户根据实际使用场景配置合适的值。

SSH(Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性保障的协议。

利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,并防止DNS欺骗和IP欺骗。OpenSSH是SSH协议的免费开源实现。

加固SSH服务,是指修改SSH服务中的配置来设置系统使用OpenSSH协议时的算法、认证等参数,从而提高系统的安全性

22、SSH LoginGraceTime设置为一分钟或

更短

规则描述:LoginGraceTime参数指定成功验证SSH服务器的时间。宽限期的时间越长,可以存在更开放的未认证连接。宽限期应限制在适当的组织限制,以确保服务可用于所需的访问。

审计描述:运行以下命令并验证输出LoginGraceTime为60或更少:# grep '^LoginGraceTime' /etc/ssh/sshd_config LoginGraceTime 60(默认值为120)

修改建议:编辑/etc/ssh/sshd_config文件,设置参数如下:LoginGraceTime 60

解决办法: sed -i "s/#LoginGraceTime 2m/LoginGraceTime 60/g" /etc/ssh/sshd_config

descript

23、SSH的LogLevel设置成INFO或VERBOSE

规则描述:INFO指定当用户登录或者注销活动将会被记录。VERBOSE级别的日志中会记录使用的SSH公钥的指纹,可在发生安全事件之后进行分析与审计。

审计描述:运行以下命令验证输出匹配:  #grep '^LogLevel' /etc/ssh/sshd_config #LogLevel INFO or LogLevel VERBOSE or 空

修改建议:编辑/etc/ssh/sshd_config文件设置参数如下: LogLevel INFO或者LogLevel VERBOSE

descript

24、SSH X11转发被禁用

规则描述:参数X11Forwarding提供了操作远程连接X11界面的功能。

审计描述:运行下面的命令并确认输出匹配:  # grep '^X11Forwarding' /etc/ssh/sshd_config  X11Forwarding no

修改建议:编辑/etc/ssh/sshd_config文件确保参数设置如下:  X11Forwarding no

descript

25、SSH中IgnoreRhosts设置为enabled

规则描述:IgnoreRhosts参数指定.rhosts和.shosts文件不能在RhostsRSAAuthentication或者HostbasedAuthentication中使用。

审计描述:运行如下命令并确认输出匹配:  # grep '^IgnoreRhosts' /etc/ssh/sshd_config  IgnoreRhosts yes

修改建议:编辑/etc/ssh/sshd_config文件设置参数如下:  IgnoreRhosts yes

descript

26、SSH中HostbasedAuthentication关闭

规则描述:HostbasedAuthentication参数指定是否允许受信任的主机通过使用.rhosts 或/etc/hosts.equiv进行认证;当公钥客户端认证成功,用户即登录;此选项仅使用于SSH 2。

审计描述:运行如下命令并确认输出匹配:  # grep '^HostbasedAuthentication' /etc/ssh/sshd_config  HostbasedAuthentication no

修改建议:编辑/etc/ssh/sshd_config文件设置参数如下:  HostbasedAuthentication no

descript

27、SSH PermitEmptyPasswords被禁用

规则描述:PermitEmptyPasswords参数指定SSH服务器是否允许使用空密码字符串登录帐户。

审计描述:运行以下命令并验证输出是否匹配:# grep '^PermitEmptyPasswords' /etc/ssh/sshd_config     PermitEmptyPasswords no

修改建议:编辑/etc/ssh/sshd_config文件,加入如下内容:PermitEmptyPasswords no

descript

SSH服务的所有加固项均保存在配置文件/etc/ssh/sshd_config中,服务端各加固项的含义、加固建议 可以参考如下表格

descript

SSH其它安全加固建议

(参考openEuler官网文档 https://openeuler.org/zh/docs/20.09/docs/SecHarden/系统服务.html )

1)、SSH服务仅侦听指定IP地址

出于安全考虑,建议用户在使用SSH服务时,仅在必需的IP上进行绑定侦听,而不是侦听0.0.0.0,可修改/etc/ssh/sshd_config文件中的ListenAddress配置项。

打开并修改/etc/ssh/sshd_config文件 vi /etc/ssh/sshd_config 修改内容如下,表示绑定侦听IP为 192.168.1.100,用户可根据实际情况修改需要侦听的IP ... ListenAddress 192.168.1.100 ... 重启SSH服务 systemctl restart sshd.service

2)、限制SFTP用户向上跨目录访问

SFTP是FTP over SSH的安全FTP协议,对于访问SFTP的用户建议使用专用账号,只能上传或下载文件,不能用于SSH登录,同时对SFTP可以访问的目录进行限定,防止目录遍历攻击,具体配置如下:说明:sftpgroup为示例用户组,sftpuser为示例用户名

3)SSH远程执行命令

OpenSSH通用机制,在远程执行命令时,默认不开启tty,如果执行需要密码的命令,密码会明文回显。出于安全考虑,建议用户增加-t选项,确保密码输入安全。

如下:ssh -t testuser@192.168.1.100 su

说明:192.168.1.100为示例IP,testuser为示例用户

posted @ 2023-03-14 10:13  LuckinAaron  阅读(2389)  评论(0编辑  收藏  举报