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服务

linux 防火墙 iptables

关闭firewalld服务,开启iptables服务

linux 防火墙 iptables

linux 防火墙 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表)

linux 防火墙 iptables


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

service iptables save      保存当前策略

linux 防火墙 iptables


1.filter表丢弃所有

无法访问http

linux 防火墙 iptables


2.filter表通过所有

可以正常访问

linux 防火墙 iptables


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

linux 防火墙 iptables



4.允许lo

linux 防火墙 iptables

允许172.25.254.228访问22端口

linux 防火墙 iptables



5.允许访问80端口

linux 防火墙 iptables


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

linux 防火墙 iptables


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

linux 防火墙 iptables



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

linux 防火墙 iptables


9.iptables -N WESTOS     增加链WESTOS

linux 防火墙 iptables


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

linux 防火墙 iptables


11.iptables -X redhat   删除redhat 链

linux 防火墙 iptables



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

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
拒绝所有主机数据来源

linux 防火墙 iptables

linux 防火墙 iptables

linux 防火墙 iptables

linux 防火墙 iptables

linux 防火墙 iptables

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


五.vsftp在iptables开启下的设置

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


解决方案:

linux 防火墙 iptables

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

linux 防火墙 iptables


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

linux 防火墙 iptables


3.关闭SElinux

linux 防火墙 iptables


4.可以登陆ftp

linux 防火墙 iptables


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

linux 防火墙 iptables

无法登陆ftp

linux 防火墙 iptables


六.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的设置

linux 防火墙 iptables

linux 防火墙 iptables


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

linux 防火墙 iptables


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

linux 防火墙 iptables

linux 防火墙 iptables


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

linux 防火墙 iptables

linux 防火墙 iptables

重新加载

linux 防火墙 iptables


(5)数据出去伪装测试

客户端可以ping通真机172.25.254.28

linux 防火墙 iptables

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

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

linux 防火墙 iptables


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

linux 防火墙 iptables

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


真机到客户机

目的地址转换

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

linux 防火墙 iptables

linux 防火墙 iptables