TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:
TOP云总站云服务器:https://topyun.vip/server/buy.html
TOP云C站云服务器:https://c.topyun.vip/cart
在云服务器上配置防火墙(如 iptables 或 firewalld)是保障网络安全的核心措施,可有效拦截恶意流量、限制访问权限并防止未授权访问。以下是针对 Linux 云服务器 的详细配置指南,涵盖 iptables(传统工具) 和 firewalld(现代动态防火墙) 的配置方法、规则示例及安全加固建议。
一、防火墙基础概念
1. 防火墙的作用
过滤流量:允许/拒绝特定 IP、端口或协议的连接。
保护服务:仅开放必要的服务端口(如 SSH、HTTP/HTTPS)。
防御攻击:阻止暴力破解、DDoS 等恶意行为。
网络隔离:划分内网和外网访问权限。
2. iptables vs firewalld
特性 | iptables | firewalld |
---|---|---|
底层机制 | 直接操作内核 Netfilter 框架 | 基于 iptables 的高级抽象层 |
配置方式 | 手动编写规则(命令行或脚本) | 使用 firewall-cmd 命令或配置文件 |
动态管理 | 需手动刷新规则 | 支持实时更新规则(无需重启) |
适用场景 | 传统 Linux 系统(如 CentOS 7 之前) | 现代 Linux 发行版(如 CentOS 8+、RHEL 8+) |
学习曲线 | 较高(需理解链和规则优先级) | 较低(基于区域和服务的概念) |
推荐选择:
新系统(CentOS 8+/RHEL 8+/Ubuntu 20.04+)优先使用 firewalld。
旧系统或需要精细控制时使用 iptables。
二、配置 iptables(传统方式)
1. 基本操作命令
# 查看当前规则
sudo iptables -L -n -v
# 清空所有规则(慎用!会断开现有连接)
sudo iptables -F
# 设置默认策略(丢弃所有未明确允许的流量)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT # 允许出站流量
# 允许回环接口(本地服务通信)
sudo iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接和相关的流量
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH(端口 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP(端口 80)和 HTTPS(端口 443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许特定 IP 访问(如管理员 IP 192.168.1.100)
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
# 保存规则(Ubuntu/Debian)
sudo iptables-save | sudo tee /etc/iptables/rules.v4
# 保存规则(CentOS/RHEL)
sudo service iptables save
2. 常见规则示例
需求 | iptables 规则 |
---|---|
允许 ICMP(ping) | sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT |
限制 SSH 端口 | sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min -j ACCEPT |
拒绝特定 IP | sudo iptables -A INPUT -s 1.2.3.4 -j DROP |
开放自定义端口 | sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT |
3. 持久化规则
Ubuntu/Debian:安装 iptables-persistent:
sudo apt install iptables-persistent -y
sudo netfilter-persistent saveCentOS/RHEL:使用 service iptables save 或手动保存到 /etc/sysconfig/iptables。
三、配置 firewalld(现代方式)
1. 基本操作命令
# 查看当前状态
sudo firewall-cmd --state
# 查看所有区域和规则
sudo firewall-cmd --list-all
# 查看默认区域
sudo firewall-cmd --get-default-zone
# 设置默认区域(如 public)
sudo firewall-cmd --set-default-zone=public
# 允许服务(如 SSH、HTTP)
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
# 允许特定端口(如 8080)
sudo firewall-cmd --add-port=8080/tcp --permanent
# 允许特定 IP 访问(如 192.168.1.100)
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
# 重新加载规则(无需重启服务)
sudo firewall-cmd --reload
# 查看当前生效的规则
sudo firewall-cmd --list-all
2. 区域(Zone)概念
firewalld 使用 区域(Zone) 管理不同网络环境的规则:
public:默认区域,适用于公共网络(如云服务器公网 IP)。
internal:适用于内部网络(如私有云)。
dmz:隔离区(如对外提供服务的服务器)。
trusted:完全信任(允许所有流量,慎用!)。
3. 常见规则示例
需求 | firewalld 命令 |
---|---|
允许 SSH | sudo firewall-cmd --add-service=ssh --permanent |
允许 HTTP/HTTPS | sudo firewall-cmd --add-service=http --permanent<br>sudo firewall-cmd --add-service=https --permanent |
开放自定义端口 | sudo firewall-cmd --add-port=8080/tcp --permanent |
拒绝特定 IP | sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop' --permanent |
限制 SSH 仅限内网 | sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent |
4. 持久化规则
所有 --permanent 参数的规则需执行 sudo firewall-cmd --reload 生效。
四、安全加固建议
1. 最小化开放端口
仅开放必要的服务端口(如 SSH、HTTP/HTTPS)。
关闭所有不必要的端口(如 FTP、Telnet)。
2. 限制访问来源
仅允许特定 IP 或 IP 段访问敏感服务(如 SSH):
# iptables 示例
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
# firewalld 示例
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent
3. 启用日志记录
iptables:记录被拒绝的流量:
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "
firewalld:查看日志(通常位于 /var/log/messages 或 journalctl)。
4. 定期检查规则
# iptables
sudo iptables -L -n -v
# firewalld
sudo firewall-cmd --list-all
5. 结合 Fail2Ban 防暴力破解
sudo apt install fail2ban -y # Ubuntu/Debian
sudo systemctl enable fail2ban
配置针对 SSH 的防护(编辑 /etc/fail2ban/jail.local):
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 1h
五、iptables 与 firewalld 对比示例
场景:允许 SSH(端口 22)和 HTTP(端口 80),拒绝其他所有流量
iptables 配置
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
firewalld 配置
sudo firewall-cmd --set-default-zone=public
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
六、总结与最佳实践
选择工具:
新系统用 firewalld(简单易用)。
旧系统或需要精细控制用 iptables。
最小化开放:仅开放必要端口,关闭其他所有流量。
限制访问源:通过 IP 或区域限制敏感服务访问。
日志与监控:记录被拒绝的流量,定期检查规则。
结合其他工具:使用 Fail2Ban 防暴力破解,ssh-agent 管理密钥。
通过合理配置防火墙,你的云服务器将具备 企业级网络安全防护! 🔥
(如需自动化部署,可结合 Ansible 或云平台安全组规则。)