本文为个人总结,欢迎交流见谅,集思广益,发觉错误或其他配置方案会进行更新。(五级系统要求,以CentOS7.4系统为例,不同版本可能有配置区别,更改配置前建议做好备份,配置文件中原文建议进行注释存留)
身分鉴定a)应对登入的用户进行身分标示和鉴定,身分标示具有惟一性,身分鉴定信息具有复杂度要求并定期更换;
1.要求登陆服务器的用户具有独立的身分标示(用户名),并须要采用身分鉴定举措(比如使用用户名+密码进行登陆);
2.要求服务器中不存在同名用户(服务器自身难以创建同名用户);
3.要求从服务器策略上对密码复杂度进行限制,策略配置方式:
更改/etc/pam.d/system-auth文件,在password类模块处添加
passwordrequisitepam_pwquality.sotry_first_passlocal_users_onlyretry=3authtok_type=minlen=8lcredit=-1ucredit=-1dcredit=-1ocredit=-1enforce_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.另一种方式
当“passwordrequisitepam_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类模块处添加authrequiredpam_tally2.soonerr=faildeny=3unlock_time=300even_deny_rootroot_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中做配置linux 论坛,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.此项要求在服务器自身实现双诱因鉴定,目前未见过比较理想的实现方法(如有实现方法请留言分享)linux服务器安全,此处高风险通常通过其他补偿举措进行调整;
补偿举措:
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.启动服务器自身审计功能,使用命令servicersyslogstatus和serviceauditdstatus查看rsyslog和auditd是否正常运行;
2.syslog默认审计规则可以符合要求,可以依照需求进一步细化和建立审计规则;
3.audit审计默认无规则,使用auditctl-l查看,回显Norules,需进行配置
方式1:通过命令进行配置,直接键入auditctl-w/etc-pwxa
[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可以对服务器进行管理的情况;(不推荐此方式linux虚拟主机,容易形成旁路)
入侵防范d)应提供数据有效性检验功能,保证通过人机插口输入或通过通讯插口输入的内容符合系统设定要求;
1.服务器无需提供此安全功能,此项为应用系统要求;
入侵防范e)应能发觉可能存在的已知漏洞,并在经过充分测试评估后,及时修复漏洞;
1.对服务器进行漏洞扫描,对发觉的漏洞进行修补;
入侵防范f)应才能测量到对重要节点进行入侵的行为linux服务器安全,并在发生严重入侵风波时提供报案。
须要在服务器层面采取举措辨识并制止入侵主机的行为,实时监测主机内部的风险异变,检查并查杀主机中的恶意程序,辨识主机中的网站侧门等。须要对帐户暴力破解、账户异常登陆、恶意程序、进程异常行为、关键文件变更、后门、高危命令执行、自启动检查、风险帐户、提权操作等进行检查和限制;
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信息进行屏蔽;