开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

网络安全之iptables 实验篇一

简介:
+关注继续查看
linux下iptables的重要性大家都不陌生吧?今天就以实验的形式把iptables的基本配置简要总结一下,还请大家不吝赐教,多多斧正才好!有关iptables的具体语法和格式将在理论部分具体阐述,在这里就不赘述了。
先来回顾一下iptables的语法格式:
iptables [ -t table ] COMMAND chains [ num ] match condition –j Action
table 表示的是一个表名,例如:filter nat mangle 等。
COMMAND 对链规则进行管理,常用参数为:-A -I -R -D等。
若要对链本身进行管理,则常用参数为: -F -P -N -X 等。
match condition 表示匹配规则。
Action 表示要执行的动作。
例如:
iptables –t filter -A OUTPUT –s 192.168.0.83 –d 192.168.0.82 –p tcp –dport 80 –j REJECT
闲话少说,开始做实验吧!
实验一:用iptables链拒绝主机ping
所搭建的实验环境为:两台RehHat linux虚拟机。
IP地址分别为:192.168.0.82 192.168.0.86
在默认情况下,两台虚拟机是可以互相ping通的,现在我们为了模拟真实环境,假定192.168.0.82的主机为服务器,192.168.0.86的主机为客户机,为了保证服务器的安全,我不允许客户机来ping我的服务器。所以呢,我们目的是让这两台虚拟机不能ping通,我们可以用iptables很轻松的来实现。
clip_image001
在进行配置之前,先来测试一下两台主机是否可以ping通。
clip_image002
现在就来设置一下,让PC2不能ping通PC1,那么该如何设置呢?
规则如下:设置好之后要记得查看一下是否生效。
clip_image004
再从PC2上ping 一下PC1,结果显示是没有反应。
上面的iptables链的意思就是说:当来自192.168.0.86主机通过ICMP协议来链接192.168.0.82主机时,PC1所做的动作是DROP(忽略:既不响应,也不拒绝)。打个比方吧:PC2对PC1打招呼(PC2 尝试pingPC1),但是PC1就是不理你,把PC2当空气了(iptables链所定义的规则)。因此,主机PC2当然不能ping通主机PC1了。
clip_image005
当主机PC2来ping主机PC1时,PC1的反应还有可能是立即拒绝PC2,命令为:
iptables –t filter -A INPUT –s 192.168.0.86 –d 192.168.0.82 -p icmp --icmp-type 8
-j REJECT
添加完命令时要养成查看,命令是否添加成功的好习惯。
【注:】与前面一幅图对比,可以发现执行iptables –L –t命令后,显示的结果仍然是一条,因为在写iptables链之前,执行了iptables –F的命令,因此,就可以知道iptables —F 命令的意思就是清除上一次的iptables链。
clip_image007
再次用主机PC2来ping主机PC1时,就可以看到显示的结果与前一条命令的不同之处了。
clip_image008
【思考:】如果允许主机PC2可以ping通主机PC1,该如何设置呢?
对啦!就是把第二条iptables链中的REJECT改为ACCEPT就行了。
【拓展:】上面的实验是对进入PC1的ping数据进行拒绝,如果不想让PC1的ping数据外界发送,那么命令就要改为:
iptables –t filter –A OUTPUT –s 192.168.0.82 –d 192.168.0.86 –p icmp –icmp-type 0
-j REJECT
由于上面的实验中设置的是不允许ping数据进入主机PC1,那么也就谈不上PC1向外界发送数据了。
实验二:基于源地址的NAT转发(将内网地址转换为外网地址)
现在网络需求提高了,我们需要对数据进行端口转发。具体实验环境为三台虚拟机示意图为:
clip_image010 
【注:】需要说明的是:PC1属于内部局域网,PC2外部网 (我们所处的位置是PC1)
先来搭建实验环境,关于PC1和PC2的设置比较简单,手动配置IP地址就行了,有一点要说明的是PC1的网关指向网卡1 ,同理,PC2的网关要指向网卡2。接下来就是重头戏服务器的配置了。
在设置之前,要保证PC1与服务器可以ping通,PC2与服务器可以ping通。并且在PC1上可以ping通服务器和PC2
clip_image011
为了使PC1能ping通PC2,要打开服务器的路由转发功能。编辑/etc/systcl.conf文件,把net.ipv4.ip_forward=0修改为1。保存退出后,要记得重新读取该文件。命令为:sysctl –p
clip_image012
在PC2 上配置www服务,编辑一个测试页面,并测试配置成功。
clip_image015
 
 
 
