当前位置:文档之家› Linux防火墙攻略

Linux防火墙攻略

Linux防火墙攻略
Linux防火墙攻略

Linux内核中有一个功能强大的联网子系统netfilter。netfilter子系统提供了有状态的或无状态的分组过滤,还提供了NAT和IP伪装服务。netfilter还具备为高级选路和连接状态管理而变形(mangle)IP头信息的能力。netfilter是通过IPTables工具来控制的。

IPTables总览

netfilter的强大功能和灵活性是通过IPTables界面来实现的。这个命令行工具和它的前身IPChains的语法很相似;不过,IPTables使用netfilter子系统来增进网络连接、检验、和处理方面的能力;IPChains使用错综复杂的规则集合来过滤源地和目的地路线以及两者的连接端口。IPTables只在一个命令行界面中就包括了更先进的记录方式;选路前和选路后的行动;网络地址转换;以及端口转发。

7.2.使用IPTables

使用IPTables的第一步是启动IPTables服务。这可以使用以下命令进行:

service iptables start

警告

你应该使用以下命令关闭IP6Tables服务才能使用IPTables服务:

service ip6tables stop

chkconfig ip6tables off

要使IPTables在系统引导时默认启动,你必须使用chkconfig来改变服务的运行级别状态。

chkconfig--level345iptables on

IPTables的语法被分成几个层次。主要层次为“链”(chain)。“链”指定处理分组的状态。其用法为:

iptables-A chain-j target

-A在现存的规则集合内后补一条规则。chain是规则所在“链”的名称。IPTables中有三个内建的链(即影响每一个在网络中经过的分组的链):INPUT、OUTPUT、和FORWARD。这些链是永久性的,不能被删除。

重要

在创建IPTables规则集合时,记住规则的顺序是至关重要的。例如:如果某个链指定了来自本地子网192.168.100.0/24的任何分组都应放弃,然后一个允许来自192.168.100.13(在前面要放弃分组的子网范围内)的分组的链被补在这个规则后面(-A),那么这个后补的规则就会被忽略。你必须首先设置允许192.168.100.13的规则,然后再设置放弃规则。

要在现存规则链的任意处插入一条规则,使用-I,随后是你想插入规则的链的名称,然后是你想放置规则的位置号码(1,2,3,...,n)。例如:

iptables-I INPUT1-i lo-p all-j ACCEPT

这条规则被插入为INPUT链的第一条规则,它允许本地环回设备上的交通。

7.2.1.基本防火墙策略

在一开始就建立的某些基本策略为建构更详细的用户定义的规则奠定了基础。IPTables 使用策略(policy,-P)来创建默认规则。对安全敏感的管理员通常想采取放弃所有分组、只逐一允许指定分组的策略。以下规则阻塞网络上所有的出入分组。

iptables-P INPUT DROP

iptables-P OUTPUT DROP

此外,还推荐你拒绝所有转发分组(forwarded packets)—要从防火墙被选路发送到它的目标节点的网络交通—以便限制内部客户对互联网的无心暴露。要达到这个目的,使用以下规则:

iptables-P FORWARD DROP

注记

在处理添加的规则时,REJECT(拒绝)目标和DROP(放弃)目标这两种行动有所不同。REJECT会拒绝目标分组的进入,并给企图连接服务的用户返回一个connection refused 的错误消息。DROP会放弃分组,而对telnet用户不发出任何警告;不过,为了避免导致用户由于迷惑不解而不停试图连接的情况的发生,推荐你使用REJECT目标。

设置了策略链后,为你的特定网络和安全需要创建新规则。以下各节概述了一些你在建构IPTables防火墙时可能要实现的规则。

7.2.2.保存和恢复IPTables规则

防火墙规则只在计算机处于开启状态时才有效。如果系统被重新引导,这些规则就会自动被清除并重设。要保存规则以便今后载入,请使用以下命令:

/sbin/service iptables save

保存在/etc/sysconfig/iptables文件中的规则会在服务启动或重新启动时(包括机器被重新引导时)被应用。

常用iptables过滤

把远程攻击者拒之“LAN”外是网络保安的一个重要方面。LAN的完好性应该通过使用严格的防火墙规则来抵御蓄意不良的远程用户而被保护。但是,如果默认策略被设置为阻塞所有进入、输出、和转发的分组,防火墙/网关和内部LAN用户之间的通信就无法进行。要允许用户执行和网络相关的功能以及使用联网应用程序,管理员必须打开某些端口进行通信。

例如:要允许到防火墙上的端口80的通信,添加以下规则:

iptables-A INPUT-p tcp-m tcp--sport80-j ACCEPT

iptables-A OUTPUT-p tcp-m tcp--dport80-j ACCEPT

