文章列表
2 分钟阅读

Linux 服务器安全基础:SSH、用户权限、防火墙和 fail2ban

更新说明:新增 Linux 服务器安全基础。


系列:Linux 命令基础

第 11 / 16 篇

  1. Tmux 入门教程:让 SSH 断线和多任务终端不再中断
  2. Tree 命令教程:快速查看和导出目录结构
  3. Linux 搜索命令教程:find、grep、locate、rg 应该怎么选
  4. Linux 压缩与解压命令教程:tar、zip、gzip、xz、zstd 一次讲清
  5. Linux 文本处理命令教程:cat、less、head、tail、wc、sort、uniq
  6. Linux 权限命令教程:chmod、chown、umask
  7. Linux 进程查看与管理:ps、top、htop、kill、jobs
  8. Linux 网络排查命令:ss、curl、dig、ping、traceroute
  9. systemctl 与 journalctl 入门:管理服务和查看日志
  10. rsync 使用指南:服务器文件同步与备份
  11. Linux 服务器安全基础:SSH、用户权限、防火墙和 fail2ban
  12. 线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看
  13. 深入浅出:Linux 树状目录神器 tree 命令的安装与使用指南
  14. Linux 系统 Vim 编辑器终极指南:从入门到精通
  15. SSH 隧道实战:本地转发、远程转发和动态转发
  16. SSH Config 使用指南:别名、跳板机与多服务器管理

一台新服务器能登录,不代表适合直接放服务。最少要把 SSH、用户权限、防火墙和暴力破解防护整理一下。

Linux 权限基础可以先看 Linux 权限命令教程:chmod、chown、umask

不要长期用 root 直接登录

先创建普通用户:

Terminal window
adduser deploy
usermod -aG sudo deploy

确认普通用户能登录并使用 sudo 后,再考虑禁用 root SSH 登录。

/etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

修改后先检查配置:

Terminal window
sshd -t
systemctl reload ssh

不要在当前连接还没验证新登录方式前关闭终端。

SSH 密钥比密码更稳

本地生成密钥:

Terminal window
ssh-keygen -t ed25519 -C "deploy"

把公钥放到服务器:

Terminal window
ssh-copy-id deploy@server

确认密钥登录正常后,再关密码登录。

防火墙只开放必要端口

用 ufw 的话,常见配置是:

Terminal window
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status

如果服务只给内网访问,就不要把端口暴露到公网。

fail2ban 防暴力尝试

关闭密码登录之后,暴力破解的风险会低很多,但 SSH 端口仍然会被持续扫描。fail2ban 的作用是根据日志判断失败次数,超过阈值后临时封禁来源地址。

安装:

Terminal window
apt install fail2ban

最小配置:

/etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h

重启:

Terminal window
systemctl restart fail2ban
fail2ban-client status sshd

日志要会看

SSH 登录日志:

Terminal window
journalctl -u ssh -n 100 --no-pager

系统服务日志可以参考 systemctl 与 journalctl 入门:管理服务和查看日志

基础安全清单

  • 普通用户登录正常
  • root SSH 登录关闭
  • 密码登录关闭
  • 只开放 22、80、443 等必要端口
  • fail2ban 正常运行
  • 系统包定期更新
  • 备份和恢复路径明确

总结

这些配置不复杂,但能挡住大部分低成本扫描和误操作。新服务器上线前,先确认普通用户、SSH 密钥、防火墙和 fail2ban,再继续部署业务服务。