Linux的防火墙iptables

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux的防火墙iptables

技术小胖子 2017-11-08 14:55:00 浏览818
展开阅读全文

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

wKioL1mVsL-A__TqAAsICdNSMX8148.png

wKioL1mVsMKwpcW8AAYYuPt_U9c681.png

wKiom1mVsMaQ2bnaAAZ9-Eb96DQ427.png


二.安装启动iptable服务

wKiom1mVsR6wB2RCAAAlMrRyZE4442.png

关闭firewalld服务,开启iptables服务

wKioL1mVsR2SBITXAAAztmTxHN4949.png

wKiom1mVsSDhlo5FAAD_-tbWCX8848.png


三.参数解释用法

   

    -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表)

wKioL1mVsXfAsbKbAAENCOcOnrg730.png


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

service iptables save      保存当前策略

wKiom1mVsXnzrUfgAADUAM4BFqk879.png


1.filter表丢弃所有

无法访问http

wKiom1mVsXqg2AKdAAEia3DQSfY563.png


2.filter表通过所有

可以正常访问

wKioL1mVsXrx5rpsAAFaJsPikcY801.png


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

wKioL1mVsYrgUihfAAE1H55esZw094.png



4.允许lo

wKiom1mVsYzTgwyPAAB_QhbAkGQ818.png

允许172.25.254.228访问22端口

wKiom1mVsY7QtV8gAAIMQ5d3-uw528.png



5.允许访问80端口

wKioL1mVsYuRjgJEAAH8dnfSR-c428.png


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

wKioL1mVsY3hqxejAAGptB0UKO0715.png


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

wKioL1mVs7-iEWpXAAGwyY7M43A022.png



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

wKioL1mVs7-y9Ih2AAGH0B1X7rc777.png


9.iptables -N WESTOS     增加链WESTOS

wKiom1mVs8Gh8OuvAAFQ7Grahcs584.png


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

wKiom1mVs8LTd3Q-AAEIZosnkP8127.png


11.iptables -X redhat   删除redhat 链

wKioL1mVs8Hin5Y1AADuqUR83p0307.png



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

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

wKiom1mVtLLSIaZzAAHcul9fvuU682.png

wKioL1mVtLGgCgWsAAAcz5ODhN0430.png

wKioL1mVtLKzlziAAAGUf0h2A8U036.png

wKiom1mVtTjzpNSJAABWiVx5VRU222.png

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


五.vsftp在iptables开启下的设置

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


解决方案:

wKioL1mVtTiQK5F4AAA5JAiMPEg698.png

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

wKioL1mVtTezn3ivAAB696s3vpY598.png


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

wKiom1mVtTryxCfzAAAtO9x3tm0557.png


3.关闭SElinux

wKioL1mVtTiDp_L2AAAXDZ_L1xg084.png


4.可以登陆ftp

wKiom1mVtTqC-U9xAAAyMQ5QhRQ492.png


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

wKioL1mVtTnjZeECAACIs_2dJF4157.png

无法登陆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

wKiom1mVtaihPE5IAACWQo-3J0o583.png


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

wKioL1mVtafx4LHoAAAwwtbaF1s794.png


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

wKiom1mVtamSPaKgAAA2zH6m0vs718.png

wKioL1mVtarTj4_eAAA4SPxvOIA757.png


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

wKioL1mVtanQ-zQqAAFzWLFoxP0189.png

wKioL1mVtamSblDFAABvEQcNyKA165.png

重新加载

wKiom1mVtauQWaoiAAAeB9sAeMc441.png


(5)数据出去伪装测试

客户端可以ping通真机172.25.254.28

wKiom1mVtayzB1MLAACjh4NimKw859.png

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

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

wKiom1mVta2gbB5cAAFinOSpuag756.png


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

wKioL1mVtayh_5kWAAB4vzJSu0s309.png

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


真机到客户机

目的地址转换

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

wKioL1mX2O6C1lB9AAAtNRJBlvk009.png

wKioL1mVta2z6rKiAAEOY6vYKiU213.png







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






网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注