这会允许用户浏览通过端口80通信的网站。要允许到安全网站(如https:

//https://www.doczj.com/doc/8914978758.html,/)的访问,你还必须打开端口443。

iptables-A INPUT-p tcp-m tcp--sport443-j ACCEPT

iptables-A OUTPUT-p tcp-m tcp--dport443-j ACCEPT

有时候,你可能会需要从LAN之外远程地进入LAN。SSH和CIPE之类的安全服务可以用于到LAN服务的加密远程连接。对于拥有基于PPP资源(如调制解调器池或批量ISP帐号)的管理员来说,拨号进入可以被用来安全地避开防火墙,因为调制解调器连接是直接连接,通常位于防火墙/网关之后。然而,对于有宽带连接的远程用户来说,你就需要制定些特殊规定。你可以配置IPTables接受来自远程SSH和CIPE客户的连接。例如,要允许远程SSH访问,你可以使用以下规则:

iptables-A INPUT-p tcp--dport22-j ACCEPT

iptables-A OUTPUT-p udp--sport22-j ACCEPT

来自外部的CIPE连接请求可以使用以下命令来接受(把x替换成你的设备号码):

iptables-A INPUT-p udp-i cipcbx-j ACCEPT

7.4.FORWARD和NAT规则

多数机构从它们的ISP处得到数量有限的可公开选路的IP地址。鉴于这种限额,管理员必须创建性地积极寻求分享互联网服务的方法,而又不必把稀有的IP地址分配给LAN上的每一台机器。使用专用IP地址是允许LAN上的所有机器正确使用内部和外部网络服务的常用方法。边缘路由器(如防火墙)可以接收来自互联网的进入交通,并把这些分组选路发送它们意图发送的LAN节点上;同时,防火墙/网关还可以把来自LAN节点的输出请求选路发送到远程互联网服务中。这种转发网络交通行为有时会很危险,特别是随着能够假冒内部IP地址、使远程攻击者的机器成为你的LAN上的一个节点的现代攻击工具的出现。为防止此类事件的发生,iptables提供了选路发送和转发策略,你可以实施它们来防止对网络资源的变相利用。

FORWARD策略允许管理员控制分组可以被选路发送到LAN内的哪些地方。例如:要允许整个LAN的转发(假定防火墙/网关在eth1上有一个内部IP地址),你可以设置以下规则:

iptables-A FORWARD-i eth1-j ACCEPT

iptables-A FORWARD-o eth1-j ACCEPT

注记

按照默认设置,红帽企业Linux内核中的IPv4策略禁用了对IP转发的支持,这会防止运行红帽企业Linux的机器成为专用边缘路由器。要启用IP转发,请运行以下命令:

sysctl-w net.ipv4.ip_forward=1

如果该命令是通过shell提示运行的,那么其设置在重新引导后就不会被保存。你可以通过编辑/etc/sysctl.conf文件来永久性地设置转发。寻找并编辑以下行,把0改成1:

net.ipv4.ip_forward=0

执行以下命令来启用sysctl.conf文件中的改变:

sysctl-p/etc/sysctl.conf

这会允许LAN节点彼此通信;不过,它们没有被允许和外界(如互联网)通信。要允许带有专用IP地址的LAN节点和外部的公共网络通信,配置防火墙的IP伪装(IP masquerading),这会把来自LAN节点的请求都伪装成防火墙的外部设备(在这个例子中是eth0)的IP地址。

iptables-t nat-A POSTROUTING-o eth0-j MASQUERADE

7.5.DMZ和iptables

你还可以设置一些把交通选路发送到某些机器(如专用HTTP或FTP服务器)的规则,这些机器最好是位于停火区域(de-militarized zone,DMZ)的和内部网络分开的机器。要设置一条把所有进入的HTTP请求都选路发送到IP地址为10.0.4.2、端口为80(LAN 192.168.1.0/24范围之外)的专用HTTP服务器的规则,网络地址转换(NAT)会调用PREROUTING表来把这些分组转发到恰当的目的地:

iptables-t nat-A PREROUTING-i eth0-p tcp--dport80-j DNAT\

--to-destination10.0.4.2:80

使用这项命令,所有来自LAN以外的到端口80的HTTP连接都会被选路发送到和内部网络分离的另一个网络上的HTTP服务器上。这种网络分段会比允许到内部网络中的机器上的HTTP连接更安全。如果HTTP服务器被配置接受安全连接,那么端口443也必须被转发。

病毒和假冒IP地址

你可以更精心设计一些规则来控制到LAN内指定子网的访问,甚至到指定机器的访问。你还可以限制某些类似特洛伊木马、蠕虫、以及其它客户/服务器病毒的可疑服务联系它们的服务器。例如:有些特洛伊木马会扫描端口31337到31340(即黑客语言中的elite端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会。

iptables-A OUTPUT-o eth0-p tcp--dport31337--sport31337-j DROP

iptables-A FORWARD-o eth0-p tcp--dport31337--sport31337-j DROP

你还可以阻塞试图假冒你所在LAN的专用IP地址混入的连接。例如:如果你的LAN使用192.168.1.0/24范围,面向互联网的网络设备(如eth0)上就可以设置一条规则来放弃到那个设备的使用你所在LAN的IP范围的分组。因为默认策略是拒绝转发分组,所有到面向外界的设备(eth0)的假冒IP地址都会被自动拒绝。

iptables-A FORWARD-s192.168.1.0/24-i eth0-j DROP

IP6Tables

下一代互联网协议IPv6的出现突破了IPv4(或IP)的32位地址限制。IPv6支持128位地址,因此识别IPv6的载体网络就能够制定比IPv4更多的可选路地址。

红帽企业Linux支持使用Netfilter6子系统和IP6Tables命令的IPv6防火墙规则。使用IP6Tables的第一步是启动IP6Tables服务。它可以使用以下命令进行:

service ip6tables start

警告

你必须关闭IPTables服务才能专门使用IP6Tables服务:

service iptables stop

chkconfig iptables off

要使IP6Tables在系统引导时默认启动,使用chkconfig来改变服务的运行级别状态。

chkconfig--level345ip6tables on

其语法在各方面都和IPTables相同,只不过IPTables支持128位的地址。例如:在识别IPv6的网络服务器器上的SSH连接可以使用以下规则来启用:

ip6tables-A INPUT-i eth0-p tcp-s3ffe:ffff:100::1/128--dport22-j ACCEPT

关于IPv6联网的详情,请参阅IPv6的信息页:https://www.doczj.com/doc/8914978758.html,/。

iptables-A OUTPUT-p udp-o cipcbx-j ACCEPT

CIPE使用它自己的传输数据报(UDP)分组的虚拟设备,因此这条规则允许cipcb接口上的进入连接,而不是规定源地端口或目标端口(虽然它们可以被用来代替设备选项)。关于使用CIPE的信息,请参阅第6章。

你可能还想为其它服务定义规则。关于IPTables及其各类选项的完整信息,请参阅《红帽企业Linux参考指南》。

这些规则允许到防火墙上的常规及安全服务的访问;然而,它们并不允许防火墙之后的机器使用这些服务。要允许LAN使用这些服务,你可以使用带有IPTables过滤规则的NAT。

在过去几年中,Linux作为防火墙平台的应用显著增长。从早期1.2版内核的ipfwadm 开始,Linux的防火墙代码也走过了很长一段路程了。在2.4版的Linux内核中,使用了netfilter 体系。在最新的2.4版中,Linux大大加强了安全性,例如:更好的加密支持和netfilter体系的使用。netfilter具有完全的向后兼容性。

本文将对iptables的配置做一个综述并且重点介绍一些iptables的配置工具。本文的讨论将着眼于Linux内核的IP防火墙以及其各种界面的配置工具,比如:GUI或者脚本(shell、Perl或者特定的配置语言)。使用这些工具能够简化iptables的配置减少配置的错误。关于iptables的知识请参考Rusty Russell写的Linux iptables HOWTO。

使用命令行配置iptables的困难

使用iptables的命令行接口来配置iptables防火墙对一个人来说是一个挑战,用户很难指定所有IP报文的行为。用户需要对TCP/IP和应用层协议有较深的了解。象其前辈ipchains 一样,iptables把IP过滤规则归并到链中,IP报文遍历规则链接受处理,还可以送到另外的链接受处理,或者最后由默认策略(ACCEPT、DROP、REJECT)处理。有些网络应用程序比其它一些程序更容易穿过防火墙,因此需要理解网络连接的建立和断开。

我们看一下POP3协议,这是最简单的协议之一。允许所有向内目标端口是110的报文通过通过无法解决所有的管理问题,因为这样只能使客户端向发出申请,而服务器却无法应答。另外,如果使用网络地址转换(NAT)和其它方式的报文转发,也存在许多问题。因为防火墙的配置将影响到整个企业的安全,所以应该特别小心。下面将大概地讨论iptables的配置,要获得更多细节请参考Linux iptables HOWTO

iptables的命令行选项

在进入这时的讨论之前,我们看一下iptables命令行选项的一个总结。

规则链维护选项

1.建立新的规则链(-N)

2.删除一个空的规则链(-X)

3.改变一个内置规则链的策略(-P)

4.列出一条规则链中的规则(-L)

5.擦写一条规则链中的规则(-F)

规则维护

1.在一条规则链中加入一条新的规则(-A)

2.删除一条规则链中某个位置的规则(-D)

iptables的优点

在讨论各种iptables配置工具之前,让我们看一下iptables的优点,尤其是netfilter比ipchains具有的优势。

iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。

iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。

系统日志比ipchains更容易配置,扩展性也更好。

对于网络地址转换(Network Address Translation)和透明代理的支持,netfilter更为强大和易于使用。

iptable能够阻止某些DOS攻击,例如SYS洪泛攻击。

iptables配置工具

现在,我们看一下Linux iptables的一些配置工具。我主要关注每个工具的特征、弹性和易用性。我们将讨论以下的工具:

MonMotha's Firewall2.3.5作者:MonMotha

Firewallscript(iptables4.4c-3devel)作者:Patrik Hildingsson

Ferm-0.0.18作者:Auke Kok

AGT-0.83作者:Andy Gilligan

Knetfilter-1.2.4作者:Luigi Genoni

gShield-2.0.2作者:R.Gregory

MonMotha的Firewall2.3.5

MonMotha写的Firewall2.3.5是一个大约30K的shell脚本。目前,主要适用于基于主机的保护,因为一些基于网络的选项正在开发中。这个脚本的界面(例如:给iptables传递配

置选项的方法)有点混乱。不过,它不需要配置文件而且安装容易,直接复制到任何地方都可以。默认情况下,它根本不做什么,实际上根本就不执行,也缺少文档。这个脚本对于拨号用户可能有点用处。

Firewallscript

Firewallscript(IFS4.4d)也是一个bash脚本,大约有85K。这个脚本可以用于基于主机和网络的防护。首次运行时,它会直接产生一个配置文件。不过,在默认情况下,这个文件不起什么作用,只有测试作用。这个脚本可以配置NAT和地址伪装。这个脚本非常复杂,但是缺少文档,因此最好能够仔细阅读它的代码,使用iptables-L命令哪个链已经生效,什么被允许/拒绝。这个脚本的IP报文追踪功能还可以为你提供娱乐。此外,它还会自动探测、加载iptables需要的内核模块。这个脚本和上一个脚本还具有取消(undo)功能,能够恢复iptables原来的配置文件。

Ferm

Ferm是一个Perl脚本,使用一种类C语言写成的配置文件。这种语言非常容易阅读和理解。这个脚本有很好的文档和丰富的示例作为参考。

这是一个例子:

-----------------------------------------------------------------------------

#simple workstation example for ferm

chain input{

if ppp0#put your outside interface here

{

proto tcp goto fw_tcp;

proto udp goto fw_udp;

proto icmp goto fw_icmp;

}

}

chain fw_tcp proto tcp{

dport ssh ACCEPT;

syn DENY log;

dport domain ACCEPT;

dport0:1023DENY log;

}

chain fw_udp proto udp{

DENY log;

}

chain fw_icmp proto icmp{

icmptype(

destination-unreachable time-exceeded

)ACCEPT;

DENY log;

}

-----------------------------------------------------------------------------

这个配置文件将使ferm产生iptables如下规则:允许向外的ssh和DNS报文通过;阻塞所有的UDP报文;只允许两种类型的ICMP消息通过:目的不可达和超时,并绝拒绝和日志其它类型的ICMP消息。

AGT

AGT是一个使用C语言编写的程序。从它的代码来看,目前还处于开发阶段。不支持automake,需要手工编辑Makefile文件,文档也不是很丰富,但是其配置文件非常简单。下面就是一个配置文件:

NEW|FROM-INT

NEW|RESET

||FROM-INT|icmp|ACCEPT|||||

||FROM-INT|tcp|ACCEPT|||||pop3

||FROM-INT|tcp|ACCEPT|||||imap

||RESET|tcp|REJECT--reject-with tcp-reset|||||

这样的文件格式,加上缺乏必要的文档,对使用者来说是一个很大的挑战。而且最好多花些时间学学iptables。

knetfilter

knetfilter是一个非常棒的图形化iptables配置工具,它是基于KDE的(有KDE1和KDE2两个版本)。knetfilter非常易于上手,你可以很容易地使用它来配置基于主机保护的规则和规则列表;保存和恢复测这些规则和规则列表;测试规则和规则列表(在同一个面板上运行tcpdump网络嗅探器),这一切只要点几下鼠标就可以了。它也支持NAT和网络地址伪装的配置。但是,对于拨号工作站,knetfilter工作的不太好,因为它需要本地IP,而且只探测eth0网络接口,不进行PPP探测。这个工程的文档也很少,不过因为是基于图形界面,所以即使不用手册也可以很好地使用。

gShield

gShield是一个bash shell脚本,可能是当前最成熟的一个工具。它的文档非常丰富,配置文件也比较合理直观,还能够设置NAT。它不但能够处静态IP地址,还能够处理动态IP地址(例如:PPP)。

gShield还有图形界面,目前仍然处于早期开发阶段,可以从http:

//https://www.doczj.com/doc/8914978758.html,/vhodges/gshieldconf.html下载。不过,它似乎只兼容gShield的早期版本(1.x)。

下面是一个示例配置文件:

FW_ROOT="/etc/firewall"

IPTABLES=`which iptables`

LOCALIF="eth0"

DNS="24.31.195.65"

LTIME="20/m"

ALLOW_DHCP_LEASES="YES"

...

gShield使用的默认配置非常安全,特别适合不愿意摆弄配置文件的用户,不过软件的编者建议用户最好能够通读整个配置文件。据README文件讲,gShield实现了"类tcpwrapper风格的服务访问控制功能",使用这个功能用户可以很容易地阻塞/允许某项服务,而不必考虑报文方向之类的问题,只要关心什么客户连接到服务器就可以了。

结论

虽然本文介绍了一些防火墙配置工具,但是实际上目前还没有理想的配置工具。最好的配置工具还是iptables命令,这里介绍的这些工具,只适用于对于使用iptables命令行感觉困难的用户。

ipchains和iptables在语法上的主要的差异,注意如下∶

1.在ipchains中,诸如input链,是使用小写的chains名,在iptables中,要改用大写INPUT。

2.在iptables中,要指定规则是欲作用在那一个规则表上(使用-t来指定,如-t nat),若不指定,则预设是作用在filter这个表。

3.在ipchains中,-i是指介面(interface),但在iptables中,-i则是指进入的方向,且多了-o,代表出去的方向。

4.在iptables中,来源port要使用关键字--sport或--source-port

5.在iptables中,目的port要使用关键字--dport或--destination-port

6.在iptables中,"丢弃"的处置动作,不再使用DENY这个target,改用DROP。

7.在ipchains的记录档功能-l,已改为目标-j LOG,并可指定记录档的标题。

8.在ipchains中的旗标-y,在iptables中可用--syn或--tcp-flag SYN,ACK,FIN SYN

9.在iptables中,imcp messages型态,要加上关键字--icmp-type,如∶

iptables-A OUTPUT-o eth0-p icmp-s$FW_IP--icmp-type8-d any/0-j ACCEPT

iptables使用时的样板

在设定iptables的封包过滤规则时,有几个样板的动作,若先熟に牵缶涂勺孕刑子茫来死嗤疲芸斓兀涂梢越胝飧鎏斓刂小?/P>

观察目前的设定

作法如下∶

iptables-L-n

iptablse-t nat-L-n

定义变数

FW_IP="163.26.197.8"

打开核心forward功能

作法如下∶

###-----------------------------------------------------###

#打开forward功能

###-----------------------------------------------------###

echo"1">/proc/sys/net/ipv4/ip_forward

清除所有的规则

一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下∶###-----------------------------------------------------###

#清除先前的设定

###-----------------------------------------------------###

#清除预设表filter中,所有规则链中的规则

iptables-F

#清除预设表filter中,使用者自订链中的规则

iptables-X

#清除mangle表中,所有规则链中的规则

iptables-F-t mangle

#清除mangle表中,使用者自订链中的规则

iptables-t mangle-X

#清除nat表中,所有规则链中的规则

iptables-F-t nat

#清除nat表中,使用者自订链中的规则

iptables-t nat-X

选定预设的政策

接着,要选定各个不同的规则链,预设的政策为何。作法如下∶

预设全部丢弃∶

###-----------------------------------------------------###

#设定filter table的预设政策

###-----------------------------------------------------###

iptables-P INPUT DROP

iptables-P OUTPUT DROP

iptables-P FORWARD DROP

或者预设全部接受∶

###-----------------------------------------------------###

#设定filter table的预设政策

###-----------------------------------------------------###

iptables-P INPUT ACCEPT

iptables-P OUTPUT ACCEPT

iptables-P FORWARD ACCEPT

各个规则链的预设政策可独立自主的设定,不必受其它链的影响。

以下练习,若目标为DROP,则policy请设为ACCEPT;若目标为ACCEPT,则policy请设为DROP,如此方可看出效果。

开放某一个介面

作法如下∶

iptables-A INPUT-i lo-j ACCEPT

iptables-A OUTPUT-o lo-j ACCEPT

注∶IPFW或Netfilter的封包流向,local process不会经过FORWARD Chain,

因此lo只在INPUT及OUTPUT二个chain作用。

iptables-A INPUT-i eth1-j ACCEPT

iptables-A OUTPUT-o eth1-j ACCEPT

iptables-A FORWARD-i eth1-j ACCEPT

iptables-A FORWARD-o eth1-j ACCEPT

IP伪装

使内部网路的封包经过伪装之后,使用对外的eth0网卡当作代表号,对外连线。作法如下∶

###-----------------------------------------------------###

#启动内部对外转址

###-----------------------------------------------------###

iptables-t nat-A POSTROUTING-o eth0-s172.16.0.0/16-j SNAT--to-source$FW_IP

上述指令意指∶把172.16.0.0/16这个网段,伪装成$FW_IP出去。

虚拟主机

利用转址、转port的方式,使外部网路的封包,可以到达内部网路中的伺服主机,俗称虚拟主机。这种方式可保护伺服主机大部份的port不被外界存取,只开放公开服务的通道(如Web Server port80),因此安全性甚高。

作法如下∶

###-----------------------------------------------------###

#启动外部对内部转址

###-----------------------------------------------------###

#凡对$FW_IP:80连线者,则转址至172.16.255.2:80

iptables-t nat-A PREROUTING-i eth0-p tcp-d$FW_IP--dport80-j DNAT

--to-destination172.16.255.2:80

开放内部主机可以telnet至外部的主机

开放内部网路,可以telnet至外部主机。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open外部主机telnet port23

###-----------------------------------------------------###

iptables-A OUTPUT-o eth0-p tcp-s$FW_IP--sport1024:65535-d any/0--dport23-j ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport23-d$FW_IP--dport1024:65535-j ACCEPT

开放邮包转递通道

开放任意的邮件主机送信包给你的Mail Server,而你的Mail Server也可以送信包过去。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open SMTP port25

###-----------------------------------------------------###

#以下是∶别人可以送信给你

iptables-A INPUT-i eth0-p tcp-s any/0--sport1024:65535-d$FW_IP--dport25-j ACCEPT

iptables-A OUTPUT-o eth0-p tcp!--syn-s$FW_IP--sport25-d any/0--dport

1024:65535-j ACCEPT

#以下是∶你可以送信给别人

iptables-A OUTPUT-o eth0-p tcp-s$FW_IP--sport1024:65535-d any/0--dport25-j ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport25-d$FW_IP--dport1024:65525-j ACCEPT

开放对外离线下载信件的通道

开放内部网路可以对外部网路的POP3server取信件。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open对外部主机的POP3port110

###-----------------------------------------------------###

iptables-A OUTPUT-o eth0-p tcp-s$FW_IP--sport1024:65535-d any/0--dport110-j ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport110-d$FW_IP--dport1024:65535 -j ACCEPT

开放观看网页的通道

开放内部网路可以观看外部网路的网站。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open对外部主机的HTTP port80

###-----------------------------------------------------###

ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport80-d$FW_IP--dport1024:65535-j ACCEPT

开放查询外部网路的DNS主机

开放内部网路,可以查询外部网路任何一台DNS主机。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open DNS port53

###-----------------------------------------------------###

#第一次会用udp封包来查询

iptables-A OUTPUT-o eth0-p udp-s$FW_IP--sport1024:65535-d any/0--dport53-j ACCEPT

iptables-A INPUT-i eth0-p udp-s any/0--sport53-d$FW_IP--dport1024:65535-j ACCEPT

#若有错误,会改用tcp封包来查询

iptables-A OUTPUT-o eth0-p tcp-s$FW_IP--sport1024:65535-d any/0--dport53-j ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport53-d$FW_IP--dport1024:65535-j ACCEPT

#开放这台主机上的DNS和外部的DNS主机互动查询∶使用udp

iptables-A OUTPUT-o eth0-p udp-s$FW_IP--sport53-d any/0--dport53-j ACCEPT

iptables-A INPUT-i eth0-p udp-s any/0--sport53-d$FW_IP--dport53-j ACCEPT

#开放这台主机上的DNS和外部的DNS主机互动查询∶使用tcp

iptables-A INPUT-i eth0-p tcp!-y-s any/0--sport53-d$FW_IP--dport53-j ACCEPT

开放内部主机可以ssh至外部的主机

开放内部网路,可以ssh至外部主机。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open外部主机ssh port22

###-----------------------------------------------------###

iptables-A OUTPUT-o eth0-p tcp-s$FW_IP--sport1024:65535-d any/0--dport22-j ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport22-d$FW_IP--dport1024:65535-j ACCEPT

#以下是ssh protocol比较不同的地方

iptables-A OUTPUT-o eth0-p tcp-s$FW_IP--sport1020:1023-d any/0--dport22-j ACCEPT

iptables-A INPUT-i eth0-p tcp!--syn-s any/0--sport22-d$FW_IP--dport1020:1023-j ACCEPT

开放内部主机可以ftp至外部的主机

开放内部网路,可以ftp至外部主机。

作法如下∶(预设policy为DROP)

###-----------------------------------------------------###

#open对外部主机ftp port21

###-----------------------------------------------------###

#以下是打开命令channel21

linux防火墙iptables配置(Linux下多网段Nat实现与应用)

Linux下多网段Nat实现与应用 Iptables/netfilter是一个可以替代价格昂贵的商业防火墙的网络安全保护解决方案,能够实现数据包过滤、数据包重定向和网络地址转换(NAT)等多种功能。 准备: 操作系统安装光盘:CentOS-6.1版本 硬件要求:dell poweredge 410(需双网卡) 实现功能: 192.168.11.0/24、192.168.10.0/24网段通过防火墙NAT转换访问外网,并实现数据包过滤。 过程: 步骤#1. 安装操作系统(最基本安装即可) 步骤#2. 设置网卡地址 外网eth0 IP:xx.xx.xx.xx 内网eth1 IP:172.16.1.254 网卡路径:/etc/sysconfig/network-scripts DEVICE=eth0 HWADDR=00:0e:0c:3a:74:c4 NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPV6INIT=no USERCTL=no IPADDR=xx.xx.xx.xx NETMASK=255.255.255.252 DEVICE=eth1 HWADDR=00:0e:0c:3a:74:c4 NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPV6INIT=no USERCTL=no IPADDR=172.16.1.254 NETMASK=255.255.255.0 步骤#3. 添加路由 把路由写到 /etc/rc.d/rc.local文件里,这样每次启动就不用重新设置了。 route add -net 172.16.1.0 netmask 255.255.255.0 gw 172.16.1.1 route add -net 192.168.11.0 netmask 255.255.255.0 gw 172.16.1.1 route add -net 192.168.10.0 netmask 255.255.255.0 gw 172.16.1.1 route add default gw 60.190.103.217 172.16.1.1是交换机与Linux的内网网卡接口的地址

Linux关闭防火墙的方法步骤

Linux关闭防火墙的方法步骤 windows操作系统的防火墙好关闭,但是linux操作系统防火墙可能有很多新手朋友不会关闭,下面就让小编教大家Linux 关闭防火墙的方法吧。 Linux关闭防火墙的方法 首先我们打开linux操作系统(小编以fedora操作系统为例),虽然linux提倡命令行操作,但是很多用户可能不是十分习惯,因此很多linux操作系统都有桌面图形界面,跟windows操作系统很像,也更加方便了我们的操作。 我们点击活动,找到应用程序,搜索防火墙,亦或者下拉到防火墙选项。然后点击进入防火墙,在进入之前可能会让我们输入管理员密码,当然是出于安全考虑,我们输入管理员密码即可操作,切记是root管理员的密码,不是你登陆界面的密码。

输入密码之后点击确定进入防火墙操作界面,默认的防火墙都是开启的,我们只需点击禁用按钮便可完成防火墙的禁用,是不是很简单呀,此方法只是适用于类似fedora操作系统这种有图形界面的linux操作系统,其他的linux操作系统可能不适用。 其实我们还有其他的方式关闭防火墙。我们打开终端使用命令行操作来进行防火墙的关闭操作。首先执行临时关闭防火墙操作,在此操作之前我们需要进入root权限进行下面的操作,如果你不使用root权限的话,会提示错误。 终端中输入su命令,输入密码进入root管理员操作权限。输入命令service iptables stop即可关闭防火墙,当然关闭之前我们需要看看防火墙是否开启在进行相关操作,命令跟关闭命令类似,只不过是把stop换成了status.

以上的操作只是临时关闭了防火墙而已,当你的电脑重新启动的时候又会开启,如果你想永久关闭防火墙,可以尝试以下这种方法。打开终端,在root权限下输入chkconfig iptables off即可永久关闭防火墙,当然需要我们重启才能生效。 以上就是小编总结出来的在linux操作系统关闭防火墙的方法,当然有些方法可能只适合个别的linux操作系统,如果一种方法行不通的话,可以尝试另一种方法,以上操作均是在fedora操作系统中进行,其他linux操作系统肯能略有不同,如果行不通的话可以百度一下相关操作系统的关闭方法。

Linux6 防火墙配置

linux配置防火墙详细步骤(iptables命令使用方法) 通过本教程操作,请确认您能使用linux本机。如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重! 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 referenc es) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 ACCEPTah--0.0.0.0/00.0.0.0/0 ACCEPTudp--0.0.0.0/0224.0.0.251udpdpt:5353 ACCEPTudp--0.0.0.0/00.0.0.0/0udpdpt:631 ACCEPTall--0.0.0.0/00.0.0.0/0stateRELATED,ESTABLISHED ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:22 ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:80 ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:25 REJECTall--0.0.0.0/00.0.0.0/0reject-withicmp-host-prohibited

手把手教你Linux关闭防火墙命令

手把手教你Linux关闭防火墙命令 2010-04-28 22:04 1) 重启后永久性生效: 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效: 开启: service iptables start 关闭: service iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。 在开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptables 文件,添加以下内容: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 或者: /etc/init.d/iptables status 会得到一系列信息,说明防火墙开着。 /etc/rc.d/init.d/iptables stop 关闭防火墙 最后: 在根用户下输入setup,进入一个图形界面,选择Firewall configuration,进入下一界面,选择Security Level为Disabled,保存。重启即可。 ====================================================== ——————————————————————————————— fedora下 /etc/init.d/iptables stop ======================================================= ubuntu下:

