【肥海豹】-网络安全等级保护(等保)-LINUX类服务器配置

本文详细介绍了如何对Linux服务器进行安全配置,包括身份鉴别、访问控制、安全审计、入侵防范和恶意代码防范等方面。内容涵盖密码策略、登录失败处理、远程管理安全、日志审计、服务和端口管理等,旨在提升服务器的安全性和稳定性。
摘要由CSDN通过智能技术生成

        本文为个人总结,欢迎交流指正,集思广益,发现错误或其他配置方案会进行更新。(三级系统要求,以CentOS 7.4 系统为例,不同版本可能有配置区别,修改配置前建议做好备份,配置文件中原文建议进行注释留存)

身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;

1. 要求登录服务器的用户具有独立的身份标识(用户名),并需要采用身份鉴别措施(例如使用用户名+密码进行登录);

2. 要求服务器中不存在同名用户(服务器自身无法创建同名用户);

3. 要求从服务器策略上对密码复杂度进行限制,策略配置方法:

        修改/etc/pam.d/system-auth文件,在password类模块处添加

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
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= 
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

【参数说明:

        difok = N        不允许N个字符与旧密码相同;

        minlen = N        密码长度最小值为N(如果credit配置了大于1的正数,此处并不是真正的密码位数限制);

        ucredit = N        取值-1表示至少有一个大写字母;

        lcredit = N        取值-1表示至少有一个小写字母;

        dcredit = N        取值-1表示至少有一个数字;

        ocredit = N        取值-1表示至少有一个特殊字符;

dcredit、ucredit、dcredit、ocredit的N为正数时,表示密码中该类字符一个可以加N分,负数时表示该类型至少有N个,当输入的密码所有的字符总分大于或者等于minlen,并且满足所有credit的要求,该密码通过;

        enforce_for_root        对root用户强制生效

如不配置,使用root用户可以更换自身或其他用户密码时不遵从复杂度限制;

4. 另一种方法

        当“password    requisite     pam_pwquality.so”,即模块路径中使用到pam_pwquality.so时,可以对/etc/security/pwquality.conf文件进行配置,配置示例:

# Number of characters in the new password that must not be present in the
# old password.
# difok = 5
#
# Minimum acceptable size for the new password (plus one if
# credits are not disabled which is the default). (See pam_cracklib manual.)
# Cannot be set to lower value than 6.
minlen = 8
#
# The maximum credit for having digits in the new password. If less than 0
# it is the minimum number of digits in the new password.
dcredit = -1
#
# The maximum credit for having uppercase characters in the new password.
# If less than 0 it is the minimum number of uppercase characters in the new
# password.
ucredit = -1
#
# The maximum credit for having lowercase characters in the new password.
# If less than 0 it is the minimum number of lowercase characters in the new
# password.
lcredit = -1
#
# The maximum credit for having other characters in the new password.
# If less than 0 it is the minimum number of other characters in the new
# password.
ocredit = -1

注意:此处配置同3中方法一样,需要添加enforce_for_root才能够对root用户生效,添加位置在system-auth中,配置示例:

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= enforce_for_root
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

5. 密码设置90天进行更换,策略配置方法:

        修改/etc/login.defs文件,将PASS_MAX_DAYS字段设置为90,PASS_MIN_LEN为密码长度,顺手改成8就好啦,配置样例:

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   90
PASS_MIN_DAYS   0
PASS_MIN_LEN    8
PASS_WARN_AGE   7

身份鉴别 b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;

1.配置登录失败处理功能,此功能也是由pam模块进行控制,修改/etc/pam.d/system-auth文件,在auth类模块处添加 auth        required      pam_tally2.so  onerr=fail  deny=3  unlock_time=300 even_deny_root root_unlock_time=300 ,配置样例:

#%PAM-1.0
auth        required      pam_tally2.so  onerr=fail  deny=3  unlock_time=300 even_deny_root root_unlock_time=300
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

        配置说明:非法登录3次对该账户锁定300秒(5分钟),需要添加even_deny_root并设置root用户锁定时间方可对root用户生效。

2. 另一种方法

        可以在/etc/pam.d/sshd上做配置,配置方法同上,写在auth类模块第一行即可,但仅能够对使用SSH远程登录的用户生效;

3. 登录超时

        在/etc/profile中做配置,TMOUT=60,60秒无操作退出登录,配置示例:

# will prevent the need for merging in future updates.
TMOUT=60

        写完后执行 source /etc/profile,使配置生效;

4.(其他方法)登录失败处理可以使用DenyHosts软件实现,并合理进行配置;

参考文章:DenyHosts安装与部署-CSDN博客

