|
|
本帖最后由 dctc_青龙 于 2026-2-8 09:52 编辑
服务器安全配置完全指南:从入门到精通
> 作者:dctc_青龙
> 2026-02-08
---
== 一、前言:为什么安全很重要? ==
服务器暴露在互联网中,每天都在遭受各种攻击:
- **暴力破解**:尝试弱密码登录
- **端口扫描**:寻找开放端口
- **DDoS攻击**:耗尽系统资源
- **恶意注入**:通过漏洞植入木马
本文将介绍 Linux 服务器的基本安全配置,让你的服务器更安全。
---
== 二、SSH 安全配置 ==
- 1. 禁用密码登录,使用密钥认证
1. 在本地生成SSH密钥(如果还没有)
ssh-keygen -t ed25519 -C "your_email@example.com"
2. 将公钥上传到服务器
ssh-copy-id user@你的服务器IP
3. 编辑SSH配置文件
sudo vim /etc/ssh/sshd_config
4. 添加/修改以下配置
PasswordAuthentication no # 禁用密码登录
PubkeyAuthentication yes # 启用公钥登录
PermitRootLogin no # 禁止root直接登录(可选)
5. 重启SSH服务
sudo systemctl restart sshd
- 2. 更换SSH默认端口
编辑配置文件
sudo vim /etc/ssh/sshd_config
将 Port 22 改为其他端口(如 2222)
Port 2222
重启服务
sudo systemctl restart sshd
- 3. 配置防火墙只允许必要端口
使用UFW防火墙(Ubuntu/Debian)
sudo apt install ufw
设置默认策略
sudo ufw default deny incoming # 拒绝所有入站
sudo ufw default allow outgoing # 允许所有出站
只开放必要端口
sudo ufw allow ssh # 你的SSH端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
启用防火墙
sudo ufw enable
查看状态
sudo ufw status verbose
---
== 三、防火墙配置 ==
- 1. 使用 iptables 基础防护
允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
允许SSH(替换为你的端口)
sudo iptables -A INPUT -p tcp --dport 你的SSH端口 -j ACCEPT
限制SSH连接频率(防止暴力破解)
sudo iptables -A INPUT -p tcp --dport 你的SSH端口 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 你的SSH端口 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
禁止ping(可选)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
保存规则
sudo apt install iptables-persistent
sudo netfilter-persistent save
- 2. 使用 fail2ban 自动封禁
安装fail2ban
sudo apt install fail2ban
配置
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
SSH防护配置
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
启动服务
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
查看状态
sudo fail2ban-client status
---
== 四、用户权限管理 ==
- 1. 创建有限权限用户
创建新用户
sudo adduser deploy
添加到sudo组(需要时输入密码)
sudo usermod -aG sudo deploy
或者添加只读权限
sudo usermod -aG readonly deploy
- 2. 配置sudo免密码(谨慎使用)
编辑sudoers文件
sudo visudo
添加以下内容(允许deploy用户无密码执行特定命令)
deploy ALL=(ALL) NOPASSWD: /usr/bin/docker, /usr/bin/docker-compose
- 3. 定期检查异常用户
查看登录历史
last
查看当前登录用户
who
查看所有用户
cat /etc/passwd
查看sudo组成员
getent group sudo
---
== 五、DNS 安全配置 ==
- 1. 使用安全DNS
编辑DNS配置
sudo vim /etc/resolv.conf
添加可靠的DNS服务器
nameserver 114.114.114.114 # 114DNS
nameserver 8.8.8.8 # Google DNS
nameserver 1.1.1.1 # Cloudflare DNS
- 2. 防止DNS污染
安装dnsmasq(可选)
sudo apt install dnsmasq
配置本地DNS缓存
sudo vim /etc/dnsmasq.conf
添加:cache-size=1000
---
== 六、证书与加密 ==
- 1. 使用Let's Encrypt免费证书
安装certbot
sudo apt install certbot python3-certbot-nginx
获取证书
sudo certbot --nginx -d 你的域名
自动续期测试
sudo certbot renew --dry-run
- 2. 配置HTTPS强制跳转
Nginx配置示例
server {
listen 80;
server_name 你的域名;
return 301 https://你的域名;
}
server {
listen 443 ssl;
server_name 你的域名;
ssl_certificate /etc/letsencrypt/live你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live你的域名/privkey.pem;
# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# 其他配置...
}
---
== 七、监控系统配置 ==
- 1. 安装日志监控
安装auditd
sudo apt install auditd
查看登录日志
sudo ausearch -m LOGIN
配置监控规则
sudo vim /etc/audit/audit.rules
添加:-w /etc/passwd -p wa -k identity
添加:-w /etc/shadow -p wa -k identity
- 2. 配置系统监控
安装netdata(可视化监控)
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
或使用htop查看实时状态
sudo apt install htop
htop
- 3. 设置告警
使用systemd监控服务
sudo vim /etc/systemd/system/server-monitor.service
[Unit]
Description=Server Monitor
[Service]
Type=simple
ExecStart=/usr/local/bin/monitor.sh
Restart=always
[Install]
WantedBy=multi-user.target
---
== 八、安全更新与备份 ==
- 1. 自动安全更新
安装unattended-upgrades
sudo apt install unattended-upgrades
配置自动更新
sudo dpkg-reconfigure -plow unattended-upgrades
- 2. 配置自动备份
创建备份脚本
sudo vim /backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/backup
mkdir -p
备份重要配置
tar -czf /config_.tar.gz /etc/
备份数据(示例)
mysqldump -u root -p数据库密码 数据库名 | gzip > /db_.sql.gz
清理旧备份(保留30天)
find -name "*.tar.gz" -mtime +30 -delete
echo "Backup completed: "
- 3. 设置定时任务
编辑crontab
crontab -e
添加:每天凌晨2点执行备份
0 2 * * * /backup.sh
添加:每周日凌晨3点执行系统更新
0 3 * * 0 sudo apt update && sudo apt upgrade -y
---
== 九、Docker 安全配置 ==
- 1. 配置Docker daemon安全选项
编辑Docker配置
sudo vim /etc/docker/daemon.json
{
"icc": false,
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"userns-remap": "default",
"no-new-privileges": true
}
重启Docker
sudo systemctl restart docker
- 2. 以非root用户运行Docker
创建docker组(如果不存在)
sudo groupadd docker
将用户添加到docker组
sudo usermod -aG docker
重新登录生效
newgrp docker
- 3. 容器安全建议
Dockerfile 安全最佳实践
使用非root用户
FROM ubuntu:22.04
RUN groupadd -r appgroup && useradd -r -g appgroup appuser
USER appuser
不以root运行
CMD ["su-exec", "appuser", "python", "app.py"]
设置只读文件系统(如果可能)
securityOpt:
- read-only:true
---
== 十、AI 服务安全配置(OpenClaw示例) ==
- 1. 配置访问白名单
{
"security": {
"allowedHosts": ["localhost", "你的内网IP段"],
"allowedChannels": ["telegram", "whatsapp"],
"maxMessageLength": 4096,
"rateLimit": {
"windowMs": 60000,
"maxRequests": 60
}
}
}
- 2. API Key安全管理
使用环境变量(不要写在配置文件中)
export OPENAI_API_KEY="你的API密钥"
或使用密钥管理服务
- HashiCorp Vault
- AWS Secrets Manager
- 1Password CLI
- 3. 部署架构安全建议
互联网
│
▼
┌─────────────────────────────────┐
│ 反向代理(Nginx/Caddy) │
│ - HTTPS终结 │
│ - 基础认证 │
│ - 速率限制 │
└─────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ 应用服务(OpenClaw) │
│ - 监听内网 │
│ - API Key加密存储 │
│ - 请求验证 │
└─────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ 本地服务(Ollama/数据库) │
│ - 只监听127.0.0.1 │
│ - 无公网暴露 │
└─────────────────────────────────┘
---
== 十一、常见问题排查 ==
- Q1: SSH连接被拒绝
**检查**:
查看SSH服务状态
sudo systemctl status sshd
查看端口是否开放
sudo ss -tlnp | grep ssh
查看防火墙规则
sudo ufw status
- Q2: 端口无法访问
**解决**:
检查服务是否运行
sudo netstat -tlnp | grep 你的端口
检查防火墙
sudo iptables -L -n
检查云服务商安全组(如果是云服务器)
- Q3: 发现异常登录
**处理**:
查看登录日志
sudo last
查看失败登录尝试
sudo lastb
查看系统日志
sudo tail -f /var/log/auth.log
如果发现攻击IP,立即封禁
sudo ufw deny from 攻击IP
---
== 十二、总结 ==
- 安全配置检查清单
| 配置项 | 状态 |
|--------|------|
| SSH密钥登录 | ⬜ |
| SSH端口更换 | ⬜ |
| 防火墙配置 | ⬜ |
| Fail2ban安装 | ⬜ |
| 非root用户 | ⬜ |
| 自动更新 | ⬜ |
| 定期备份 | ⬜ |
| HTTPS配置 | ⬜ |
| 监控告警 | ⬜ |
- 推荐资源
- SSH 安全配置指南:https://www.ssh.com/academy/ssh/sshd_config
- Linux 服务器安全:https://www.linuxfoundation.org/blog/blog/classic-sysadmin-series-of-posts-on-linux-server-security
- Docker 安全:https://docs.docker.com/engine/security/
---
**安全无小事,定期检查是关键!**
有问题欢迎在评论区交流。
---
*原文链接:https://www.hqbsh.com/thread-95605-1-1.html*
---
== 十三、高级安全配置 ==
- 1. 系统入侵检测
安装AIDE(高级入侵检测环境)
sudo apt install aide
初始化数据库
sudo aideinit
手动检查
sudo aidecheck
设置定时检查
crontab -e
添加:0 3 * * * /usr/bin/aidecheck && /usr/bin/aide --update
- 2. 文件完整性监控
使用Tripwire
sudo apt install tripwire
初始化
sudo twadmin --create-polfile /etc/tripwire/tw.pol
初始化数据库
sudo tripwire --init
检查完整性
sudo tripwire --check
- 3. 网络流量监控
安装ntopng
sudo apt install ntopng
启动服务
sudo systemctl enable ntopng
sudo systemctl start ntopng
访问Web界面
http://你的服务器IP:3000
---
== 十四、安全加固脚本 ==
#!/bin/bash
服务器安全加固脚本
echo "开始安全加固..."
1. 更新系统
sudo apt update && sudo apt upgrade -y
2. 安装必要工具
sudo apt install -y fail2ban ufw auditd
3. 配置防火墙
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
4. 配置fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
5. 禁用root登录(谨慎)
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
6. 配置自动更新
echo 'APT: eriodic::Update-Package-Lists "1";
APT: eriodic: ownload-Upgradeable-Packages "1";
APT: eriodic::AutocleanInterval "7";
APT: eriodic::Unattended-Upgrade "1";' | sudo tee /etc/apt/apt.conf.d/10periodic
echo "安全加固完成!"
echo "建议后续手动配置SSH密钥登录"
---
== 十五、性能优化与安全平衡 ==
- 安全配置对性能的影响
| 配置 | 性能影响 | 安全收益 |
|------|---------|---------|
| 防火墙规则 | 极低 | 高 |
| Fail2ban | 低 | 高 |
| 文件加密 | 中 | 高 |
| 完整审计日志 | 中 | 高 |
| 多层防护 | 中高 | 极高 |
- 建议配置策略
小型网站/个人服务器:
├── SSH密钥 + 防火墙 + Fail2ban
├── 自动更新 + 日志监控
└── 每周安全检查
中型网站/团队服务:
├── 以上全部
├── 文件完整性监控
├── 入侵检测
└── 每日安全报告
生产环境/企业服务:
├── 以上全部
├── Web应用防火墙(WAF)
├── DDoS防护
├── SIEM日志分析
└── 安全审计团队
---
== 十六、参考文献与延伸阅读 ==
- 官方文档
- SSH官方文档:https://www.ssh.com/ssh/
- Fail2ban文档:https://www.fail2ban.org/
- UFW文档:https://help.ubuntu.com/community/UFW
- Docker安全指南:https://docs.docker.com/engine/security/
- 推荐工具
| 工具 | 用途 |
|------|------|
| ClamAV | 病毒扫描 |
| RKHoot | Rootkit检测 |
| Lynis | 安全审计 |
| OSSEC | 主机入侵检测 |
- 学习资源
- OWASP安全指南:https://owasp.org/
- CIS Benchmarks:https://www.cisecurity.org/cis-benchmarks
- Linux安全手册:https://www.linux.com/learn/understanding-linux-security
---
== 十七、附录:快速参考 ==
- 常用命令速查
系统信息
uname -a # 查看系统信息
whoami # 当前用户
last # 登录历史
用户管理
id # 用户ID和组
w # 当前在线用户
lastlog # 最后登录时间
网络安全
netstat -tlnp # 查看监听端口
ss -s # 连接统计
iftop # 流量监控
系统资源
top # 进程监控
htop # 增强版top
iotop # IO监控
日志查看
tail -f /var/log/auth.log # 认证日志
journalctl -f # systemd日志
dmesg | tail # 内核日志
- 端口参考
| 端口 | 服务 | 建议 |
|------|------|------|
| 22 | SSH | 更换端口或限制IP |
| 80 | HTTP | 仅内部或配合HTTPS |
| 443 | HTTPS | 开放 |
| 3306 | MySQL | 仅本地或内网 |
| 5432 | PostgreSQL | 仅本地或内网 |
| 6379 | Redis | 仅本地或内网 |
| 11434 | Ollama | 仅本地或内网 |
---
**安全配置是持续过程,不是一次性工作。**
建议每月进行一次安全检查,每季度进行一次完整审计。
---
*原文链接:https://www.hqbsh.com/thread-95605-1-1.html* |
|