2018Linux防火墙iptables配置详解

2018-Linux防火墙iptables配置详解 一、开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口. 如果你在安装linux时没有选择启动防火墙,是这样的 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么规则都没有. (2)清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. [root@tp ~]# iptables -F清除预设表filter中的所有规则链的规则 [root@tp ~]# iptables -X清除预设表filter中使用者自定链中的规则 我们在来看一下

2.1.5 节点防火墙和SELinux配置.

2.1.5 节点防火墙和SELinux配置 1.防火墙设置 在控制和计算节点上分别执行以下操作进行防火墙设置。(1)停止iptables服务。 [root@controller ~]# service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] (2)将iptables服务配置为开机不自动启动。 [root@controller ~]# chkconfig iptables off 2.SELinux设置 在控制和计算节点上分别执行以下操作进行SELinux设置。(1)编辑SELinux的配置文件。 [root@controller ~]# vi /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # 将SELinux配置为允许模式 # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 配置完成后,重新启动控制节点和计算节点。

linux防火墙配置实验

单个IP地址建立连接 和DOS 攻击 实验 第九组 2017.05.19 单个IP地址限制连接 实验原理: 防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。 netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,

也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。 实验环境 攻击者win7 64位 ip:172.16.9.1,被攻击者虚拟机vm构造,与宿主机采用桥接,在同一网段,ip为1.1.1.2 实验目的: 通过Vmware虚拟机,配置网关,以及模拟外网,内网,Web服务器。通过 外网来进行DOS攻击,通过在被攻击的主机上抓包可以清楚地看到整个攻击过程,并且在网关上设置了NAT地址转换,在访问外网时将内网地址转换成公网地址(SNAT),以及外网访问内网时将公网地址转换成内网地址(DNAT)。并且可以在网关上设置上网时间,限制某些应用访问Internet等。 实验拓扑:

实验步骤: 搭建实验环境(Vmware虚拟机作为平台),按照逻辑拓扑图进行连接。 1.配置网关 1)配置三块网卡,分别是eth0,eth1,eth2,全部设置为桥接模式。 2)Eth1 ip地址192.168.9.1,eth2 ip地址192.168.19.1,eth0 ip地址1.1.9.1 3)使用命令echo “1”> /proc/sys/net/ipv4/ip_forward,打开路由功能 4)使用命令 /etc/init.d/iptables stop。关闭防火墙。 5)制定NAT转化策略,建议当底层网络全部通时再测试NAT。 2.配置主机(包括web服务器,外网主机) 1)配置一块网卡eth0 添加ip地址,模式为桥接。 2)增加各自的默认网关。 3)关闭本地防火墙。 3.调试dos攻击程序,在模拟外网的pc上编译执行,在web服务器上抓包观察。 4.观察NAT转化是否实现 5.实验截图: 5.1.将网卡配置为桥接模式。

Linux防火墙练习题一

1.1)设定INPUT为ACCEPT 1.2)设定OUTPUT为ACCEPT 1.3)设定FORWARD为ACCEPT 参考答案: iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT 2)定制源地址访问策略 2.1)接收来自192.168.0.3的IP访问 2.2)拒绝来自192.168.0.0/24网段的访问 参考答案: iptables -A INPUT -i eth0 -s 192.168.0.3 -j ACCPET iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j DROP 3)目标地址192.168.0.3的访问给予记录,并查看/var/log/message 参考答案: iptables -A INPUT -s 192.168.0.3 -j LOG 4)定制端口访问策略 4.1)拒绝任何地址访问本机的111端口 4.2)拒绝192.168.0.0/24网段的1024-65534的源端口访问SSH 参考答案: iptables -A INPUT -i eth0 -p tcp --dport 111 -j DROP iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --sport 1024:65534 --dport ssh -j DROP 5)定制CLIENT端的防火墙访问状态 5.1)清除所有已经存在的规则; 5.2)设定预设策略,除了INPUT设为DROP,其他为ACCEPT; 5.3)开放本机的lo可以自由访问; 5.4)设定有相关的封包状态可以进入本机; 参考答案: iptables -F iptables -X iptables -Z iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state INV ALID -j DROP 6)定制防火墙的MAC地址访问策略 6.1)清除所以已经存的规则; 6.2)将INPUT设为DROP 6.3)将目标计算机的MAC设为ACCEPT 参考答案:

Linux 防火墙的功能及安全策略

Linux 防火墙的功能及安全策略 防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。因此,防火墙的功能有以下几点: ●防火墙是网络安全的屏障 一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸如众所周知的不安全的NFS 协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路径。防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。 ●防火墙可以强化网络安全策略 通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。 ●对网络存取和访问进行监控审计 如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。另外,收集一个网络的使用和误用情况也是非常重要的。首先的理由是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。 ●防止内部信息的外泄 通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如Finger,DNS等服务。Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。但是Finger显示的信息非常容易被攻击者所获悉。攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时引起注意等等。防火墙可以同样阻塞有关内部网络中的DNS信息,这样一台主机的域名和IP地址就不会被外界所了解。

Linux防火墙 iptables详细介绍

周旭光unixzhou@https://www.doczj.com/doc/8914978758.html, Linux防火墙iptables 周旭光 unixzhou@https://www.doczj.com/doc/8914978758.html, 2011年5月10日 目录 1、Linux防火墙基础 (2) 1、iptables的规则表、链结构 (2) 1.1 规则表 (2) 1.2 规则链 (2) 2、数据包的匹配流程 (2) 2.1 规则表之间的优先级 (2) 2.2 规则链之间的优先级 (2) 2.3 规则链内部各防火墙规则之间的优先顺序 (3) 2、管理和设置iptables规则 (3) 2.1 iptables的基本语法格式 (3) 2.2 管理iptables规则 (3) iptables命令的管理控制项 (3) 2.3 条件匹配 (5) 2.3.1 通用(general)条件匹配 (5) 2.3.2 隐含(implicit)条件匹配 (6) 2.3.3 显示(explicit)条件匹配 (6) 2.4 数据包控制 (7) 3、使用防火墙脚本 (8) 3.1 导出、导入防火墙规则 (8) 3.2 编写防火墙脚本 (8)

