Linux的防火墙iptables

一.iptables简介

iptables是与Linux内核集成的过滤防火墙系统,其中包含三表(filter表,nat表,mangle表)、五链(INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING)

nat表:Nat 表主要用于网络地址转换。根据表中的每一条规则修改网络包的IP地址。流中的包仅遍历一遍Nat表。例如,如果一个通过某个接口的包被修饰(修改了IP地 址),该流中其余的包将不再遍历这个表。通常不建议在这个表中进行过滤,由NAT表支持的链称为PREROUTING 链,POSTROUTING 链和OUTPUT 链。

mangle表:这个表用于校正网络包。它用来对特殊包的包头和内容(TTL,TOS,MARK)进行标记修改。Mangle表不能用于地址伪装。支持的链包括PREROUTING链,OUTPUT链,Forward链,Input链和POSTROUTING链

filter表:如果没有定义任何规则,Filter表则被当作默认的表,并且基于它来过滤。它用来访问控制,规则匹配,过滤网络包。支持的链有INPUT 链,OUTPUT 链,FORWARD 链。

二.安装启动iptable服务

关闭firewalld服务,开启iptables服务

三.参数解释用法

-t     指定表名称

-n     不作解析

-L     列出指定表中的策略

-A     增加策略

-p     网络协议

--dport  端口

-s     数据来源

-j     动作

ACCEPT     允许

REJECT   拒绝

DROP     丢弃

-N         增加链

-E     修改链名称

-X     删除链

-D     删除指定策略

-I       插入

-R     修改策略

-P     修改默认策略

查看iptables列表

iptables -t filter -nL          查看filter表中的策略(不加-t则默认为filter表)

iptables -F                         刷掉filter表中的测量,当没有用-t指定表名称时默认为filter

service iptables save      保存当前策略

1.filter表丢弃所有

无法访问http

2.filter表通过所有

可以正常访问

3.iptables -A INPUT -j REJECT             拒绝所有主机的数据来源

4.允许lo

允许172.25.254.228访问22端口

5.允许访问80端口

6. iptable -D INPUT 3     删除INPUT链中的第二条策略

7.iptables -D INPUT  -p tcp --dport 80  -j REJECT 删除允许接入80端口的策略

8.iptables -R INPUT 1 -s 172.25.254.228-p tcp --dport 80 -j ACCEPT     修改第一条策略

9.iptables -N WESTOS     增加链WESTOS

10.iptables -E WESTOS redhat     改变链名称

11.iptables -X redhat   删除redhat 链

四.数据包状态策略(缓解压力,提高速度)

iptables -A INPUT -m state --state RELATED,ESTABLISHED  -j ACCEPT

允许RELATED,ESTABLISHED状态通过

iptables -A INPUT -i lo -m state --state NEW -j ACCEPT

允许lo回环接口状态为NEW通过

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

允许访问端口22状态为NEW通过

iptables -A INPUT -j REJECT

拒绝所有主机数据来源

该策略第一次通过后状态会变为RELATED或ESTABLISHED,此后访问时直接通过iptables,不会给iptables带来访问压力

五.vsftp在iptables开启下的设置

ftp主动模式下会随机打开一个大于1024的端口,所以开启防火墙后会被禁掉,无法正常使用

解决方案:

1.修改ftp端口为固定端口7000

2.添加iptables允许通过7000端口策略

3.关闭SElinux

4.可以登陆ftp

如果取消设置ftp固定端口设置

无法登陆ftp

六.iptables的伪装

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.128

iptables -t nat -A PREROUTING  -i eth0 -j DNAT --to-dest 172.25.0.228

环境配置

服务端两块网卡   eth0 172.25.254.128

eth1 172.25.0.128

客户端IP 172.25.0.228

真机         172.25.254.28

客户端到真机

路由转发:

(1)保存清空iptables的设置

(2)设置从客户端到从服务端eth0出去的数据伪装成源数据为172.25.254.128

(3)配置客户端的网关为172.25.0.128

(4)启动内核路由转发功能

重新加载

(5)数据出去伪装测试

客户端可以ping通真机172.25.254.28

(6)在客户端ssh连接真机后

显示登陆用户为www.westos.com

通过查看hosts的解析,知道www.westos.com为服务端的主机名

(7)客户端数据出去伪装成功

真机到客户机

目的地址转换

(1)设置将真机从服务端eth0进去的数据伪装成源数据为172.25.0.228

本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1957204,如需转载请自行联系原作者

上一篇:Juniper防火墙 session 过高问题
下一篇:rhel6+nginx+php+php-fpm 防火墙配置问题