您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 15-防火墙与Linux代理服务器
防火墙与Linux代理服务器Linux提供了一个非常优秀的防火墙工具netfilter/iptables,它免费、功能强大,可以对流入流出的信息进行灵活控制,并且可以在一台低配置机器上很好地运行。一、netfilter/iptables简介Linux在2.4以后的内核中包含netfilter/iptables,系统这种内置的IP数据包过滤了具使得配置防火墙和数据包过滤变得更加容易,使用户可以完全控制防火墙配置和数据包过滤。netfiher/iptables允许为防火墙建立可定制的规则来控制数据包过滤,并且还允许配置有状态的防火墙。另外,netfiher/iptables还可以实现NAT(网络地址转换)和数据包的分割等功能。netfilter组件也称为内核空间,是内核的一部分,由一些数据包过滤表组成,这些表包含内核,用来控制数据包过滤处理的规则集。iptables组件是一种工具,也称为用户空间,它使插入、修改和删除数据包过滤表中的规则变得容易。使用用户空间(iptables)构建自己定制的规则,这些规则存储在内核空间的过滤表中。这些规则中的目标告诉内核,对满足条件的数据包采取相应的措施。根据规则处理数据包的类型,将规则添加到不同的链中。处理入站数据包的规则被添加到INPUT链中。处理出站数据包的规则被添加到OUTPUT链中。处理正在转发的数据包的规则被添加到FORWARD链中。这二个链是数据包过滤表(filter)中内置的默认主规则链。每个链都可以有一个策略,即要执行的默认操作,当数据包与链中的所有规则都不匹配时,将执行此操作(理想的策略应该丢弃该数据包)。数据包经过filter表的过程如图1所示。图1数据包经过fiher表的过程二、iptables的语法及其使用通过使用iptables命令建立过滤规则,并将这些规则添加到内核空间过滤表内的链中。添加、删除和修改规则的命令语法如下:格式:#iptables[-ttable]command[match][target]说明:1、table[-ttable)有三种可用的表选项:filter、nat和mansle。该选项不是必需的,如未指定,则filter作为默认表。filter表用于一般的数据包过滤,包含INPUT、OUTPUT和FORWARD链。nat表用于要转发的数据包,包含PREROUTING、OUTPUT和POSTROUTING链。manglc表用于数据包及其头部的更改,包含PREROUTING和OUTPUT链。2.commandcommand是iptables命令中最重要的部分,它告诉itables命令要进行的操作,如插入规则、删除规则、将规则添加到链尾等。中tables常用的一些操作命令见下表。表iptables常用的操作命令操作命令功能-A或-append该命令将一条规则附加到链的末尾-D或-delete通过用-D指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则-P或-policy该命令设置链的默认目标,即策略。所有与链中任何规则都不匹配的数据包都将被强制使用此链的策略-N或-new-chain用命令中所指定的名称创建一个新链-F或-flush如果指定链名,该命令删除链中的所有规则,如果未指定链名,该命令删除所有链中的所有规则。此参数用于快速清除-L或-list列出指定链中的所有规则示例:#iptables-AINPUT-s192.168.0.10-jACCEPT该命令将一条规则附加到INPUT链的末尾,确定来自源地址192.168.0.10的数据包可以ACCEPT。#iptables-DINPUT-dport80-jDROP该命令从INPUT链删除规则。#iptables-PINPUTDROP该命令将INPUT链的默认目标指定为DROP。这将丢弃所有与INPUT链中任何规则都不匹配的数据包。3.matchmateh部分指定数据包与规则匹配所应具有的特征,比如源IP地址、目的IP地址、协议等。lptables常用的规则匹配器见下表。表iptab]es常用的规则匹配器参数功能-p或--protocol该通用协议匹配用于检查某些特定协议。协议示例有TCP、UDP、ICMP及用逗号分隔的任何这三种协议的组合列表以及ALL(用于所有协议)。AILL是默认匹配,可以使用!符号,表示不与该项匹配-s或--souece该源匹配用于根据数据包的源IP地址来与它们匹配。该匹配还允许对某一范围内的IP地址进行匹配,可以使用!符号,表示不与该项匹配。默认源匹配与所有IP地址匹配-d或--destination该目的地匹配用于根据数据包的目的地IP地址来与它们匹配。该匹配还允许对某一范围内IP地址进行匹配,可以使用!符号,表示不与该项匹配示例:#iptables-AINPUT-pTCP,UDP#iptables-AINPUT-p!ICMP#iptables-AOUTPUT-s192.168.0.10#iptables-AOUTPUT-s1210.43.1.100#iptables-AINPUT-d192.168.1.1#iptables-AOUTPUT-d1210.43.1.1004.target目标是由规则指定的操作,lptaLles常用的一些目标和功能说明见下表。表iptables常用的目标和功能目标功能ACCEPT当数据包与具有ACCEPT目标的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历链(虽然该数据包可能遍历另一个表中的其他链,并且有可能在那里被丢弃)。该目标被指定为-jACCEPTDROP当数据包与具有DROP目标的规则完全匹配时,会阻塞该数据包,并且不对它做进一步处理。该目标被指定为-jDROPREJECT该目标的工作方式与DROP目标相同,但它比DROP好。和DROP不同,REJECT不会在服务器和客户机上留下死套接字。另外,RKJECT将错误消息发回给数据包的发送方。该目标被指定为-jREJECTRETURN在规则中设置的RETURN目标让与该规则匹配的数据包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的默认策略处理数据包。该目标被指定为-jRETURN5.保存规则用上述方法建立的规则被保存到内核中,这些规则在系统重启时将丢失。如果希望在系统重启后还能使用这些规则,则必须使用iptables-save命令将规则保存到某个文件(iptables-script)中。#iptables-saveiptables-script执行如上命令后,数据包过滤表中的所有规则都被保存到lptables-script文件中。当系统重启时,可以执行lptaLles-restoreiptables-script命令,将规则从文件iptables-scrtpt中恢复到内核空间的数据包过滤表中。三、设置防火墙在终端窗口执行system-config-securitylevel命令,打开“安全级别设置”窗口,如图2所示。可以启用或停用防火墙。可以添加可信任服务,比如添加FTP和SSH。添加的可信任服务其实是允许数据包从该服务对应的端口进出。另外也可以直接添加可信任的端口,比如添加了3128(squid服务)。端窗口执行iptables-L命令,如图3所示,可以看出刚才添加的过滤规则已经生效。图2安全级别设置窗口图3执行iptables-L命令下面是一个iptables的脚本实例,读者要根据自己的环境需求进行相应的调整。#!/bin/bashINET_IF=ppp0#外网接口LAN_IF=eth0#内网接口LAN_IP_RANGE=192.168.1.0/24#内网IP地址范围,用于NATIPT=/sbin/iptables#定义变量MODPROBE=/sbin/modprobe$MODPROBEip_tables#下面9行加载相关模块$MODPROBEiptable_nat$MODPROBEip_nat_ftp$MODPROBEip_nat_irc$MODPROBEipt_mark$MODPROBEip_conntrack$MODPROBEip_conntrack_ftp$NODPROBKip_conntrack_irc$NODPROBKipt_MASOUZRADEforTABLEinfilternatmangle;do#清除所有防火墙规则$IPT-t$TABLE-F$IPT-t$TABLR-Xdone$IPT-PINPUTDROP#下面6行设置filter和nat表的默认策略$IPT-POUTPUTACCEPT$IPT-PFOKNARDDROP$IPT-tnat-PPREROUTINCACCEPT$IPT-tnat-PPOSTROUTINGACCEPT$1PT-tnat-POUTPUTACCEPT#允许内网samba、smtp和pop3连接$IPT-AINPUT-mstate--stateESTABLISHED,RKLATED-jACCEPT$IPT-AINPUT-ptop-mmultiport--dports1863,443,110,80,25-jACCEPT$IPT-AINPUT-ptop-s$LAN_IP_RANGR--dport139-jACCEPT#允许DNs连接$IPT-AINPUT-i$LAN_IF-pudp-mmultiport--dports53-jACCEPT#为了防止DOS攻击,可以最多允许15个初始连接,超过的将被丢弃$IPT-AINPUT-s$LAN_IP_RANGE-ptop-mstate--stateESTABLISHED,RELATED-jACCEPT$IPT-AINPUT-i$INET_IF-ptop--syn-mconnlimit--connlimit-above15-jDROP$IPT-AINPUT-s$LAN_IPRANGE-Ptop--syn-mconnlimit--connlimit-above15-jDROP#设置ICMP阈值,记录攻击行为$IPT-AINPUT-picmp-mlimit--limit3/s-jLOG--log-levelINPO--log-prefixICMPpacketIN:$IPT-AINPUT-picmp-mlimit--limit6/m-jACCEPT$IPT-AINPUT-picmp-iDROP#开放的端口$IPT-AINPUT-pTCP-i$INEIF--dport21-jACCEPT#FTP$IPT-AINPUT-pTCP-i$INEIF--dport22-jACCEPT#SSH$IPT-AINPUT-pTCP-i$INEIF--dport25-jACCEPT#SMTP$IPT-AINPUT-pTCP-i$INEIF--dport53-jACCEPT#DNS$IPT-AINPUT-pTCP-i$INEIF--dport53-jACCEPT#DNS$IPT-AINPUT-pTCP-i$INEIF--dport80-jACCEPT#禁止BT连接$IPT-IPORNARD-Mstate--stateESTABLISHKD,RELATZD-JACCEPT$IPT-APORNARD-mipp2p--edk--kazaa--bIT-jDROP$IPT-APORNARD-ptcp-mipp2p--ares-jDROP$IPT-APORNARD-pudp-mipp2p--kazaajDROP#只允许每组ip同时15个80端口转发$IPT-APORWARD-ptop--syn--dport80-mconnlimit--connlimit-above15--connlimit-mask24-jDROP#NAC、IP地址绑定$IPT-APORNARD-s192.168.O.1-mmac--mac-source00:E2:A1:56:C2-ptcp--dport80-iA
本文标题:15-防火墙与Linux代理服务器
链接地址:https://www.777doc.com/doc-1576012 .html