Linux 服务器安全加固(等保 2.0 标准)
身份鉴别
配置账户密码策略
参考配置操作:
1、
1
|
# vim /etc/login.defs
|
2、
1
|
# vim /etc/pam.d/system-auth
|
参数 | 说明 |
---|---|
retry | 尝试次数 |
difok | 最少不同字符 |
minlen | 最小密码长度 |
ucredit | 最少大写字母 |
lcredit | 最少小写字母 |
dcredit | 最少数字 |
ocredit | 最少特殊符号 |
3、口令至少5次内不能重复
1
|
# vim /etc/pam.d/system-auth
|
配置登录失败处理策略
参考配置操作:
1、限制本地登录次数
1
|
# vim /etc/pam.d/login
|
2、限制ssh本地登录次数
1
|
# vim /etc/pam.d/sshd
|
3、查看用户登录失败的次数(以root为例)
1
|
# pam_tally2 --user root
|
4、解锁指定用户(以root为例)
1
|
# pam_tally2 -r -u root
|
5、上述参数解释
参数 | 说明 |
---|---|
even_deny_root | 也限制root用户 |
deny | 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户 |
unlock_time | 设定普通用户锁定后,多少时间后解锁,单位是秒 |
root_unlock_time | 设定root用户锁定后,多少时间后解锁,单位是秒 |
注1:必须在
#%PAM-1.0
的下面,即第二行,添加内容,一定要写在前面。如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的。
注2:此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。
双因子身份认证
未整改状态:
当前管理员仅使用用户名+密码方式对服务器进行管理,未使用两种及两种以上组合鉴别方式对管理员身份进行鉴别。
参考配置操作:
建议在系统中配置堡垒机、USB Key、动态口令等,使用两种鉴别技术对系统管理员进行身份鉴别。
访问控制
修改UMASK值
参考配置操作:
1、编辑/etc/profile文件,设置umask值:
1
|
# vim /etc/profile
|
2、补充操作说明
如果用户需要使用一个不同于默认全局系统设置的 umask,可以在需要的时候通过命令行设置,或者在用户的 shell 启动文件中配置。
3、补充说明
umask 的默认设置一般为 022,这给新创建的文件默认权限755( 777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。
umask 的计算:
umask 是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码 777 减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码 666 减去需要的默认权限对应的八进制数据代码值。
设置关键目录的权限
参考配置操作:
1、对系统中重要文件配置权限:
1
|
# chmod 600 /etc/security
|
为不同的管理员分配不同的账号
参考配置操作:
为用户创建账号:
1
|
# useradd username #创建账号
|
修改文件权限:
1
|
# chmod 755 directory
|
更改文件或目录的所有者和组群所有者:
1
|
# chown [选项] [用户:组群] [文件|目录]
|
锁定系统无用账户
参考配置操作:
通过cat /etc/shadow
查看当前帐户列表,以下用户lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody
密码字段列不是以*
或者!!
开头的,需要禁用或删除
命令:passwd -l username
注解:禁用无关帐户
开启 SELinux
参考配置操作:
1、开启配置文件
1
|
#vi etc/selinux/config
|
2、重启操作系统,或使用命令 setenforce 1
在不重启的情况下临时开启。
3、执行命令 /usr/sbin/sestatus -v
或 getenforce
查看 selinux 运行状态。
注:配置后可能导致系统异常,建议在测试环境中进行验证后再对生产环境进行加固,并在加固前进行完善的系统备份工作。
安全审计
配置日志审计功能
未整改状态:
系统未配置audit功能,没有使用aureport生成审计报告可以生成分析报表。
参考配置操作:
1、安装audit软件包
1
|
yum install audit
|
2、开始audit 服务
1
|
service auditd start
|
3、根据实际情况,在 /etc/audit/auditd.conf
文件中配置对audit审计工具进行配置。
4、根据实际情况,在 /etc/audit/audit.rules
文件中配置审核规则。
记录设备相关安全事件
参考配置操作
1、修改配置文件
1
|
# vim /etc/syslog.conf,
|
2、更改日所有志文件属性,使文件只可追加不可修改:
1
|
# chattr +a /var/log/messages #如果不存在则忽略
|
3、参数含义:
参数 | 说明 |
---|---|
kern | 由kernel产生的信息; |
user | 由用户进程产生的信息。对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”; |
邮件系统产生的信息; | |
daemon | 系统守护进程的信息,如in.ftpd、telnetd; |
auth | 由login, su, getty等进行身份认证时产生的信息; |
syslog | 由syslogd自己内部产生的信息; |
lpr | 行打印spooling系统的信息; |
news | USENET 网络新闻系统的信息; |
uucp | UUCP系统信息; |
cron | cron和at工具信息; |
local0-7 | 保留为local使用; |
mark | syslogd内部产生的时间戳信息; |
* | 除mark之外的所有其它类型(此符号不可用以代表所有级别)。 |
保留字段中的“级别”代表信息的重要性,可以是:
参数 | 说明 |
---|---|
emerg | 紧急,处于Panic状态。通常应广播到所有用户; |
alert | 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃; |
crit | 关键状态的警告。例如,硬件故障; |
err | 其它错误; |
warning | 警告; |
notice | 注意;非错误状态的报告,但应特别处理; |
info | 通报信息; |
debug | 调试程序时的信息; |
none | 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。 |
配置日志审计系统
建议在网络上部署日志审计系统,采集用户网络中各种不同厂商的安全设备、网络设备、主机、操作系统、以及各种应用系统产生的海量日志信息,并将这些信息汇集到审计中心,进行集中化存储、备份、查询、审计、告警、响应,并出具丰富的审计报表。
1、
1
|
# vim /etc/rsyslog.conf
|
2、重新读取配置文件:service rsyslog reload
部署网络/数据库安全审计系统
在网络中部署网络/数据库安全审计系统,通过对人员访问系统的行为进行解析、分析、记录、汇报,以帮助用户事前规划预防、事中实时监视、违规行为响应、事后合规报告、事故追踪溯源,加强内外部网络行为监管、促进核心资产(数据库、服务器、网络设备等)的正常运营。
入侵防范
配置防火墙
参考配置操作:
1、启动 iptables:
1
|
# service iptables start
|
2、开放端口(根据实际业务需求进行配置):
1
|
# vim /etc/sysconfig/iptables
|
3、重启防火墙:
1
|
# service iptables restart
|
4、检查防火墙策略:
1
|
#iptables -nvL
|
部署入侵检测系统(IDS)
准确分析、报告网络中正在发生的各种异常事件和攻击行为,实现对网络的“全面检测”,并通过实时的报警信息和多种格式报表,为用户提供翔实、可操作的安全建议,帮助用户完善安全保障措施。
部署漏洞扫描系统
实现对网络设备、操作系统、应用系统进行全面安全漏洞检测,清晰定性安全风险,给出修复建议和预防措施,及时的发现和修补漏洞隐患。
关闭无用服务
未整改状态:
系统中服务开启均为系统安装时默认状态。
参考配置操作:
取消所有不需要的服务,编辑 /etc/inetd.conf
文件,通过注释取消所有你不需要的服务。
1、更改 /etc/inetd.conf
权限为 600,只允许 root 来读写该文件。
1
|
# chmod 600 /etc/inetd.conf
|
2、确定 /etc/inetd.conf
文件所有者为 root。
1
|
# chown root /etc/inetd.conf
|
3、编辑 /etc/inetd.conf
文件,取消不需要的服务,如:ftp, telnet, shell, login, exec, talk, ntalk,imap, pop-2, pop-3, finger, auth 等等。把不需要的服务关闭可以使系统的危险性降低很多。
4、给 inetd 进程发送一个 HUP 信号:
1
|
# killall -HUP inetd
|
5、把 /etc/inetd.conf
文件设为不可修改。
1
|
# chattr +i /etc/inetd.conf
|
注:
/etc/inetd.conf 文件中只开放需要的服务。
对于启用的网络服务,使用 TCP Wrapper 增强访问控制和日志审计功能。
建议使用 xinetd 代替 inetd,前者在访问控制和日志审计方面有较大的增强。这样可以防止对inetd.conf的任何修改(以外或其他原因)。唯一可以取消这个属性的只有root。
如果要修改inetd.conf文件,首先要取消不可修改属性:# chattr -i /etc/inetd.conf
portmap(如果启动使用 nfs 等需要 rpc 的服务,建议关闭portmap 服务)
cups 服务( Common Unix Printing Service,用于打印,建议关闭)
named 服务(除非主机是 dns 服务器,否则关闭 named 服务)
apache( http)服务
xfs( X Font Service)服务
vsftpd
lpd
linuxconf
identd
smb
系统补丁更新
建议定期对系统进行补丁更新,建立内网补丁服务器或由管理员手工将补丁安装到操作系统中。
注:补丁安装应当先在测试机上完成。补丁安装可能导致系统或某些服务无法工作正常。在下载补丁包时,一定要对签名进行核实,防止系统感染病毒。
恶意代码防范
安装杀毒软件
未整改状态:
当前系统未安装杀毒软件,无法防止病毒对内部网络进行感染。
参考配置操作:
在服务器和终端设备上安装网络版杀毒软件,配置防病毒服务器,实现下发病毒扫描策略、更新病毒库、统计报警信息等,便于管理人员对整个网络中的病毒防护状况进行管理。
资源控制
设置访问控制列表
未整改状态:
系统未设置访问控制列表。
参考配置操作:
1、编辑 hosts.deny
文件,加入 (ALL:ALL)
:
1
|
#vi /etc/hosts.deny
|
2、编辑 hosts.allow
文件,加入允许访问的主机列表,比如:
1
|
#vi /etc/hosts.allow
|
设置登录超时时间
未整改状态:
系统未设置超时时间。系统中 root 账户是具有最高特权的,如果系统管理员在离开系统之前忘记注销 root 账户,那将会带来很大的安全隐患,应该让系统自动注销。
参考配置操作:
通过修改账户中 TMOUT
参数,可以实现此功能。编辑 /etc/profile
文件,在 HISTFILESIZE=
后面加入TMOUT值:
1
|
# vim /etc/profile
|
这样,如果系统中登录的用户在 3 分钟内都没有动作,那么系统会自动注销这个账户。
限制用户对资源的访问
参考配置操作:
1、编辑 /etc/security/limits.conf
文件,根据实际使用情况配置参数,限制用户对系统资源的使用限度。
参数 | 说明 |
---|---|
core | 限制内核文件的大小 |
date | 最大数据大小 |
fsize | 最大文件大小 |
memlock | 最大锁定内存地址空间 |
nofile | 打开文件的最大数目 |
rss | 最大持久设置大小 |
stack | 最大栈大小 |
cpu | 以分钟为单位的最多 CPU 时间 |
noproc | 进程的最大数目 |
as | 地址空间限制 |
maxlogins | 此用户允许登录的最大数目 |
2、编辑 /etc/pam.d/login
文件,在其末端添加如下语句
1
|
session required /lib/security/pam_limits.so
|
3、编辑 /etc/security/limits.conf
文件,在其中添加如下语句
1
|
* hard rss sizeofmem
|
4、重启服务
1
|
/etc/init.d/sshd restart
|
监控服务器资源状态
配置资源监控系统,对服务器的 cpu、内存等资源进行实时监控,且应具有报警功能。管理员可以及时了解网络上各种设备的运行状况,可以及时发现并处理设备资源使用率过高、服务器宕机等异常状况。
博文最后更新时间: 2020年11月11日下午2点50分