1、Linux防火墙基础 1、iptables的规则表、链结构 1.1 规则表 iptables管理4个不同的规则表,其功能由独立的内核模块实现。 filter表:包含三个链INPUT , OUTPUT , FORWARD nat表:PREROUTING , POSTROTING , OUTPUT mangle表:PREROUTING , POSTROUTING , INPUT , OUTPUT , FORWARD raw表:OUTPUT , PREROUTING 1.2 规则链 INPUT链当收到访问防火墙本机的数据包(入站)时,应用此链中的规则 OUTPUT链当防火墙本机向外发送数据包(出站)时,应用此链中的规则 FORWARD链收到需要通过防火墙发送给其他地址的数据包,应用此链 PREROUTING链做路由选择之前,应用此链 POSTROUTING链对数据包做路由选择之后,应用此链中的规则 2、数据包的匹配流程 2.1 规则表之间的优先级 Raw mangle nat filter 2.2 规则链之间的优先级 入站数据流向:来自外界的数据包到达防火墙,首先呗PREROUTING规则链处理(是否被修改地址),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT 链进行处理,通过以后再交给上次的应用程序进行响应 转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后进行路由选择,如果数据包的目标地址是其他外部地址,则内核将其传递给FPRWARD链进行处理,然后再交给POSTROUTIING 规则链(是否修改数据包的地址等)进行处理。 出站数据流向:防火墙本身向外部地址发送数据包,首先被OUTPUT规则链处理,之后进行路由选择,然后