身份鉴别 c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;

1. 要求使用SSH协议进行远程管理,关闭telnet;

身份鉴别 d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

1. 此项要求在服务器自身实现双因素鉴别,目前未见过比较理想的实现方式(如有实现方式请留言分享),此处高风险一般通过其他补偿措施进行调整;

        补偿措施:

        1. 服务器通过堡垒机进行远程管理,堡垒机具有独立的身份鉴别机制(可以不是双因素,对于调整和得分无影响),服务器通过堡垒机登录无旁路;

        2. 服务器防火墙上设置登录地址限制,仅能够通过开放的某个或者某几个IP进行登录;

        注意:服务器远程管理端口要避免直接对互联网开放,尽量采用VPN拨入内网或者通过堡垒机等方式进行安全管理;

访问控制 a)应对登录的用户分配账户和权限;

1. 要求为每个需要登录服务器的用户创建其对应的账户,并合理规划账户权限,避免出现普通运维人员使用超级管理员账户进行操作的情况;

访问控制 b)应重命名或删除默认账户,修改默认账户的默认口令;

1. 不建议对root用户进行重命名;

访问控制 c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;

1. 检查目前系统中的用户账户,删除无人使用的账户;

2. 为每个管理员或运维使用人员创建独立的账户,账户对应到人,避免两个自然人使用同一个账户对服务器进行操作;

访问控制 d)应授予管理用户所需的最小权限,实现管理用户的权限分离;

由于操作系统特性,存在完整权限的超级管理员用户,进行限制较为困难,根据安全性提出以下建议:

1. 对服务器内用户账户进行合理权限划分;

2. 采用第三方措施对审计记录进行收集和保护,专人(审计管理员)管理;

3. 严格控制超级管理员用户,避免超级管理员用户的滥用,仅在必要的系统配置时使用;

访问控制 f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;

1. 操作系统符合该要求;

访问控制 g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。

1. 需开启selinux并配置为enforcing模式(不建议这么做)

参考文章:linux系统中selinux的简介与用法_selinux的主要作用-CSDN博客

安全审计 a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;

1.启动服务器自身审计功能,使用命令service rsyslog status和service auditd status查看rsyslog和auditd是否正常运行;

2.syslog默认审计规则可以符合要求,可以根据需求进一步细化和完善审计规则;

3.audit审计默认无规则,使用auditctl -l查看,回显No rules,需进行配置

        方法1:通过命令进行配置,直接键入 auditctl -w /etc -p wxa

[root@192 /]# auditctl -w /etc -p wxa
[root@192 /]# auditctl -l
-w /etc -p wxa

        对整个/etc目录内文件的写入、执行和配置变更进行记录;

        此方法配置的策略在服务重启或系统重新启动后失效!

[root@192 /]# service auditd restart
Stopping logging: [  OK  ]
Redirecting start to /bin/systemctl start auditd.service
[root@192 /]# auditctl -l
No rules

        方法2:通过写入/etc/audit/audit.rules实现审计策略配置

[root@192 audit]# more /etc/audit/audit.rules 
## This file is automatically generated from /etc/audit/rules.d
-D
-b 8192
-f 1

        打开/etc/audit/audit.rules发现提示此文件由/etc/audit/rules.d更新而来,打开/etc/audit/rules.d,发现配置文件/etc/audit/rules.d/audit.rules,进行配置写入,写入方式和方法1相同即可,配置后重启服务器,配置示例:

[root@192 rules.d]# vi audit.rules 

## First rule - delete all
-D

## Increase the buffers to survive stress events.
## Make this bigger for busy systems
-b 8192

## Set failure mode to syslog
-f 1

-w /etc -p wxa

##需要重启下服务生效

[root@192 rules.d]# service auditd restart
Stopping logging: [  OK  ]
Redirecting start to /bin/systemctl start auditd.service
[root@192 rules.d]# auditctl -l
-w /etc -p wxa

(注:审计范围可根据需要进行配置,例如记录/etc/shadow)

4.采用第三方审计设备,可在服务器自身审计开启的基础上对审计功能进行增强;

安全审计 b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;

1. 服务器自身提供的审计内容可以满足要求;

2.第三方审计工具一般也可以满足要求,堡垒机可以对操作进行完整的记录和录像;

安全审计 c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;

此项为网络安全法要求,也为各类检查的重点,审计记录应至少保存6个月!

1. 通过审计系统/日志服务器实现:

        通过购买第三方审计设备或自建日志服务器,在服务器上安装对应agent或配置syslog协议发送日志,以实现日志的集中收集和保护(此方法收集的都是服务器自身产生的日志,);

