Linux iptables命令介绍
iptables是Linux系统的一个防火墙程序,它可以监控和过滤从服务器进出的网络数据包。iptables使用表(tables)来组织不同的过滤动作,每个表包含一些规则(rules),每条规则定义了对符合条件的数据包的处理方式(target)。iptables有四个默认的表,分别是filter、nat、mangle和raw,其中filter表是最常用的一个,它负责控制数据包的访问权限。iptables命令可以用来查看、添加、删除或修改iptables表中的规则,从而实现对网络安全的管理和配置。
Linux iptables命令适用的Linux版本
iptables命令适用于大多数Linux发行版,如Ubuntu、Debian、CentOS、Fedora等。如果您的系统没有预装iptables,您可以使用以下命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get update # Ubuntu/Debian
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install iptables
[linux@bashcommandnotfound.cn ~]$ sudo yum update # CentOS/Fedora
[linux@bashcommandnotfound.cn ~]$ sudo yum install iptables
注意,iptables命令只适用于IPv4协议,如果您需要对IPv6协议进行防火墙设置,您需要使用ip6tables命令。
Linux iptables命令的基本语法
iptables命令的基本语法如下:
sudo iptables [option] CHAIN_rule [-j target]
其中,option是指定操作的选项,如-A表示追加一条规则,-D表示删除一条规则,-L表示列出所有规则等;CHAIN_rule是指定规则所属的链(chain)和规则的匹配条件,如-p表示协议,-s表示源地址,-d表示目的地址等;-j target是指定规则的目标动作,如ACCEPT表示允许通过,DROP表示丢弃,REJECT表示拒绝并返回错误信息等。
Linux iptables命令的常用选项或参数说明
iptables命令有很多选项和参数,以下是一些常用的:
选项 | 参数 | 说明 |
---|---|---|
-t | table | 指定要操作的表,如filter、nat、mangle或raw |
-A | chain | 在指定的链的末尾追加一条规则 |
-I | chain [rulenum] | 在指定的链的开头或指定的位置插入一条规则 |
-D | chain rulenum | 删除指定的链的指定位置的规则 |
-R | chain rulenum | 替换指定的链的指定位置的规则 |
-L | [chain] | 列出指定的链或所有链的规则 |
-F | [chain] | 清空指定的链或所有链的规则 |
-Z | [chain] | 清零指定的链或所有链的计数器 |
-N | chain | 创建一个新的自定义链 |
-X | [chain] | 删除一个空的自定义链或所有空的自定义链 |
-P | chain target | 设置指定的链的默认策略 |
-p | protocol | 指定要匹配的协议,如tcp、udp、icmp等 |
-s | address[/mask] | 指定要匹配的源地址,可以是IP地址或主机名,也可以带有子网掩码 |
-d | address[/mask] | 指定要匹配的目的地址,同上 |
--sport | port | 指定要匹配的源端口,可以是端口号或服务名 |
--dport | port | 指定要匹配的目的端口,同上 |
-i | interface | 指定要匹配的输入网卡接口,如eth0 |
-o | interface | 指定要匹配的输出网卡接口,同上 |
-m | match | 指定要使用的扩展匹配模块,如state、multiport、limit等 |
-j | target | 指定要执行的目标动作,如ACCEPT、DROP、REJECT、LOG等 |
-v | 无 | 以详细的方式显示规则和计数器 |
-n | 无 | 以数字的方式显示IP地址和端口号 |
-h | 无 | 显示帮助信息 |
Linux iptables命令的实例
以下是一些iptables命令的实例,展示了如何使用不同的选项和参数来配置防火墙规则。
实例1:查看当前的iptables规则
[linux@bashcommandnotfound.cn ~]$ sudo iptables -L -v -n
这个命令会列出当前所有表中的所有链的规则,以及每条规则的数据包和字节的计数器。-v选项表示以详细的方式显示,-n选项表示以数字的方式显示IP地址和端口号,这样可以加快显示的速度。
实例2:允许本地回环接口的数据包通过
[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -i lo -j ACCEPT
这个命令会在INPUT链的末尾追加一条规则,允许从本地回环接口(lo)输入的数据包通过。-i lo选项表示匹配输入网卡接口为lo的数据包,-j ACCEPT选项表示将目标动作设置为ACCEPT。
实例3:拒绝来自某个IP地址的数据包
[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -s 192.168.1.100 -j DROP
这个命令会在INPUT链的末尾追加一条规则,拒绝来自192.168.1.100的数据包。-s 192.168.1.100选项表示匹配源地址为192.168.1.100的数据包,-j DROP选项表示将目标动作设置为DROP。
实例4:允许SSH服务的数据包通过
[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
这个命令会在INPUT链的末尾追加一条规则,允许SSH服务(端口号为22)的数据包通过。-p tcp选项表示匹配协议为tcp的数据包,--dport 22选项表示匹配目的端口为22的数据包,-j ACCEPT选项表示将目标动作设置为ACCEPT。
实例5:限制每分钟只能接收三个ping请求
[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/minute -j ACCEPT
这个命令会在INPUT链的末尾追加一条规则,限制每分钟只能接收三个ping请求。-p icmp选项表示匹配协议为icmp的数据包,--icmp-type echo-request选项表示匹配类型为echo-request的数据包,-m limit选项表示使用limit模块,--limit 3/minute选项表示设置限制为每分钟三个数据包,-j ACCEPT选项表示将目标动作设置为ACCEPT。
Linux iptables命令的注意事项
-
iptables
的规则是顺序敏感的,链中的规则是自上而下检查的。数据包会受到链中首个匹配的规则的影响,其余的规则被忽略。 -
不正确配置iptables规则可能会使你的系统变得无法访问。只在你完全理解你正在做什么的情况下使用iptables。
-
如果在你的系统中执行iptables命令时返回
bash: iptables: command not found
错误,可能需要你手动安装iptables。
Iptables相关命令
netfilter:这是iptables所依据的内核框架,用于控制和操作网络数据包
firewalld:这是新一代的防火墙工具,用于CentOS7和Fedora以后的版本,用于替代iptables
nftables:这是另一个新的防火墙框架,可以作为iptables的替代品
评论区