clip_image014
 
测试结果显示,在本地访问PC2的www服务是没有任何问题的。
为了使试验的结果明显,在没有进行iptables配置之前,再来从PC1端来访问一下看是否可以成功访问。结果显示如下:
 
clip_image017
 
好了,实验前的所有准备工作都完成了,现在开始实验的重要部分:
 
1、内网访问外网的nat地址转换。具体配置如下:
 
clip_image019
 
使用iptables –t nat –L 来查看一下刚才的配置是否成功。
 
clip_image021
 
再次从PC1上访问PC2,测试是否能访问PC2。
 
clip_image023
 
结果是可以访问PC2的,从PC1的角度来看,配置地址转发与开启服务器的路由功能得到的结果是相同的。那么这两者究竟有什么区别呢?
这个问题可以到PC2上来解决,由于PC2上www的服务会记录来访者的日志,我们可以通过查看一下日志,看看能不能发现这两者的不同之处。如图所示:在四个日志记录中,前两次是本地测试的记录,第三个记录是PC1通过路由器来访问PC2的。第
四个记录是PC1通过地址转换来访问PC2的。现在该明白了吧?
 
clip_image025
实验三 基于目标地址的NAT转发(将外网地址转换成内网地址)
clip_image026
【注:】需要说明的是:PC1属于外网,PC2内部局域网 (我们所处的位置是PC2)
千万不可与前面实验二搅合到一起了,这是两个完全独立的实验,借用前面的所搭建的实验环境和示意图,只是为了节省时间,还请见谅!
实验开始前还是测试PC1可以ping通PC2,以及测试PC1可以访问PC2的www服务。在这里就省略测试连通性的步骤。
执行iptables –F命令清除所有已经存在的iptables链。实验环境搭建好了,现在就可以直接进行配置iptables链了。命令如下:
iptables –t nat –A PREROUTING –s 192.168.0.0/24 –d 192.168.8.82 –p tcp –dport 80 –j DNAT –-to-dest 192.168.8.100
使用iptables -t nat –L来查看命令是否执行。
 
 
clip_image028
 
重新登陆PC1,使用elinks 192.168.8.100访问PC2的www服务,结果是可以访问到PC2的www服务。切换到PC2上,查看PC2上的www服务访问日志记录,可以看到最后一行的源地址依然是主机PC1的IP地址,并没有发生改变。
 
clip_image030
除此之外,还可以指定目标地址的转发端口。在PC2上,把www默认的服务端口80修改为8080。
用vim编辑器打开位于/etc/httpd/conf,找到Listen 80 这一项,把80修改8080,完成后保存退出即可。
clip_image031
重启www服务,命令为:service httpd restart
然后查看8080端口是否打开,命令为:netstat –tunl
clip_image033
 
清除所有iptables链,然后写一条新的iptables链,命令为:
iptables –t nat –A PREROUTING –s 192.168.0.0/24 -d 192.168.0.82 –p tcp –dport 80 –j DNAT
--to-dset 192.168.8.100:8080
执行完成后,记得查看是否添加成功。
 
clip_image035
 
重新登陆PC1,使用elinks 192.168.8.100访问
PC2的www服务,结果是仍然可以正常访问到PC2的www服务。切换到PC2上,查看PC2上的www服务访问日志记录,可以看到最后一行的源地址依然是主机PC1的IP地址,并没有发生改变。
 









本文转自 linuxtro 51CTO博客,原文链接:http://blog.51cto.com/linuxtro/279334,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Iptables详解-快速从理论到实践
Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活, 可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。
0 0
iptables 与系统安全 | 学习笔记
快速学习iptables 与系统安全
0 0
iptables研究iptables防火墙原理详解
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
868 0
搭建基于netfilter/iptables的防火墙实验环境
 防火墙作为一种网络或系统之间强制实行访问控制的机制,是确保网络安全的重要手段。针对不同的需求和应用环境,可以量身定制出不同的防火墙系统。防火墙大到可由若干路由器和堡垒主机构成,也可小到仅仅是网络操作系统上一个防火墙软件包所提供的包过滤功能。
577 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
有关IP的网络安全那些事
立即下载
有关IP的网络安全那些事儿
立即下载
低代码开发师(初级)实战教程
立即下载