知用网
霓虹主题四 · 更硬核的阅读氛围

服务器安全加固方法:这些细节你可能一直忽略了

发布时间:2026-01-06 18:31:27 阅读:45 次

别让默认设置害了你

刚买来的服务器,系统装好第一件事做什么?很多人直接开跑业务,连SSH端口都没改。这就跟买了新房子,钥匙还是开发商给的原装钥匙一样,谁都能试着来开一开。

Linux 服务器默认 SSH 端口是 22,攻击者扫描 IP 段的时候,专门盯着这个端口猛攻。改个非常用端口,能筛掉一大半自动化脚本攻击。编辑配置文件:

sudo nano /etc/ssh/sshd_config

找到 Port 22 这一行,改成比如 Port 28437,保存后重启 SSH 服务:

sudo systemctl restart sshd

改完之后记得防火墙放行新端口,不然自己也连不上,那就尴尬了。

密码越复杂,越容易出事

很多人觉得密码设得长就安全,于是整出一串“P@ssw0rd2024!Server!”这种看似复杂实则套路明显的密码。更离谱的是,好几个服务器都用同一个密码。一旦一个被撞库,全盘皆输。

真正靠谱的做法是关掉密码登录,改用 SSH 密钥认证。本地生成一对密钥,公钥扔到服务器上,私钥自己保管好。这样就算别人知道用户名,没有私钥也登不进来。

生成密钥命令:

ssh-keygen -t rsa -b 4096 -C "admin@myserver"

把生成的公钥(一般是 id_rsa.pub)内容追加到服务器的 ~/.ssh/authorized_keys 里。然后在 /etc/ssh/sshd_config 中设置:

PasswordAuthentication no
PubkeyAuthentication yes

再重启 sshd,密码登录这条路就被彻底堵死了。

少装软件,少留后门

有些运维为了省事,装系统时勾选“一键安装所有工具包”,结果一堆用不上的服务在后台跑着:FTP、Telnet、MySQL、Apache 全开着。哪个服务有漏洞,黑客就能从哪个钻进来。

正确的做法是按需安装。比如只做静态网站,就只装 Nginx;跑 Python 应用,就只装 Python 和 Gunicorn。其他没用的服务一律关闭:

sudo systemctl disable --now telnet
sudo systemctl disable --now ftpd

定期检查当前开放的端口:

sudo netstat -tulnp

看到不认识的服务占着端口,就得查清楚是干什么的,该删就删。

权限不是越大越好

很多脚本一上来就要求用 root 执行,你不假思索就给了。结果脚本里藏了个 wget 下载恶意程序,直接就在最高权限下运行了。

日常操作应该用普通用户,只有必要时才通过 sudo 提权。创建一个管理员用户:

sudo adduser deployer
sudo usermod -aG sudo deployer

以后登录都用 deployer,需要 root 权限时加 sudo。这样即使账号泄露,攻击者也不能立刻为所欲为。

自动更新比手动补漏强十倍

系统内核、OpenSSL、Nginx 这些组件爆出漏洞,往往几天内就会被大规模利用。等你发现新闻再去打补丁,黄花菜都凉了。

Ubuntu 系统可以装 unattended-upgrades 自动更新安全补丁:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

开启后,系统会在后台自动下载并安装重要安全更新,不用你操心。当然,生产环境要注意避免自动升级导致服务中断,可以设置只更新安全包,不升级整个系统。

日志不是摆设

服务器被黑了才发现问题?太晚了。每天扫一眼关键日志,能提前发现不少异常。

比如查看 SSH 登录记录:

sudo grep "Failed password" /var/log/auth.log | tail -20

如果看到大量来自不同 IP 的失败尝试,说明有人在暴力破解。这时候就可以配合 fail2ban 工具,自动封禁频繁尝试的 IP。

安装并启用 fail2ban:

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

它会监控日志,发现异常登录行为就自动更新防火墙规则,把攻击者拒之门外。