Linux学习笔记之iptables

1.       linux中的防火墙。

Linux中的防火墙机制是基于内核的,称为netfilter。为linux防火墙的内核态。

iptables是一个位于应用层的,提供一系列的接口给用户,以方便用户设置,操作主机的防火墙。位于/etc/iptables,用来管理防火墙的。Linux上的防火墙是一种基于包过滤的的防火墙,所以他工作在网络层。

2iptables的结构。

关于linux中防火墙的管理。它提供了4张表,每张表又有各自的链选择,以适应不同的数据包流量的过滤要求。

A, 规则表

具有某一类相似用途的防火墙规则,按不同处理时机分到不同的规则链以后,被归置到不同表中。规则表式规则链的集合。

默认有4个规则表。

Raw表:确定是否对该数据包进行跟踪

Mangle表:为数据包设置标记。

Nat表:修改数据包中的源或者目标IP地址或者端口,以达到数据包伪装的目的

Filter表:确定是否放行该数据包。

B,规则链

用于对数据包进行处理。

默认的5中规则链

INPUT:处理人站的数据包

OUTPUT:处理出站的数据包

FORWARD:处理转发的数据包

PREROUTING:在路由选择前处理数据包

POSTROUTING在路由选择后处理数据包

关于数据包过滤匹配流程如下。

 

3iptables的命令语法格式

Iptables [-t ] 表名 命令 链名 匹配条件 –j 动作

注意,不指定表名,默认是filter

      不指定链名,默认是表内的所有链。

      设置完一定要保存,否则重启就没了。

 Iptables的命令参数 –F  清除说有链的规则

                   -P   设置默认的规则

                   -N   增加一条新链

                               -D   删除一条规则

                   -L   列出表的规则(无表,默认是filter表)、

                               -A   在该链末尾增加一条规则

                                   -I   在该链的开始插入一条规则

                   -X   删除自己添加的链

动作:ACCEPT 通过       REJECT丢弃但发生一个ICMP提示       DROP丢弃

匹配条件:包括网络协议,IP地址,网络接口,计算机端口,ICPM类型,多端口,MAC地址,IP地址范围,数据包状态等。

-p 协议名          可以匹配一些常用协议如tcpudpicmp

Iptables –A INPUT –p tcp –j ACCEPT

Iptables –A INPUT –i eth0 –s 192.168.16.5 –j DROP

Iptables –A INPUT –o eth1 –d 61.54.15.15 –j DROP

--sport  源端口             --dport  目的端口

Iptables –A INPUT –p tcp –dport 53 –j ACCEPT    

Iptables –A INPUT –p icmp –icmp-type any –j ACCEPT

对数据包的状态进行控制:NEW 新连接

ESTABLISHED 已建立的连接

RELATED      需要开启新的连接如FTP

INVALID        无效的连接

需要模块:ip_conntrack_ftp

          Ip_conntrack_tftp

          Ip_nat_ftp

          Ip_nat_tftp

Iptables –A INPUT –p tcp –m state –state ESTABLISHED,RELATED –j ACCEPT

 

 

IptablesNAT应用。

SNAT。用于源IP地址转换,常用于内网环境,私网IP转换为公网IP

DNAT,用于目的地址转换,常用于企业生产环境,发布业务。从外网访问企业服务。

SNAT的例子:Iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –o ppp0 –j MASQUERADE

或者iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j SNAT –to-source 2.2.2.2

DNAT的例子:iptables –t nat –A PREROUTING –i eth0 –d 2.2.2.52 –p tcp –dport –j DNAT –to-destination 192.168.165.2

还可以修改目标的端口号:iptables –t nat –A PREROUTING –i eth0 –d 22.22..22.22 –p tcp –dport 80 –j DNAT –-to-destination 192.168.16.5.:8080