为什么你的Linux服务器总在“裸奔”?
💡 推荐阅读:Linux服务器裸奔?这份防护清单,帮你把系统焊成铁桶
很多朋友买了云服务器,装上Linux系统,SSH登上去看看,觉得一切正常就扔在那儿了。但你知道吗?互联网上每分钟都有成千上万的扫描器在自动探测IP端口,专门找那些没设防的“肉鸡”。如果咱们的服务器还保持着默认配置,那无异于把家门钥匙挂在门把手上。
今天这篇文章,笔者不聊虚的,直接上手操作,带大家从一台刚装好系统的Linux服务器开始,一步步把它加固成“铁桶阵”。无论你是刚入行的运维新手,还是自己捣鼓个人网站的老鸟,这几点核心设置,绝对能帮你挡住绝大多数恶意攻击。
第一道防线:SSH安全加固,别让密码成为你的软肋
SSH是管理Linux服务器的命脉,也是黑客暴力破解的首要目标。默认的22端口、密码登录、甚至允许root直接登录,这三样凑齐了,基本等于给攻击者开了一扇后门。
1. 禁用root直接登录
root权限太大,一旦被破解,服务器瞬间沦陷。我们需要创建一个普通用户,赋予它sudo权限,然后禁止root远程登录。
# 创建新用户(以admin为例)
useradd -m admin
passwd admin
# 赋予sudo权限
usermod -aG wheel admin # CentOS/RHEL系统
# 或者
usermod -aG sudo admin # Ubuntu/Debian系统
# 编辑SSH配置文件
vim /etc/ssh/sshd_config
# 找到并修改以下参数
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
2. 更换SSH端口并启用密钥登录
把SSH默认的22端口改成一个不常用的高位端口(比如22022),能瞬间过滤掉大量无脑扫描流量。同时,务必使用密钥对登录,比密码安全一个量级。
# 在客户端生成密钥对(本地电脑操作)
ssh-keygen -t rsa -b 4096
# 将公钥上传到服务器
ssh-copy-id -p 22022 admin@你的服务器IP
# 修改sshd_config
Port 22022
PermitRootLogin no
PasswordAuthentication no
UseDNS no
修改完记得重启服务:systemctl restart sshd。重启前,千万确保防火墙放行了新端口,不然你会被锁在外面。
第二道防线:防火墙配置,只开该开的门
服务器不是商店,不需要门庭若市。咱们要做的,就是只开放必要的端口,其他一律拒绝。
现在主流系统都用firewalld(CentOS)或UFW(Ubuntu)。这里以firewalld为例:
# 启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld
# 只放行SSH和Web端口
firewall-cmd --permanent --add-port=22022/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# 重新加载配置
firewall-cmd --reload
# 查看当前规则
firewall-cmd --list-all
如果你的服务器是Ubuntu,UFW的写法更简单,逻辑完全一样。记住一个原则:默认拒绝,按需放行。
第三道防线:Fail2ban,让暴力破解者“怀疑人生”
就算有了密钥登录,也不能完全掉以轻心。Fail2ban是一款入侵防御软件,它能监控日志,发现多次认证失败的IP就自动封禁,非常实用。
# 安装Fail2ban
yum install fail2ban -y # CentOS
apt install fail2ban -y # Ubuntu
# 配置本地规则
vim /etc/fail2ban/jail.local
# 添加以下内容
[sshd]
enabled = true
port = 22022
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
这样设置后,同一个IP尝试密码错误3次,就会被封禁1小时。对正常人来说,输错3次密码也该去重置了,但对扫描器来说,这1小时的等待足够让它们放弃。
第四道防线:系统账户与文件权限管理
除了root,系统里还有很多默认账户和组,有些用不上,留着就是隐患。同时,敏感文件的权限必须收紧了。
1. 清理不必要的用户
# 查看所有用户
cat /etc/passwd
# 锁定无用系统账户(如lp, sync, halt等)
usermod -L lp
usermod -L sync
# 或者直接删除
userdel lp
2. 关键文件权限加固
比如/etc/shadow存放着密码哈希,绝对不能全局可读。
# 确保shadow文件权限正确
chmod 640 /etc/shadow
chmod 644 /etc/passwd
chmod 600 /etc/ssh/sshd_config
第五道防线:系统更新与日志审计
Linux内核和软件包几乎每周都有安全补丁。有些人怕更新影响业务,但更怕的是漏洞被利用后数据丢失。
# CentOS/RHEL
yum update -y
# Ubuntu/Debian
apt update && apt upgrade -y
建议设置自动更新,但内核更新除外(内核更新需要重启,避免意外中断业务)。同时,养成查看日志的习惯:
# 查看登录失败记录
lastb
# 查看安全日志
tail -f /var/log/secure
进阶玩法:部署一个轻量级WAF(Web应用防火墙)
如果你跑的是Web服务,可以装一个ModSecurity配合Nginx/Apache使用。它能拦截SQL注入、XSS攻击等常见的Web攻击手法,相当于给网站加了一层防弹衣。
# 以Nginx为例(需要先安装nginx-mod-security)
yum install nginx-mod-security -y
# 加载模块并启用规则
load_module modules/ngx_http_modsecurity_module.so;
# 在server块中开启
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec_main.conf;
这一套配置下来,你的服务器防护级别已经超越了市面上80%的同类站点。
结语:安全不是一劳永逸,而是持续对抗
做完上述这些设置,你的Linux服务器基本告别了“裸奔”状态。但请记住,安全攻防是动态的,没有绝对的安全。定期关注安全公告、及时更新补丁、备份重要数据,这三件事和上面的配置一样重要。
最后提一嘴,如果你还没入手服务器,建议选择主流云厂商(如阿里云、腾讯云),它们自带的安全组和云盾能帮你过滤掉不少底层攻击,配合本文的手动加固,双管齐下才最稳妥。服务器这东西,用着放心,才能睡得安心。
希望这篇干货对你有用。如果你有更好的加固技巧,欢迎在评论区分享交流。
延伸阅读
- Linux服务器裸奔?这份防护清单,帮你把系统焊成铁桶
- 自己动手搭建私有云?聊聊开源Docker云平台的那些事儿
- Linux服务与安全管理:从零搭建到加固,这些实战细节越早知道越好
- 别再被“环境地狱”折磨了,一文讲透Docker容器化技术到底牛在哪
🎁 全套实操配置文件与 AI 提效资料包免费下载
本文涉及的全套 Docker Compose 配置文件、服务器运维避坑手册及 AI 提效指令库已完整打包上传至夸克网盘,可直接免费极速转存:
💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。