Linux 服务器安全加固(等保 2.0 标准)

摘要:
另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。访问控制修改UMASK值参考配置操作:1、编辑/etc/profile文件,设置umask值:123#vim/etc/profile在末尾增加umask027。

Linux 服务器安全加固(等保 2.0 标准)

2020年11月11日原创Linux
浏览 286评论 0

Linux 服务器安全加固(等保 2.0 标准)


身份鉴别

配置账户密码策略

参考配置操作:

1、

1
2
3
4
5
6
7
# vim /etc/login.defs
修改下列参数为建议值
PASS_MAX_DAYS 30 #密码有效期为30天
PASS_MIN_DAYS 1 #密码最短修改时间为1天
PASS_MIN_LEN 8 #密码最小长度为8位
PASS_WARN_AGE 7 #密码过期提前7天提示修改

2、

1
2
3
4
# vim /etc/pam.d/system-auth
password requisite pam_cracklib.so行替换成如下:
password requisite pam_cracklib.so retry=6 difok=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
参数说明
retry尝试次数
difok最少不同字符
minlen最小密码长度
ucredit最少大写字母
lcredit最少小写字母
dcredit最少数字
ocredit最少特殊符号

3、口令至少5次内不能重复

1
2
3
# vim /etc/pam.d/system-auth
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

配置登录失败处理策略

参考配置操作:

1、限制本地登录次数

1
2
3
4
# vim /etc/pam.d/login
在第二行增加如下内容:
auth required pam_tally2.so deny=3 unlock_time=1800 even_deny_root root_unlock_time=1800

2、限制ssh本地登录次数

1
2
3
4
# vim /etc/pam.d/sshd
在第二行增加如下内容:
auth required pam_tally2.so deny=3 unlock_time=1800 even_deny_root root_unlock_time=1800

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
2
3
# vim /etc/profile
在末尾增加 umask 027。

2、补充操作说明

如果用户需要使用一个不同于默认全局系统设置的 umask,可以在需要的时候通过命令行设置,或者在用户的 shell 启动文件中配置。

3、补充说明

