云服务器如何设置防火墙和安全组规则?

发布于:2025-07-19 ⋅ 阅读:(11) ⋅ 点赞:(0)

一、安全组(Security Group)设置

安全组是云平台提供的虚拟防火墙,用于控制 入站(Ingress)和出站(Egress)流量

1. 基本安全组规则(推荐)

协议 端口 源IP 用途 是否必需
TCP 22 你的IP或公司IP SSH远程管理 ✅ 是
TCP 3389 你的IP或公司IP Windows RDP ✅(仅Windows需要)
TCP 80 0.0.0.0/0 HTTP网站访问 ✅(Web服务器需要)
TCP 443 0.0.0.0/0 HTTPS安全访问 ✅(Web服务器需要)
TCP 3306 你的IP或内网IP MySQL数据库 ❌(仅数据库服务器需要)
TCP 6379 你的IP或内网IP Redis ❌(仅缓存服务器需要)
ICMP - 你的IP Ping测试 ❌(可选,用于调试)

2. 设置步骤(以莱卡云为例)

  1. 登录云控制台 → ECS实例 → 安全组

  2. 点击 配置规则 → 添加安全组规则

    • 规则方向:入方向(Ingress)或出方向(Egress)。

    • 授权策略:允许(Allow)或拒绝(Deny)。

    • 协议类型:TCP/UDP/ICMP 等。

    • 端口范围:如 22(SSH)、80(HTTP)、443(HTTPS)。

    • 授权对象

      • 特定IP:192.168.1.100/32(仅允许该IP访问)。

      • 全部开放:0.0.0.0/0(不推荐,除非必要)。

  3. 保存规则,并绑定到目标服务器。

3. 最佳实践

  • 最小权限原则:只开放必要的端口,如 22(SSH)仅限管理IP。

  • 禁止默认全开放:避免 0.0.0.0/0 开放高危端口(如 33066379)。

  • 多层级防护:结合 安全组 + 系统防火墙 双重保护。


二、系统防火墙设置(iptables / firewalld)

安全组是云平台层面的防护,而系统防火墙(如 iptables/firewalld)提供 操作系统级防护

1. 使用 iptables(Linux 传统防火墙)

# 查看当前规则
iptables -L -n

# 允许SSH(22端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP(80)、HTTPS(443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许Ping(ICMP)
iptables -A INPUT -p icmp -j ACCEPT

# 默认拒绝所有其他入站流量
iptables -P INPUT DROP
iptables -P FORWARD DROP

# 允许已建立的连接和回环接口
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

# 保存规则(CentOS 6/7)
service iptables save

2. 使用 firewalld(CentOS 7+/RHEL 8+)

# 启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld

# 开放端口
firewall-cmd --zone=public --add-port=22/tcp --permanent  # SSH
firewall-cmd --zone=public --add-port=80/tcp --permanent  # HTTP
firewall-cmd --zone=public --add-port=443/tcp --permanent # HTTPS

# 允许Ping
firewall-cmd --add-icmp-block=echo-request --permanent

# 重新加载防火墙
firewall-cmd --reload

# 查看开放端口
firewall-cmd --list-ports

3. 使用 ufw(Ubuntu/Debian 推荐)

# 启用UFW
ufw enable

# 开放SSH、HTTP、HTTPS
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp

# 允许Ping
ufw allow icmp

# 查看规则
ufw status

三、高级安全防护

1. 更改默认SSH端口(防止暴力破解)

# 修改SSH配置文件
vim /etc/ssh/sshd_config

# 更改端口(如 2222)
Port 2222

# 重启SSH服务
systemctl restart sshd

# 防火墙开放新端口
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

2. 使用 Fail2Ban 防暴力破解

# 安装 Fail2Ban
apt install fail2ban  # Debian/Ubuntu
yum install fail2ban  # CentOS/RHEL

# 配置SSH防护
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

# 修改如下配置
[sshd]
enabled = true
port = 22  # 或自定义SSH端口
maxretry = 3  # 尝试3次后封禁
bantime = 3600  # 封禁1小时

# 重启Fail2Ban
systemctl restart fail2ban

3. 关闭不必要的服务

# 查看运行中的服务
systemctl list-units --type=service

# 禁用不必要的服务(如telnet)
systemctl stop telnet.socket
systemctl disable telnet.socket

四、总结

防护层级 工具/方法 作用
云平台层 安全组(Security Group) 控制入站/出站流量
系统层 iptables / firewalld / ufw 操作系统级防火墙
应用层 Fail2Ban / 更改SSH端口 防暴力破解
运维管理 定期审计日志 发现异常访问

推荐方案:

  1. 安全组 仅开放必要端口(如 2280443)。

  2. 系统防火墙 进一步限制访问(如 iptables 或 firewalld)。

  3. Fail2Ban 防止SSH暴力破解。

  4. 定期检查日志/var/log/auth.log/var/log/secure)。


网站公告

今日签到

点亮在社区的每一天
去签到