如何提高linux系统的安全性,总结一句话:最小的权限+最少的服务=最大的安全。
所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小,这样才能保证服务器最大的安全。下面是基于RHEL服务器的安全设置,供大家参考。
1、注释掉系统不需要的用户和用户组
注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦。
用户
## 编辑用户文件 /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 #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
2、关闭系统不需要的服务
## 设置停止并开机不自启动 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
3、禁止非root用户执行/etc/rc.d/initd下的系统指令
## 目录解释 /etc/rc.d/initd ## 此目录下存放的是脚本文件一般是Linux以rpm包安装时设定的一些服务的启动/关闭脚本。 ## 系统在安装时装了许多rpm包,这里面就有很多对应的脚本。 ## 执行这些脚本可以用来启动、停止、重启这些服务 root@RHEL-8.0:~$ chmod -R 700 /etc/rc.d/init.d/*
4、设置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
5、给以下文件添加不可更改权限,从而防止非授权用户获得权限
## /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
6、修改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
7、给命令历史记录添加时间戳
## 如此可以更加直观的看到在什么时间执行了什么命令 root@RHEL-8.0:~$ echo export HISTTIMEFORMAT=\"%h %d %H:%M:%S \" >> /etc/bashrc
8、服务器禁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
总结
想要系统更安全所以需要做一定的安全配置,但是做配置的时候也要小心,避免服务器直接无法登录。
最小的权限+最小的服务=最大的安全;
操作之前先备份;
为避免配置错误无法登录主机,请始终保持有一个终端已用root登录并不退出,在另一个终端中做配置修改。这样即使改错,也不至于因系统无法登录导致永远无法登录或恢复配置。