大家好,今天来为大家解答服务器防火墙配置这个问题的一些问题点,包括linux配置防火墙详细步骤也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
一、防火墙配置中必备的六个主要命令
防火墙的基本功能,是通过六个命令来完成的。一般情况下,除非有特殊的安全需求,这个六个命令基本上可以搞定防火墙的配置。下面笔者就结合CISCO的防火墙,来谈谈防火墙的基本配置,希望能够给大家一点参考。
第一个命令:interface
Interface是防火墙配置中最基本的命令之一,他主要的功能就是开启关闭接口、配置接口的速度、对接口进行命名等等。在买来防火墙的时候,防火墙的各个端都都是关闭的,所以,防火墙买来后,若不进行任何的配置,防止在企业的网络上,则防火墙根本无法工作,而且,还会导致企业网络不同。
1、配置接口速度
在防火墙中,配置接口速度的方法有两种,一种是手工配置,另外一种是自动配置。手工配置就是需要用户手工的指定防火墙接口的通信速度;而自动配置的话,则是指防火墙接口会自动根据所连接的设备,来决定所需要的通信速度。
如:interface ether0 auto--为接口配置“自动设置连接速度”
Interface ether2 100ful--为接口2手工指定连接速度,100MBIT/S。
这里,参数ether0或者etner2则表示防火墙的接口,而后面的参数表示具体的速度。
笔者建议
在配置接口速度的时候,要注意两个问题。
一是若采用手工指定接口速度的话,则指定的速度必须跟他所连接的设备的速度相同,否则的话,会出现一些意外的错误。如在防火墙上,若连接了一个*机的话,则*机的端口速度必须跟防火墙这里设置的速度相匹配。
二是虽然防火墙提供了自动设置接口速度的功能,不过,在实际工作中,作者还是不建议大家采用这个功能。因为这个自动配置接口速度,会影响防火墙的*能。而且,其有时候也会判断失误,给网络造成通信故障。所以,在一般情况下,无论是笔者,还是思科的官方资料,都建议大家采用手工配置接口速度。
2、关闭与开启接口
防火墙上有多个接口,为了安全起见,打开的接口不用的话,则需要及时的进行关闭。一般可用shutdown命令来关闭防火墙的接口。但是这里跟思科的IOS软件有一个不同,就是如果要打开这个接口的话,则不用采用no shutdown命令。在防火墙的配置命令中,没有这一条。而应该采用不带参数的shutdown命令,来把一个接口设置为管理模式。
笔者建议
在防火墙配置的时候,不要把所有的接口都打开,需要用到几个接口,就打开几个接口。若把所有的接口都打开的话,会影响防火墙的运行效率,而且,对企业网络的安全也会有影响。或者说,他会降低防火墙对于企业网络的控制强度。
第二个命令:nameif
一般防火墙出厂的时候,思科也会为防火墙配置名字,如ether0等等,也就是说,防火墙的物理位置跟接口的名字是相同的。但是,很明显,这对于我们的管理是不利的,我们不能够从名字直观的看到,这个接口到底是用来做什么的,是连接企业的内部网络接口,还是连接企业的外部网络接口。所以,网络管理员,希望能够重命令这个接口的名字,利用比较直观的名字来描述接口的用途,如利用outside命令来表示这个接口是用来连接外部网络;而利用inside命令来描述这个接口是用来连接内部网络。同时,在给端口进行命名的时候,还可以指定这个接口的安全等级。
Nameif命令基本格式如下
Nameif hardware-id if-name security-level
其中,hardware-id表示防火墙上接口的具体位置,如ether0或者ether1等等。这些是思科防火墙在出厂的时候就已经设置好的,不能够进行更改。若在没有对接口进行重新命名的时候,我们只能够通过这个接口位置名称,来配置对应的接口参数。
而if-name则是我们为这个接口指定的具体名字。一般来说,这个名字希望能够反映出这个接口的用途,就好象给这个接口取绰号一样,要能够反映能出这个接口的实际用途。另外,这个命名的话,我们网络管理员也必须遵守一定的规则。如这个名字中间不能用空格,不同用数字或者其他特殊字符(这不利于后续的操作),在长度上也不能够超过48个字符。
security-level表示这个接口的安全等级。一般情况下,可以把企业内部接口的安全等级可以设置的高一点,而企业外部接口的安全等级则可以设置的低一点。如此的话,根据防火墙的访问规则,安全级别高的接口可以防卫安全级别低的接口。也就是说,不需要经过特殊的设置,企业内部网络就可以访问企业外部网络。而如果外部网络访问内部网络,由于是安全级别低的接口访问安全级别高的接口,则必须要要进行一些特殊的设置,如需要访问控制列表的支持,等等。
笔者建议
在给接口配置安全等级的时候,一般不需要设置很复杂的安全等级。在安全要求一般的企业,只需要把接口的安全登记分为两级(一般只用两个接口,一个连接外部网络,一个连接内部网络),如此的话,防火墙的安全级别管理,会方便许多。
另外,就是企业内部网络的安全级别要高于外部网络的安全级别。因为从企业安全方面考虑,我们的基本原则是内部网络访问外部网络可以放开,而外部网络访问内部网络的话,就要有所限制,则主要是出于限制病*、*等给企业网络所造成的危害的目的。不过,若企业内部对外部访问也有限制的话,如不允许访问FTP服务器,等等,则可以借助访问控制列表或者其他技术手段来实现。
在对接口进行命名的时候,要能够反映这个接口的用途,否则的话,对其进行命名也就没有什么意思了。一般的话,如可以利用inside或者 outside来表示连接内网与外网的接口。如此的话在,网络管理员在一看到这个接口名字,就知道这个接口的用途。这几可以提高我们防火墙维护的效率。对于我们按照这个名字来对接口进行配置的时候,就比较容易实现,而不需要再去想我需要配置的接口名字是什么。若我们真的忘记了接口名字的话,则可以利用 show nameif命令来检验接口名字的配置。
第三个命令:IP address
在防火墙管理中,要为每个启用的防火墙接口配置IP。一般来说,防火墙的IP支持两种取得方式,一是通过自动获得,如可以通过企业内网的DHCP服务器取得IP;二是用户通过手工指定IP。
这个命令的具体格式为
Ip adress if-name IP [NETMASK]
若我们用上面的IF-NAME命令,给防火墙的接口配置好别名之后,则在后续的其他命令中,如这个配置IP的命令,则就不需要采用接口的位置名,而可以利用这个别名为具体的接口设置相关的参数。
若我们通过手工指定IP的时候,需要注意几个问题。一是若企业中还有DHCP服务器的话,则要注意这个网络冲突的问题。这个防火墙上的接口IP,在企业的整个网络中,也必须保持唯一,否则的话,就会造成IP冲突的错误。所以,若企业中还有DHCP服务器的话,则在DHCP服务器配置的时候,需要注意,这个防火墙接口所用的IP不应该在DHCP服务器的自动分配IP的池中,否则的话,很容易造成IP的冲突。
另外,在给他手工配置IP的时候,为了管理上的方便,最好能够指定连续的IP。也就是说,防火墙各个接口的IP为连续的。笔者在企业的IP规划中,特意为防火墙的接口预留了4个IP。即使,现在没有使用到这个接口,为了避免以后用到时,IP不连续,所以,在整个网络的 IP规划中,还是为其预留了足够多的IP。
这里的网络掩码不是必须的。若网络管理员在配置防火墙的时候,没有配置这个网络掩码的话,则防火墙会自动根据企业内部网络的结构,则防火墙会自动给其设置一个网络掩码。所以,在一般的情况下,这个网络掩码可以不用设置,免得填写错误的话,还造成不必要的损失。
笔者建议
若是采用DHCP方式取得接口的IP的,则在DHCP服务器配置的时候,最好能够给防火墙的各个接口配置连续的IP。如此的话,可以方便我们对防火墙的接口进行管理。若企业的网络规模比较大,安全级别比较高的话,则一般建议不要采用DHCP的方式,而需要给防火墙的各个接口手工指定 IP。
第四个命令:NAT与GLOBAL、STATIC命令
使用NAT(网络转换)命令,网络管理员可以将内部的一组IP转换成为外部的公网;而global命令则用于定义用网络转换命令NAT转换成的或者的范围。简单的说,利用NAT命令与GLOBAL命令,能够实现IP之间的转换,还可以实现IP到端口的映射。
这个网络转换命令在实际工作中非常的有用。我们都知道,现在公网IP非常的缺乏,基本上,一家企业只有一到两个公网。而对于企业来说,他们的文件服务器、OA系统、邮件服务器等等可能都需要外部访问,而如果没有NAT技术的话,则在公网中要进行访问的话,必须具有公网的IP。这就大大限制了企业内部信息化系统的外部访问,家庭办公、出差时访问企业内部网络等等,变的无法实现。而现在网络转换技术,就是为解决这个问题而产生的。在网络转换技术的帮助下,可以把企业内部的IP跟端口唯一的映射到外部公网的IP。如此的话,内网的IP就有了一个合法的公网IP,则在公司外面的员工就可以通过互联网访问企业内部的信息化系统。
在实际工作中,用的最多的就是将本地转换为一个担搁的全局,而不是一个范围。如公司内部的ERP服务器IP为 192.168.0.6,此时,若我们希望,外部的员工,如在其他城市的一个销售办事处,他们能够利用202.96.96.240这个公网访问这台服务器。若要实现这个需求,该如何配置呢?
Static(inside,outside) 192.168.0.6 202.96.96.236
此时,外部用户就可以利用这个202.96.96.236公网IP,来访问企业内部的ERP系统。
其实,配置了这条命令之后,在防火墙服务器中,就有了这个一一对应的关系。当外部网络通过访问202.96.96.236这个IP时,在防火墙服务器中,就会把这个IP转换为192.268.0.6,如此就实现了外部网络访问企业的内部信息化系统。
不过,此时若不止这么一个信息化系统,现在OA系统(192.168.0.5)与ERP系统(192.168.0.6),在家办公的人或者出差在外的人都需要能够访问这两个服务器,此时,该如何处理呢?
如企业有两个公网IP,那也好办,只需要把OA系统与ERP系统分别对应到一个公网IP即可。但是,现在的问题是,企业只有一个IP,此时,该如何处理呢?为此,我们可以利用static命令,实现端口的重定向。简单的说,端口重定向,允许外部的用户连接一个内部特定的IP与端口,并且让防火墙将这个数据流量重定向到合适的内部中去。
作者提醒
1、应该有足够的全局IP去匹配NAT命令指定的本机IP。否则的话,可以结合使用PAT(根据端口对应IP)来解决全局的短缺问题。而对于绝大部分中国企业来说,基本上都是不够的,要采用PAT技术来解决短缺问题。PAT技术,最多允许60个客户端(内部IP)使用同一个公网的IP。
2、网络转换除了可以解决公网ID短缺问题的话,还有一个很好的副作用。就是可以把内部的主机隐藏起来,从而实现内部主机的安全*。如上面的例子中,如外面的用户需要访问企业内部的ERP服务器的话,则他们只需要知道公网就可以了,不需要知道到底他们访问的是内部的那台服务器,这台服务器的IP是多少。如此的话,就可以最大限度的保护企业内部服务器的安全。
第五个命令:ICMP命令
当我们做好相关的配置之后,接下去的工作我们就需要利用测试命令,来判断我们所配置的准确*。最基本的两个测试命令,就是PING与DEBUG命令。
Ping命令我们网络管理员都是很熟悉的了。但是,在防火墙中有一个比较特殊的地方,就是在默认情况下,防火墙会拒绝所有来自于外部接口的ICMP输入流量。当我们PING一个外网的IP时,若跟对方连接通畅的话,则对方会返回一个ICMP响应的回答。而防火墙默认的情况下,是会拒绝这个ICMP流量的。这主要是出于安全方面的考虑。但是,在我们进行测试的时候,我们不喜欢防火墙禁止接收这个ICMP响应回答,不然的话,我们就无法进行测试工作了。
所以,在防火墙刚刚开始配置的时候,我们往往需要让防火墙允许接收这个流量,我们需要利用permit命令来让防火墙通过这个流量。
我们可以利用这条命令来实现这个需求:icmp permit any any outside。这个命令的意识就是允许ICMP协议在防火墙上畅通无阻的运行,允许防火墙接收来自外部的ICMP流量。
笔者提醒
不过,在测试完以后,最好还是能够还原原先的设置,即让防火墙拒绝接收这个来自外部接口ICMP流量,这对于提高企业内部的安全*,非常有帮助,如可以很好的防止DOS攻击,等等。
第六个命令:write memory.
一般来说,我们在对防火墙配置所做的更改,是不会写入当防火墙的闪存中的。防火墙如此的设计,是为了防止网络管理员万一不小心,做了一些难以恢复的设置时,只需要重新启动一下防火墙,就可以恢复以前的设置了。也就是说在,对防火墙的更新配置,在没有应该命令把他写入到闪存中,防火墙一般都是先把它存放在RAM中。而RAM中的数据,当防火墙重新启动后,都会丢失。
所以,当配置测试完成之后,千万要记住,要利用write memory命令,把相关的更改配置写入到闪存中。如此的话,才能够在防火墙重新启动后,这些相关的配置仍然能够起作用。
笔者提醒
在没有测试之前,最好不要把更改配置写入到闪存中。因为一旦写入到闪存中,你若做了一些难以恢复的配置,而在测试的时候出现了问题,此时,你只能够重置防火墙,以前的配置将会全部丢失,回复到出厂状态,那对于我们网络管理员来说,是个很大的打击。所以,一般需要对相关的配置测试无误后,才能够利用这个命令,永久的保存配置。
不过,在防火墙配置的时候,要注意不要断电,否则的话,你做的配置将会全功尽弃。不过,若在防火墙一端,接上UPS电源,是一个比较明智的做法。
二、Linux服务器怎样设置防火墙
一、怎样在Linux系统中安装Iptables防火墙?
几乎所有Linux发行版都预装了Iptables。您可以使用以下命令更新或检索软件包:
sudo apt-get install iptables
二、关闭哪些防火墙端口?
防火墙安装的第一步是确定哪些端口在服务器中保持打开状态。这将根据您使用的服务器类型而有所不同。例如,如果您运行的是Web服务器,则可能需要打开以下端口:
网络:80和443
SSH:通常在端口22上运行
电子邮件:110(POP3),143(IMAP),993(IMAP SSL),995(POP3 SSL)。
1、还原默认防火墙规则
为确保设置无误,我们需从一套新的规则开始,运行以下命令来清除防火墙中的规则:
iptables-F
2、屏蔽服务器攻击路由
我们可以运行下列标准命令来隔绝常见的攻击。
屏蔽syn-flood数据包:
iptables-A INPUT-p tcp!–syn-m state–state NEW-j DROP
屏蔽XMAS数据包:
iptables-A INPUT-p tcp–tcp-flags ALL ALL-j DROP
阻止无效数据包:
iptables-A INPUT-p tcp–tcp-flags ALL NONE-j DROP
3、打开所需端口
根据以上命令可屏蔽常见的攻击方式,我们需要打开所需端口。下列例子,供您参考:
允许SSH访问:
iptables-A INPUT-p tcp-m tcp-dport 22-j ACCEPT
打开LOCALHOST访问权限:
iptables-A INPUT-i lo-j ACCEPT
允许网络流量:
iptables-A INPUT-p tcp-m tcp-dport 80-j ACCEPT
iptables-A INPUT-p tcp-m tcp-dport 443-j ACCEPT
允许SMTP流量:
iptables-A INPUT-p tcp-m tcp-dport 25-j ACCEPT
iptables-A INPUT-p tcp-m tcp-dport 465-j ACCEPT
三、测试防火墙配置
运行下列命令保存配置并重新启动防火墙:
iptables-L-n
iptables-s*e/ sudo tee/ etc/ sysconfig/ iptables
service iptables restart
以上就是简单的iptables防火墙安装与配置过程。
三、linux配置防火墙详细步骤
通过本教程操作,请确认您能使用linux本机。如果您使用的是ssh远程,而又不能操作本机,那么建议您慎重,慎重,再慎重!
我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
复制代码
代码如下:
[root@tp~]# iptables-L-n
Chain INPUT(policy ACCEPT)
target prot opt source destination/ppChain FORWARD(policy ACCEPT)
target prot opt source destination/ppChain OUTPUT(policy ACCEPT)
target prot opt source destination/ppChain 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
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时,选择了有防火墙,并且开放了22,80,25端口.
如果你在安装linux时没有选择启动防火墙,是这样的
复制代码
代码如下:
[root@tp~]# iptables-L-n
Chain INPUT(policy ACCEPT)
target prot opt source destination/ppChain FORWARD(policy ACCEPT)
target prot opt source destination/ppChain OUTPUT(policy ACCEPT)
target prot opt source destination
什么规则都没有.
(2)清除原有规则.
不管你在安装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/ppChain FORWARD(policy ACCEPT)
target prot opt source destination/ppChain OUTPUT(policy ACCEPT)
target prot opt source destination
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.
复制代码
代码如下:
[root@tp~]#/etc/rc.d/init.d/iptables s*e
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
复制代码
代码如下:
[root@tp~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧
(3)设定预设规则
复制代码
代码如下:
[root@tp~]# iptables-P INPUT DROP
[root@tp~]# iptables-P OUTPUT ACCEPT
[root@tp~]# iptables-P FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.
怎么办,去本机操作呗!
(4)添加规则.
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
为了能采用远程SSH登陆,我们要开启22端口.
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-p tcp--dport 22-j ACCEPT
[root@tp~]# iptables-A OUTPUT-p tcp--sport 22-j ACCEPT
(注:这个规则,如果你把OUTPUT设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.
其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
复制代码
代码如下:
[root@tp~]# iptables-A OUTPUT-p tcp--sport 80-j ACCEPT
,其他同理.
如果做了WEB服务器,开启80端口.
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-p tcp--dport 80-j ACCEPT
如果做了邮件服务器,开启25,110端口.
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-p tcp--dport 110-j ACCEPT
[root@tp~]# iptables-A INPUT-p tcp--dport 25-j ACCEPT
如果做了FTP服务器,开启21端口
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-p tcp--dport 21-j ACCEPT
[root@tp~]# iptables-A INPUT-p tcp--dport 21-j ACCEPT
如果做了DNS服务器,开启53端口
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-p tcp--dport 53-j ACCEPT
如果你还做了其他的服务器,需要开启哪个端口,照写就行了.
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
允许icmp包通过,也就是允许ping,
复制代码
代码如下:
[root@tp~]# iptables-A OUTPUT-p icmp-j ACCEPT(OUTPUT设置成DROP的话)
[root@tp~]# iptables-A INPUT-p icmp-j ACCEPT(INPUT设置成DROP的话)
允许loopback!(不然会导致DNS无法正常关闭等问题)
复制代码
代码如下:
IPTABLES-A INPUT-i lo-p all-j ACCEPT(如果是INPUT DROP)
IPTABLES-A OUTPUT-o lo-p all-j ACCEPT(如果是OUTPUT DROP)
下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.
减少不安全的端口连接
复制代码
代码如下:
[root@tp~]# iptables-A OUTPUT-p tcp--sport 31337-j DROP
[root@tp~]# iptables-A OUTPUT-p tcp--dport 31337-j DROP
有些些特洛伊木*扫描端口31337到31340(即*语言中的 elite端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会
还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.
当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加
允许SSH登陆一样.照着写就行了.
下面写一下更加细致的规则,就是限制到某台机器
如:我们只允许192.168.0.3的机器进行SSH连接
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-s 192.168.0.3-p tcp--dport 22-j ACCEPT
如果要允许,或限制一段IP可用 192.168.0.0/24表示192.168.0.1-255端的所有IP.
24表示子网掩码数.但要记得把/etc/sysconfig/iptables里的这一行删了.
-A INPUT-p tcp-m tcp--dport 22-j ACCEPT因为它表示所有都可以登陆.
或采用命令方式:
复制代码
代码如下:
[root@tp~]# iptables-D INPUT-p tcp--dport 22-j ACCEPT
然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.
复制代码
代码如下:
[root@tp~]#/etc/rc.d/init.d/iptables s*e
这样写!192.168.0.3表示除了192.168.0.3的ip
其他的规则连接也一样这么设置.
在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
复制代码
代码如下:
[root@tp~]# iptables-A FORWARD-i eth0-o eth1-m state--state RELATED,ESTABLISHED-j ACCEPT
[root@tp~]# iptables-A FORWARD-i eth1-o eh0-j ACCEPT
丢弃坏的TCP包
复制代码
代码如下:
[root@tp~]#iptables-A FORWARD-p TCP!--syn-m state--state NEW-j DROP
处理IP碎片数量,防止攻击,允许每秒100个
复制代码
代码如下:
[root@tp~]#iptables-A FORWARD-f-m limit--limit 100/s--limit-burst 100-j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
复制代码
代码如下:
[root@tp~]#iptables-A FORWARD-p icmp-m limit--limit 1/s--limit-burst 10-j ACCEPT
我在前面只所以允许ICMP包通过,就是因为我在这里有限制.
二,配置一个NAT表放火墙
1,查看本机关于NAT的设置情况
复制代码
代码如下:
[root@tp rc.d]# iptables-t nat-L
Chain PREROUTING(policy ACCEPT)
target prot opt source destination
Chain POSTROUTING(policy ACCEPT)
target prot opt source destination
SNAT all-- 192.168.0.0/24 anywhere to:211.101.46.235
Chain OUTPUT(policy ACCEPT)
target prot opt source destination
我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章
当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的
如果你想清除,命令是
复制代码
代码如下:
[root@tp~]# iptables-F-t nat
[root@tp~]# iptables-X-t nat
[root@tp~]# iptables-Z-t nat
2,添加规则
添加基本的NAT转换,(关于如何配置NAT可以看我的另一篇文章),
添加规则,我们只添加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
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
例:
禁止与211.101.46.253的所有连接
复制代码
代码如下:
[root@tp~]# iptables-t nat-A PREROUTING-d 211.101.46.253-j DROP
禁用FTP(21)端口
复制代码
代码如下:
[root@tp~]# iptables-t nat-A PREROUTING-p tcp--dport 21-j DROP
这样写范围太大了,我们可以更精确的定义.
复制代码
代码如下:
[root@tp~]# iptables-t nat-A PREROUTING-p tcp--dport 21-d 211.101.46.253-j DROP
这样只禁用211.101.46.253的FTP连接,其他连接还可以.如web(80端口)连接.
按照我写的,你只要找到QQ,MSN等其他软件的IP,和端口,以及基于什么协议,只要照着写就行了.
最后:
drop非法连接
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-m state--state INVALID-j DROP
[root@tp~]# iptables-A OUTPUT-m state--state INVALID-j DROP
[root@tp~]# iptables-A FORWARD-m state--state INVALID-j DROP
允许所有已经建立的和相关的连接
复制代码
代码如下:
[root@tp~]# iptables-A INPUT-m state--state ESTABLISHED,RELATED-j ACCEPT
[root@tp~]# iptables-A OUTPUT-m state--state ESTABLISHED,RELATED-j ACCEPT
[root@tp~]#/etc/rc.d/init.d/iptables s*e
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
复制代码
代码如下:
[root@tp~]# service iptables restart
别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,
上面的所有规则我都试过,没有问题