2. 通过专人专管的堡垒机实现堡垒机审计记录的保护;

安全审计 d)应对审计进程进行保护,防止未经授权的中断。

1. 操作系统自身审计无法独立被中断(日志文件存储文件夹权限正常,日志大小正常,日志能够正常产生一般就没有问题);

2. 对于第三方安全审计设备,注意不要被中断、绕过、旁路等;

入侵防范 a)应遵循最小安装的原则,仅安装需要的组件和应用程序;

1. 避免安装多余软件,启用多余服务;

入侵防范 b)应关闭不需要的系统服务、默认共享和高危端口;

1. 检查系统服务,可针对无用系统服务进行关闭或限制。

2. 检查是否开启多余无用端口,采用防火墙限制或者关闭对应服务的方式对端口进行限制;

入侵防范 c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;

1. 方法1,在服务器防火墙上进行限制(不做配置示例了);

2.方法2,在/etc/hosts.allow 和/etc/hosts.deny中配置,注意要配置成为白名单模式!

        在/etc/hosts.allow中配置 sshd:【允许访问IP】:allow

        在/etc/hosts.deny中配置 sshd:ALL

3.方法3,通过网络层面进行限制,仅允许特定IP(堡垒机或特定管理终端等,要做较为严格的限制),尤其要避免办公网IP可以对服务器进行管理的情况;(不推荐此方法,容易产生旁路)

入侵防范 d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求;

1. 服务器无需提供此安全功能,此项为应用系统要求;

入侵防范 e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞;

1. 对服务器进行漏洞扫描,对发现的漏洞进行修复;

入侵防范 f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。

        需要在服务器层面采取措施识别并阻止入侵主机的行为,实时检测主机内部的风险异变,检测并查杀主机中的恶意程序,识别主机中的网站后门等。需要对账户暴力破解、账户异常登录、恶意程序、进程异常行为、关键文件变更、后门、高危命令执行、自启动检测、风险账户、提权操作等进行检测和限制;

1. 服务器自身部署入侵检测软件,实现上述功能;(见过360天擎网络版,亚信网络版,其他的安全类软件没见过实际应用)

2. 发生严重入侵事件是需能够提供短信、邮件、或者声光等报警;

恶意代码防范 a)应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。

1. 部署杀毒,并及时更新,如有条件可进行定期查杀,对查杀结果进行综合分析;(见过360天擎企业版,亚信企业版,其他的安全类软件没见过实际应用)

可信验证 a)可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。

此标注使用“可”而不是“应”来要求,为前瞻性要求;

1. 无法实现,需要有硬件的可信根芯片支持;

数据完整性 a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;

1. 管理时采用SSH协议(参考身份鉴别 c项);

2. 与其他应用交互或发送日志时使用加密的通信协议(一般不同系统交互和发送日志都发生在内网,个人觉得要求做加密不是很合理,而且会影响效率);

数据完整性 b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。

不建议对此条要求进行额外配置;

1. 如有条件可采取措施对数据完整性进行保障;(听说可以通过软件实现,实际应用中从没见过,也不推荐这么做)

数据保密性 a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;

1. 管理时采用加密的SSH协议(参考身份鉴别 c项);

2. 与其他应用交互或发送日志时使用加密的通信协议(一般不同系统交互和发送日志都发生在内网,个人觉得要求做加密不是很合理,而且会影响效率);

数据保密性 b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

不建议对此条要求进行额外配置;

1. 如有条件可采取措施对数据保密性进行保障;

数据备份恢复 a)应提供重要数据的本地数据备份与恢复功能;

1. 服务器配置变更后对配置文件或者配置基线进行备份留存;

2. 服务器内如有数据库需提供数据库备份;

数据备份恢复 b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地;

非高可用性系统(可用性大于或等于99.9%,年度停机时间小于或等于8.8小时的系统),没必要做到实时的异地数据备份,需要的投入过高;

普通行业标准未对“异地”做出明确要求,此条标准设计的初衷是主数据机房被如严重自然灾害等不可抗力完全摧毁,用户单位还能够有一份异地的数据备份,所以建议“异地”备份要与数据中心尽量远离;注意不要把数据备份到如云盘、网盘等不可控存储上!

1. 可提供异地但不实时的数据备份,可部分满足标准要求;

2. 建立异地数据中心,实现实时异地数据备份;

数据备份恢复 c)应提供重要数据处理系统的热冗余,保证系统的高可用性。

非高可用系统,酌情进行投入建设;

1. 服务器采用负载/热备/集群模式提供服务;

剩余信息保护 a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;

剩余信息保护 b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。

1. Linux服务器需要对history信息进行屏蔽;

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值