Linux合规安全设置

目录

1.身份鉴别合规项检测

1.1 用户登录身份标识鉴别策略

1.1.1 root 权限用户检测

1.1.2 最长使用周期小于等于 90 天

1.1.3 最短更换周期大于等于 2 天

1.1.4 距失效提示天数大于等于 5 天

1.1.5 最新的密码不能是前 5 次使用过的密码

1.1.6 空口令账户

1.1.7 弱口令账户

1.1.8 密码复杂性要求

1.1.9 Wheel 组检测

1.1.10 相同 ID 用户检测

1.2 登录失败处理策略

1.2.1 普通用户触发锁定次数小于等于 5 次

1.2.2 普通用户锁定时间大于等于 10 分钟

1.2.3 root 用户触发锁定次数小于等于 5 次

1.2.4 root 用户触发锁定时间大于等于 10 分钟

1.2.5 已开启登录连接超时功能,超时时间大于等于 10 分钟

1.3 远程管理策略

1.3.1 使用协议版本大于等于 2

1.3.2 使用端口不为 22

1.3.3 最大失败尝试登录次数小于等于 5 次

1.3.4 禁止 root 登录

1.3.5 开启 RSA 认证登录

1.3.6 开启公钥验证登录

1.3.7 设置允许登录用户

2.访问控制合规项检测

2.1 默认账户检测

2.1.1 系统默认账户已被重命名或禁用

2.2 非默认账户检测

2.2.1 超过半年未登录账户检测

2.3 安全信息标记访问控制

2.3.1 开启对敏感数据和操作权限进行标记

3.安全审计合规项检测

3.1 用户行为及安全事件审计

3.1.1 开启日志守护进程

3.1.2 开启审计日志服务

3.1.3 开启应用日志服务

3.2 审计内容检查

3.2.1 用户审计记录应包含日期、时间、类型、主体标识、客体标识和结果

3.3 审计记录备份保护

3.3.1 主机日志记录是否超过半年

3.3.2 主机日志是否有备份

4.入侵防范合规项检测

4.1 非必须系统服务检测

4.1.1 Linux 默认共享检测

4.1.2 ftp 服务已禁用

4.1.3 不存在 Telnet 或 HTTP 明文传输方式

4.1.4 开启 X 项存在风险的服务

4.2 开放的高危端口检测

4.2.1 linux 没有高危端口,默认符合

4.3 终端网络管理限制(满足任意一项即合规)

4.3.1 hosts 已配置 ssh 接入限制

4.3.2 iptables 已配置 ssh 接入限制

4.4 入侵行为检测

4.4.1 开启防火墙

5.安装杀毒软件


1.身份鉴别合规项检测

准备
安装一个 PAM 模块来启用 cracklib 支持,这可以提供额外的密码检查功能。
在 Debian,Ubuntu 或者 Linux Mint 使用命令:

sudo apt install libpam-cracklib

这个模块在 CentOS,Fedora 或者 RHEL 默认安装了。所以在这些系统上就没有必要安装了。

1.1 用户登录身份标识鉴别策略

1.1.1 root 权限用户检测

1.根据检测结果,删除不合规的 root 权限账户,命令如下:
删除该用户,命令如下:
userdel 用户名
rm -rf /home/用户名 (可选,表示删除该用户的主目录)

2.检查配置/etc/passwd 中,是否包含用户标识号相同的帐号,用户标识号位置如下:
以第一行为例,从左至右,依次为:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录 shell

1.1.2 最长使用周期小于等于 90 天

命令: sudo vi /etc/login.defs
修改密码期限:
修改 PASS_MAX_DAYS 字段值为 90

1.1.3 最短更换周期大于等于 2 天

命令: sudo vi /etc/login.defs
修改 PASS_MIN_DAYS 字段值为 2

1.1.4 距失效提示天数大于等于 5 天

命令: sudo vi /etc/login.defs
修改 PASS_WARN_AGE 字段值为 5

1.1.5 最新的密码不能是前 5 次使用过的密码

Centos、RHEL、Oracle Linux 系统下修改如下文件:
sudo vi /etc/pam.d/system-auth
在以下 password pam_unix.so 选项的末尾添加 remember=5

 Debian、Ubuntu、RHEL、Suse 系统下修改如下文件:
sudo vi /etc/pam.d/common-password
在以下 password pam_unix.so 选项的末尾添加 remember=5

1.1.6 空口令账户

检测出有空口令账户,做以下处理:
1. 删除该用户,命令如下:
userdel 用户名
rm -rf /home/用户名 (可选,表示删除该用户的主目录)
2. 给该用户设置密码
passwd 用户名

1.1.7 弱口令账户

