博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables学习笔记
阅读量:6266 次
发布时间:2019-06-22

本文共 2743 字,大约阅读时间需要 9 分钟。

iptables是编写netfilter规则的工具。

一般情况下,升级kernel可顺便升级netfilter模块。

连接追踪模块是xt_state.ko.

TCP/IP的状态有12种,而iptables关于连接的状态只有4种:Established,New,Related,Ivalid.

Established的状态定义为,只要封包能成功穿越防火墙,之后所有相关的封包就都是Established.当然,封包能成功穿越防火墙的前提是有相应的Iptables规则允许。

iptables -A INPUT -m state --state Established -j ACCEPT

New则与协议完全无关,其指每连接的第一个封包。

ICMP消息类型有type 8: request echo; type 0: echo reply; type11: Time to live exceeded

Related是指被动产生的响应包,而且这个封包不属于现有任何连接的封包,其与协议无关。

Invalid是指状态不明的包,如何区别于NEW包?

iptables -A INPUT -p all -m state --state INVALID -j DROP

修改完netfilter规则后使用service iptables save指令就可以把netfilter存储到/etc/sysconfig/iptables文件内。

另外,使用shell script管理iptables规则的好处有:

  1. 可使用变量。2.方便修改。3.规则易阅读。4.备份方便。

可将脚本放入/etc/rc.d/rc.local文件中。

变化的外网口IP怎么办?用MASQUERADE

iptables -A PREROUTING -t nat -o eth0 -s 192.168.0.0/24 -j MASQUERADE

NAT要与filter机制结合才能使服务主机得到真正的安全。

Mangle表的作用一般有:

  1. 修改IP包头的TTL值,windows默认128,linux默认64.

  2. 修改IP包头的DSCP值或对特定的封包设定特征。

iptables -t mangle -A OUTPUT -p tcp --dport 22 -j DSCP --set-dscp 43

iptables -t mangle -A FORWARD -p tcp --sport 80 -j DSCP --set-dscp 1

不管是filter, nat, mangle, raw, 它们的chain都是各自独立的。

有了netmap处理方法,无论要对应的是classC, classB, 或是classA网段,通通只要两条规则就搞定了。

iptables -t nat -A PREROUTING -i eth0 -d 10.0.0.0/24 -j NETMAP --to 192.168.1.0.24

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j NETMAP --to 10.0.0.0/24

iptables-save [-c] [-t table] 

iptables-restore [-c] [-n]

iptables-save > /etc/iptables-save

iptables-restore < /etc/iptables-save

PREROUTING链的作用是在包刚到达防火墙时改变它的目的地址。如果需要的话,OUTPUT链改变本地产生的包的目的地址。

POSTROUTING链在包就要离开防火墙之前改变其源地址。

MANGLE表不能做任何NAT,它只是改变数据包的TTL, TOS, 或MARK, 而不是源地址。

-Z 计数器清零

-N 用用户自定义链

-X 删除自定义链

-E rename chain

-i 参数只能用于INPUT,FORWARD,和PREROUTING这三个链,用在其他地方会提示错误信息。

请注意,protocol tcp必须在TCP匹配器(match)的左边。

iptables -p tcp --tcp-flags ALL NONE 匹配所有标记都未置1的包。一般而言,对于iptables/netfilter甚至是许多防火墙,调试或多或少都是必须的。99%的防火墙问题都是因为认为的策略造成的,我可以保证,你写规则的时候极其容易犯错误,而且很多少时候这些错误通过肉眼很难定位。

Netfilter匹配方式,内建匹配方式有 -p -i -s -d 等等

模块匹配方式:

  1. TCP/UDP协议高级匹配。--dport和--sport一次最多可以匹配两个port,如--dport 21:22

  2. TCP flags的匹配

连接追踪文件的位置:/proc/net/ip/contrack 模块为ip_contrack.ko

/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent

pkttype 数据包类型:

iptables -A FORWARD -i eth0 -p icmp -m pkttype --ptt-type broadcast -j DROP

iptables -A INPUT -p icmp --icmp-type 8 -m length --length 92 -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 6/m --limit-burst 10 -j ACCEPT

recent模块:

string是由xt_string.ko模块提供匹配,string可以在网络层提供数据内容,而无需将封包送到应用层的位置才行,但它只能局限于单一封包,无法匹配分散在不同封包的内容。

iptables -A FORWARD -p tcp -d $mail_server --dport 25 -j QUEUE(交给user space)

log 模块只记录,不匹配进行操作, 记录的日志默认放在/var/log/message内

--log-level --log-prefix --log-tcp-sequence --log-tcp-options --log-ip-options --log-uid

本文转自 拾瓦兴阁 51CTO博客,原文链接:http://blog.51cto.com/ponyjia/1635307

转载地址:http://iicpa.baihongyu.com/

你可能感兴趣的文章
Spring 之 AOP
查看>>
软件项目管理|期末复习(二)
查看>>
直接调用VS.net2005中的配置界面
查看>>
程序员的自我修养五Windows PE/COFF
查看>>
关于字符集,编码格式,大小端的简单总结
查看>>
js string 转 int Number()
查看>>
课堂练习:ex 4-20
查看>>
20155328 2016-2017-2 《Java程序设计》 第8周学习总结
查看>>
python操作redis--string
查看>>
echarts图表初始大小问题及echarts随窗口变化自适应
查看>>
Inherits、CodeFile、CodeBehind的区别
查看>>
创建一个SimpleDlg
查看>>
使用XML生成菜单
查看>>
udp,tcp对于socket的写法
查看>>
第二周个人赛
查看>>
推断Windows版本号新方法
查看>>
2017-4-18 ADO.NET
查看>>
RSuite 一个基于 React.js 的 Web 组件库
查看>>
技术博客网址收藏
查看>>
python 金融分析学习
查看>>