站点图标 Liao's blog

按照等保测评标准实施操作系统加固的建议和参考

等保测评在如今项目安全性及验收结项都是至关重要的步骤。

Windows

以服务器绝大多数为Windows Server 2012 版本参考为例

一、身份鉴别

1. 口令复杂度和口令更改周期

Win+R —> gpedit.msc —> 本地计算机策略 —>计算机配置 —>Windows设置 —> 安全设置 —> 账户策略 —> 密码策略

2. 登录失败和空闲超时

Win+R —> gpedit.msc —> 本地计算机策略 —>计算机配置 —>Windows设置 —> 安全设置 —> 账户策略 —> 账户锁定策略

控制面板 —> 外观 —> 显示 —> 更改屏幕保护程序

3. 加密远程管理

Win+R —> gpedit.msc —> 本地计算机策略 —>计算机配置 —> 管理模板—> Windows组件 —> 远程桌面服务 —> 远程桌面会话主机 —> 安全



二、访问控制

1. 禁用匿名用户guest

2. 修改默认密码

计算机管理(本地)—> 本地用户和组 —> 用户 —> Administrator —> 右键 —> 设置密码

3. 禁用其他无关用户,创建多个个人用户,避免多人共用一个账户

4. 授予管理用户所需的最小权限,实现管理用户的权限分离




三、安全审计

1. 开启安全审计

Win+R —> gpedit.msc —> 本地计算机策略 —>计算机配置 —>Windows设置 —> 安全设置 —> 本地策略 —> 审核策略

2.设置日志保存时间和存储空间

计算机管理 —> 系统工具 —> 事件查看器 —> Windows日志 —> 应用程序、安全、系统 —> 右键 —> 属性(三个都需要设置)

四、入侵防范

1. 删除业务非必要的组件和应用程序

控制面板 —> 所有控制面板项 —> 程序和功能

2. 关闭不需要的系统服务、默认共享和高危端口

关闭系统服务器:
计算机管理 —> 服务和应用程序 —> 服务
禁用非必要的系统服务(如 Print Spooler、Remote Registry Service等)

关闭默认共享:
计算机管理 —> 系统工具 —> 共享文件夹 —> 右键 —> 停止共享
关闭系统默认共享(如C、D、E)

禁用高危端口一:
Win+R —> gpedit.msc —> 本地计算机策略 —>计算机配置 —>Windows设置 —> 安全设置 —> IP安全策略,在 本地计算机
禁用高危端口的策略(至少包括TCP135、139、445、UDP135、137、138、445端口)

禁用高危端口二:
控制面板 —> 系统和安全 —> 管理工具 —> 高级安全Windows防火墙 —> 入站规则

3. 设置远程桌面地址限制

控制面板—>管理工具—>高级安全Windows防火墙—>入站规则—>远程桌面-用户模式(TCP-In)

五、恶意代码防范

1、安装杀毒软件并更新病毒库(火绒安全仅为参考防病毒软件)

Linux

说明:以下以CentOS Linux release 7.9.2009 (Core) 64位 为例,提供等保整改操作参考。

一、身份鉴别

1. 口令复杂度和口令更改周期

口令更改周期:
方法一:
在/etc/login.defs中修改(修改原有的,并非添加)


(如经重启后无效或服务器不能重启,需逐一执行修改,参考方法二(无需重启))

方法二(无需重启修改密码有效期):
查看某个用户的密码设置情况:


强制root用户下次登陆时修改密码(-d 0),并且设置密码最低有效期0(-m 1)和最高有限期90(-M 90),提前7天发警报提示-W 7 (root为用户名,可改成需要修改的用户)
chage -d 0 -m 1 -M 90 -W 7 root

口令复杂度配置:
在/etc/pam.d/system-auth中找到

password requisite pam_pwquality.so try_first_pass local_users_only

然后在其后面添加以下配置

retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root

配置后:

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root


