Ubuntu 22.04 单台 VPS 的基础安全初始化流程

本文记录一套 Ubuntu 22.04 单台 VPS 的基础安全初始化流程。

结构采用:

先执行命令 → 再解释配置。

适用环境:

  • Ubuntu 22.04
  • root + 密码登录的 VPS

一、快速执行(直接操作)

更新系统:

apt update && apt upgrade -y

安装常用工具:

apt install -y curl wget vim git unzip lrzsz

安装防火墙:

apt install -y ufw

放行 SSH(非常重要,避免把自己锁在服务器外):

ufw allow 22/tcp

如果是 Web 服务器:

ufw allow 80/tcp

ufw allow 443/tcp

启用防火墙:

ufw enable

安装 Fail2Ban:

apt install -y fail2ban

编辑配置:

vim /etc/fail2ban/jail.local

写入配置:

sshd

enabled = true

port = ssh

logpath = %(sshd_log)s

maxretry = 5

findtime = 600

bantime = 3600

让配置生效:

systemctl restart fail2ban

systemctl enable fail2ban


二、验证

查看防火墙状态:

ufw status

查看 Fail2Ban 状态:

systemctl status fail2ban

查看 sshd jail:

fail2ban-client status sshd


三、UFW 防火墙说明

UFW(Uncomplicated Firewall)是 Ubuntu 推荐的防火墙管理工具,用于控制服务器端口访问。

查看状态:

ufw status

Ubuntu 默认策略:

ufw default deny incoming

ufw default allow outgoing

含义:

  • 拒绝所有进入服务器的连接
  • 允许服务器主动访问外网

可以通过查看确认:

ufw status verbose

如果策略被修改,可以执行:

ufw default deny incoming

ufw default allow outgoing

恢复默认策略。

常用操作:

放开端口:

ufw allow 80

放开指定协议端口:

ufw allow 8080/tcp

删除规则:

ufw delete allow 8080/tcp

禁止端口:

ufw deny 80

查看规则:

ufw status numbered


四、Fail2Ban 说明

Fail2Ban 用于检测暴力破解并自动封禁恶意 IP。

配置文件目录:

/etc/fail2ban/

常见文件:

jail.conf

默认配置(不建议修改)

jail.local

本地自定义配置

加载顺序:

jail.conf → jail.local → jail.d/*.conf

说明:

jail.local 在 jail.conf 默认配置基础上 补充或覆盖相同配置项。


五、查看是否有人爆破 SSH

查看失败登录次数:

grep "Failed password" /var/log/auth.log | wc -l

含义:

/var/log/auth.log

SSH 登录日志

Failed password

表示登录失败记录

如果这个数字持续增加,说明服务器正在被暴力尝试登录。


六、Fail2Ban 常用命令

查看 jail 状态:

fail2ban-client status sshd

手动封禁 IP:

fail2ban-client set sshd banip 1.2.3.4

查看封禁 IP:

fail2ban-client status sshd

输出中的:

Banned IP list

就是当前封禁的 IP。

解封 IP:

fail2ban-client set sshd unbanip 1.2.3.4


七、总结

一台 VPS 的基础安全配置:

  1. 更新系统
  2. 配置防火墙(UFW)
  3. 安装 Fail2Ban
  4. 启用服务并验证

完成后服务器将具备:

  • 基础防火墙
  • SSH 防爆破
  • 基本安全策略
相关推荐
EdgeEcho7 小时前
我的 GitHub Action 本地全绿,放上去五个 bug——包括一个让文件完全不执行的
devops
分布式存储与RustFS6 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
あ-6 天前
python3 ModuleNotFoundError: No module named ‘_sqlite3‘
devops
研发小能6 天前
制造行业 DevOps 国产替代怎么落地?面向离散制造与汽车集团的横向比较
研发效能·devops·嘉为蓝鲸
Mr.朱鹏7 天前
Docker三剑客实战指南:Docker、Dockerfile 和 Docker Compose
python·docker·devops·dockerfile
Liaiyang667 天前
# 自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险
python·测试工具·自动化·开源软件·代码规范·devops·代码复审
あ-7 天前
基于TencentOS的PVMCubeSandBox模板构建失败
devops
あ-8 天前
promtail收集日志异常排查
devops
龙智DevSecOps解决方案9 天前
JFrog供应链流量控制器架构解析:如何通过 SASE 集成阻断 AI 智能体的恶意依赖拉取?
ai编程·devops·jfrog·软件供应链安全
あ-9 天前
proxmox控制台占用内存高虚拟机占用内存低排查
devops