Linux下iptables学习

一、概念解释

iptables,一个运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的流动与转送。在大部分的Linux系统上面,iptables是使用/usr/sbin/iptables来操作,文件则放置在手册页(Man page[2])底下,可以通过 man iptables 指令获取。通常iptables都需要内核层级的模块来配合运作,Xtables是主要在内核层级里面iptables API运作功能的模块。因相关动作上的需要,iptables的操作需要用到超级用户的权限。

维基百科对iptables的描述如上,详细的描述信息https://zh.wikipedia.org/wiki/Iptables

iptables包含Filter、Nat、Mangle、Raw四种内建表。

Filter表

Filter表是iptables的默认表(无定义时默认使用)包过滤,用于防火墙规则,包含以下三种内建链:

  • INPUT链——处理来自外部的数据。
  • OUTPUT链——处理向外发送的数据。
  • FORWARD链——将数据数据转发到本机的其他网卡设备上。

Net表

地址转换,用于网关路由器。包含以下三种内建链:

  • RREROUTING链——处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
  • POSTROUTING链——处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
  • OUTPUT链——处理本机产生的数据包。

Mangle表

Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。包含以下五种内建链:

  • PREROUTING、OUTPUT、FORWARD、INPUT、POSTROUTING

Raw表

Raw表用于处理异常,它具有2个内建链:

  • PREROUTING、OUTPUT

动作包括:

  • ACCEPT:接收数据包。
  • DROP:丢弃数据包。
  • REDIRECT:重定向、映射、透明代理。
  • QUEUE:防火墙将数据包移交到用户空间。
  • RETURN:防火墙停止执行当前链中后续Rules,并返回到调用链(the calling chain)中。
  • SNAT:源地址转换。
  • DNAT:目标地址转换。
  • MASQUERADE:IP伪装(NAT),用于ADSL。
  • LOG:日志记录。

二、命令介绍

语法iptables (选项)(参数)

选项

-t<表>: 指定要操作的表的;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清除规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-d:指定要匹配的目标数据包ip地址;
-j <目标>:指定要跳转的目标;
-i <网络接口>:指定数据包进入本机的网络接口;
-o <网络接口>:指定数据包要离开本机所使用的网络接口;

示例说明

iptables -t 表名 <-A/I/D/R> 规则链名[规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 
<-d 目标IP/目标子网> --dport 目标端口 -j 动作

1.清除已有iptables规则

iptables -F           #删除某规则链中所有规则
iptables -X           #删除某个规则链
iptables -Z           #将封包计数器归零。封包计数器是用来计算统一封包出现次数,是过滤阻断式攻击的工具

2.开放指定端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT    #允许本地回环接口
iptables -A OUTPUT -j ACCEPT                             #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT            #允许访问22端口
iptables -A INPUT -j REJECT                              #禁止其他未允许的规则访问
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT #允许已建立或相关连的通行
  • -m state:启用状态匹配模块。
  • –state:状态匹配模块的参数。当数据包到达服务器时,状态字段为NEW;建立连接后数据包的状态字段都是ESTABLISHED。

3.屏蔽IP

iptables -I INPUT -s 192.168.189.234 -j DROP              #屏蔽单个IP命令
iptables -I INPUT -s 123.0.0.0/8  -j DROP                 #屏蔽某个子网的命令   

4.查看已添加的iptables规则

iptables -nvL
n:只显示IP地址和端口号,不将ip解析为域名。
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数。
L:列出某条规则链中的所有规则。

5.删除已添加的iptables规则

iptables -L -n --line-numbers   #将所有iptables以序号标记显示
iptables -D INPUT 3             #删除INPUT链中的第三条规则

6.保存iptables规则并使之生效

/etc/init.d/iptables save        #保存规则
service iptables restart         #重启服务

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值