声明:由于查看网上资料发现无法满足我的理解能力(理解能力太差),总结的不系统(不满足我要的要求),所以将iptables总结与此,转载可以不留名,但是我相信有JJ的都会留名。纯粹菜鸟级别,大神请绕道。。。。
参考资料:鸟哥私房菜
www.baidu.com
www.google.com
man iptables
感谢百度文库,感谢谷歌翻译,感谢所有共享资料的大神感谢鸟哥,感谢CN哥,感谢容器哥,感谢冰冰,感谢三哥,感谢假胸,感谢linux群里的各位大神
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这里先说一条原则:iptables总是匹配最上层的,如果上层匹配成功,下面的策略则忽略
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
iptable -L(如果加-t nat 则查看nat表,如果不加则查看filter表)
首先要了解3个链表
INPUT OUTPUT FORWARD区别
1. 如果数据包的目的地址是本机,则系统将数据包送往Input链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
2. 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往Forward链。如果通过规则检查,则该包被发给相应的本地进程处理; 如果没有通过规则检查,系统就会将这个包丢掉。
3. 如果数据包是由本地系统进程产生的,则系统将其送往Output链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
========================================================================================================
查看信息的各项功能说明
也可以使用iptables-save查看详细规则 ,这里看到的规则和配置文件里的规则一样
=======================================================================================================
对iptables进行配置
一般首先需要删除原有配置
iptables -F ----清空所有的已定的规则
iptables -X ----清空掉所有自定义的chain
iptables -Z ----chain计数器设置为0
然后定义策略将相关的链默认设置成drop
格式为
#iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
-P:定义策略policy
ACCESS:代表默认允许
DROP:代表默认拒绝
例如:
#iptables -P INPUT DROP ----进站数据默认拒绝,一般用于防外网
#iptables -P OUTPUT DROP ----出站数据默认拒绝,防止内网主动向外发送数据
#iptables -P FORWORD DROP ----转发数据,一般linux在做路由器的时候设置
如果设置nat表
iptables -t nat -P PREROUTING DROP
=======================================================================================================
基本的定义完成了然可以定义详细规则了,基本命令为
#iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP|REJECT|LOG]
-AI 链名:针对哪个链表制定规则
-A :增加一条规则,该规则增加到最后一条。
-I :插入一条规则,个i规则增加到第一条,但是如果写了条目号,则插入对应条目,以下的依次下移
如:iptables -I INPUT 2 -s 192.168.3.119 -i eth0 -p icmp -j ACCEPT ----这样会在第二条插入一条:eth0接收192.168.3.119的icmp入站请求
-io 网络接口:设定封包进出的规则
-i:封包所进入的那个网络接口;需要与INPUT链配合使用
-o:封包锁传出的那个网络接口;需要与OUTPUT链配合使用
-p 协议:针对哪类协议
设定针对那类数据包:tcp udp icmp以及all(前面加!代表拒绝此类)
-s 来源ip/netmask:针对哪些来源网络主机或网段(不含netmask表示主机;前面加!代表拒绝此类)
-d 目标ip/netmask:针对哪些目的网络主机或网段(不含netmask表示主机;前面加!代表拒绝此类)一般与OUTPUT配合
-j 动作:针对以上条件所要实现的动作(接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG))
iptables -A INPUT -s 192.168.3.119 -i eth0 -p icmp -j LOG ----将进入eth0源IP为192.168.3.119的icmp协议全部记录下来(保存在/var/log/messages)
=======================================================================================================
针对TCP/UPD的端口设置
#iptables [-AI 链] [-io 网络接口] [-p tcp,udp] [-s 来源IP/网域] [--sport 埠口范围] [-d 目标IP/网域] [--dport 埠口范围] -j [ACCEPT|DROP|REJECT]
--sport 源端口范围:限制源端口的端口号码,可以是一段如:1:1024
--dport 目的端口范围:限制目的端口号码,可以为一段
如:# iptables -A INPUT -i eth0 -p udp --dport 137:139 -j ACCEPT ----接收eth0的udp端口为137,138,139的访问
但是以上两个参数必须在有-p udp或者-p tcp参数的命令里出现,并且可以使用--syn来对tcp的主动连接进行管控
=======================================================================================================
这里告诉大家个小秘密,如果对端主机禁止了icmp协议那么你ping他他一定不会返回任何信息,但是如果对方只是禁止了icmp的type=8则在抓包工具会发现收到 icmp数据包,并且type=3 code=3 所以 你懂的
=======================================================================================================
那么下面就把禁止关于icmp的类型8的命令拿出来
#iptables -A INPUT [-p icmp] [--icmp-type 类型] -j ACCEPT
--icmp-type :后面必须要接 ICMP 的封包类型(如:echo request(类型8)),也可以使用代号
例如: #iptables -A INPUT -p icmp --icmp-type 8 -j DROP ----禁止icmp的type=8的数据包进入
=======================================================================================================
iptables基础基本就这些,下面将会介绍进阶阶段的iptables使用和iptables与一些模块的配合
参考资料:鸟哥私房菜
www.baidu.com
www.google.com
man iptables
感谢百度文库,感谢谷歌翻译,感谢所有共享资料的大神感谢鸟哥,感谢CN哥,感谢容器哥,感谢冰冰,感谢三哥,感谢假胸,感谢linux群里的各位大神
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这里先说一条原则:iptables总是匹配最上层的,如果上层匹配成功,下面的策略则忽略
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
iptable -L(如果加-t nat 则查看nat表,如果不加则查看filter表)
首先要了解3个链表
INPUT OUTPUT FORWARD区别
1. 如果数据包的目的地址是本机,则系统将数据包送往Input链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
2. 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往Forward链。如果通过规则检查,则该包被发给相应的本地进程处理; 如果没有通过规则检查,系统就会将这个包丢掉。
3. 如果数据包是由本地系统进程产生的,则系统将其送往Output链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
========================================================================================================
查看信息的各项功能说明
- target:代表进行的动作, ACCEPT 是放行,而 REJECT 则是拒绝,此外,尚有 DROP (丢弃) 的项目!
- prot:代表使用的封包协议,主要有 tcp, udp 及 icmp 三种封包格式;
- opt:额外的选项说明
- source :代表此规则是针对哪个『来源 IP』进行限制?
- destination :代表此规则是针对哪个『目标 IP』进行限制?
也可以使用iptables-save查看详细规则 ,这里看到的规则和配置文件里的规则一样
=======================================================================================================
对iptables进行配置
一般首先需要删除原有配置
iptables -F ----清空所有的已定的规则
iptables -X ----清空掉所有自定义的chain
iptables -Z ----chain计数器设置为0
然后定义策略将相关的链默认设置成drop
格式为
#iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
-P:定义策略policy
ACCESS:代表默认允许
DROP:代表默认拒绝
例如:
#iptables -P INPUT DROP ----进站数据默认拒绝,一般用于防外网
#iptables -P OUTPUT DROP ----出站数据默认拒绝,防止内网主动向外发送数据
#iptables -P FORWORD DROP ----转发数据,一般linux在做路由器的时候设置
如果设置nat表
iptables -t nat -P PREROUTING DROP
=======================================================================================================
基本的定义完成了然可以定义详细规则了,基本命令为
#iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP|REJECT|LOG]
-AI 链名:针对哪个链表制定规则
-A :增加一条规则,该规则增加到最后一条。
-I :插入一条规则,个i规则增加到第一条,但是如果写了条目号,则插入对应条目,以下的依次下移
如:iptables -I INPUT 2 -s 192.168.3.119 -i eth0 -p icmp -j ACCEPT ----这样会在第二条插入一条:eth0接收192.168.3.119的icmp入站请求
-io 网络接口:设定封包进出的规则
-i:封包所进入的那个网络接口;需要与INPUT链配合使用
-o:封包锁传出的那个网络接口;需要与OUTPUT链配合使用
-p 协议:针对哪类协议
设定针对那类数据包:tcp udp icmp以及all(前面加!代表拒绝此类)
-s 来源ip/netmask:针对哪些来源网络主机或网段(不含netmask表示主机;前面加!代表拒绝此类)
-d 目标ip/netmask:针对哪些目的网络主机或网段(不含netmask表示主机;前面加!代表拒绝此类)一般与OUTPUT配合
-j 动作:针对以上条件所要实现的动作(接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG))
iptables -A INPUT -s 192.168.3.119 -i eth0 -p icmp -j LOG ----将进入eth0源IP为192.168.3.119的icmp协议全部记录下来(保存在/var/log/messages)
=======================================================================================================
针对TCP/UPD的端口设置
#iptables [-AI 链] [-io 网络接口] [-p tcp,udp] [-s 来源IP/网域] [--sport 埠口范围] [-d 目标IP/网域] [--dport 埠口范围] -j [ACCEPT|DROP|REJECT]
--sport 源端口范围:限制源端口的端口号码,可以是一段如:1:1024
--dport 目的端口范围:限制目的端口号码,可以为一段
如:# iptables -A INPUT -i eth0 -p udp --dport 137:139 -j ACCEPT ----接收eth0的udp端口为137,138,139的访问
但是以上两个参数必须在有-p udp或者-p tcp参数的命令里出现,并且可以使用--syn来对tcp的主动连接进行管控
=======================================================================================================
这里告诉大家个小秘密,如果对端主机禁止了icmp协议那么你ping他他一定不会返回任何信息,但是如果对方只是禁止了icmp的type=8则在抓包工具会发现收到 icmp数据包,并且type=3 code=3 所以 你懂的
=======================================================================================================
那么下面就把禁止关于icmp的类型8的命令拿出来
#iptables -A INPUT [-p icmp] [--icmp-type 类型] -j ACCEPT
--icmp-type :后面必须要接 ICMP 的封包类型(如:echo request(类型8)),也可以使用代号
例如: #iptables -A INPUT -p icmp --icmp-type 8 -j DROP ----禁止icmp的type=8的数据包进入
=======================================================================================================
iptables基础基本就这些,下面将会介绍进阶阶段的iptables使用和iptables与一些模块的配合