配置参数说明:
retry=3 尝试三次
minlen=8 密码最小长度为8个字符。
lcredit=-1 密码应包含的小写字母的至少一个
ucredit=-1 密码应包含的大写字母至少一个
dcredit=-1 将密码包含的数字至少为一个
ocredit=-1 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个
enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略

2. 登录失败和空闲超时

登录失败处理功能:(配置三个文件方可全方位生效)
/etc/pam.d/system-auth 文件加入以下配置 (请找到相应的对应区域,且必须按以下命令顺序)
/etc/pam.d/system-auth 下首行#%PAM-1.0下增加找到相应位置并添加:

auth  required  pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root  root_unlock_time=60

onerr=fail 表示连续登录失败,deny=5 表示超过5次登录失败即锁定,unlock_time=300表示普通用户锁定300秒,even_deny_root 表示对root账户生效,root_unlock_time=60表示root用户锁定60秒。
配置如下:

/etc/pam.d/sshd/etc/pam.d/login中在首行#%PAM-1.0下增加:

auth  required  pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=60

/etc/pam.d/sshd 配置如下:

/etc/pam.d/login 配置如下:

/etc/pam.d/login 配置如下:

注意:
1)注意上面命令行写在文件的顺序,没配置正确有可能root都无法登录。
2)如果想锁住root用户,在pam_tally2.so 条目里添加 even_deny_root 选项

解锁方法:
查询密码错误情况:pam_tally2
在root权限下:

pam_tally2  –user=root  --reset  #解锁某一个用户(root)
pam_tally2  --reset  #解锁所有用户

在普通用户权限下:

sudo  pam_tally2  –user=root  --reset  #解锁某一个用户(root)
sudo  pam_tally2  --reset  #解锁所有用户

空闲超时自动退出:
在 /etc/profile末尾添加:

export TMOUT=600

说明:0代表永不自动退出,600代表600秒自动退出。
执行命令source /etc/profile使配置生效

3. 加密远程管理

使用 netstat -ntpl | grep LISTEN查看是否有开启23端口(telnet服务)
一般情况下,默认是使用ssh服务(22端口)

二、访问控制

1. 禁用多余用户(禁用所有非必要的用户)

修改 /etc/passwd文件中用户登录的shell,添加nologin

2. 创建多个个人用户,避免多人通用一个账户

为每个用户创建一个独立的账户,避免用户都使用一个管理用户root

#创建新用户命令:
adduser user1 #添加一个名为user1的用户
#修改(添加)新用户密码:
Passwd user1
#输入两次密码即可

3. 修改默认口令

修改默认口令,既修改默认账户root的默认口令,Centos 8在安装的时候创建root账户时,口令就不能为默认口令且要求具有复杂度要求,所以不存在默认口令。以下提供修改口令的命令供参考:

4. 授予管理用户所需的最小权限,实现管理用户的权限分离

操作系统暂难实现三权分立,只需根据业务需求分配权限即可

5. 关闭root账户直接远程登录

/etc/ssh/sshd_config中修改“PermitRootLogin”参数为“no”
注意: 修改前请确认具有普通用户,或创建一个可供远程管理的普通用户!!!

配置后,用户不能用root账户直接远程登录系统,需用普通账户远程登录,然后su切换到root账户
随后重启ssh服务即可:

systemctl restart sshd.service
6. 应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问

/etc/selinux/configSELINUX参数默认为enforcing(强制模式)

三、安全审计

1. 开启安全审计和审计保护进程

查看auditd和rsyslogd进程的状态(默认是开启状态):

service auditd status 或
systemctl status auditd.service
service rsyslog status 或
systemctl status rsyslog.service

如果没有开启auditd和rsyslog服务,使用以下命令开启(重启):

service auditd restart 或
systemctl restart auditd.service
service rsyslog restart 或
systemctl restart rsyslog.service

设置auditd和rsyslog服务开机启动:

systemctl enable auditd
systemctl enable rsyslog
2. 设置日志保存时间

/etc/logrotate.conf文件修改rotate参数:

默认情况下,以周为单位,修改rotate参数为26,26周为26*7=182天,满足180天以上要求。

