发新帖

[Linux] iptables 基本使用格式

零下一度 2021-1-15 849

iptables 基本使用格式:

iptables  [-t  TABLE]  COMMAND  CHAIN  [ num ]  匹配标准  -j  处理动作 

其中,TABLE为表名,COMMAND为命令,CHAIN 为链名,num为链号, -t TABLE 是可以省略的,默认表是Filter。 

从上面的基本使用格式中,可以看到规则是由 匹配标准 和 处理动作 组成,要编写规则,就要了解熟悉各个选项。


一、COMMAND命令:

管理规则的命令

-A:附加一条规则,添加在链的尾部

-I CHAIN [num]: 插入一条规则,插入为对应CHAIN上的第num条;

-D CHAIN [num]: 删除指定链中的第num条规则;

-R CHAIN [num]: 替换指定的规则;

管理链的命令:

-F [CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链

-P (大写policy)CHAIN: 设定指定链的默认策略;

-N:自定义一个新的空链

-X: 删除一个自定义的空链

-Z:置零指定链中所有规则的计数器;

-E: 重命名自定义的链;

查看类命令:

-L: 显示指定表中的规则;(默认会将主机IP地址反解为主机名,将端口号反解为服务名(会很慢))

-n: 以数字格式显示主机地址和端口号;

-v: 显示链及规则的详细信息

-vv: 

-x: 显示计数器的精确值

--line-numbers: 显示规则号码

二、匹配标准(条件):匹配标准又分为通用标准和扩展标准

通用匹配

-s, --src: 指定源地址  IP(指定地址), NET(指定网络)

-d, --dst:指定目标地址

-p (小写){tcp|udp|icmp}:指定协议 

-i  INTERFACE: 指定数据报文流入的接口

可用于定义标准的链:PREROUTING,INPUT,FORWARD

-o  INTERFACE: 指定数据报文流出的接口

可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD

扩展匹配:

隐含扩展:

-p tcp

  --sport PORT[-PORT]: 源端口

  --dport PORT[-PORT]: 目标端口

  --tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;

  --syn = --tcp-flags  SYN,FIN,ACK,RST  SYN (表示TCP三次握手的第一次)

-p icmp

  --icmp-type 

0: echo-reply响应报文(本机ping进来的)

8: echo-request请求报文(本机ping出去的)

-p udp

  --sport --dport

显式扩展: 使用额外的匹配机制

-m EXTESTION --spe-opt (-m指定扩展名称,而后指定这个扩展自己独有的选项) 

-m state:状态扩展 结合ip_conntrack追踪会话的状态(不是TCP的状态)

--state NEW: 新连接请求

ESTABLISHED:已建立的连接

INVALID:非法连接(例如SYN=1,FIN=1)

RELATED:相关联的(例如由命令连接激活的其他连接)设计ftp规则

例如:-m state --state  NEW,ESTABLISHED  -j ACCEPT

-m multiport: 离散的多端口匹配扩展

--source-ports

--destination-ports  --ports

-m  iprange  指定一段范围内的IP地址

--src-range  ip-ip

--dst-range  ip-ip

-m connlimit: 连接数限制(限制特定IP地址的连接数)用于限定同一个客户端地址最多发起多少个请求 

! --connlimit-above n 连接数的上限(该选项一般取反,用于表示允许通过低于上限标准的报文) 

-m limit

   --limit RATE 限制响应速度

   --limit-burst  一批请求的最高峰值 (当一批请求进来时,前limit-burst个会被迅速响应)

-m string  限定用户所访问内容中的字符串,屏蔽特殊的字符串 

   --algo {bm|kmp} 选择匹配算法

   --string "STRING"  支持正则表达式

注意:以上所有的条件都可以取反:! 例如 -s ! 172.16.100.6


三、动作(target)【-j 指定】:

ACCEPT:放行(允许报文通过)

DROP:丢弃

REJECT:拒绝

DNAT:目标地址转换

SNAT:源地址转换

REDIRECT:端口重定向

MASQUERADE:地址伪装(主要用于NAT表的POSTROUTING链上实现源地址转换)

LOG:日志

MARK:给报文打标记

NOTRACK:用于raw表,对指定的报文不做任何追踪

LOG与其他的动作一起用时,一定放在其他动作的前面(避免报文被其他动作先行处理,而得不到记录)

--log-prefix  “string” 在记录日志时加上标志前缀信息

 

最后,如果对任何选项有疑问,都可以在linux下man iptables 查看帮助。(当然,前提是已经安装了iptables)


最新回复 (0)
返回
零下一度
主题数
928
帖子数
0
注册排名
1