`
webcenterol
  • 浏览: 951050 次
文章分类
社区版块
存档分类
最新评论

第五章:iptables应用案例分析(代理服务器上设置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 -d192.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 --dport4040: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

分享到:
评论

相关推荐

    UNIX Unleashed, System Administrator's Edition

    #### 第5章:通用命令 - **常用的系统命令**:列举并解释一系列常用的UNIX命令,如ls、cd、mv等。 #### 第6章:在网络中穿梭 - **网络基础知识**:介绍网络连接的基础概念,如IP地址、子网掩码等。 - **远程访问**...

    Linux 企业应用案例

    ### Linux企业应用案例知识点概述 #### 一、企业网站架构 **知识点:** - **Apache/Nginx服务器配置与管理**:包括安装、基本配置、虚拟主机设置、SSL证书安装等。 - **负载均衡技术**:如使用HAProxy或Nginx实现...

    服务器配置全攻略

    #### 七、案例分析 1. **Windows Server配置实践**:通过实例展示如何在Windows Server上配置Web服务、FTP服务等。 2. **Linux系统配置实践**:详细介绍如何在Linux系统上安装Apache、Nginx等Web服务器软件,以及...

    第六讲LVS深入及NAT集群调试.pptx

    #### 五、案例分析 - **实战案例**:本课程通过具体的实战案例,详细讲解了如何构建基于 LVS 的 NAT 集群,并通过实际操作演示了集群的搭建过程。 - **系统架构图**:通过架构图清晰地展示了整个系统的组成以及各个...

    LINUX课件13讲教程

    第五讲:Linux文件系统 本讲会讲解Linux的文件系统结构,包括目录的意义、权限管理(用户、组、读写执行权限)以及软链接和硬链接的区别。 第六讲:进程管理 这一讲将介绍Linux中的进程概念,如何查看和管理进程...

    Linux_server_configuration.rar_linux

    压缩包内的“第六章Linux服务器的配置.ppt”可能包含了上述部分或全部内容的详细讲解,包括具体步骤、最佳实践和案例分析。通过学习这些材料,你可以进一步提升Linux服务器管理能力,确保系统的稳定、安全和高效运行...

    LINUX 24学时教程

    **第十三至十五学时:Shell脚本编程** 1. Bash基础:变量、条件语句、循环结构等基础知识。 2. 脚本案例:编写简单的系统监控、自动备份等实用脚本。 3. Shell函数与别名:提高Shell脚本的可读性和效率。 **第十六...

    《网络系统管理--Linux实训篇》 课件下载第八章

    虽然课程提供了第七章的课件,但第八章的具体内容可能包括以上这些主题的扩展和深化,实践中可能会涉及更复杂的案例和实际问题的解决方案。通过这些学习,你将不仅理解Linux的基础知识,还能掌握解决实际网络系统...

    ssh 工程项目(有用)4

    5. **日志监控**:学习如何分析`/var/log/auth.log`或`/var/log/secure`日志文件,识别异常登录尝试,并设置警报机制。 6. **密钥管理**:了解如何备份和恢复SSH密钥,以及如何安全地分发和撤销密钥,防止密钥泄露...

    Linux运维趋势第十一期

    ### Linux运维趋势第十一期知识点总结 #### 一、人物访谈:抚琴煮酒谈CDN运维与电子商务运维 **1. CDN与电子商务网站运维差异** - **CDN(Content Delivery Network,内容分发网络)运维特点:** - 高并发处理...

    鸟哥LINUX私房菜 第四版

    1. **Linux系统介绍**:Linux是一种开源的操作系统,具有高度可定制性和稳定性,广泛应用于服务器、嵌入式设备和桌面环境。了解Linux的历史、哲学以及与其他操作系统(如Windows和Mac OS)的区别是学习的基础。 2. ...

    Linux实验教程-费翔林

    13. **安全与防火墙**:介绍SSH安全、iptables防火墙规则设置,以及Selinux的基本概念和使用。 14. **Linux服务与守护进程**:理解服务的启动、停止、重启命令,如systemctl,以及系统启动脚本的工作原理。 15. **...

    Linux网络操作系统项目教程(RHEL7.4CentOS7.4)(第3版)-电子教案.zip

    本教程以项目驱动的方式组织教学内容,通过实际操作和案例分析,帮助读者掌握Linux网络操作系统的核心技能。适合初学者入门,也适合有经验的系统管理员巩固提升。通过学习,读者不仅能够理解Linux的工作原理,还能...

    Linux learning.rar

    Linux以其灵活性、稳定性和安全性被广泛应用于服务器、超级计算机、嵌入式设备以及个人电脑等多个领域。本资料"Linux learning.rar"包含了丰富的Linux学习资源,旨在帮助初学者和进阶者深入理解和掌握Linux系统。 ...

    linux从入门到精通 第2版

    11. **防火墙与安全**:`iptables`是Linux的防火墙工具,用于设置规则控制网络流量。此外,理解SSH安全、权限最小化原则和用户审计机制对保障系统安全至关重要。 12. **硬件管理**:Linux支持广泛的硬件设备,包括...

    linuxStack:Linux技术栈

    8. **容器技术**:Docker和Kubernetes等容器技术在Linux上得到了广泛应用,它们简化了应用部署和管理,是现代云原生架构中的重要组件。 9. **版本控制系统**:Git是Linux世界中最常用的版本控制系统,掌握其基本...

    linux网路编程 中文 23M 版

    第1 章Linux操作系统概述................... .......................................................................... 2 1.1 Linux发展历史........................................................ 2 ...

Global site tag (gtag.js) - Google Analytics