如果检测出有弱口令账户,建议设置符合密码复杂度要求(密码不能和用户名相同,且至
少包含大写字母、小写字母、数字、特殊字符中的三种)的密码,命令如下:
passwd 用户名

1.1.8 密码复杂性要求

在 Fedora、Centos、RHEL、Oracle Linux 使用命令:
sudo vi /etc/pam.d/system-auth
添加如下选项内容:

Debian、Ubuntu、RHEL、Suse 系统下修改如下文件:
sudo vi /etc/pam.d/common-password
添加如下选项内容: 

1.1.9 Wheel 组检测

检查文件/etc/group 中,wheel 后面是否有用户名:
cat /etc/group

 如果有,将其修改成与上述划线部分相同。

1.1.10 相同 ID 用户检测

检查配置/etc/passwd 中,是否包含用户标识号相同的帐号,用户标识号位置如下:
以第一行为例,从左至右,依次为:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录 shell

 修改标识号相同的账号 foo 为唯一标识

usermod -u 2005 foo     #该命令将 foo 账号修改为 2005

1.2 登录失败处理策略

1.2.1 普通用户触发锁定次数小于等于 5 次

1.2.2 普通用户锁定时间大于等于 10 分钟

1.2.3 root 用户触发锁定次数小于等于 5 次

1.2.4 root 用户触发锁定时间大于等于 10 分钟

1. 修改如下配置文件:
        /etc/pam.d/sshd (远程 ssh)
        /etc/pam.d/login (终端)
2.添加如下行:
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root=5
root_unlock_time=600

各参数解释:
even_deny_root:root 用户连续错误登录的最大次数,超过最大次数,则锁定该用户
deny:普通用户连续错误登录的最大次数,超过最大次数,则锁定该用户
unlock_time:设定普通用户锁定后,多少时间后解锁,单位是秒
root_unlock_time:设定 root 用户锁定后,多少时间后解锁,单位是秒

配置示例:

1.2.5 已开启登录连接超时功能,超时时间大于等于 10 分钟

在/etc/profile 文件中添加 TMOUT 变量,设置连接超时时间(单位为秒),示例如下:
        sudo vi /etc/profile
修改 TMOUT 值为超时时间 600

1.3 远程管理策略

1.3.1 使用协议版本大于等于 2

配置说明
执行如下命令,
1. 修改配置文件
        sudo vi /etc/ssh/sshd_config
修改 Protocol 字段为 2

 2.重启 sshd 生效,重启命令如下:
CentOS、RedHat 系列: systemctl restart sshd
Ubuntu 系列: service sshd restart

1.3.2 使用端口不为 22

配置说明
执行如下命令,
修改配置文件
sudo vi /etc/ssh/sshd_config
修改 Port 字段为非 22 的值

1.3.3 最大失败尝试登录次数小于等于 5 次

配置说明
执行如下命令,
修改配置文件 sudo vi /etc/ssh/sshd_config
最大失败尝试登录次数小于等于 5

重启 sshd 生效,重启命令如下:
CentOS、RedHat 系列: systemctl restart sshd
Ubuntu 系列: service sshd restart

1.3.4 禁止 root 登录

执行如下命令,
修改配置文件
sudo vi /etc/ssh/sshd_config
修改 PermitRootLogin 的值为 no
注:no 表示禁止 root 登录,yes 表示允许 root 登录(禁止 root 登录时,如果仍有 ssh 登录需求,可使用其他账户登录,若无其他账号,则应当在禁止 root 前新建账号)。

1.3.5 开启 RSA 认证登录

配置说明
执行如下命令,
修改配置文件 sudo vi /etc/ssh/sshd_config
修改 RSAAuthentication 字段为 yes

重启 sshd 生效,重启命令如下:
CentOS、RedHat 系列: systemctl restart sshd
Ubuntu 系列: service sshd restart

1.3.6 开启公钥验证登录

配置说明
执行如下命令,
修改配置文件
        sudo vi /etc/ssh/sshd_config
修改 PubkeyAuthentication 字段为 yes

重启 sshd 生效,重启命令如下:
CentOS、RedHat 系列: systemctl restart sshd
Ubuntu 系列: service sshd restart

1.3.7 设置允许登录用户

修改方法有两种:在 ssh 配置文件中设置,或在 pam.d 配置中设置(任选一种即可)
1. 在 ssh 配置文件中设置(默认不配置的情况下,是允许所有用户登录.):
        sudo vi /etc/ssh/sshd_config
在 AllowUsers 后指定允许登录的用户

1. 或者在 pam.d 的 sshd 配置中设置
        sudo vi /etc/pam.d/sshd
添加以下内容:
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
(这里在/etc/sshusers 文件中指定允许用户,也可以更换为其他文件)

 然后在指定文件中设置登录用户(这里是/etc/sshusers 文件)

