iptable命令

使用ip报文过滤和NAT功能,先必须使用modprobe命令载入相关内核模块。
lsmod  查看已加载的内核模块
rmmod  卸载某个已加载的内核模块
要开启防火墙功能,至少要加载ip_tables和iptable_filter内核模块
先查看防火墙的运行状态,。
service iptables status    查看防火墙的运行状态
若未运行。
modprobe ip_tables      加载ip_tables内核模块
再次查看防火墙的运行状态(service iptables status)。
modprobe iptable_filter  加载iptable_filter内核模块
若要实现NAT功能,还应加载对nat表功能支持的内核模块iptable_nat
中国留守儿童日记modprobe iptable_nat  加载iptable_nat内核模块
iptables -L -t nat  查看nat表中各链的规则
service iptables start  开启iptable服务
service iptables restart  重启iptable服务
service iptables save    保存防火墙规则
service iptable stop    关闭iptable服务
iptables-save            建立一个文件,其中包含了在一个正在运行的策略中所包含的所有iptables规则,而且是以一种可读格式提供,这种格式可                        以被iptables-restore程序解释
iptables-save > /root/ipt.save
iptable-restore          用法:cat /root/ipt.save | iptable-restore
科普论文iptables命令用法:
1、对表的操作
-t  用于指定操作的表。若未指定,默认为filter表。
2、对链操作
-F  删除指定链的全部规则                如:iptables -F INPUT
-Z  将表中的报文计数器归零
iptables -Z                          将filter表中的报文计数器归零
iptables -t nat -Z                  将nat表中的报文计数器归零
-P  设置链的默认策略
iptables -P INPUT DROP              设置INPUT链的默认策略为DROP
iptables -P FORWARD DROP            设置FOREARD链的默认策略为DROP
iptables -P OUTPUT ACCEPT            设置OUTPUT链的默认策略为ACCEPT
-L  查看链及规则
iptables -L                          列出filter表的全部链及规则
iptables -t nat -L                  列出nat表的全部链及规则
iptables -L INPUT                    列出INPUT链的所有规则
-N  创建新链                           
iptables -t nat -N block            在nat表中创建一个名为block的链
-X  删除链
iptables -t nat -X block            在nat表中删除一个名为block的链 
-E  更改链的名称                        用法:iptables -E old-chain-name new-chain-name
3、对规则的操作
-A  新增规则到指定的链 
iptables -A INPUT -s 0/0 -p icmp --icmp-type echo-request -j DROP  在INPUT链中添加一条规则,禁止所有主机ping本机
iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP  用户通过ADSL拨号上网,禁止从外
网ping本机
iptables -A INPUT -s 220.174.156.22 -j DROP                        禁止220.174.156.22主机访问本机
-D  删除规则
iptables -D INPUT -s 0/0 -p icmp --icmp-type echo-request -j DROP
iptables -D INPUT 1                                                删除编号为1的规则
iptables -D INPUT                                                  删除INPUT链的所有规则
iptables -D                                                        删除所有规则
-I  插入规则
iptables -I INPUT 1 -s 0/0 -p icmp --icmp-type echo-request -j DROP 在INPUT链编号为1的规则之前插入规则
-R  用制定规则,替换原有的规则
iptables -R 原规则 替换规则
4、报文匹配选项
-p  设置检查报文的协议类型名称。常用协议主要有tcp、udp、icmp等。全部协议可使用all或0代表,可使用!非运算符,如!tcp
iptables -A INPUT -p tcp --dport 445 -j DROP                  禁止对防火墙TCP445端口的链接访问
iptables -A FORWARD -p tcp --dprot 445 -j DROP                禁止防火墙转发对其他用户TCP445端口的访问
-s  设置检查报文的源地址
iptables -A INPUT -s 192.168.168.0/24 -p icmp --icmp-type echo-request -j ACCEPT  允许192.168.168.0/24网段内的主机ping防火墙
-d  设置检查报文的目的地址。用法与-s参数一样
-
i  设置检查报文是从哪一个网络接口进入的。如:判断报文是否从eth0网卡进入的,该参数设置方法为:-i eth0。
-o  设置检查报文是从哪一个网络接口卡送出
--sport  设置检查报文的来源端口号
--dport  设置检查报文的目的端口号
--tcp-flags  用于设置检查报文的那些tcp标志位以及哪些标志位被设置唯1。
例如:--tcp-flags SYN,FIN,ACK SYN
TCP的标志位有SYN(同步)、ACK(应答)、FIN(结束)、RST(重置)、URG(紧急)和PSH(强迫推送)。关键字ALL可代表所有的                      这些标志。支持!运算符
要充分理解tcp标志位在防火墙规则配置中的应用,必须掌握tcp建立连接的三次握手过程。TCP是一个基于连接的协议,要在客                      户端和服务器之间传递数据,必须先建立一个TCP连接。建立tcp连接的过程分为三步,也称三次握手。
①客户端发起TCP连接情求。在该请求报文中,SYN标志位被置位为1,其余标志位均为0,这是整个TCP连接过程中的第一个报文                      ,此时客户端的连接状态为SYN_SENT。
②若服务器同意接受这个TCP连接请求,则会向客户端回应一个响应报文。该报文的SYN和ACK标志位被置位。同时服务器还在本                      机上建立相关资源,以待连接所用此时服务器端的T
CP的连接状态为SYN_RECV。
best jeanist③客户端收到服务器的响应报文后,必须回应对方一个答应报文,该报文的ACK标志位被置位。服务器端收到该确认报文后,                        TCP连接就建立成功,此时连接状态为ESTABLISHED。
在TCP建立连接的这三步中,只要其中一步的报文无法接受到,则TCP连接都无法建立成功。
对于TCP连接的第一个请求报文,其SYN标志位被置位,其余标志位均未被置位。若要允许这类报文通过防火墙,则规则为:
iptables -A FORWARD -s 192.168.0.0/16 -d 0/0 -p tcp --tcp-flags SYN,FIN,ACK SYN -j ACCEPT
--syn  该参数功能与--tcp-flags SYN,FIN,ACK SYN等效
-
m -state --state 连接状态  用于设置检查报文的连接状态。必须加载ipt_state内核模块,才能支持该功能
常用的连接状态有ESTABLISHED、NEW、RELATED和INVALID四种
ESTABLISHED表示属于某个已建立的TCP连接所传送的数据报文
NEW表示属于某个新TCP连接的报文
RELATED表示属于某个已建立连接的基础上所建立的新连接报文。例如:建立FTP连接时,要先建立命令连接通道,                                  在进行数据传输时,又要在此基础上,建立起数据连接通道。
INVALID表示该报文的Session ID无法识别,属于未知连接报文,即无效的链接报文,应弃掉。
例如,若允许转发状态为ESTABLISHED或RELATED的报文,则规则命令为:
路亚中国iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-f  设置检查IP碎片报文。若报文是IP碎片,则规则匹配
-m limit --limit avg --limit-burst number 设置允许通过的报文数和触发该限制的突发报文的数量。可用
于流量控制,流量单位/s、/minute、/day
第四范式
iptables -A FORWARD -p icmp -m limit --limit 10/s --limit-burst 30 -j ACCEPT
设置平均每秒允许通过10个ping包,触发该限制的突发报文的数量为30个
iptables -A FORWARD -f -m -limit --limit 100/s --limit-burst 120 -j ACCEPT
对IP碎片的流量进行限制,设置平均每秒允许通过100个IP碎片,触发该限制的突发报文的数量为120个
-m mac --mac-source  用于检查报文的来源MAC地址。(MAC地址即网络设备的物理地址)
iptables -A FORWARD -m mac --mac-source 00:0C:29:03:F3:75 -j DROP 禁止转发来自00:0C:29:03:F3:75MAC地址
的报文
5、动作选项
对规则处理动作通过-j参数指定,常用的动作有ACCRPT、DROP、REJECT、REDIRECT、MASQU
ERADE、DNAT、SNAT、LOG、RETURE和MARK。
1、ACCET  允许报文通过、允许接收报文或允许报文出去
2、DROP  丢弃报文
3、REJECT 丢弃报文,但给对方回应一个报文通知对方。
--reject-with  指定回应报文类型
回应报文类型有:icmp-net-unrechable(网络不可达)
icmp-host-unrechable(主机不可达)
icmp-port-unrechable(端口不可达)
icmp-net-prohibited(网络禁止访问)
icmp-host-prohibited(主机禁止访问)
echo-replay
tcp-rest(回应一个TCP RST报文,要求对方关闭这个连接)
4、REDIRECT  将对某个端口的访问报文重定向到另一个端口。重定向的目的端口使用--to-ports参数指定
iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 80 -j REDIRECT --to-ports 3128 
将内网用户对TCP 80端口的访问请求重定向到代理服务器的TCP 3128端口(假设squid缓存代理服务器的端口为TCP 3128)
5、SNAT与DNAT
SNAT  用于改写报文源地址或源端口为某个指定的地址或端口。转换为和端口使用--to-source参数指定项,若只有IP地址项(公网地址与私网地            址一对一映射的情况),使用--to参数项指定要转换为的IP地址
iptables -t nat -A POSTROUTING -p tcp -o eth0 -s 192.168.0.0/16 -j SNAT --to-source 222.177.209.146:1024-65535
将从eth0(IP地址为:222.177.209.146)出去的报文的源地址更改为该网卡的地址,并指定可转换的端口范围为:1024~65535
DNAT  用于改写报文目的地址或目的端口。利用DNAT可实现主机或端口的重定向操作
iptables -t nat -A PREROUTING -i eth3 -s 192.168.0.0/16 -p tcp --dport 80 -j DNAT --to -destination 222.177.209.146:3128              将从防火墙内网卡eth3进来的,对目标端口tcp80进行访问的报文 ,重定向到IP地址为222.177.209.146的代理服务器的tcp3128端口
假设192.168.0.10主机为放置于内网的一台服务器,要将代理服务器外网卡的222.177.209.146地址的80端口的访问,映射到192.168.0.10            服务器的TCP80端口,则实现命令为:
iptables -t nat -A PREROUTING -i eth0 -d 222.177.209.146 -p tcp --dport 80 -j DNAT --to -destination 192.168.0.10:80
对于访问请求的回应报文,应进行对应的SNAT操作,实现命令规则为:
iptables -t nat -A POSTROUTING -i eth0 -s 192.168.
0.10 -p tcp -sport 80 -j DNAT --to -source 222.177.209.146:80
进行以上的DNAT和SNAT操作,因特网用户就可访问该内网服务器了。另外,内网用户也可实现以主动方式访问内因特网
6、MASOUERADE  用于改写报文的源IP地址为报文出去的外网卡的IP地址,从而实现IP地址的伪装功能。利用IP地址伪装,可实现透明代理内网用户                    访问因特网,代理服务器的功能,就是利用该操作来实现的。
四川达县县委书记
要支持MASQUERADE动作,必须加载ipt_MASQUERADE内核模块。
假设连接因特网的网卡为eth0,局域网使用的IP地址为192.168.0.0/16,则实现IP地址伪装的命令为:
ip -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j MASOUERADE 
若用户是通过ADSL拨号上网,则外网卡改为ppp0,此时IP地址位伪装实现命令为:
ip -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASOUERADE 
7、LOG  用于将匹配指定规则的报文的相关信息记录到文件中。进行完成此处理动作后,将继续比较其他规则。
可结合--log-prefix在每条日志记录之前添加一个前缀,用于标识日志的类别,前缀字符最多允许30个字符。
-
-log-level可指定记录信息的级别,其级别有debug、info、notice、warning、err、ctit、alert、emerg,分别对应7-0的数字。
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG -log-level 6 --log-prefix                    "SYN/RST"
8、RETURN结束对当前链中规则的比较,返回上级规则链 

本文发布于:2024-09-21 03:26:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/336888.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报文   连接   规则
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议