云服务器安全加固:15个关键设置保护你的服务器
cat ~/.ssh/id_ed25519.pub | ssh adminuser@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"云服务器的安全直接关系到业务数据的隐私与可用性。# 方法1(图形控制台):将~/.ssh/i
云服务器的安全直接关系到业务数据的隐私与可用性。无论是个人开发者托管网站,还是企业部署核心业务,攻击者都可能通过漏洞入侵,导致数据泄露、服务瘫痪甚至经济损失。本文将系统梳理15个关键安全设置,覆盖系统、网络、应用层全链路防护,助你构建“主动防御+纵深防御”的安全体系。
一、系统基础加固:从账户到补丁
1. 禁用root远程登录:降低特权账户风险
Linux系统中,
"root"账户拥有最高权限,一旦被暴力破解将直接控制服务器。
操作步骤:
- 编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
- 找到
"PermitRootLogin"行,修改为:
PermitRootLogin no # 禁止root远程登录
PasswordAuthentication no # 同时禁用密码登录(可选,但推荐)
- 重启SSH服务生效:
sudo systemctl restart sshd
原理:强制使用普通用户登录后切换root(通过
"sudo"),即使密码泄露,攻击者也需突破sudo权限才能获取系统控制权。
2. 创建专用管理用户:最小权限原则
为日常操作创建权限受限的普通用户,避免直接使用
"root"或高权限账户。
操作步骤:
- 创建新用户并设置强密码:
sudo adduser adminuser # 按提示设置密码(建议12位以上,含大小写+数字+符号)
- 授予sudo权限(仅允许执行必要命令):
sudo usermod -aG sudo adminuser # 加入sudo组(Ubuntu/Debian)
# 或 CentOS:
sudo usermod -aG wheel adminuser
- 验证登录:通过SSH使用
"adminuser"登录,测试
"sudo"命令是否生效(如
"sudo apt update")。
3. 系统补丁与更新管理:修复已知漏洞
操作系统和软件的漏洞是攻击的主要入口,需定期更新。
操作步骤:
- 自动更新配置(以Ubuntu为例):
sudo apt install unattended-upgrades # 安装自动更新工具
sudo dpkg-reconfigure unattended-upgrades # 图形化配置更新策略
- 手动检查关键更新(每周执行):
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
sudo yum update -y # CentOS/RHEL
注意:生产环境建议先在测试机验证更新,避免兼容性问题导致服务中断。
4. 禁用不必要的系统服务:减少攻击面
云服务器默认可能开启多个冗余服务(如打印服务、蓝牙服务),这些服务可能成为攻击入口。
操作步骤:
- 查看运行中的服务:
systemctl list-units --type=service --state=running
- 禁用非必要服务(以
"cups"打印服务为例):
sudo systemctl stop cups # 停止服务
sudo systemctl disable cups # 禁用开机自启
扩展:使用
"systemctl mask"彻底屏蔽服务(谨慎操作)。
二、网络安全防护:从端口到流量
5. 配置SSH密钥对认证:替代密码登录
密码易被暴力破解,SSH密钥对通过非对称加密实现更安全的身份验证。
操作步骤:
- 本地生成密钥对(一路回车使用默认路径):
ssh-keygen -t ed25519 -C "your_email@example.com" # 推荐Ed25519算法(更安全)
- 上传公钥到服务器:
# 方法1(图形控制台):将~/.ssh/id_ed25519.pub内容粘贴到服务器~/.ssh/authorized_keys
# 方法2(命令行):
cat ~/.ssh/id_ed25519.pub | ssh adminuser@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
- 测试无密码登录:
ssh adminuser@服务器IP # 应直接登录成功,无需输入密码
强化:在
"sshd_config"中添加
"PubkeyAuthentication yes"(默认已启用)。
6. 强化防火墙规则:最小化开放端口
云服务器的防火墙(如UFW/iptables)是抵御外部攻击的第一道防线,需仅开放必要端口。
操作步骤(以UFW为例,Ubuntu):
- 查看默认策略(初始状态:拒绝所有入站,允许所有出站):
sudo ufw status verbose
- 开放必要端口(如HTTP 80、HTTPS 443、SSH 22):
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
- 启用防火墙并验证:
sudo ufw enable # 启用后若远程连接断开,需通过云平台VNC登录恢复
sudo ufw status numbered # 查看规则列表(带编号便于后续删除)
注意:若误操作关闭所有端口,可通过云平台控制台的“VNC登录”临时访问服务器修复。
7. 安全组最小化入站/出站规则
云平台的“安全组”是虚拟防火墙,需与系统防火墙配合,进一步限制流量来源。
最佳实践:
- 入站规则:仅允许已知IP访问管理端口(如SSH),或限制为业务必需的IP段(如公司办公网)。示例:MySQL数据库端口3306仅允许应用服务器IP访问,禁止公网直接连接。
- 出站规则:默认拒绝所有外发流量,仅允许服务器访问必要服务(如软件源、日志中心)。
8. 安装并配置Fail2ban:防暴力破解
暴力破解是攻击者尝试猜测SSH/FTP密码的常见手段,Fail2ban可自动封禁多次失败的IP。
操作步骤:
- 安装Fail2ban(Ubuntu):
sudo apt install fail2ban -y
- 配置SSH防护(复制默认配置并修改):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
- 修改
"[sshd]"部分:
[sshd]
enabled = true
maxretry = 3 # 允许3次失败尝试
findtime = 600 # 10分钟内
bantime = 3600 # 封禁1小时
- 重启服务生效:
sudo systemctl restart fail2ban
验证:通过
"ssh adminuser@错误密码"测试,3次失败后应提示“Connection closed by authenticating proxy”。
三、应用层安全:从数据库到Web服务
9. 数据库安全配置:限制访问与加密
数据库存储核心业务数据,需严格限制权限并启用加密。
以MySQL为例:
- 创建专用数据库用户(非root):
CREATE USER 'app_user'@'localhost' IDENTIFIED BY '强密码';
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'localhost'; # 仅授予必要权限
FLUSH PRIVILEGES;
- 启用SSL加密连接(需生成证书):
# 在my.cnf中添加:
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
require_secure_transport=ON
- 定期备份数据库并加密存储(如使用
"mysqldump"+AES加密)。
10. Web服务器安全加固(Nginx/Apache)
Web服务器是对外服务的入口,需防范SQL注入、XSS等攻击。
Nginx配置示例:
- 禁用不必要的HTTP方法(如PUT/DELETE):
location / {
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
return 405;
}
}
- 启用HTTPS(强制跳转):
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri; # 强制HTTP转HTTPS
}
- 限制请求速率(防CC攻击):
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; # 每秒10次请求
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
11. 禁用目录列表与敏感文件暴露
Web服务器默认可能泄露目录结构或敏感文件(如
".git"、
"config.php")。
操作步骤:
- Nginx禁止目录列表:
server {
autoindex off; # 关闭目录列表
}
- 阻止访问敏感文件(通过
".htaccess"或Nginx规则):
location ~ /\.env$ { # 阻止.env文件
deny all;
return 404;
}
location ~ /\.git { # 阻止Git仓库
deny all;
return 404;
}
四、监控与响应:从日志到入侵检测
12. 启用自动安全更新:减少人为疏忽
通过工具自动安装关键安全补丁,避免因忘记更新导致漏洞暴露。
Ubuntu自动更新配置:
sudo dpkg-reconfigure unattended-upgrades
- 在图形界面中勾选“自动安装安全更新”,选择“每日”检查频率。
- 日志查看:
cat /var/log/unattended-upgrades/unattended-upgrades.log
13. 配置日志审计与集中管理
日志是追踪攻击的关键证据,需集中存储并定期分析。
操作步骤:
- 启用系统日志服务(rsyslog):
sudo systemctl enable rsyslog
- 配置日志转发到集中管理平台(如ELK Stack):
# 在/etc/rsyslog.conf中添加:
*.* @logstash_ip:5000 # 通过TCP转发到Logstash
- 定期分析日志(如使用
"journalctl"):
journalctl -u sshd --since "2024-01-01" # 查看SSH服务近期的日志
14. 定期备份与灾难恢复计划
数据丢失是最大的安全风险之一,需制定完善的备份策略。
最佳实践:
- 3-2-1原则:3份备份、2种介质(如本地硬盘+云存储)、1份离线(如移动硬盘)。
- 自动化备份脚本(以MySQL为例):
# 每日凌晨2点备份数据库
0 2 * * * mysqldump -u app_user -p'密码' mydb | gzip > /backups/mydb_$(date +\%F).sql.gz
- 测试恢复流程:每月随机选择一份备份,验证能否成功还原数据。
15. 启用内核安全模块:SELinux/AppArmor
SELinux(CentOS/RHEL)和AppArmor(Ubuntu)通过强制访问控制(MAC)限制进程权限,即使被入侵也能限制破坏范围。
Ubuntu启用AppArmor:
sudo systemctl enable apparmor
sudo systemctl start apparmor
CentOS启用SELinux:
# 修改/etc/selinux/config:
SELINUX=enforcing # 强制模式(默认permissive为警告模式)
sudo reboot # 重启生效
总结:安全是持续的过程
云服务器安全加固不是一次性任务,而是需要定期检查+动态调整的系统工程。建议每月执行以下操作:
1. 检查系统更新与补丁状态;
2. 分析防火墙/安全组规则,清理冗余条目;
3. 审计用户权限,删除长期未使用的账户;
4. 备份数据并测试恢复流程;
5. 监控日志,关注异常登录或流量突增。
通过本文的15个关键设置,你已经构建了覆盖系统、网络、应用层的多层防护体系。记住:安全的本质是“最小化攻击面,最大化响应能力”,保持警惕才能守护云端资产。
云服务器任何问题可以评论或者联系我!
更多推荐
所有评论(0)