CentOS / Redhat 上的 Iptables 防火墙配置简介 日期:2023-02-01 人气:466 ### Iptables 配置文件 RHEL / CentOS / Fedora Linux 发行版中默认的配置文件是: - /etc/sysconfig/iptables – 系统执行脚本通过读取该文件来激活防火墙功能。 - /etc/sysconfig/ip6tables -针对 IPv6 ### 基本操作:显示默认规则 ``` iptables --line-numbers -n -L ``` 其中`–line-numbers`参数表示给每行规则前面加个编号;`-n`表示以数字形式显示 IP 地址和端口等内容;`-L` 表示列出所有链(chain)中的规则。可以通过 `iptables --help` 来查看所有可用参数的含义。 可以得到类似下面的输出(其中 # 号开头的行为注释说明): ``` # 下面是入站链(Chain INPUT) Chain INPUT (policy ACCEPT) num target prot opt source destination # 下面的 RH-Firewall-1-INPUT 是该入站链 INPUT 的一条规则 # 即,将所有入站的连接交由后面的 RH-Firewall-1-INPUT 链 来处理 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 # 转发链 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 # 出站链 Chain OUTPUT (policy ACCEPT) num target prot opt source destination # 下面 1~8 是入站链 RH-Firewall-1-INPUT 中的所有规则(rule) Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT udp -- 0.0.0.0/0 1.2.3.4 udp dpt:5353 4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53 8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 3. 基本操作:启用防火墙¶ ``` #### 基本操作:启用防火墙 输入下面的两条指令来启用防火墙: ``` $ sudo chkconfig iptables on $ sudo service iptables start ``` CentOS 7 上则应该使用 systemctl, ``` $ sudo systemctl enable iptables $ sudo systemctl start iptables ``` 其中上一条是将 iptables 加入到系统服务,随系统启动而启动;下一条是直接启动 iptables 服务。 重起防火墙: ``` $ sudo service iptables restart # # CentOS 7 $ sudo systemctl restart iptables ``` 停止防火墙: ``` $ sudo service iptables stop # # CentOS 7 $ sudo systemctl stop iptable ``` #### 理解防火墙 上面列出的防火墙(iptables)中有 4 个链: - INPUT – 这是默认用来处理进入系统的数据包的规则集合。可以用来开启或关闭传入端口(如 80、443、25 和 110 等)和 IP 地址/子网(如 1.2.3.4/29)。 - OUTPUT – 这是默认用来处理由系统产生(发出)的数据包的规则集合。可以用来开启或关闭传出端口和 IP 地址/子网。 - FORWARD – 这也是一个默认的链,当数据包需要通过别的接口发送的时候就使用它。例如,网卡 eth0 连接到 ADSL/Cable 猫,eth1 连接到本地 LAN 的时候,可以使用 FORWARD 链沟通 LAN 与互联网,实现发送与接收。 - RH-Firewall-1-INPUT – 这是一个用户自定义的链。它被 INPUT 、 OUTPUT 和 FORWARD 链调用。 ##### 包匹配规则 1. 每个包都从链的第一条规则开始匹配。 2. 当它匹配到一条规则的时候才会被处理。 3. 如果匹配到一条规则,会被跳转到特定的目标(如 REJECT, ACCEPT, DROP)。 ##### 目标含义 1. ACCEPT 表示接受该数据包。 2. REJECT 表示丢弃该数据包,并且向远程主机发送一条错误信息。 3. DROP 表示丢弃该数据包,并且不向远程主机或发送者提供错误信息。 #### 配置 /etc/sysconfig/iptables 文件 虽然可以通过 iptables 指令来编辑防火墙规则,可是对于大量的规则来说一条一条的输入总是很麻烦,实际上可以直接按照正确格式编辑 iptables 的配置文件,然后重新加载 iptables 即可使之生效。 ##### DROP 所有通信 ``` *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] ``` 上述规则表示默认接受(ACCEPT)所有三个链(INPUT、FORWARD、OUTPUT)上的通信。可以将前面两个改为默认丢弃(DROP)(因为本机发出的通信一般是默认接受的,不需要改动): ``` :INPUT DROP [0:0] :FORWARD DROP [0:0] ``` ##### 开启端口 要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则: ``` -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT ``` > -p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。 要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则: ``` -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT ``` 同时针对 tcp 和 udp 协议开启 53 端口。 要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则: ``` -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT ``` 要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则: ``` -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT ``` ### 鸣谢 - [水景一页](https://cnzhx.net/blog/centos-redhat-iptables-firewall-configuration/#use_iptables) 标签: 防火墙 上一篇:vscode使用Community Server Connector运行JDK1.8项目报错 下一篇:Red Hat5平台下的Iptables防火墙应用(一) 随便看看 2025-07-04 vscode使用Community Server Connector运行JDK1.8项目报错 2025-07-03 vscode中为maven项目指定java版本 2025-06-27 利用puppeteer将网页保存为pdf 2025-06-27 一天二十四时辰表 2025-06-27 家谱中儿子和父母的关系有哪些? 留言