Iptables 应用

iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。 可以直接配置,也可以通过许多前端和图形界面配置。

iptables 也经常代指该内核级防火墙。iptables 用于 ipv4ip6tables 用于 ipv6

nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具。

环境:CentOS7

1. 简介

iptables 可以检测、修改、转发、重定向和丢弃 IPv4 数据包

过滤 IPv4 数据包的代码已经内置于内核中,并且按照不同的目的被组织成 的集合。 由一组预先定义的 组成,包含遍历顺序规则。每一条规则包含一个谓词的潜在匹配和相应的动作(称为 目标),如果谓词为真,该动作会被执行。也就是说条件匹配。

2. 安装 iptables

(1)禁用 firewalld

CentOS 7 上默认安装了 firewalld 作为防火墙,使用 iptables 建议关闭并禁用 firewalld。

systemctl stop firewalld
systemctl disable firewalld

(2)安装 iptables

yum install -y iptables-services

(3)服务管理

  • 查看服务状态:systemctl status iptables

  • 启用服务:systemctl enable iptables

  • 禁用服务:systemctl disable iptables

  • 启动服务:systemctl start iptables

  • 重启服务:systemctl restart iptables

  • 关闭服务: systemctl stop iptables

3. 命令

基本语法:

基本选项说明:

参数

作用

-P

设置默认策略:iptables -P INPUT (DROP

-F

清空规则链

-L

查看规则链

-A

在规则链的末尾加入新规则

-I

num 在规则链的头部加入新规则

-D

num 删除某一条规则

-s

匹配来源地址 IP/MASK,加叹号"!"表示除这个 IP 外。

-d

匹配目标地址

-i

网卡名称 匹配从这块网卡流入的数据

-o

网卡名称 匹配从这块网卡流出的数据

-p

匹配协议,如 tcp,udp,icmp

--dport num

匹配目标端口号

--sport num

匹配来源端口号

顺序:

4. iptables 示例

4.1. 清空当前的所有规则和计数

4.2. 配置允许 ssh 端口连接

4.3. 允许本地回环地址可以正常使用

4.4. 设置默认的规则

4.5. 配置白名单

4.6. 开启相应的服务端口

4.7. 保存规则到配置文件中

4.8. 列出已设置的规则

iptables -L [-t 表名][链名]

  • 四个表名 rawnatfiltermangle

  • 五个规则链名 INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING

  • filter 表包含INPUTOUTPUTFORWARD三个规则链

4.9. 清除已有规则

4.10. 删除已添加的规则

将所有 iptables 以序号标记显示,执行:

比如要删除 INPUT 里序号为 8 的规则,执行:

4.11. 开放指定的端口

4.12. 屏蔽 IP

4.13. 指定数据包出去的网络接口

只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。

4.14. 查看已添加的规则

4.15. 启动网络转发规则

公网210.14.67.7让内网192.168.188.0/24上网

4.16. 端口映射

本机的 2222 端口映射到内网 虚拟机的 22 端口

4.17. 字符串匹配

比如,我们要过滤所有 TCP 连接中的字符串test,一旦出现它我们就终止这个连接,我们可以这么做:

4.18. 阻止 Windows 蠕虫的攻击

4.19. 防止 SYN 洪水攻击

5. 参考资料

Last updated

Was this helpful?