《Linux互联网技术》项目10 Linux防火墙实现——iptables1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Linux网络管理项目引入在Internet网络世界漫游,随时都可能遭到各种恶意攻击,这些恶意攻击可能导致的后果是上网账号被窃取冒用、银行账号被盗用、电子邮件密码被修改、财务数据被利用、机密文件丢失、隐私曝光等等,甚至黑客通过远程控制删除硬盘上所有的资料数据,使整个计算机系统架构全面崩溃。幸运的是,我们可以通过使用防火墙来降低这些风险。防火墙旨在检查往来于Internet间的信息。对于连接到网络上的Linux系统来说,防火墙是必不可少的防御机制,它只允许合法的网络流量进出系统,而禁止其它任何网络流量。“netfilter/iptablesIP信息包过滤系统”是集成到Linux内核的防火墙解决方案。Linux核心里的netfilter子系统除了完成的网络防火墙功能,还可以进行网络地址转换(NAT)、数据包(package)记录、流量统计等。iptables是用户操作netfilter的唯一工具接口。为叙述便利,以下叙述将不严格区分iptables与netfilter。项目环境图是一种常见的网络环境拓扑图。本项目主要围绕主机—Linux防火墙/路由器构建进行设计,本项目中在“Linux防火墙/路由器”主机安装3块网卡。一块网卡(Linux系统识别为eth0,IP地址为192.168.0.5)连接网段为192.168.0的局域网(LAN);另一块网卡(系统识别为eth1,IP地址为192.168.1.166)连接网段为192.168.1的局域网;第3块网卡(系统识别为eth2,IP地址可以为公网地址,也可以是上层局域网地址,本项目采用一个假设公有地址220.88.88.88)连接Internet或上层局域网。项目10Linux防火墙实现——iptables基本任务:1)使用iptables搭建简单防火墙;2)使用ufw防火墙。拓展任务:1)构建一个更完善的防火墙;2)网络地址转换(NAT);3)iptables与Squid透明代理;4)使用FireStarter防火墙。任务1使用iptables搭建简单防火墙本任务主要构建能够完成访问外部资源,但不提供服务的Linux桌面型主机安全策略。对常见的网络环境中选取一部分并简化作为任务实验环境,如图所示,局域网环境是通过上层LAN而不是直接连接Internet,构造如此环境并不影响测试。iptables是通过一些规则、策略构成的表对通过数据包进行处理。iptables的语法相当多,可以分为规则清除,定义策略,添加,插入、删除规则等几种。以下将依照搭建防火墙的过程(规则清除→定义策略→添加、插入、删除规则→保存规则)进行。1.查看当前iptables信息iptables內建三个表:filter、nat以及mangle,每个表都被预先设置了一或多个代表各拦截点的链,其中filter预设的三个INPUT、FORWARD、OUTPUT链。对iptables设置规则实质是对iptables表的链设置规则,更详细的参考后文归纳说明部分或其他资料。在做进一步操作之前,我们先查看iptables表信息,初步了解iptables。1)查看filter表信息。使用“iptables–L”默认是查看表filter的链。在“Linux防火墙/路由器”主机输入如下(如果没有特殊说明,以下都将在“Linux防火墙/路由器”进行操作)。student@ubuntu:~$sudoiptables-LChainINPUT(policyACCEPT)//INPUT链默认策略为接受所有包targetprotoptsourcedestination//INPUT链没有设置规则ChainFORWARD(policyACCEPT)//FORWARD链默认策略为接受所有包targetprotoptsourcedestination//FORWARD链没有设置规则ChainOUTPUT(policyACCEPT)//OUTPUT链默认策略为接受所有包targetprotoptsourcedestination//OUTPUT链没有设置规则2)查看nat表的规则。从上看出Linux系统nat表有PREROUTING、POSTROUTING、OUTPUT链,默认策略对于任何包也都接受,并没有设置规则。student@ubuntu:~$sudoiptables-tnat-LChainPREROUTING(policyACCEPT)//PREROUTING链默认策略为接受所有包targetprotoptsourcedestinationChainPOSTROUTING(policyACCEPT)//POSTROUTING链默认策略为接受所有包targetprotoptsourcedestinationChainOUTPUT(policyACCEPT)//OUTPUT链默认策略为接受所有包targetprotoptsourcedestinationstudent@ubuntu:~$3)查看nat表的详细信息。student@ubuntu:~$sudoiptables-L-vChainINPUT(policyACCEPT683packets,53617bytes)//683表示INPUT链通过的数据包数量,53617表示通过数据量pktsbytestargetprotoptinoutsourcedestinationChainFORWARD(policyACCEPT0packets,0bytes)//FORWARD链还没有数据包通过pktsbytestargetprotoptinoutsourcedestinationChainOUTPUT(policyACCEPT745packets,53775bytes)pktsbytestargetprotoptinoutsourcedestination2.规则清除一般设置iptables之前,首先要清除所有以前设置的规则。虽然很多情况下它什么也不做,但是保险起见,不妨小心一点吧。student@ubuntu:~$sudoiptables–F//清除默认表filter所有的设置规则student@ubuntu:~$sudoiptables–X//删除表filter中用户建立的链student@ubuntu:~$sudoiptables-tnat–F//清除表nat所有的设置规则student@ubuntu:~$sudoiptables-tnat-X//清除表nat中用户建立的链3.定义策略规则清除后,接下来就是对链定义策略,策略就是当链的规则都相符是数据包的默认动作。从上面查看表信息得知,iptables表的链没有设置规则,且对任何数据包的策略都是接受的。显然,这是一种过于宽松的防火墙。1)定义策略之前检查网络连通性student@ubuntu:~$ping127.0.0.1-c3//测试回环网络接口lo┆3packetstransmitted,3received,0%packetloss,time2007msrttmin/avg/max/mdev=0.058/0.384/1.025/0.453msstudent@ubuntu:~$ping192.168.0.1-c3//测试局域网络其他主机┆3packetstransmitted,3received,0%packetloss,time2003msrttmin/avg/max/mdev=0.209/3.032/8.624/3.954ms2)定义filter表的INPUT链策略首先,定义一个非常严格的策略。student@ubuntu:~$sudoiptables-PINPUTDROP//设置Filter的INPUT链策略为丢弃所有包INPUT链是处理那些进入Linux主机的数据包。上命令将会为构建一个非常“安全”的防火墙,很难有哪个黑客(hacker)能攻破这样的主机,因为它将所有从网络想进入你主机的数据丢弃(drop)了。这当然是安全过头了,此时主机将相当于没有网络。3)检测配置如果ping127.0.0.1,就会发现屏幕一直停在那里,因为ping收不到任何回应,必须按“Ctrl+C”强行终止。student@ubuntu:~$sudoiptables–L//查看Filter表信息ChainINPUT(policyDROP)//Filter表的INPUT链策略为DROP,拒绝任何包通过targetprotoptsourcedestination┆student@ubuntu:~$ping127.0.0.1-c3//测试回环网络接口loPING127.0.0.1(127.0.0.1)56(84)bytesofdata.---127.0.0.1pingstatistics---3packetstransmitted,0received,100%packetloss,time2010msstudent@ubuntu:~$ping192.168.0.1//测试本地局域网PING192.168.0.1(192.168.0.1)56(84)bytesofdata.---192.168.0.1pingstatistics---9packetstransmitted,0received,100%packetloss,time8041ms4)定义其他链策略虽然Ubuntu系统其他链默认策略为允许所有包,但保险起见还是重新设置。student@ubuntu:~$sudoiptables-POUTPUTACCRPT//Filter设置OUTPUT链策略允许所有包student@ubuntu:~$sudoiptables-PFORWARDACCRPT//FORWARD链策略允许所有包student@ubuntu:~$sudoiptables–tnat-PPREROUTINGACCRPT//策略允许所有包student@ubuntu:~$sudoiptables–tnat-POUTPUTACCRPT//策略允许所有包student@ubuntu:~$sudoiptables–tnat-PPOSTROUTINGACCRPT//策略允许所有包4.定义规则1)连通局域网通过上面定义的策略,Linux主机就好比是一个没有网卡的主机。以下的规则将使主机能够与局域网连通。student@ubuntu:~$iptables-AINPUT-i!eth1-jACCEPT这条规则的意思是:接受所有来源不是网络接口eth1的数据。前面已经说明,Linux主机有三块网卡,因此将有四个网络接口:eth0、eth1分别连接不同局域网,loop是回环网(localhost),eth2连接internet或上层网络接口(如果是采用在是adsl上网,规则修改为“iptables-AINPUT-i!ppp0-jACCEPT),因此添加上述规则,即允许了局域网的访问,当然也可以访问lo接口。2)检测测试回环地址与局域网其他主机。结果显示通过主机与eth0接口连接的局域网络连通。student@ubuntu:~$sudoiptables-L–v//查看filter规则,注意INPUT链规则变化ChainINPUT(policyDROP820packets,51677bytes)pktsbytestargetprotoptinoutsourcedestination72240969ACCEPTall--!eth1anyanywhereanywhere//上条记录就是刚添加的规则┆student@ubuntu:~$ping127.0.0.1-c3//测试回环网络接口lo┆3packetstransmitted,3received,0%packetloss,time1998msrttmin/avg/max/mdev=0.128/0.122/0.125/0.009msstudent@ubuntu:~$ping192.168.0.1-c3//测试局域网络其他主机┆3packetstransmitted,3rece

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功