30 分钟 Linux 服务器安全加固,30 条实用命令
一套“小白友好型”Linux安全加固方法
5个加固场景:一步步来,不踩坑!
场景一:账户安全——不让攻击者猜中密码、乱登账号
为啥要做?弱密码(比如123456、admin@123)、多余的测试账号,都是黑客最容易突破的入口!
小白实操步骤+命令(复制就能用):
1.先查有没有无用账号,确认无用后删掉
# 查看服务器上能登录的账号(不用懂,直接复制执行)
cat /etc/passwd | grep -v nologin | grep -v false
# 看到没用的账号(比如test、guest),执行删除(把test换成要删的账号)
userdel -r test
# 暂时不用的账号,先锁定(后面要用再解锁:usermod -U 账号名)
usermod -L 不常用账号名
2.设置强口令,禁止使用弱口令
# CentOS系统先装个工具(Ubuntu不用装,直接跳过)
yum install -y cracklib cracklib-devel
# 编辑配置文件(按i进入编辑,粘贴3行规则,按Esc+:+wq保存)
vi /etc/pam.d/system-auth
# 粘贴这3行(意思:密码至少8位,要含大小写、数字、特殊字符)
password required pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
password required pam_pwquality.so retry=3 difok=3
password required pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
# 测试:新建账号时,弱密码会提示不合格(比如12345678就不行)
useradd newuser
passwd newuser
3.业务评估,禁用root远程登录
# 先备份配置文件(防止改坏了回不去)
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 编辑配置文件(按i编辑,改2处,按Esc+:+wq保存)
vi /etc/ssh/sshd_config
# 找到这行,改成PermitRootLogin no(禁用root远程登录)
PermitRootLogin no
# 新增一行,写AllowUsers 你的普通账号名(比如AllowUsers newuser,只让这个账号登录)
AllowUsers newuser
# 重启SSH服务生效
systemctl restart sshd
# 测试:用root登录会提示拒绝,用普通账号就能登
场景二:防火墙配置——只开放需要的端口,其余禁用
为啥要做?服务器开放太多端口,就像家里所有门都敞着,任何人都能随意闯进来!
小白实操步骤+命令(分CentOS/Ubuntu):
1.CentOS
# 启动防火墙,设置开机自动启
systemctl start firewalld
systemctl enable firewalld
# 开放常用端口(SSH 22、网站80/443,按需加)
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# 只允许自己公司/家里的IP访问SSH(把192.168.1.0/24换成你的IP网段)
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.0/24 port protocol=tcp port=22 accept"
# 禁止别人ping你的服务器(防止扫描)
firewall-cmd --permanent --add-rich-rule="rule protocol value=icmp reject"
# 让规则生效,查看当前配置
firewall-cmd --reload
firewall-cmd --list-all
2.Ubuntu
# 安装并启用防火墙
apt install -y ufw
ufw enable
# 开放常用端口
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
# 限制IP访问SSH(换成你的IP网段)
ufw allow from 192.168.1.0/24 to any port 22
# 禁用ping
ufw deny in proto icmp
# 查看规则(带编号,删错了能找回)
ufw status numbered
场景3:日志监控——攻击者登录、操作全记录,好追查
为啥要做?万一有人尝试登录,能及时发现;真被入侵了,也能查到攻击者干了啥!
小白实操步骤+命令:
1.查看谁登录过服务器
# 查看成功登录的记录(能看到账号、IP、时间)
grep "Accepted" /var/log/secure
# 查看失败的登录记录(多次失败就是有人暴力破解)
grep "Failed" /var/log/secure | tail -20
2.日志备份
# 编辑日志配置(按i编辑,粘贴内容)
vi /etc/logrotate.d/secure
/var/log/secure {
daily # 每天备份
rotate 30 # 保留30天
compress # 自动压缩
missingok # 没日志也不报错
notifempty # 空日志不备份
create 0600 root root
}
# 测试一下备份是否生效
logrotate -f /etc/logrotate.d/secure
场景4:漏洞修复+关无用服务——减少攻击面
为啥要做?系统有漏洞、开着没用的服务,就像在留“后门”!
小白实操步骤+命令:
1.给系统打补丁(修复已知漏洞)
# CentOS系统(只更安全补丁,不影响业务)
yum install -y yum-plugin-security
yum update-minimal --security -y
# Ubuntu系统
apt update && apt upgrade -y
2.关闭高风险且非必须的服务
# 查看正在运行的服务(CentOS)
systemctl list-unit-files --type=service --state=enabled
# 禁用危险服务(复制执行就行)
systemctl stop telnet.socket vsftpd
systemctl disable telnet.socket vsftpd
# 关掉容易被攻击的端口(139、445)
iptables -A INPUT -p tcp --dport 139 -j DROP
iptables -A INPUT -p tcp --dport 445 -j DROP
# 保存规则(CentOS)
service iptables save
3.SSH服务更安全(禁用弱加密)
# 编辑配置文件
vi /etc/ssh/sshd_config
# 粘贴这4行(禁用旧版本和弱加密)
Protocol 2
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256
KexAlgorithms ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256
# 重启生效
systemctl restart sshd
场景5:文件权限——不让别人乱改系统配置
为啥要做?关键文件(比如用户密码文件)权限太松,可能被篡改,进而控制服务器!
小白实操步骤+命令:
1.给关键文件设置权限(只有root可以修改)
# 用户信息文件:只读
chmod 644 /etc/passwd
# 密码文件:别人看不到
chmod 000 /etc/shadow
# sudo配置文件:仅root可编辑
chmod 440 /etc/sudoers
# 锁定文件,防止被篡改(解锁用chattr -i 文件名)
chattr +i /etc/passwd /etc/shadow /etc/sudoers
2.只有指定用户能切换到root
# 编辑配置
vi /etc/pam.d/su
# 粘贴这行:只有wheel组的用户能切换root
auth required pam_wheel.so use_uid
# 把你的普通账号加入wheel组(换成你的账号名)
usermod -aG wheel newuser
小白必看避坑指南(我踩过的坑告诉你)
1.改配置前一定要备份!比如改SSH配置前,先执行cp/etc/ssh/sshd_config/etc/ssh/sshd_config.bak,改坏了能恢复;
2.千万别直接关防火墙!图省事关了防火墙,服务器等于直接暴露,要用“开必要端口”替代;
3.每月查一次异常,复制这3条命令就行:
netstat -tuln # 看开放了哪些端口
ls -l /etc/passwd /etc/shadow # 看关键文件权限对不对
grep "Failed" /var/log/secure | tail -20 # 看有没有人尝试破解
4.别过度加固!比如禁用所有ping,自己排查网络问题时会很麻烦,可允许自己公司IP使用ping;
5.SSH登不上别慌!如果改配置后登不上,用服务器控制台(比如阿里云、腾讯云的VNC)登录,把配置改回来就行。