使用ll /var/log/ 命令查看实际日志是否满足要求:

日志时间满足180天,如需确认可查看以上文件进行确认。

4. 设置审计记录备份(配置日志服务器)

注: 该项配置暂未有统一加固整改建议(需根据每个系统的部署情况而定)
查看 /etc/rsyslog.conf文件是否配置日志服务器或日志审计设备IP

四、入侵防范

1. 删除业务非必要的组件和应用程序

使用yum list installed命令查看已安装的软件

2. 关闭不必要的系统服务和高危端口

方法一:
使用netstat -ntlp | grep LISTEN命令查看开放端口状态以及对应的服务:

上图可以看到系统打开了cupsd服务(打印服务),属于不必要的系统服务,使用以下命令进行关闭(举例说明,其他不必要的系统服务请自行判断后进行关闭)

systemctl stop cups
#并设置重启不启用cups服务
systemctl disable cups
#查看cups服务状态,确保cups服务已成关闭
systemctl status cups

方法二:
使用 Nmap工具进行端口扫描(自身扫描或通过管理终端扫描):

3. 设置远程管理接入地址限制(限制SSH登录地址)

这里Centos7有两种方法配置地址限制

第一种:通过 /etc/hosts.allowhosts.deny配置地址限制。
/etc/hosts.allow配置如下:(允许IP地址ssh

sshd:192.168.110.129:allow          #允许单个IP地址ssh
sshd:192.168.110.1:allow       #允许一个28掩码网络段ssh
sshd:192.168.110.0/28:allow       #允许一个28掩码网络段ssh

/etc/hosts.deny配置如下:(禁止所有IP地址ssh)

重启ssh服务

Systemctl restart sshd

以上就是 白名单机制,Linux的检查策略是先看 /etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看 /etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。

第二种:采用防火墙规则配置地址限制(Firewalld)
查看Firewalld状态:

systemctl status firewalld.service
firewall-cmd --state

防火墙 Firewall的状态是开启的,这样子在防火墙配置的策略才会有效,如果防火墙是关闭的,则配置的策略为无效。

在配置防火墙策略之前,得先了解一下配置的一个思路,就拿配置限制SSH登录地址举例。先有一个白名单机制的思维,白名单机制就是除允许名单外的所有名单都是被拒绝访问的,如果一个服务全开放,白名单则毫无意义。所以要限制SSH登录地址,先确认SSH是否为开放服务,先查看当前配置的防火墙规则:

firewall-cmd --list-all

可以看到这里的规则是开放了ssh服务的,意思就是全开放,所有的IP均可以通过ssh远程该系统。那么要做限制SSH登录地址,首先要先在规则上禁止掉ssh服务全开放。

firewall-cmd --permanent --remove-service=ssh    #禁止ssh服务
firewall-cmd --permanent --add-service=ssh       #开放ssh服务

配置完这命令后,使用查看当前配置的防火墙规则命令进行查询,ssh服务全开放依旧存在,那是因为配置了防火墙规则后,需要手动重载防火墙服务,因为后续还需配置,这里先不重载。接下来就是配置允许指定IP(段)访问制定本地端口(ssh服务,22端口)(永久生效再加上 –permanent)

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.110.128/28" port protocol="tcp" port="22" accept'  #允许指定IP段访问制定本地端口

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.110.1" port protocol="tcp" port="22" accept'  #允许指定IP访问制定本地端口

配置完成后,重载防火墙(不同于重启防火墙)

firewall-cmd --reload      #重载防火墙
systemctl restart firewalld.service      #重启防火墙

以上防火墙(Firewall)规则就已经实现限制SSH登录地址限制,仅允许192.168.110.129/28网络段192.168.110.1访问该系统的 ssh服务(22端口)

五、恶意代码防范

1. 安装杀毒软件并更新病毒库(ClamAV)或安装其他终端检测软件

安装方法请根据具体的系统版本进行百度或联系相关安全设备管家进行沟通安装。
安装ClamAV参考:https://www.jianshu.com/p/c9b5d87d8335

退出移动版