xxxx 《Linux个人防火墙的设计与实现》 第1页 共21页
Linux个人防火墙的设计与实现
学生姓名:xxx 指导老师:xxx
摘 要 防火墙在配置上能够防止来自“外部”世界未经授权的交互式登录。这大大有助于防止破坏者登录到你网络中的计算机上。本课程设计介绍基于Netfilter/Iptables的包过滤防火墙的实现原理。对Linux系统、TCP/IP的相关知识及Iptables语法做了介绍。详细介绍了Iptables命令的使用举例,通过实例介绍了基于Netfilter/Iptables的包过滤防火墙的配置过程。
关键词 网络操作系统;包过滤;Iptables;Netfilter;防火墙
Design and Implement The Personal Firewall of Linux
Student name: YU Ming-yin Advisor:Hou Li-juan
Abstract In the configuration on the firewall to prevent from the \world of interactive unauthorized login. This will significantly help prevent spoilers to log in to your computer network. Based on the curriculum design, introduced Netfilter / Iptables firewall packet filtering of the realization of the principle. On Linux systems, TCP / IP knowledge and Iptables syntax is introduced. Iptables command described in detail the use of, for example, through an example based on the Netfilter / Iptables firewall's packet filtering configuration process.
Key words Network OS; Packet Filter; Iptbles;Netfilter;Firewall
xxxx 《Linux个人防火墙的设计与实现》 第2页 共21页 1 引 言
1.1 课程设计的意义
对于因特网上的系统,不管是什么情况,首先我们要明确一点:网络是不安全的。虽然创建一个防火墙并不能保证系统100%安全[7],但却是绝对有必要的。防火墙的目的就是将破坏网络安全的人挡在你的网络之外,使你可以顺利完成自己的工作。
LINUX是近几年突出的一种操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。LINUX防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火墙内核,LINUX操作系统会对接收到的数据包按一定的策略进行处理。随着Linux系统被越来越多地使用,安全问题成了关键。Linux防火墙技术也在不断的发展,经历了Ipfw、Ipchains等过程。Iptables作为Linux防火墙的新一代继承人,当然也针对骇客不断推陈出新的探测技术拟出一些因应之道,那就是对封包的联机状态,作出更详细的分析,透过这样的分析能对一些可能被骇客利用的弱点加以阻隔,另外也开发出真正的封包改写能力,不需要透过其它程序的协助来仿真网址转译,除此之外,Iptables也获得系统核心的直接支持,不需要像Ipchains那样需要自行重新编译核心。
Iptables优越的性能使它取代了Ipchains,成为网络防火墙的主流,而Ipchains并未被淘汰,目前Ipchains已经转型成单机防火墙,在安装新版Linux时,会自动被安装启用,以保护单机上未被使用的通讯端口[1]。
总之,目前大部分国内金融、商业等企业都采用Linux系统,因此在Linux上配置防火墙有极其重要的意义,同时可以学习这一先进的技术与熟悉一个优秀的操作平台。
1.2 课程设计的目的
本课程设计设主要目的是在Linux操作系统下完成基于Netfilter/Iptables的包过滤防火墙的设计与实现。Internet等网络服务给人们的生活带来极大便利的同时也存在很多隐患,学会基于Netfilter/Iptables的包过滤防火墙的配置就能在一定程度上有效地抵御来自网络上的攻击。通过完成课程设计的过程,学习包过滤防火墙的相关知识,同时也深化对这学期Linux课程的学习。
1.3 Linux防火墙的背景知识
Linux是一个类UNIX的操作系统[5],它是由芬兰赫尔辛基大学的学生Linus
xxxx 《Linux个人防火墙的设计与实现》 第3页 共21页 Torvalds于1991年创建并在因特网上发布,任何人只要遵守GPL版权,都可以免费使用和修改Linux。实际上,GPL要求的是完全的软件共享,你可从中获利,但你不能占为己有。经过因特网上的千千万万的志愿者对其的不断修改,八年后的今天,Linux已经变得强大无比!特别是去年下半年以来,IBM、Intel、Oracle、Sysbase、Borland,HP,SUN,Corel等商业软件[6]厂商纷纷表示对Linux进行商业开发和技术支持,更使得Linux的商业价值越来越高。同时Linux将在两个方向发展,即微型设备的嵌入式操作系统和桌面操作系统。IDC预测Linux将成为Windows NT后的第二大操作系统[3]。
Linux以它的高效性和灵活性著称。它能够在个人计算机上实现全部的UNIX特性,具有多任务、多用户的功能。Linux可在GNU(“不是UNIX”工程的缩写)公共许可权限下免费获得,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows一样,允许我们使用窗口、图标和菜单对系统进行操作。
包过滤防火墙用软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能丢弃(DROP)这个包,可能接受(ACCEPT)这个包,也可能执行其它更复杂的动作。
Linux因其健壮性、可靠性、灵活性以及好象无限范围的可定制性而在IT界倍受欢迎。Linux具有许多内置的功能,使开发人员可以根据自己的需要定制其工具、行为和外观而无需昂贵的第三方工具。
Netfilter/Iptables IP 信息包过滤系统是最新的解决方案,而且也是第一个集成到 Linux内核的解决方案。对于Linux系统管理员、网络管理员以及家庭用户(他们想要根据自己特定的需求来配置防火墙,在防火墙解决方案上节省费用和对IP信息包过滤具有完全控制权)来说,Netfilter/Iptables系统十分理想。
Iptables是与最新的2.4.x版本Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。Iptables组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易[2]。Iptables是复杂的,它集成到Linux内核中。用户通过Iptables可以对进出你的计算机的数据包进行过滤。通过Iptables命令设置来把守你的计算机网络--哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录。
xxxx 《Linux个人防火墙的设计与实现》 第4页 共21页
2 Netfilter/Iptables介绍
2.1 配置防火墙的filter表
(1)查看本机关于IPTABLES的设置情况 [root@localhost root]# iptables -L –n (2)清除原有规则
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter[8]的所有规则。
[root@localhost root]# iptables -F 清除预设表filter中的所有规则链的规则。 [root@localhost root]# iptables -X 清除预设表filter中使用者自定链中的规则。
(3)设定预设规则
[root@localhost root]# iptables -p INPUT DROP [root@localhost root]# iptables -p OUTPUT ACCEPT [root@localhost root]# iptables -p FORWARD DROP (4)添加规则
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。为了能采用远程SSH登陆,我们要开启22端口
[root@localhost root]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT [root@localhost root]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链: [root@localhost root]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT 如果做了WEB服务器,开启80端口
[root@localhost root]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 如果做了邮件服务器,开启25110端口
[root@localhost root]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT [root@localhost root]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT 如果做了FTP服务器,开启21端口
[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
xxxx 《Linux个人防火墙的设计与实现》 第5页 共21页 [root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT 如果做了DNS服务器,开启53端口
[root@localhost root]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
2.2 配置防火墙的NAT表
(1)查看本机关于NAT的设置情况
[root@localhost root]# iptables -t nat –L (2) 添加规则
添加基本的NAT[8]地址转换,我们只添加DROP链.因为默认链全是ACCEPT。防止外网用内网IP欺骗
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
DROP非法连接
[root@localhost root]# iptables -A INPUT -m state --state INVALID -j DROP [root@localhost root]# iptables -A OUTPUT -m state --state INVALID -j DROP [root@localhost root]# iptables-A FORWARD -m state --state INVALID -j DROP 允许所有已经建立的和相关的连接 [root@localhost
root]#iptables-A
INPUT
-m
state
--state
ESTABLISHED,RELATED -j ACCEPT
[root@localhost
root]#iptables-A
INPUT
-m
state
--state
ESTABLISHED,RELATED -j ACCEPT
[root@localhost
root]#
iptables-A
OUTPUT
-m
state
--state
ESTABLISHED,RELATED -j ACCEPT
[root@localhost root]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里,写入后把防火墙重起一下,才能起作用。
[root@localhost root]# service iptables restart