重启 sshd 生效,重启命令如下:
CentOS、RedHat 系列: systemctl restart sshd
Ubuntu 系列: service sshd restart

2.访问控制合规项检测

2.1 默认账户检测

2.1.1 系统默认账户已被重命名或禁用

1. 删除账户:
        userdel 用户名
        rm -rf /home/用户名 (可选,表示删除该用户的主目录)

2. 重命名账户:
        usermod -l 修改后的用户名 要修改的用户名

2.2 非默认账户检测

2.2.1 超过半年未登录账户检测

根据检测结果,将对应的用户删除。
        userdel 用户名
        rm -rf /home/用户名 (可选,表示删除该用户的主目录)

2.3 安全信息标记访问控制

2.3.1 开启对敏感数据和操作权限进行标记

建议终端安装 selinux,且/etc/selinux/config 配置文件中有 SELINUX=enforcing 项。
        sudo vi /etc/selinux/config

 或者安装 apparmor,确保其处于运行状态。
systemctl status apparmor

3.安全审计合规项检测

3.1 用户行为及安全事件审计

3.1.1 开启日志守护进程

建议安装 rsyslog 日志服务(低版本 linux 系统使用 syslog 也可以),以记录主机的应用日志。
检测 rsyslog 运行状态,操作命令如下:
1. CentOS、RedHat 系列操作如下:
        systemctl status rsylog        查看状态
        systemctl stop rsyslog        停止
        systemctl start rsyslog        启动
启动成功后状态:

 查看进程有没有启动:

 2、Ubuntu 系列操作如下:
        service rsylog status        查看状态
        service rsyslog stop        停止
        service rsyslog start        启动
启动成功后状态:

 查看进程有没有启动:

3.1.2 开启审计日志服务

3.1.3 开启应用日志服务

建议安装 auditd 审计日志服务,以记录主机的审计日志。
检测 auditd 运行状态,操作命令如下:
1、CentOS、RedHat 系列操作如下:
        systemctl status auditd        查看状态
        systemctl stop auditd        停止
        systemctl start auditd        启动
启动成功后状态:

 查看进程有没有启动:
ps -ef | grep auditd

2、Ubuntu 系列操作如下:
        service auditd status        查看状态
        service auditd stop        停止
        service auditd start        启动

启动成功后状态:

 查看进程有没有启动:
ps -ef | grep auditd

3.2 审计内容检查

3.2.1 用户审计记录应包含日期、时间、类型、主体标识、客体标识和结果

检查/etc/rsyslog.conf 中的安全日志写入配置:(若使用的是 syslog,则检查/etc/syslog.conf,
检查内容一致)
        sudo vi /etc/rsyslog.conf
配置中应包含 auth.* /xxx/xxx(此处为日志文件路径)
或者 authpriv.* /xxx/xxx(此处为日志文件路径)

审计日志写入开关:
检查/etc/audit/auditd.conf 中,log_format 选项应设置为 RAW。
如果有 write_logs 选项,应设置为 yes(老版本的 auditd 没有这一选项)。
        sudo vi /etc/audit/auditd.conf

3.3 审计记录备份保护

3.3.1 主机日志记录是否超过半年

        及时更新在/var/log/secure 下的安全日志和/var/log/audit 下的审计日志,删除其中超过半年以上的历史记录。

3.3.2 主机日志是否有备份

rsyslog 在/etc/rsyslog.conf 的底部添加日志服务器配置:*.* @x.x.x.x,"*.*"表示所有日志,可以将"*.*"替换为实际需要的日志信息。如:kern.* ; mail.* 等等;x.x.x.x 为实际的 IP 或域名
(如果是 syslog 则修改/etc/syslog.conf,修改方法相同)
        sudo vi /etc/rsyslog.conf
备份所有日志:(x.x.x.x 为指定的日志服务器地址)

或备份部分指定日志:(下方示例为内核日志)

4.入侵防范合规项检测

4.1 非必须系统服务检测

4.1.1 Linux 默认共享检测

Linux 不存在默认共享,默认符合。

4.1.2 ftp 服务已禁用

关闭系统中的 vsftp 服务,并关闭其他在 21 端口监听的服务。
关闭 vsftp 服务:
        systemctl stop vsftpd
检查 vsftpd 状态:systemctl status vsftpd

 检测有无其他进程在监听 ftp 端口:
        lsof -i:ftp

4.1.3 不存在 Telnet 或 HTTP 明文传输方式

配置说明
关闭主机上的 telnet 和 http 服务。
1.关闭 telnet 服务
        sudo vi /etc/services,注释 23 号端口(telnet)
2.关闭 http 服务
        sudo vi /etc/services,注释 80 号端口(http)

4.1.4 开启 X 项存在风险的服务