umask 的默认设置一般为 022,这给新创建的文件默认权限755( 777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

umask 的计算:
umask 是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码 777 减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码 666 减去需要的默认权限对应的八进制数据代码值。

设置关键目录的权限

参考配置操作:

1、对系统中重要文件配置权限:

1
# chmod 600 /etc/security

为不同的管理员分配不同的账号

参考配置操作:

为用户创建账号:

1
2
# useradd username #创建账号
# passwd username #设置密码

修改文件权限:

1
2
# chmod 755 directory
//其中 755 为设置的权限,可根据实际情况设置相应的权限, directory 是要更改权限的目录)使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。

更改文件或目录的所有者和组群所有者:

1
2
# chown [选项] [用户:组群] [文件|目录] 
//例如,#chown username:groupname directory,其中username为文件所有者,groupname为组群所有者,directory为文件或目录。

锁定系统无用账户

参考配置操作:

通过cat /etc/shadow查看当前帐户列表,以下用户lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody密码字段列不是以*或者!!开头的,需要禁用或删除

命令:passwd -l username

注解:禁用无关帐户

开启 SELinux

参考配置操作:

1、开启配置文件

1
2
3
4
#vi etc/selinux/config
修改下列参数为建议值:
SELINUX=enforcing

2、重启操作系统,或使用命令setenforce 1在不重启的情况下临时开启。

3、执行命令/usr/sbin/sestatus -vgetenforce查看 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
2
3
4
5
# vim /etc/syslog.conf,
配置如下类似语句:
*.err;kern.debug;daemon.notice; /var/adm/messages
定义为需要保存的设备相关安全事件。

2、更改日所有志文件属性,使文件只可追加不可修改:

1
2
3
4
# chattr +a /var/log/messages       #如果不存在则忽略
# chattr +a /var/log/secure
# chattr +a -/var/log/maillog
# chattr +a /var/log/cron

3、参数含义:

参数说明
kern由kernel产生的信息;
user由用户进程产生的信息。对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”;
mail邮件系统产生的信息;
daemon系统守护进程的信息,如in.ftpd、telnetd;
auth由login, su, getty等进行身份认证时产生的信息;
syslog由syslogd自己内部产生的信息;
lpr行打印spooling系统的信息;
newsUSENET 网络新闻系统的信息;
uucpUUCP系统信息;
croncron和at工具信息;
local0-7保留为local使用;
marksyslogd内部产生的时间戳信息;
*除mark之外的所有其它类型(此符号不可用以代表所有级别)。

保留字段中的“级别”代表信息的重要性,可以是:

参数说明
emerg紧急,处于Panic状态。通常应广播到所有用户;
alert告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
crit关键状态的警告。例如,硬件故障;
err其它错误;
warning警告;
notice注意;非错误状态的报告,但应特别处理;
info通报信息;
debug调试程序时的信息;
none通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

配置日志审计系统

建议在网络上部署日志审计系统,采集用户网络中各种不同厂商的安全设备、网络设备、主机、操作系统、以及各种应用系统产生的海量日志信息,并将这些信息汇集到审计中心,进行集中化存储、备份、查询、审计、告警、响应,并出具丰富的审计报表。

1、

1
2
3
4
# vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
将上一行中的/var/log/messages修改为: @<日志服务器IP>

2、重新读取配置文件:service rsyslog reload

部署网络/数据库安全审计系统

在网络中部署网络/数据库安全审计系统,通过对人员访问系统的行为进行解析、分析、记录、汇报,以帮助用户事前规划预防、事中实时监视、违规行为响应、事后合规报告、事故追踪溯源,加强内外部网络行为监管、促进核心资产(数据库、服务器、网络设备等)的正常运营。

入侵防范

配置防火墙

参考配置操作:

1、启动 iptables:

1
# service iptables start

2、开放端口(根据实际业务需求进行配置):

1
2
3
4
# vim /etc/sysconfig/iptables 
在其中写入配置,例如增加如下一行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

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
2
3
#vi /etc/hosts.deny
sshd: ALL #拒绝一切SSH远程访问,配合文件hosts.allow使用

2、编辑hosts.allow文件,加入允许访问的主机列表,比如:

1
2
3
#vi /etc/hosts.allow
sshd:192.168.59.1:allow #允许192.168.59.1访问SSH服务进程

设置登录超时时间

未整改状态:

系统未设置超时时间。系统中 root 账户是具有最高特权的,如果系统管理员在离开系统之前忘记注销 root 账户,那将会带来很大的安全隐患,应该让系统自动注销。

参考配置操作:

通过修改账户中TMOUT参数,可以实现此功能。编辑/etc/profile文件,在HISTFILESIZE=后面加入TMOUT值:

1
2
3
4
5
6
# vim /etc/profile
TMOUT=180 #表示 180 秒
export TMOUT #设置为全局变量
# source /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
2
3
4
5
* hard rss sizeofmem
* hard nproc maxNumberOfProcesses
* hard as sizeofvirtualmem
#其中sizeofmem和sizeofvirtualmem为数值,其单位为KB;maxNumberOfProcesses也为数值,其单位为个

4、重启服务

1
/etc/init.d/sshd restart

监控服务器资源状态

配置资源监控系统,对服务器的 cpu、内存等资源进行实时监控,且应具有报警功能。管理员可以及时了解网络上各种设备的运行状况,可以及时发现并处理设备资源使用率过高、服务器宕机等异常状况。

博文最后更新时间:2020年11月11日下午2点50分

免责声明:文章转载自《Linux 服务器安全加固(等保 2.0 标准)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇postgresql 行列互转函数后端返回二进制流图片数据在前端展示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

针对防止自己的Linux进程被杀死的解决办法

这里后三种方法 在/etc/inittab文件加一条语句( :id:rstate:action:process),运行动作为 respawn,这样在每次系统检测到process进程不存在时,就会重启它。 创建一个守护进程,该守护进程的功能就是检测主进程是否在运行,若不在运行,那么守护进程就启动它。(这里存在一个问题,守护进程也可能会被杀死,那么更狠的一点...

vim使用(转)

安装了Ubuntu 13.10 ,于是便开始捣鼓着用编辑器Vim编写C++的代码,同时通过GCC编译之,并运行显示结果。网上自然都有相应的操作,我最多也就算一次总结而已。(中途输入命令出现了任何错误记得Google哦)首先先安装Vim,通过终端下输入命令 sudo apt-get install vim 按回车后会进行下载安装,当然需要输入密码啦。。这时候...

Linux下安装numpy

转自:https://blog.csdn.net/abc_321a/article/details/82056019 1.下载源码包 ,命令如下wget http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.9.0/numpy-1.9.0.zip若提示没有wget,则需要通过“yum install -...

使用 linux kernel +busybox 定制linux系统

目的: 了解linux的启动过程 主要内容: 1.grub 是启动程序的bootloader 2.linux-kernel 是linux的开源内核 3.busybox 是linux的工具集合 启动顺序: grub-> bzimage > initrd > init > chroot sbin/init (从内存镜像转换成rootfs...

Shell基本命令

Linux命令行的组成结构 [root@oldboy_python ~]# [root@oldboy_python ~]# [root@oldboy_python ~]# [root@oldboy_python ~]# [root@oldboy_python ~]# Linux系统命令操作语法格式 命令 空格 参数 空格 【文件或路径】需要...

linux kernel的cmdline參数解析原理分析

利用工作之便,今天研究了kernel下cmdline參数解析过程。记录在此。与大家共享。转载请注明出处。谢谢。 Kernel 版本:3.4.55 Kernel启动时会解析cmdline,然后依据这些參数如console root来进行配置执行。 Cmdline是由bootloader传给kernel。如uboot。将须要传给kernel的參数做成一个...