一.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 链。

Linux的防火墙iptables_第1张图片

Linux的防火墙iptables_第2张图片

Linux的防火墙iptables_第3张图片



二.安装启动iptable服务

wKiom1mVsR6wB2RCAAAlMrRyZE4442.png

关闭firewalld服务,开启iptables服务

wKioL1mVsR2SBITXAAAztmTxHN4949.png

Linux的防火墙iptables_第4张图片


三.参数解释用法

   Linux的防火墙iptables_第5张图片

    -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_第6张图片


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

service iptables save      保存当前策略

Linux的防火墙iptables_第7张图片


1.filter表丢弃所有

无法访问http

Linux的防火墙iptables_第8张图片


2.filter表通过所有

可以正常访问

Linux的防火墙iptables_第9张图片


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

Linux的防火墙iptables_第10张图片



4.允许lo

Linux的防火墙iptables_第11张图片

允许172.25.254.228访问22端口

Linux的防火墙iptables_第12张图片



5.允许访问80端口

Linux的防火墙iptables_第13张图片


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

Linux的防火墙iptables_第14张图片


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

Linux的防火墙iptables_第15张图片



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

Linux的防火墙iptables_第16张图片


9.iptables -N WESTOS     增加链WESTOS

Linux的防火墙iptables_第17张图片


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

Linux的防火墙iptables_第18张图片


11.iptables -X redhat   删除redhat 链

Linux的防火墙iptables_第19张图片



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

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

wKioL1mVtLDBiImkAAAtdOMD7LA856.png

Linux的防火墙iptables_第20张图片

wKioL1mVtLGgCgWsAAAcz5ODhN0430.png

Linux的防火墙iptables_第21张图片

wKiom1mVtTjzpNSJAABWiVx5VRU222.png

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


五.vsftp在iptables开启下的设置

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


解决方案:

wKioL1mVtTiQK5F4AAA5JAiMPEg698.png

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

Linux的防火墙iptables_第22张图片


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

wKiom1mVtTryxCfzAAAtO9x3tm0557.png


3.关闭SElinux

wKioL1mVtTiDp_L2AAAXDZ_L1xg084.png


4.可以登陆ftp

wKiom1mVtTqC-U9xAAAyMQ5QhRQ492.png


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

Linux的防火墙iptables_第23张图片

无法登陆ftp

wKioL1mVtVjCIa5zAAA2qJOrmCs134.png


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

wKiom1mVtaiRzglBAABLScJBhf8928.png

Linux的防火墙iptables_第24张图片


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

wKioL1mVtafx4LHoAAAwwtbaF1s794.png


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

Linux的防火墙iptables_第25张图片

wKioL1mVtarTj4_eAAA4SPxvOIA757.png


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

Linux的防火墙iptables_第26张图片

Linux的防火墙iptables_第27张图片

重新加载

wKiom1mVtauQWaoiAAAeB9sAeMc441.png


(5)数据出去伪装测试

客户端可以ping通真机172.25.254.28

Linux的防火墙iptables_第28张图片

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

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

Linux的防火墙iptables_第29张图片


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

wKioL1mVtayh_5kWAAB4vzJSu0s309.png

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


真机到客户机

目的地址转换

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

wKioL1mX2O6C1lB9AAAtNRJBlvk009.png

Linux的防火墙iptables_第30张图片




一般主机常用的配置防火墙场景

例:出全开,进开启需要的端口


设置iptables三条链上的过滤规则,进的全封,出的都不封

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP


1.开放本地回环接口

iptables -A INPUT -i lo -j ACCEPT


2.数据库状态检测与跟踪

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


3.对外开放80 22,10-21之间端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

image.png


4.允许icmp通过

image.png


5.其他进来的都不允许

image.png


6.允许本地已经建立监听的包能够回来

image.png


7.只允许指定ip访问80

image.png


Linux的防火墙iptables_第31张图片

Linux的防火墙iptables_第32张图片

当发送10个icmp (ping)请求后,进行限制,变为每分钟1条ping请求

image.png