IPTABLES学习心得

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IPTABLES学习心得

Blog:

Iptables是管理Netfilter的唯一工具,Netfilter直接嵌入在Linux内核。他可以为个人工作站创建一个防火墙,也可以为一个子网创建防火墙,以保护其他的系统平台(市场上有很大一部分硬件防火墙也是使用iptables系统的)。

Netfilter在内核中过滤,没有守护进程,在OSI模型的第2、3、4层插入策略。过滤的速度非常快,因为他只读取数据包头,不会给信息流量增加负担,也无需进行验证。Netfilter提供了一系列的表(tables),每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。实际上netfilter 是表的容器,表是链的容器,而链又是规则的容器。

Netfilter表和Netfilter链:

表说明:

Filter:这个表主要执行数据包过滤。

Nat:主要进行网络地址转换。

Managle:用于修改一些特殊的规则。

链说明:

PREROUTING:路由之前,刚到达的数据包。(nat)

INPUT:通过路由,目的为地为本机的数据包。(filter)

FORWARD:需要通过本地系统进行转发的数据包。(filter)

OUTPUT:由本机产生,向外转发,处于POSTROUTING之前的数据包。(nat和filter)POSTROUTIONG:通过路由后,即将离开系统的数据包。(nat)

Netfilter的数据包流程:

Iptables 基本语法:

iptables 内置了filter、nat 和mangle 三张表,我们可以使用-t 参数来设置对哪张表生效,也可以省略-t 参数,则默认对filter 表进行操作。

图中:这句的意思就是:来自(源地址)192.168.0.1的INPUT链的数据包直接丢弃。Iptables进程服务命令:

service iptables save 保存iptables设置,对iptables规则编辑后一定要保存。

service iptables restart 保存设置以后不重启则设置不生效,要设置生生效请重启。service iptables status 检查iptables的设置。类似于iptable –L命令。

Iptables基本的链操作命令:

-L 列出某个链或者表中的规则:service iptables status 把这个命令和-L比较下iptables –L:显示filter表中的规则等同于iptables –t filter -L

iptables –t nat –L :显示nat表的中的设置:

-F 删除某个链或者表中的规则:

iptables –F (iptables –t filter –F) 删除filter表中的所有规则;

iptables –t nat –F 删除nat表中的所有规则;

iptables –t nat –F POSTROUTING 删除nat表中POSTROUTING链的所有规则;

-A添加一条规则(在当前的规则后添加,也就是排在所有规则后):

iptables -A INPUT –s 192.168.0.1 –j DROP

和实例图中的功能相同,丢弃来自192.168.0.1的数据包,这里省略了-t filter。

添加该语句后,保存设置并重新启动iptalbes 服务,并通过-L的命令查看,就会发现刚添加的这条规则排列在所有规则后。

-----------iptables的匹配规则是按顺序排列的。

-I在制定位置插入一条规则:

(如果有回环规则(iptables –A INPUT –I lo –j ACCEPT,则回环永远是第一条)iptables –I 作为第一条规则插入。

iptables X 作为第X条规则插入,X这里代表规则顺序号。

iptables –A INPUT –p tcp –s 192.168.0.1 --dport 22 –j ACCEPT

允许192.168.0.1 通过22端口访问该主机,把它作为第一条规则插入iptables规则列表。-----------iptables的匹配规则是按顺序排列的。

-P 分配连接策略。

iptables –P INPUT DROP 禁止任何输入的数据包。这句慎用。

iptables –P OUTPUT ACCEPT 允许所有输出的数据包。

-D删除某一条规则:

Iptables –D X 删除某个链的第几条规则

iptables –D INPUT 3 删除INPUT链上的第3条规则。

iptables –P INPUT DROP 这个不能使用删除语句删除,只能到本机输入iptables –P INPUT ACCEPT

Iptables中的匹配:

iptables –A INPUT –p tcp –s 192.168.0.1 --dport 22 –j ACCEPT

这个命令我们在上面已经看过了,我们来看下其他的一些匹配参数。

-p protocol 匹配网络协议,例子中匹配tcp协议。

-s IP地址或者网段匹配源IP地址或者网段

例子中师匹配一个IP的,如果要匹配一个网段则如下

-s 192.168.0.1/24

如果是除这个网段之外的所有则为:! -s 192.168.0.1/24

如果是除这个IP之外的所有则为:! -s 192.168.0.1

-d IP地址或者网段匹配目的IP地址或者网段

--dport X 匹配目的端口号,X代表具体端口号。

--sport X 匹配源端口号,X代表具体端口号。

Iptables中的目的:

我们已经在前面看到过-j 后面跟的就是目的。

ACCEPT:允许数据包通过。

DROP:直接丢弃数据包。

REJECT:丢弃数据包,同时发送响应报文通知发送方。

设置Iptables预设规则(本地机防火墙):

1、清除iptables设置:iptables –F

2、设置回环规则,没有这个规则好多服务不能启动:

iptables –A INPUT –i lo –j ACCETP

3、连接跟踪设置:作用允许连线出去后对方主机回应进来的封包。

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT NEW:想要新建连接的数据包

INVALID:无效的数据包,例如损坏或者不完整的数据包

ESTABLISHED:已经建立连接的数据包

RELATED:与已经发送的数据包有关的数据包

4、iptables -p INPUT DROP 允许进入数据包----慎用该句。

5、iptables -p FORWARD DROP 禁止转发数据包

6、iptables -P OUTPUT ACCEPT允许外发数据包

7、设置好以后就可以根据情况开放相应的端口了

iptables –A INPUT –p tcp --dport 20:21 –j ACCEPT 开放FTP的20、21端口。iptables –A INPUT –P tcp --dport 80 –j ACCEPT开放http的80端口。

iptables –I INPUT –p tcp –dport 22 –j ACCEPT开放SSH服务的22端口。

设置Iptables FORWORD规则:

一般情况FORWORD链式DROP的,但是当用来做NAT的时候我们就需要设置他了。首先要开启转发功能:编辑/etc/sysctl.conf文件

相关文档
最新文档