iptables应用案例分析
实验环境如下:
1)局域网网段:192.168.1.0/24,该网段内有2台服务器和1台客户端
(1)WEB服务器:192.168.1.3/24
(2)FTP服务器:192.168.1.2/24
(3)客户端:192.168.1.5/24
2)局域网与外网之间是通过安装有CentOS的防火墙相连,防火墙有两块网卡
(1)eth0:192.168.1.254/24,它是网段:192.168.1.0/24的网关
(2)eth1:192.168.0.254/24,它模拟为公网IP地址
3)Internet的另一端有一台客户端:192.168.0.5/24
该客户端与防火墙是可以ping的通的
4)网卡的连接方式
FTP服务器的eth0:VMnet1-(Host-only)
WEB服务器的eth0:VMnet1-(Host-only)
Firewall的eth0:VMnet1-(Host-only)
Firewall的eth1:Bridged
client的eth0:VMnet1-(Host-only)
二、相关案例的配置
1、案例1:让192.168.1.0/24这个网段内的所有机子都可以通过防火墙(192.168.1.254)上internet
第1步:做准备工作,让防火墙(192.168.1.254)更安全
#防火墙为ssh server,让其它的客户端能够通过SSH服务连接登录到防火墙
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
#防火墙为ssh client,让它能够连接其它的SSH服务器
iptables -t filter -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
#防火墙为dns client,让它能够解析域名
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
#防火墙为web client,让它能够访问网页
iptables -t filter -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
#让局域网(192.168.1.0/24)内的所有机子都能ping通该防火墙
iptables -t filter -A INPUT -p icmp -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -o eth0 -d 192.168.1.0/24 -j ACCEPT
#修改默认规则
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
#对于防火墙的eth0这块网卡,对来自局域网的所有类型的数据包(源地址是192.168.1.0/24网段的)进行转发到公网
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT(这里不写-i eth0也是可以的)
#对于防火墙的eth1这块网卡,对来自公网的所有类型的数据包(目标是192.168.1.0/24网段的)进行转发到局域网
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT(这里不写-i eth1也是可以的)
第3步:地址转化(由于要访问Internet,所以数据包要出去到外网,应在防火墙的nat表中的POSTROUTING链上写入规则)
modprobe ip_nat(#载入nat表的模块)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.254
或者
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.254(指定哪个接口也是可以的)
iptables -t nat -A POSTROUTING -s 192.168.1.5 -j SNAT --to-source 192.168.0.254(指定只允许192.168.1.5这台机子通过防火墙上网)
2、案例2:通过防火墙限制局域网中的192.168.1.5的下载速度
注意:在案例1的基础上,向filter表的FORWARD链进行写入规则
#要限制下载速度,也就是说要限制从外网进入防火墙且经过FORWARD转发的数据包的数量
将 "iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT" 改为:
iptables -t filter -I FORWARD -i eth1 -d 192.168.1.5 -m limit --limit 50/m --limit-burst 50 -j ACCEPT
注意:ifconfig eth1可查看MTU值为1500字节=1500/1024=1.5KB(即:每个数据包的大小),那么1分钟内最大的下载速度为:50 * 1.5KB = 75KB
for ((i=5;i<10;i++) {
iptables -t filter -I FORWARD -i eth1 -d 192.168.1.$i -m limit --limit 50/m --limit-burst 50 -j ACCEPT(限制局域网的一段IP)
}
3、案例3:公网的那台客户端(192.168.0.5)通过防火墙使用远程桌面连接局域网中的192.168.1.5主机
第1步:做准备工作,与案例1的准备工作一样
第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT
第3步:地址转化
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.5:3389
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.5 -p tcp --sport 3389 -j SNAT --to-source 192.168.0.254:3389
第4步:测试
windows xp(192.168.0.5) -> run -> mstsc -> 192.168.0.254
4、案例4:通过防火墙向公网发布局域网内的WEB服务器
第1步:做准备工作,与案例1的准备工作一样
第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT
第3步:地址转化
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3:80
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.3 -p tcp --sport 80 -j SNAT --to-source 192.168.0.254:80
第4步:测试
windows xp(192.168.0.5) -> run ->http://192.168.0.254
4、案例5:通过防火墙向公网发布局域网内的FTP服务器
第1步:做准备工作,与案例1的准备工作一样
第2步:防火墙上开启数据包的转发功能(即:在filter表的FORWARD链上写入规则)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf && sysctl -p
iptables -t filter -A FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT
第3步:地址转化
(1)FTP服务器:主动模式
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 20 -j DNAT --to-destination 192.168.1.2:20
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 20 -j SNAT --to-source 192.168.0.254:20
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 21 -j DNAT --to-destination 192.168.1.2:21
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 21 -j SNAT --to-source 192.168.0.254:21
(2)FTP服务器:被动模式
首先,要实现被动模式,且控制FTP服务器数据传输所使用的端口,那么得配置FTP服务器:/etc/vsftpd/vsftpd.conf,在该文件增加如下内容:
pasv_enable=yes #启动被动模式
pasv_min_port=4040 #被动模式vsftpd服务器所使用的端口范围
pasv_max_port=4080
其次,防火墙必须载入相关模块到内核
modprobe ip_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
最后,配置防火墙
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 21 -j DNAT --to-destination 192.168.1.2:21
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 21 -j SNAT --to-source 192.168.0.254:21
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.254 -p tcp --dport 4040:4080 -j DNAT --to-destination 192.168.1.2:4040-4080
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.2 -p tcp --sport 4040:4080 -j SNAT --to-source 192.168.0.254:4040-4080
注意:其实FTP服务器工作于主动模式还是被动模式,完全是由FTP客户端决定的!所以在vsftpd.conf文件里根本就没有必要配置上面这三条语句,配置那三条语句只是为了更好的控制FTP服务器被动模式下工作时数据传输端口
第4步:测试
windows xp(192.168.0.5) -> cmd -> ftp 192.168.0.254
5、案例5:通过防火墙限制局域网中的192.168.1.5机子使用飞信客户端软件
第1步:下载数据包分析工具(wireshark)
由于iptables工具扮演的是网络层的防火墙,所以在限制用户使用软件方面,一般只能通过从协议(TCP、UDP)对应的端口入手,通过限制这些协议对应的端口,来达到限制使用软件的目的;但是一些协议iptables是无法限制,例如:点对点协议
http://www.wireshark.org
http://www.wireshark.org/download/win32/wireshark-win32-1.2.7.exe
第2步:由于防火墙扮演着网关的角色,所以我们可以在网关上使用tcpdump进行抓包,该工具可以抓TCP类型的数据包
首先,在防火墙上运行tcpdump指令
tcpdump -i eth0 host 192.168.1.5 -s 0 -w feixing.pcap
参数分析:
(1)-i eth0:指的是在防火墙的充当网关的那个接口上进行抓包(因为局域网中的用户上网时,数据包都得通过网关)
(2)host + IP:指的是抓取含有192.168.2.5这个地址的数据包
(3)-s 0:表示数据包的长度不限
(4)-w:表示所抓到的数据包写入到一个文件
然后,在局域网的192.168.1.5这台机子上使用飞信客户端程序,登录飞信服务器,之后再切断防火墙的tcpdump指令(ctrl+c)
第3步:用wireshark软件对所抓到的数据包进行分析
第4步:局域网的那台机子(192.168.1.5)在使用飞信时,传送的数据包必须经过防火墙上的filter表的FORWARD进行转化,所以我们在FORWARD链上进行写入规则,来限制该台机子使用飞信客户端
#阻止客户端将相关的飞信数据包发给飞信服务器
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.176.31.69 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.176.31.45 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.45.212 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.45.201 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.45.198 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 221.130.44.232 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 218.61.204.91 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables -t filter -I FORWARD -i eth0 -s 192.168.1.5 -d 199.7.52.190 -p tcp -m multiport --dport 80,8080,443 -j DROP
iptables应用案例分析相关推荐
- 第五章:iptables应用案例分析(代理服务器上设置iptables)
一.代理服务器架设的位置如上图 实验环境如下: 1)局域网网段:192.168.1.0/24,该网段内有2台服务器和1台客户端 (1)WEB服务器:192.168.1.3/24 (2)FTP服务器:1 ...
- linux ftp服务器防火墙设置,Linux 为FTP 服务器添加iptables规则--案例分析
一.故障描述 由于开发提出需求,为他们搭建内部Linux习下ftp服务器,搭建好后,提交给他们,测试可以正常使用.后来过了一段时间后,有一天无法登陆了.于是去ftp主机上检查问题,ftp的配置文件没有 ...
- linux防火墙转发udp,一次穿透 iptables 防火墙的 UDP ***报文真实案例分析
一次穿透 iptables 防火墙的 UDP ***报文真实案例分析,揭示了一些在使用 iptables 时鲜为人知的安全隐患,希望能给大家带来帮助! 这类***确实少见,也是一次好的排错过程,所以转 ...
- python 装机配置_Python实现自动装机功能案例分析
前言 提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多 ...
- 实用防火墙(Iptables)脚本分析
实用防火墙(Iptables)脚本分析 --Redhat,CentOS,Ubuntu等常见Linux发行版中都会预装Iptables防火墙,大多数初学者设置起来由于对这款软件比较陌生,设置起来比较困难 ...
- 2-3-RHEL6.3搭建NTP 服务器案例分析与总结(RedHat Enterprise Linux Server6.3)@树袋飘零...
本节介绍内容: 1. samba概述 2. samba服务器的搭建 3. samba服务主配置文件的详解 4. samba服务器搭建案例分析 1. samba概述 samba是linux以及 ...
- 2-4-RHEL6.3搭建samba服务器案例分析与总结(Red Hat Enterprise Linux Server6.3)@树袋飘零...
本节介绍内容: 1. samba概述 2. samba服务器的搭建 3. samba服务主配置文件的详解 4. samba服务器搭建案例分析 1. samba概述 samba是linux以及 ...
- linux vip切换后不通,keepalived主备节点都配置vipvip切换异常案例分析
keepalived主备节点都配置vipvip切换异常案例分析 keepalived主备节点都配置vip,vip切换异常案例分析 故障现象:主机名director-Adirector-B IP192. ...
- Linux(Centos)之chkconfig命令使用攻略及案例分析
Linux(Centos)之chkconfig命令使用攻略及案例分析 [root@iZ25ja2kaemZ ss]# chkconfig --help chkconfig version 1.3.4 ...
最新文章
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解...
- Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
- 神策数据出席 TIC 2018 大会,共同赋能大数据时代
- Django框架(4.django中进入项目的shell之后对数据表进行增删改查的操作)
- Hive是如何让MapReduce实现SQL操作的?
- 委托BegionInvoke和窗体BegionInvoke
- java速学堂_Java 实例 - 状态监测
- egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
- linux 设置端口常用命令
- swoole 异步client redis TP5 微信模板消息 demo版本比较杂 代码注释啥的都没删除 但是可以用作为参考
- dcs系统中数据服务器的冗余,如何提升DCS系统的可靠性?这篇文章讲透了
- LEACH算法改进 SEP算法源代码
- GifCam v7.0 极简GIF动画录制工具中文单文件版
- echarts地图(中国地图展示各省数据)
- Tews Technologies TPMC871 PCMCIA PMC 接口模块
- el table 固定表头和首行_bootstrap table 固定 表头 冻结 窗格 固定首行 冻结首行 fixed 对齐 分享...
- esxi 创建虚拟交换机_对vSphere虚拟交换机的理解
- 证明厄米矩阵不同特征值对应特征向量正交
- Django中models模型(操作数据库)
- Excel RTD函数入门
热门文章
- 99题 Reorder List
- zerotier设置教程
- July, 18(R)
- 2021届保研经验贴—北邮,西交,武大,中科院,厦大,南开
- vue v-bind=“$attrs“、v-on=“$listeners“
- 【SpringBoot框架篇】31.基于分布式锁或xxx-job实现分布式任务调度
- 分析拉卡拉支付的风控技术
- 一次难忘的PopLayer 之旅
- Orcad原理图打印的时候如何调整打印页码顺序
- angular的observable