Linux学习笔记之iptables
1. linux中的防火墙。
Linux中的防火墙机制是基于内核的,称为netfilter。为linux防火墙的内核态。
而iptables是一个位于应用层的,提供一系列的接口给用户,以方便用户设置,操作主机的防火墙。位于/etc/iptables,用来管理防火墙的。Linux上的防火墙是一种基于包过滤的的防火墙,所以他工作在网络层。
2,iptables的结构。
关于linux中防火墙的管理。它提供了4张表,每张表又有各自的链选择,以适应不同的数据包流量的过滤要求。
A, 规则表
具有某一类相似用途的防火墙规则,按不同处理时机分到不同的规则链以后,被归置到不同表中。规则表式规则链的集合。
默认有4个规则表。
Raw表:确定是否对该数据包进行跟踪
Mangle表:为数据包设置标记。
Nat表:修改数据包中的源或者目标IP地址或者端口,以达到数据包伪装的目的
Filter表:确定是否放行该数据包。
B,规则链
用于对数据包进行处理。
默认的5中规则链
INPUT:处理人站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
PREROUTING:在路由选择前处理数据包
POSTROUTING在路由选择后处理数据包
关于数据包过滤匹配流程如下。
3,iptables的命令语法格式
Iptables [-t ] 表名 命令 链名 匹配条件 –j 动作
注意,不指定表名,默认是filter表
不指定链名,默认是表内的所有链。
设置完一定要保存,否则重启就没了。
Iptables的命令参数 –F 清除说有链的规则
-P 设置默认的规则
-N 增加一条新链
-D 删除一条规则
-L 列出表的规则(无表,默认是filter表)、
-A 在该链末尾增加一条规则
-I 在该链的开始插入一条规则
-X 删除自己添加的链
动作:ACCEPT 通过 REJECT丢弃但发生一个ICMP提示 DROP丢弃
匹配条件:包括网络协议,IP地址,网络接口,计算机端口,ICPM类型,多端口,MAC地址,IP地址范围,数据包状态等。
-p 协议名 可以匹配一些常用协议如tcp,udp,icmp
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
Iptables的NAT应用。
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
转载于:https://blog.51cto.com/liran728729/566870