linux防火墙的设置

linux 防火墙的设置

Linux防火墙配置(一) 随着In ternet规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免受侵害的最基本的一种手段。虽然防火墙并不能保证系统绝对的安全,但由于它简单易行、工作可靠、适应性强,还是得到了广泛的应用。本章主要介绍与Linux系统紧密集成的iptables防火墙的工作原理、命令格式,以及一些应用实例。 9.1 iptables 防火墙介绍 netfilter/iptables 是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关iptables防火墙的基本知识,包括netfilter 框架、iptables 防火墙结构与原理、iptables命令格式等内容。 9.1.1 netfilter 框架 Linux内核包含了一个强大的网络子系统,名为netfilter ,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT IP伪装 等,也可以因高级路由或连接状态管理的需要而修改IP头信息。netfilter 位 于Linux网络层和防火墙内核模块之间,如图9-1所示。 图9-1 netfilter 在内核中的位置 虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter 模块将防火墙的功能引 入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。netfilter 模块的结构如图9-2所示。

对IPv4协议来说,netfilter 在IP数据包处理流程的5个关键位置定义了 5个钩子(hook)函数。当数据包流经这些关键位置时,相应的钩子函数就被调用。从图9-2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数 PRE_ROUTING理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。 若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机 的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD理,然后 还要经钩子函数POST_ROUTIN处理后才能传输到网络。本机进程产生的数据包要先经过钩子函数LOCAL_OU处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING理后再发送到网络。 %说明:内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,钩子函数就会 按照优先级依次调用这些注册的函数,从而可以使其他内核模块参与对数据包的处理。这些处理可以是 包过滤、NAT以及用户自定义的一些功能。 9.1.2 iptables 防火墙内核模块 netfilter 框架为内核模块参与IP层数据包处理提供了很大的方便,内核 的防火墙模块正是通过把自己的函数注册到n etfilter 的钩子函数这种方式介 入了对数据包的处理。这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT和对数据包进行修改。其中,NAT还分为SNATCH DNAT分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图9-3所示。 由图9-3可以看出,防火墙模块在netfilter 的LOCAL_IN FORWARD LOCAL_OUT 个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进行过滤。这三个位置也称为三条链,名称分别为INPUT

Linux防火墙的配置实例

