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

特性iptablesfirewalld
底层机制直接操作内核 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
拒绝特定 IPsudo 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 save
  • CentOS/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 命令
允许 SSHsudo firewall-cmd --add-service=ssh --permanent
允许 HTTP/HTTPSsudo firewall-cmd --add-service=http --permanent<br>sudo firewall-cmd --add-service=https --permanent
开放自定义端口sudo firewall-cmd --add-port=8080/tcp --permanent
拒绝特定 IPsudo 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

六、总结与最佳实践

  1. 选择工具:

    • 新系统用 firewalld(简单易用)。

    • 旧系统或需要精细控制用 iptables。

  2. 最小化开放:仅开放必要端口,关闭其他所有流量。

  3. 限制访问源:通过 IP 或区域限制敏感服务访问。

  4. 日志与监控:记录被拒绝的流量,定期检查规则。

  5. 结合其他工具:使用 Fail2Ban 防暴力破解,ssh-agent 管理密钥。

通过合理配置防火墙,你的云服务器将具备 企业级网络安全防护! 🔥
(如需自动化部署,可结合 Ansible 或云平台安全组规则。)


不容错过
Powered By TOPYUN 云产品资讯