// PC530 技术论坛 v1.0
● online 登录 / 注册
返回列表
运维与云原生 #运维

【运维】Linux 服务器实战(2):用户、sudo 与 SSH/fail2ban 安全


Linux 服务器实战 · 第 2 篇
第 1 篇完成初始化后,本篇锁定 账号、sudo、SSH 与暴力破解防护


1. 用户与 sudo(推荐做法)

创建部署用户

sudo adduser deploy
sudo usermod -aG sudo deploy
### 用 drop-in 文件授权(不要直接改 `/etc/sudoers`)

```bash
echo 'deploy ALL=(ALL:ALL) ALL' | sudo tee /etc/sudoers.d/deploy  
sudo chmod 440 /etc/sudoers.d/deploy  
sudo visudo -c   # 语法检查
### 查看 / 删除用户

```bash
getent passwd deploy
id deploy
sudo deluser --remove-home olduser
---

## 2. SSH 密钥登录(推荐)

**本地** 生成密钥(若还没有):

```bash
ssh-keygen -t ed25519 -C "your_email@example.com"
上传公钥到服务器:

```bash
ssh-copy-id deploy@YOUR_SERVER_IP
**服务器** `/etc/ssh/sshd_config` 建议(改前先开第二个 SSH 会话测试):

```text
PermitRootLogin no  
PasswordAuthentication no  
PubkeyAuthentication yes  
MaxAuthTries 3
生效:

```bash
sudo sshd -t && sudo systemctl reload sshd
---

## 3. 登录审计

```bash
# 成功登录
last -n 20

# 失败尝试(需 last 命令包)
sudo lastb -n 30

# 实时 SSH 日志
sudo journalctl -u ssh -f
# 或
sudo grep "Failed password" /var/log/auth.log | tail -20
统计失败 IP 次数:

```bash
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head
---

## 4. fail2ban 防暴力破解

```bash
sudo apt update  
sudo apt install -y fail2ban
最小 sshd 监狱(1 小时错 5 次 → 封 4 天,可按需改):

```bash
sudo tee /etc/fail2ban/jail.d/sshd.local << 'EOF'
[sshd]
enabled  = true
port     = ssh
filter   = sshd
backend  = systemd
maxretry = 5
findtime = 3600
bantime  = 345600
EOF

sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
查看封禁 IP:

```bash
sudo fail2ban-client status sshd  
sudo fail2ban-client set sshd unbanip 1.2.3.4   # 误封解封
> 不推荐再用 `hosts.deny` + cron 扫 auth.log 的老脚本——难维护,fail2ban 是主流方案。

---

## 5. 在线用户与会话

```bash
who -H
w
踢掉某终端(慎用):

```bash
sudo pkill -KILL -t pts/1
---

## 6. 改密码

```bash
passwd              # 当前用户
sudo passwd deploy  # root/sudo 改他人
---

## 常见坑

| 现象 | 处理 |
|------|------|
| 改 SSH 把自己锁外面 | 云控制台 VNC;改前保留 `PasswordAuthentication yes` 直到密钥测通 |
| fail2ban 封了自己 | 控制台登录 → `fail2ban-client set sshd unbanip ...` |
| sudo 报 syntax error | `visudo -c` 检查 `/etc/sudoers.d/*` |

---

## 系列导航

| 篇 | 主题 |
|----|------|
| 1 | 新服务器初始化 → `/forum/13/` |
| **2** | **用户与 SSH 安全(本文)** |
| 3 | 磁盘与 LVM |
| 4 | systemd 与 journal |
| 5 | 网络与 ufw |
| 6 | 性能监控 |
| 7 | 故障诊断 |
| 8 | 部署与 Cron |

---

## 本篇速查

```bash
sudo tee /etc/sudoers.d/deploy <<< 'deploy ALL=(ALL:ALL) ALL'  
sudo apt install -y fail2ban && sudo systemctl enable --now fail2ban  
last -n 10 && sudo lastb -n 10

```