Linux防火墙的配置实例 我们该如何利用Linux操作系统自带的防火墙来提高网络的管理控制功能呢?具体的来说,我们可以分三步走。一是先在Linux服务器上开一个后门,这个后门是专门给我们网络管理员管理服务器用的。二是把所有的进站、出站、转发站接口都关闭,此时,只有通过我们上面开的后门,管理员才能够远程连接到服务器上,企图任何渠道都不能连接到这台主机上。三是根据我们服务器的用途,把一些需要用到的接口开放出去。 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: service iptables start 关闭: service iptables stop 清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. [root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则 [root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则 我们在来看一下 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存. [root@tp ~]# /etc/rc.d/init.d/iptables save

LINUX在防火墙环境下DNS的安装与设置

经过几天的研究BIND,终于解决了我们单位的DNS问题。 在一般防火墙下,都是采用DMZ区内放服务器,外部访问DMZ区得到外部的IP,内部访问DMZ区时得到内部的IP。 如一个, 内部IP地址<--->放在DMZ的web服务器的IP<----->外部IP地址 从DNS上可以从以下四个方面解决: 一.iptables应用 1. 核心思想 配置动态DNS服务器的核心思想是:在DNS服务器上运行多个BIND,每个BIND为来自不同区域的用户提供解析,因此每个BIND都应具有不同的配置文件和域文件,并且分别监听在不同的端口。在接到客户端DNS请求时,根据客户的ip地址将请求重定向不同的BIND 服务端口。BIND响应时,再改写相应包的服务端口为标准的53端口。这样就可以根据客户端的ip地址将不同的解析结果返回给客户端。整个过程对于客户端来说都是透明的。实现的关键在于运行不同的BIND及运用iptables进行ip地址及端口改写操作。 2 配置过程 步骤1:配置内核 netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于"Networking options"子项下。以,我们应该选中的项目有: ?Kernel/User netlink socket [ ] Routing messages <*>; Netlink device emulation ?Network packet filtering (replaces ipchains) ....... 然后,在"IP: Netfilter Configuration ---->;"选中: Connection tracking (required for masq/NAT) FTP protocol support IP tables support (required for filtering/masq/NAT) limit match support MAC address match support Netfilter MARK match support Multiple port match support TOS match support

Linux 防火墙概述

Linux 防火墙概述 防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。它是不同网络或网络安全域之间信息的唯一出入口,能根据企业的安全政策控制(允许、拒绝、监测)出入网络的信息流,且本身具有较强的抗攻击能力。它是提供信息安全服务,实现网络和信息安全的基础设施。在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和Internet之间的任何活动,保证了内部网络的安全。 随着Internet的发展和普及,人们在享受信息化带来的众多好处的同时,也面临着日益突出的网络安全问题。例如,保护在Internet上国家秘密和商业秘密,网上各种行为者的身份确认与权责利的确认,高度网络化的各种业务(商务、政务、教务等)信息系统运行的正常和不被破坏,网络银行、电子商务系统中的支付与结算的准确真实,都将成为企业形象、商业利益、国家安全和社会稳定的焦点。1.防火墙的作用 古代人们在房屋之间修建一道墙,这道墙可以防止火灾发生的时候蔓延到别的房屋,因此被称为“防火墙”。而现在,我们将将防火墙应用于网络,其含意为“隔离在内部网络与外部网络之间的一道防御系统。” 应该说,在互联网上防火墙是一种非常有效的网络安全模型,通过它可以隔离风险区域(即Internet或有一定风险的网络)与安全区域(局域网)的连接,同时不会妨碍人们对风险区域的访问。防火墙可以监控进出网络的通信量,从而完成看似不可能的任务;仅让安全、核准了的信息进入,同时又抵制对企业构成威胁的数据。随着安全性问题上的失误和缺陷越来越普遍,对网络的入侵不仅来自高超的攻击手段,也有可能来自配置上的低级错误或不合适的口令选择。因此,防火墙的作用是防止不希望的、未授权的通信进出被保护的网络,迫使单位强化自己的网络安全政策。一般的防火墙都可以达到以下目的: ●可以限制他人进入内部网络,过滤掉不安全服务和非法用户; ●防止入侵者接近防御设施; ●限定用户访问特殊站点; ●为监视Internet安全提供方便。 由于防火墙假设了网络边界和服务,因此更适合于相对独立的网络,例如Intranet等种类相对集中的网络。防火墙正在成为控制对网络系统访问的非常流行的方法。事实上,在Internet上的Web网站中,超过三分之一的Web网站都是由某种形式的防火墙加以保护,这是对黑客防范最严,安全性较强的一种方式,任何关键性的服务器,都建议放在防火墙之后。如图9-1所示,它可以在用户的计算机和Internet之间建立起一道屏障,把用户和外部网络隔离;用户可以通过设定规则来决定哪些情况下防火墙应该隔断计算机与Internet之间的数据传输,哪能些情况下允

linux防火墙iptables常用规则(屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链)

linux防火墙iptables常用规则(屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链) 一、iptables:从这里开始 删除现有规则 iptables -F (OR) iptables --flush 设置默认链策略 iptables的filter表中有三种链:INPUT, FORWARD和OUTPUT。默认的链策略是ACCEPT,你可以将它们设置成DROP。 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 你需要明白,这样做会屏蔽所有输入、输出网卡的数据包,

除非你明确指定哪些数据包可以通过网卡。 屏蔽指定的IP地址 以下规则将屏蔽BLOCK_THIS_IP所指定的IP地址访问本地主机: BLOCK_THIS_IP="x.x.x.x" iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP (或者仅屏蔽来自该IP的TCP数据包) iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP 允许来自外部的ping测试 iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT 允许从本机ping外部主机 iptables -A OUTPUT -p icmp --icmp-type echo-request -j

Linux 防火墙的分类

Linux 防火墙的分类 世界时没有两种一样的事物,防火墙也是如此,防火墙的分类方法有很多,可以从形式上、技术上、结构上、性能上对其进行分类。 1.从形式上分类 从形式上分类,可以把防火墙分为软件和硬件防火墙两大类。 ●软件防火墙 软件防火墙运行于特定的计算机上,它需要用户预先安装好的计算机操作系统的支持,一般来说这台计算机就是整个网络的网关。软件防火墙就像其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。使用这类防火墙,需要用户对操作系统平台比较熟悉。 ●硬件防火墙 硬件防火墙是一种以物理形式存在的专用设备,通常架设在内部局域网和外部互联网的连接处,直接在网络设备上检查过滤有害的数据,位于防火墙设备后端的网络或服务器接收到的是经过防火墙处理过的相对安全的数据,其不必占用CPU资源,进行基于软件的架构的NDIS(网络驱动程序接口)数据检测,这样大大提高了工作效率。 普通硬件防火墙,其拥有标准计算机的硬件平台和一些功能经过简化处理的Unix、Linux操作系统已及防火墙软件,这种防火墙措施相当于专门在一台计算机上安装了软件防火墙,除了不需要处理其他事务以外,其仍使用一般的操作系统,因此操作系统的安全问题,会对其造成影响。 芯片级防火墙基于专门的硬件平台,使用专用的OS(操作系统)。专有的ASIC 芯片促使它们比其他种类的防火墙速度更快,处理能力更强,性能更高。这类防火墙最出名的厂商有Juniper、Cisco、NetScreen、等。这类防火墙由于使用专用OS,因此防火墙本身的漏洞比较少,不过价格相对比较高昂。 2.从技术上分类 从技术上,可以把防火墙分为包过滤型、应用代理型(网关防火墙)和状态监视型防火墙3大类。 ●包过滤(Packet filtering)型 包过滤型防火墙工作在OSI网络参考模型的网络层和传输层,它根据数据包头源地址,目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。 包过滤方式是一种通用、廉价和有效的安全手段。之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。

linux下防火墙的配置

Linux 自带的iptables 配置防火墙 一.实验目的: 通过自己所学的网络安全知识,完成Linux 自带的iptables 配置防火墙。 二.设计内容: 利用Linux 自带的iptables 配置防火墙。完成如下配置: 要求: (1)阻止任何外部世界直接与防火墙内部网段直接通讯 (2)允许内部用户通过防火墙访问外部HTTP 服务器允许内部用户通过防 火墙访问外部HTTPS 服务器 (3)允许内部用户通过防火墙防问外部FTP 服务器 三.实验步骤: 用实体机做内网,Linux 做防火墙,Redhat 做外网。 Linux 防火墙的设置 : Renhat 的设置: —————————————————装 订 线————————————————————————————————

内网的IP地址: 首先内网拼通防火墙内的路由器和外网: 防火墙启动IP转发功能: 外网添加路由使得外网可以拼同内网:

添加成功: 此时外网可以拼通内网: 在外网Redhat中编写脚本语言,使得允许内部用户通过防火墙访问外部HTTP服务器允许内部用户通过防火墙访问外部HTTPS服务器,允许内部用户通过防火墙防问外部FTP服务器: 外网启动http和ftp:

外网中编写网页内容: 启动编写的脚本,启动防火墙 此时再用外网拼内网拼不通,即防火墙阻止了外网访问内网: 用内网访问外网http://192.168.23.23 内部用户通过防火墙访问外部HTTP服务器,内部用户通过防火墙访问外部HTTPS服务器

用内网访问外网ftp://192.168.23.23 允许内部用户通过防火墙防问外部FTP服务器

Linux防火墙 配置文件 iptables详解

对于Internet上的系统,不管是什么情况都要明确一点:网络是不安全的。因此,虽然创建一个防火墙并不能保证系统100%安全,但却是绝对必要的。 Linux提供了一个非常优秀的防火墙工具—netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍使用netfilter/iptables实现防火墙架设和Internet连接共享等应用。 netfilter/iptabels 应用程序,被认为是 Linux中实现包过滤功能的第四代应用程序。netfilter/iptables包含在2.4以后的内核中,它可以实现防火墙、NAT(网络地址翻 译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。netfilter/iptables 从ipchains和ipwadfm(IP防火墙管理)演化而来,功能更加强大。下文将netfilter/iptabels统一称为iptables。 可 以用iptables为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。iptales只读取 数据包头,不会给信息流增加负担,也无需进行验证。要想获得更好的安全性,可以将其和一个代理服务器(比如squid)相结合。 基本概念 典型的防火墙设置有两个网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。 通 过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用iptables系统提 供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下: iptables [-t table] command [match] [target] 1.表(table) [-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和 mangle。该选项不是必需的,如果未指定,则filter作为缺省表。各表实现的功能如表1所示。 表1 三种表实现的功能

相关主题
文本预览
相关文档 最新文档