一、代理服务器架设的位置

实验环境如下:
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应用案例分析相关推荐

  1. 第五章:iptables应用案例分析(代理服务器上设置iptables)

    一.代理服务器架设的位置如上图 实验环境如下: 1)局域网网段:192.168.1.0/24,该网段内有2台服务器和1台客户端 (1)WEB服务器:192.168.1.3/24 (2)FTP服务器:1 ...

  2. linux ftp服务器防火墙设置,Linux 为FTP 服务器添加iptables规则--案例分析

    一.故障描述 由于开发提出需求,为他们搭建内部Linux习下ftp服务器,搭建好后,提交给他们,测试可以正常使用.后来过了一段时间后,有一天无法登陆了.于是去ftp主机上检查问题,ftp的配置文件没有 ...

  3. linux防火墙转发udp,一次穿透 iptables 防火墙的 UDP ***报文真实案例分析

    一次穿透 iptables 防火墙的 UDP ***报文真实案例分析,揭示了一些在使用 iptables 时鲜为人知的安全隐患,希望能给大家带来帮助! 这类***确实少见,也是一次好的排错过程,所以转 ...

  4. python 装机配置_Python实现自动装机功能案例分析

    前言 提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多 ...

  5. 实用防火墙(Iptables)脚本分析

    实用防火墙(Iptables)脚本分析 --Redhat,CentOS,Ubuntu等常见Linux发行版中都会预装Iptables防火墙,大多数初学者设置起来由于对这款软件比较陌生,设置起来比较困难 ...

  6. 2-3-RHEL6.3搭建NTP 服务器案例分析与总结(RedHat Enterprise Linux Server6.3)@树袋飘零...

    本节介绍内容: 1.  samba概述 2.  samba服务器的搭建 3.  samba服务主配置文件的详解 4.  samba服务器搭建案例分析 1.  samba概述 samba是linux以及 ...

  7. 2-4-RHEL6.3搭建samba服务器案例分析与总结(Red Hat Enterprise Linux Server6.3)@树袋飘零...

    本节介绍内容: 1.  samba概述 2.  samba服务器的搭建 3.  samba服务主配置文件的详解 4.  samba服务器搭建案例分析 1.  samba概述 samba是linux以及 ...

  8. linux vip切换后不通,keepalived主备节点都配置vipvip切换异常案例分析

    keepalived主备节点都配置vipvip切换异常案例分析 keepalived主备节点都配置vip,vip切换异常案例分析 故障现象:主机名director-Adirector-B IP192. ...

  9. Linux(Centos)之chkconfig命令使用攻略及案例分析

    Linux(Centos)之chkconfig命令使用攻略及案例分析  [root@iZ25ja2kaemZ ss]# chkconfig --help chkconfig version 1.3.4 ...

最新文章

  1. springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解...
  2. Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
  3. 神策数据出席 TIC 2018 大会,共同赋能大数据时代
  4. Django框架(4.django中进入项目的shell之后对数据表进行增删改查的操作)
  5. Hive是如何让MapReduce实现SQL操作的?
  6. 委托BegionInvoke和窗体BegionInvoke
  7. java速学堂_Java 实例 - 状态监测
  8. egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
  9. linux 设置端口常用命令
  10. swoole 异步client redis TP5 微信模板消息 demo版本比较杂 代码注释啥的都没删除 但是可以用作为参考
  11. dcs系统中数据服务器的冗余,如何提升DCS系统的可靠性?这篇文章讲透了
  12. LEACH算法改进 SEP算法源代码
  13. GifCam v7.0 极简GIF动画录制工具中文单文件版
  14. echarts地图(中国地图展示各省数据)
  15. Tews Technologies TPMC871 PCMCIA PMC 接口模块
  16. el table 固定表头和首行_bootstrap table 固定 表头 冻结 窗格 固定首行 冻结首行 fixed 对齐 分享...
  17. esxi 创建虚拟交换机_对vSphere虚拟交换机的理解
  18. 证明厄米矩阵不同特征值对应特征向量正交
  19. Django中models模型(操作数据库)
  20. Excel RTD函数入门

热门文章

  1. 99题 Reorder List
  2. zerotier设置教程
  3. July, 18(R)
  4. 2021届保研经验贴—北邮,西交,武大,中科院,厦大,南开
  5. vue v-bind=“$attrs“、v-on=“$listeners“
  6. 【SpringBoot框架篇】31.基于分布式锁或xxx-job实现分布式任务调度
  7. 分析拉卡拉支付的风控技术
  8. 一次难忘的PopLayer 之旅
  9. Orcad原理图打印的时候如何调整打印页码顺序
  10. angular的observable