Centos7.5生产服务器系统安全配置
因为服务器要对外开放访问 故需针对服务器进行安全加固
一、禁用root以外的超级用户
检测
cat /etc/passwd 查看口令文件,文件格式如下
login_name:password:user_ID:group_ID:comment:home_dir:command
若user_ID=0,则该用户拥有超级用户的权限。查看此处是否有多个ID=0
输入命令
cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'
如果还出现其他用户的话则需将该用户锁定
先备份
cp -p /etc/passwd /etc/passwd_bak
锁定
使用命令passwd -l <用户名>锁定不必要的超级账户
使用命令passwd -u <用户名>解锁需要恢复的超级账户
或把用户shell改为/sbin/nologin
二、删除不必要的账号
应该删除所有默认的被操作系统本身启动的并且不必要的账号 Linux提供了很多默认账号
而账号越多 系统就越容易受到攻击
可删除的用户
例如:
adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher
可删除的组
例如:
adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等
删除命令
userdel username
例如 删除adm用户
userdel adm
groupdel groupname
例如 删除adm组
groupdel adm
用户及组说明
以下是对每个用户和组的影响的简要描述:
-
adm: 这个用户和组通常用于系统日志相关的任务。删除它可能会影响系统日志的管理和查看。
-
lp: 这个用户和组通常用于打印任务。删除它可能会影响打印服务的正常工作。
-
sync: 这个用户和组通常用于同步缓冲区,确保数据被正确地写入磁盘。删除它可能会影响数据的完整性。
-
shutdown, halt: 这些用户用于关机和停止系统。删除它们可能会影响系统的关机和重启功能。
-
news: 这个用户和组通常用于新闻服务器,可能不常用。删除它可能会影响新闻服务器的功能。
-
uucp: 这个用户和组通常用于串行通信和文件传输。删除它可能会影响某些通信和传输任务。
-
operator: 这个用户和组通常用于系统管理员和操作员的特权操作。删除它可能会影响一些需要管理员权限的操作。
-
games: 这个用户和组通常用于游戏相关的任务,可能不常用。删除它可能不会对系统产生太大影响。
-
gopher: 这个用户和组通常用于 Gopher 协议,可能不常用。删除它可能不会对系统产生太大影响。
三、检查空口令账号
输入命令:
awk -F: '($2 == "") { print $1}' /etc/shadow
发现没有账号口令为空
也可以通过修改ssh配置文件来禁止空密码账户进行登录
vim /etc/ssh/sshd_config
将注释删除
#PermitEmptyPasswords no
保存退出
重启服务
systemctl restart sshd
四、口令文件加锁
chattr命令给下面的文件加上不可更改属性 从而防止非授权用户获得权限
加锁命令
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow
sudo chattr +i /etc/group
sudo chattr +i /etc/gshadow
加锁后 无法添加用户
解锁命令
sudo chattr -i /etc/passwd
sudo chattr -i /etc/shadow
sudo chattr -i /etc/group
sudo chattr -i /etc/gshadow
五、防止IP欺骗
编辑host.conf文件并增加如下几行来防止IP欺骗攻击
vim /etc/host.conf
order bind,hosts
multi off
nospoof on
六、防止DoS攻击
对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行:
*hardcore0
*hardrss5000
*hardnproc20
然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。
sessionrequired/lib/security/pam_limits.so
上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。
七、禁止root用户登录服务器
7.1首先创建新用户
adduser admin
7.2设置复杂密码
passwd admin
7.3将其用户组设置为 wheel.
wheel 在 linux 中是一个特殊的用户组,这个组被设计用来解决 su 指令的授权问题。
也就是只有在 wheel 组里面的成员才能使用 su 切换到 root 用户。
如果一个用户不在 wheel 组里面,即使使用 su 指令并正确地输入了密码也无法切换到 root 用户。
wheel 用户组不仅具有 su 指令的权限,也具有 sudo 的权限,可以通过浏览/etc/sudoers文件来了解。
gpasswd -a admin wheel
7.4修改 /etc/ssh/sshd_config配置文件
vim /etc/ssh/sshd_config
找到PermitRootLogin
将PermitRootLogin yes改成
PermitRootLogin no
7.5重启ssh服务
systemctl restart sshd
重启之后再使用 root 进行登录
显示 “服务器拒绝 ssh 连接”,然后使用新增的admin用户进行登录即可
八、设置密码复杂度要求
修改/etc/login.defs配置文件
vim /etc/login.defs
以下配置为默认
PASS_MAX_DAYS 99999 #密码最长过期天数
PASS_MIN_DAYS 0 #密码最小过期天数
PASS_MIN_LEN 5 #密码最小长度
PASS_WARN_AGE 7 #密码过期警告天数
修改为
PASS_MAX_DAYS 99
PASS_MIN_DAYS 80
PASS_MIN_LEN 10
PASS_WARN_AGE 7
九、禁止ping服务器
修改/etc/sysctl.conf配置文件
vim /etc/sysctl.conf
添加以下配置
net.ipv4.icmp_echo_ignore_all = 1
立即生效
sysctl -p
如果要解除,只需要将上面的 1 换成 0 即可
即为:net.ipv4.icmp_echo_ignore_all = 0
然后保存退出后输入
sysctl -p
生效
ping 本地ip显示超时,证明成功
十、防止rm -rf
10.1下载safe
wget https://launchpad.net/safe-rm/trunk/0.12/+download/safe-rm-0.12.tar.gz
10.2解压
tar -zxvf safe-rm-0.12.tar.gz
10.3移动路径
cp safe-rm-0.12/safe-rm /usr/local/bin/
10.4创建链接,将safe-rm替换rm
ln -s /usr/local/bin/safe-rm /usr/local/bin/rm
10.5编辑环境变量
echo "PATH=/usr/local/bin:$PATH" >> /etc/profile
source /etc/profile
10.6设置过滤目录
过滤目录将不被删除
新建 /etc/safe-rm.conf 文件
添加自己需要过滤的目录
vim /etc/safe-rm.conf
/home/data/1
保存退出
删除刚设置的目录
rm -rf /home/data/1
发现提示:safe-rm: skipping /home/data/1
十一、限制su命令
编辑/etc/pam.d/su文件
vim /etc/pam.d/su
在最后一行添加
authrequired pam_wheel.so use_uid
此时,仅wheel组的用户可以su作为root
此后,如果希望用户yiconmed能够su作为root,可以运行如下命令:
usermod –G 10 yiconmed
十二、限制普通用户无法执行关机、重启、配置网络等敏感操作
删除/etc/security/console.apps下的halt、reboot、poweroff、shutdown等程序的访问控制文件,以禁止普通用户执行该命令
也可以整体删除/etc/security/console.apps下的所有配置文件
rm –rf /etc/security/console.apps/*
十三、禁用Ctrl+Alt+Delete组合键重新启动机器命令
修改/etc/inittab文件
vim /etc/inittab
将"ca::ctrlaltdel:/sbin/shutdown-t3-rnow"一行注释掉
如果没有,则不需要操作
十四、设置开机启动服务文件夹权限
设置/etc/rc.d/init.d/目录下所有文件的许可权限,此目录下文件
为开机启动项,运行如下命令:
#chmod –R 700 /etc/rc.d/init.d/
这样便仅有root可以读、写或执行上述所有脚本文件
十五、避免login时显示系统和版本信息
删除信息文件:
rm –rf /etc/issue
rm –rf /etc/issue.net
十六、最新的密码不能是前5次使用过的密码
vim /etc/pam.d/system-auth
在以下password pam_unix.so选项的末尾添加remember=5
如图:
十七、用户锁定时间大于等于10分钟
vim /etc/pam.d/sshd
在第二行添加以下配置(第一行的注释不算)
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root=5 root_unlock_time=600
如图:
各参数解释:
even_deny_root:root 用户连续错误登录的最大次数,超过最大次数,则锁定该用户
deny:普通用户连续错误登录的最大次数,超过最大次数,则锁定该用户
unlock_time:设定普通用户锁定后,多少时间后解锁,单位是秒
root_unlock_time:设定 root 用户锁定后,多少时间后解锁,单位是秒
十八、修改最大失败尝试登录次数小于等于5次
vim /etc/ssh/sshd_config
最大失败尝试登录次数小于等于 5
MaxAuthTries 3
如图:
十九、 用户审计记录应包含日期、时间、类型、主体标识、客体标识和结果
/xxx/xxx(此处为日志文件路径)
/xxx/xxx(此处为日志文件路径)
审计日志写入开关:
检查/etc/audit/auditd.conf中,log_format选项应设置为RAW。
如果有write_logs选项,应设置为yes(老版本的auditd没有这一选项)。
vim /etc/audit/auditd.conf
二十、hosts、已配置SSH接入限制
vim /etc/hosts.deny
本文作者:小鬼 过来抱~
本文链接:https://www.cnblogs.com/likecoke/p/17671949.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步