概述
如何提高linux系统的安全性,总结一句话:
最小的权限+最少的服务=最大的安全
所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小,这样才能保证服务器最大的安全。下面是基于RHEL服务器的安全设置,供大家参考。
一、注释掉系统不需要的用户和用户组
注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦。
用户
## 编辑用户文件 /etc/passwd,注释掉不需要的系统用户
root@RHEL-8.0:~$ vim /etc/passwd
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
用户组
## 编辑用户组文件 /etc/group,注释掉不需要的系统用户组
root@RHEL-8.0:~$ vim /etc/group
#adm:x:4:
#lp:x:7:
#ftp:x:50:
#uucp:x:14
#dip:x:40
二、关闭系统不需要的服务
## 设置停止并开机不自启动
root@RHEL-8.0:~$ systemctl disable anacron
root@RHEL-8.0:~$ systemctl stop anacron
anacron、autofs、avahi-daemon、bluetooth、cpuspeed、firstboot、gpm、haldaemon、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv
三、禁止非root用户执行/etc/rc.d/initd下的系统指令
## 目录解释 /etc/rc.d/initd
## 此目录下存放的是脚本文件一般是Linux以rpm包安装时设定的一些服务的启动/关闭脚本。系统在安装时装了许多rpm包,这里面就有很多对应的脚本。执行这些脚本可以用来启动、停止、重启这些服务
root@RHEL-8.0:~$ chmod -R 700 /etc/rc.d/init.d/*
四、设置root用户的历史命令记录退出即清空
## 避免他人通过手段获取root权限查看历史命令找到之前的配置信息
## 用户退出登陆后会触发主目录的 .bash_logout 文件
root@RHEL-8.0:~$ vim ~/.bash_logout
history -c
echo > ~/.bash_history
root@RHEL-8.0:~$ cat ~/.bash_logout
# ~/.bash_logout
history -c
echo > ~/.bash_history
五、给以下文件添加不可更改权限,从而防止非授权用户获得权限
## /etc/passwd 用户信息文件
## /etc/shadow 用户密码文件
## /etc/group 用户组文件
## /etc/gshadow 用户组密码文件
## /etc/services 系统服务端口列表文件
root@RHEL-8.0:~$ chattr +i /etc/passwd
root@RHEL-8.0:~$ chattr +i /etc/shadow
root@RHEL-8.0:~$ chattr +i /etc/group
root@RHEL-8.0:~$ chattr +i /etc/gshadow
root@RHEL-8.0:~$ chattr +i /etc/services
## 注意:执行以上权限修改之后,就无法添加删除用户了
## 查看权限
root@RHEL-8.0:~$ lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/services
## 删除此权限
root@RHEL-8.0:~$ chattr -i /etc/passwd
六、修改ssh远程登录端口和屏蔽root远程登录
## 备份SSH配置文件
root@RHEL-8.0:~$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
## 修改文件内容
root@RHEL-8.0:~$ vim/etc/ssh/sshd_config
17 Port 56251 # 取消17行注释,更改连接端口
46 PermitRootLogin no #禁止root账户远程登录
72 PermitEmptyPasswords no #禁止空密码用户登录
## 重启服务
root@RHEL-8.0:~$ systemctl restart sshd
七、给命令历史记录添加时间戳
## 如此可以更加直观的看到在什么时间执行了什么命令
root@RHEL-8.0:~$ echo export HISTTIMEFORMAT=\"%h %d %H:%M:%S \" >> /etc/bashrc
八、服务器禁ping
## 备份文件 /etc/sysctl.conf
root@RHEL-8.0:~$ cp /etc/sysctl.conf /etc/sysctl.conf.bak
## 修改文件 /etc/sysctl.conf
root@RHEL-8.0:~$ vim /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1
## 使新配置生效
root@RHEL-8.0:~$ sysctl -p
net.ipv4.icmp_echo_ignore_all = 1
总结
想要系统更安全所以需要做一定的安全配置,但是做配置的时候也要小心,避免服务器直接无法登录
1. 最小的权限+最小的服务=最大的安全
2. 操作之前先备份;
3. 为避免配置错误无法登录主机,请始终保持有一个终端已用root登录并不退出,在另一个终端中做配置修改。这样即使改错,也不至于因系统无法登录导致永远无法登录或恢复配置。