一、安全组(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. 设置步骤(以莱卡云为例)
登录云控制台 → ECS实例 → 安全组。
点击 配置规则 → 添加安全组规则:
规则方向:入方向(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. 最佳实践
最小权限原则:只开放必要的端口,如
22
(SSH)仅限管理IP。禁止默认全开放:避免
0.0.0.0/0
开放高危端口(如3306
、6379
)。多层级防护:结合 安全组 + 系统防火墙 双重保护。
二、系统防火墙设置(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端口 | 防暴力破解 |
运维管理 | 定期审计日志 | 发现异常访问 |
推荐方案:
安全组 仅开放必要端口(如
22
、80
、443
)。系统防火墙 进一步限制访问(如
iptables
或firewalld
)。Fail2Ban 防止SSH暴力破解。
定期检查日志(
/var/log/auth.log
、/var/log/secure
)。