Linux 系统安全加固

Linux 安全加固

这里使用Cent OS 7.5 版本

一、系统安装

系统镜像尽量从官网下载,下载完成后要与官方给的hash值进行对比,以防安装镜像出现问题。安装时选择最小安装,避免安装不必要的软件与服务,减少出现漏洞的可能性。

二、关闭不必要的服务

根据不同的业务需要,需要关闭不必要的服务。这里以postfix服务为例,演示如何关闭不必要的服务。

查看服务状态:
systemctl status postfix
查看服务状态.jpg

该服务状态为active,表示这个服务处于运行状态。接下来关闭这个服务。

systemctl stop postfix #这样只能保证不重启Linux时服务是关闭的,要彻底关闭需要以下命令
systemctl disable postfix #彻底关闭postfix服务
关闭系统服务.jpg

如果状态是inactive dead状体,表示服务关闭。

下面列举一些Cent OS常用的服务以及建议:

服务名 解释 建议
iptables 防火墙服务 根据实际需要自行判断
xinetd 支持多重网络的核心进程 建议开启
network 网络服务 必须开启
sshd 远程登录服务 建议开启
rsyslog 系统日志服务 必须开启
crond 计划任务服务 必须开启
atd 一次性计划任务服务 如果不需要可以关闭
auditd 审计服务 必须开启
autovt 登录相关服务 必须开启
getty tty控制台相关 必须开启
irqbalance 优化系统中断分配服务 建议开启
kdump 内核崩溃信息捕获服务 建议开启
microcode 处理器微码服务 建议开启
postfix 邮件服务 如果不需要建议关闭
networkManager 图形化网卡配置 建议关闭

三、账号设置

账号删减命令:
userdel <用户名> #删除用户
passwd -l <用户名> #锁定用户
passwd -u <用户名> #解锁用户

查看是否有空口令和root权限的用户:

awk -F: '($2=="")' /etc/shadow 查看空口令用户

awk -F: '($3==0)' /etc/passwd 查看UID为0的用户,也就是root权限用户

禁止root用户通过SSH直接登录:

注意:操作此步骤之前,需要创建普通权限用户,防止无法远程登录。

修改/etc/ssh/sshd_config文件,修改PermitRootLogin 的值修改为no,然后重启SSH服务。

四、用户组设置

禁用或删除组:

查看/etc/group中是否有不使用的组,如果有,应该禁用或者删除。

 cat /etc/group #查看文件内容
修改之前先备份
cp /etc/group /etc/group.bak
然后编辑/group文件,将不需要的组所在的行注释掉就可以了
或者直接使用命令groupdel <组名> 删除掉这个组

从组中删除用户:

gpasswd -d <用户名> <组名>

五、SSH加固

参照我之前这篇文章

六、禁用ctrl+alt+delete 组合键

在机房控制台的键盘上,如果不小心按了ctrl+alt+del键,就会将Linux系统重启,给系统造成了一定的安全隐患。

禁用ctrl+alt+delete重启功能:

rm -rf /usr/lib/systemd/system/ctrl-alt-del.target 删除映射的软连接即可

七、禁用历史命令

Linux默认会保存历史命令,这会带来一些安全隐患,使用如下配置禁用历史命令。

修改之前,先备份
cp /etc/profile /etc/profile.bak
编辑profile文件
修改HISTSIZE=1000 改为 HISTSIZE=1 即可

八、开启系统日志

Linux 系统应该开启系统日志,这样出现意外情况能够溯源。

保存在本地:
systemctl enable rsyslog
systemctl start rsyslog 

九、重要文件锁定

锁定用户和组相关文件,避免恶意添加后门。

chattr +i /etc/passwd,/etc/group,/etc/shadow,/etc/gshadow

注意:这些文件锁定之后,如果需要添加或者删除用户,需要将这些文件先解锁,之后再将其锁定。

解锁:chattr -i /etc/passwd,/etc/group,/etc/shadow,/etc/gshadow

将系统日志文件锁定:只允许追加写入内容,不允许删除,不允许清空。

chattr +a /var/log/secure 其他日志文件一样的操作。

十、安装完整新检查工具(AIDE)

介绍:AIDE是一个完整性检测工具,可以检查系统中是否有文件被修改、删除、添加等。主要用于定期检测系统是否被挂了木马。

除了AIDE之外,常用的完整性检测工具还有tripwire。

工作原理:

通常情况下,系统运维人员安装一个新的Linux操作系统之后,会创建相应的账号、安装需要的软件并部署相关的代码。接下来系统会处于一个相对稳定的状态。AIDE的工作原理,就是在这种状态下,将系统中指定的文件的属性记录到数据库中。经过一段时间后,再次执行AIDE时,会生成另外一个数据库。只要比对这两个数据库的文件属性,就可以发现哪些文件被篡改了。

yum install aide -y 安装AIDE

配置文件解释:

@@define DBDIR /var/lib/aide # 定义AIDE数据库存放目录
@@define LOGDIR /var/log/aide # 定义AIDE日志文件存放目录
database=file:@@{DBDIR}/aide.db.gz # 定义AIDE旧数据库文件名称
database_out=file:@@{DBDIR}/aide.db.new.gz # 定义AIDE新数据库文件名称
# 生成的这两个数据库文件进行比对,可以发现修改的文件
gzip_dbout=yes # 数据库文件使用gzip压缩
verbose=5 # 日志级别,越大越详细
report_url=file:@@{LOGDIR}/aide.log # 定义AIDE日志文件名称
report_url=stdout # 对比数据库时,会输出到日志文件,还会输入到屏幕,也就是标准输出
# 以下是可以定义的监控值:
#p: permissions
#i: inode:
#n: number of links
#u: user
#g: group
#s: size
#b: block count
#m: mtime
#a: atime
#c: ctime
#S: check for growing size
#acl: Access Control Lists
#selinux SELinux security context
#xattrs: Extended file attributes
#md5: md5 checksum
#sha1: sha1 checksum
#sha256: sha256 checksum
#sha512: sha512 checksum
#rmd160: rmd160 checksum
#tiger: tiger checksum
# 以下是系统定义的检测的内容的集合,
#R: p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5
#L: p+i+n+u+g+acl+selinux+xattrs
#E: Empty group
#>: Growing logfile p+u+g+i+n+S+acl+selinux+xattrs
# 可以参考这个自己定义检测的内容的集合:
EVERYTHING = R+ALLXTRAHASHES
CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs
# 以下是要监控哪些目录的集合:
/boot/ CONTENT_EX # AIDE会递归的监控目录
/bin/ CONTENT_EX
/sbin/ CONTENT_EX
/lib/ CONTENT_EX
/lib64/ CONTENT_EX
/opt/ CONTENT
# 以下是要排除的目录:
!/usr/src/
!/usr/tmp/

aide -i 初始化aide

aide --check 对比数据库文件

到此Linux安全加固就结束了,限于篇幅部分内容没有详细介绍。总之,要想保证Linux系统安全,光靠这点是远远不够的,还要靠规范的制度和遵守制度的人。

你可能感兴趣的:(Linux 系统安全加固)