根据检测出的高危服务项(如"postfix"、"cups"、"rpcbind"等),卸载主机上的对应服务
卸载方法如下:
linux 通过 yum 安装的服务都可以通过 yum erase 命令卸载
假设现在需要卸载 httpd
首先停止 httpd 服务:
        service httpd stop
查看 httpd 安装的包名:
        yum list | grep httpd
会展示出很多依赖包,只取第一个,我这边是 httpd.x86_64
卸载命令:
        yum erase httpd.x86_64

4.2 开放的高危端口检测

4.2.1 linux 没有高危端口,默认符合

Linux 高危端口默认符合

4.3 终端网络管理限制(满足任意一项即合规)

4.3.1 hosts 已配置 ssh 接入限制

4.3.2 iptables 已配置 ssh 接入限制

两种修改方法,满足一项即可:
方法一:在/etc/hosts.allow 中是否配置仅需要登录的 IP 或 IP 段:如
        sshd:10.10.10.*:allow (只允许 10.10.10.*网段接入访问)
且/etc/hosts.deny 中配置 sshd:all:deny,则符合。
        sudo vi /etc/hosts.allow

        sudo vi /etc/hosts.deny

方法二:在 iptables 是否配置 ssh 接入限制,如
iptables -A INPUT -s 192.168.6.0/24 -p tcp --dport 22(这里指定主机的 ssh 端口) -j ACCEPT
(该命令限制 192.168.6.0/24 网段接入 22 端口)
使用 sudo iptables -L 来查看已有的 ssh 接入限制

4.4 入侵行为检测

4.4.1 开启防火墙

三种修改方式,满足一种即可:
方法一:iptables(各 Linux 系统共有)
1. 删除现有规则
        iptables -F
        iptables --flush
警告:当前命令执行后,会放开屏蔽的端口
2. 设置默认链策略
默认的 iptables 策略是 ACCEPT。将此更改为如下所示。
        iptables -P INPUT DROP
        iptables -P FORWARD DROP
        iptables -P OUTPUT DROP
    当将 INPUT 和 OUTPUT 默认策略作为 DROP 时,对于每一个防火墙规则要求都应该定义两条规则,即一个 INPUT 和一个 OUTPUT。如果信任内部用户,则可以忽略上面 OUTPUT 的设置。默认情况下,不要丢弃所有 OUTPUT的数据包。在这种情况下,对于每一个防火墙规则的要求,你只需要定义一个规则。即定义规则传入,因为传出是接受所有数据包。
3. 阻止一个特定的 IP 地址在我们做其他规则前,如果你想阻止一个特定的 IP 地址,你应该先做如下所示。当您在日志文件中找到特定的 IP 地址时发现一些奇怪的活动,并希望在进一步研究时暂时阻止该 IP地址,这将很有帮助。
BLOCK_THIS_IP='192.168.1.108' iptables -A INPUT -s '$BLOCK_THIS_IP' -j DROP
你也可以使用下面的一种规则。
iptables -A INPUT -i eth0 -s '$BLOCK_THIS_IP' -j DROP     //规则禁止这个IP地址对我们服务器eth0网卡的所有连接
iptables -A INPUT -i eth0 -p tcp -s '$BLOCK_THIS_IP' -j DROP     //规则只禁止这个IP地址对我们服务器eth0网卡的tcp协议的连接

方法二:配置 ufw:(Ubuntu)
    安装:sudo apt-get install ufw
    启用:sudo ufw enable
    禁用:sudo ufw disable
    查看状态:sudo ufw status

方法三:配置:firewalld(CentOS)
查看状态
    systemctl status firewalld.service
启动防火墙
    systemctl start firewalld.service
关闭防火墙
    systemctl stop firewalld.service
重新启动防火墙
    systemctl restart firewalld.service

5.安装杀毒软件

        ClamAV 是一个开源 (GPLv2) 防病毒工具包,它提供了许多实用程序,包括灵活且可扩展的多线程守护程序、命令行扫描程序、用于自动更新病毒库的高级工具。该软件包的核心是一个以共享库形式提供的反病毒引擎。

Centos系统安装方法如下:

#先在测试环境中将病毒库更新好,然后下载(默认病毒库位置在:/var/lib/clamav/)
        https://blog.youkuaiyun.com/qq_29768197/article/details/129814622

#安装病毒库及杀毒软件
        tar -zxvf /tmp/clamav.tar.gz -C /tmp/
        mkdir /usr/local/share/clamav -p
        cp /tmp/clamav/* /usr/local/share/clamav
        rpm -ivh /tmp/clamav-1.2.1.linux.x86_64.rpm --nodeps --force

#扫描杀毒测试
        clamscan -r -i /tmp -l /var/log/clamav.log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值