Linux 安全加固
这里使用Cent OS 7.5 版本
一、系统安装
系统镜像尽量从官网下载,下载完成后要与官方给的hash值进行对比,以防安装镜像出现问题。安装时选择最小安装,避免安装不必要的软件与服务,减少出现漏洞的可能性。
二、关闭不必要的服务
根据不同的业务需要,需要关闭不必要的服务。这里以postfix服务为例,演示如何关闭不必要的服务。
查看服务状态:
systemctl status postfix
该服务状态为active,表示这个服务处于运行状态。接下来关闭这个服务。
systemctl stop postfix #这样只能保证不重启Linux时服务是关闭的,要彻底关闭需要以下命令
systemctl disable postfix #彻底关闭postfix服务
如果状态是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系统安全,光靠这点是远远不够的,还要靠规范的制度和遵守制度的人。