您好,欢迎访问三七文档
第11章安全管理本章主要讲述Linux下的Netfilter安全子系统的结构、功能,以及Iptables工具的使用;IpsecVPN的结构、分类及设置方法。学习目标:了解安全威胁熟悉Netfilter的特点和结构掌握Iptables的使用掌握IPsecVPN的设置11.1计算机面临的安全威胁概述目前网络中存在的对信息系统构成的威胁主要表现在如下几个方面:非授权访问:没有预先经过同意或认可,就使用网络或计算机资源被看作非授权访问,或擅自扩大权限,越权访问信息等。计算机网络面临的安全威胁主要有:信息泄漏或丢失;破坏数据完整性;恶意添加、修改数据;拒绝服务攻击;网络病毒及木马。11.2Linux下的防火墙11.2.1常见的防火墙类型常见的防火墙有以下三种类型1.网络地址转换(NAT)型防火墙2.包过滤(Packetfilter)型防火墙3.代理(proxy)型防火墙11.2.2Iptables概述Netfilter是集成到Linux2.4及以后版本核心中的安全子系统,可以提供包过滤、网络地址转换、端口地址转换和其他的包处理功能。Iptables有一个通用的表结构用来存放各种规则,表里的每一条规则包含两部分:一个分类器和一个相关联的动作,在Netfilter中动作也被称作目标。Iptables的主要特征:支持IPv4和IPv6的无状态包过滤;支持IPv4和IPv6的有状态包过滤;支持IPv4的网络地址转换和端口转换(NAT和NAPT);灵活、可扩展的架构;为第三方提供了多个层次的API接口;丰富的模块/插件利用Netfilter可以完成的工作:基于有状态或者无状态包过滤技术构建Internet防火墙;利用NAT和伪装技术为内部私有地址网络提供外部网络连接;利用NAT技术实现透明代理;配合Iproute2系统,可以构建复杂的QoS和策略路由;对数据包做进一步的操作,如修改IP头中的TOS/DECP/ECN标志。11.2.3图形界面的防火墙设置工具在Gnome中选择菜单“系统”|“管理”|“安全级和防火墙”,或者直接在终端窗口中执行,命令如下:[root@localhost~]#system-config-selinux此工具只能对防火墙做基本的设置,如图11-1所示,如果要做复杂的设置,必需使用命令行工具Iptalbes。图11-1SeLinux设置在图形界面中,如果要开放某种服务,可以选中该服务,也可以把要开放的服务所用的端口号加入“otherports”。防火墙的配置文件为/etc/sysconfig/iptables。实际上图形界面和Iptables的控制作用是一样的。11.2.4Iptables的安装Iptables的正常工作需要Linux核心的支持,在利用makemenuconfig编译内核时打开内核选项:Networking--Networkingoptions--Networkpacketfiltering(replaceipchains)--IP:Netfilterconfiguration,按需要选择把相应功能,编译并且安装新内核。到源代码包。最新的源代码包为iptables-1.4.0.tar.bz2。#tarjxvfiptables-1.4.0.tar.bz2#cdiptables-1.4.0#make;编译#makeinstall;安装#makeinstall-devel;安装开发包,对开发者有用11.2.5启动和停止服务启动Iptables的服务:#/sbin/serviceiptablesstart重启动Iptables的服务:#/sbin/serviceiptablesrestart设置为系统启动时自动启动该服务:#/sbin/chkconfig–level345iptableson停止该服务:#/sbin/serviceipchainsstop11.2.6Iptables规则的保存和恢复iptables-save用来保存当前内存空间的策略,iptables-restore用来将iptables配置文件的策略写入内存空间。iptables-save的命令格式如下:#iptables-save–c/etc/sysconfig/iptables或者#seviceiptablessave该命令表示将内存中的规则写入/etc/sysconfig/iptables文件中,同时将当前内存中针对每条策略的流量统计值写入该文件。#iptables-save–tnat/etc/sysconfig/iptables这条命令只保存当前内存中的nat表。#iptables-restore/etc/sysconfig/iptables这条命令表明将/etc/sysconfig/iptables配置文件中的内容写入内存空间,并覆盖当前内存空间中的所有配置。如果不希望更改当前内存空间中的配置,可以添加-n参数,如下:#iptables-restore–n/etc/sysconfig/iptables这表明配置文件只将内存空间中没有的策略添加到内存空间。另一种运行iptables的方法是使用脚本。11.2.7Netfilter的工作原理和基础结构1.Netfilter的工作原理Netfilter分为两部分:核心空间和用户空间。在核心空间,Netfilter从底层实现了数据包过滤的各种功能,比如NAT、状态检测以及高级的数据包策略匹配等;在用户空间,Netfilter为用户提供了控制核心空间工作状态的命令集。当一个包从以太网卡进入防火墙,Netfilter会对包进行处理,当包匹配了某个表的一条规则的时,会触发一个目标或动作。ACCPET:余下的规则不再进行匹配而直接将数据包导向目的地;DROP:数据包被阻止,并且不向源主机发送任何回应信息;QUEUE:该数据包被传递到用户空间;REJECT:数据包被丢弃,并且向源主机发送一个错误信息。每条链都有一个默认的策略,可以是ACCEPT、DROP、REJECT或者QUEUE。2.基础结构Netfilter中有三类表,分别是filter、nat和mangle,每个表里包含若干个链(chains),每条链里包含若干条规则(rules)。Linux系统收到的或送出的数据包,至少要经过一个表,一个数据包也可能经过每个表里的多个规则,这些规则的结构和目标可以很不相同,但都可以对进入或者送出本机的数据包的特定IP地址或IP地址集合进行控制。特别强调Iptables不依赖于DNS进行工作,所以在Iptables规则中不能出现域名,只能是IP地址,关系如图11-2所示。PREROUTINGROUTEFORWARDPOSTROUTINGINPUTOUTPUTLocalmanglenatmanglefiltermangleFilternatmanglefiltermanglenat图11-2Netfilter的数据包处理结构11.2.8Iptables语法规则Iptables的语法如下:Iptalbes[-t要操作的表]操作命令[要操作的链][规则的标识号][匹配条件][-j匹配以后要进行的动作]操作命令及使用形式:-A:APPEND,在指定链的末尾添加一条新规则。命令形式:-A链名【例1】在filter表的INPUT链的末尾追加一条规则。#iptables–tfilter–AINPUT–jDROP-I:Insert,在指定的链里插入一条新规则。命令形式:-I链名[规则号码]【例2】在filter表的INPUT链的链首插入一条规则。#iptables–tfilter-IINPUT-JACCEPT因为filter是默认的表,所以上边的命令也可以写成:#iptables-IINPUT-JACCEPT【例3】在filter表的INPUT链里插入一条新规则,序号为5。#iptables-tfilter-IINPUT5ACCEPT-D:删除指定的规则。若规则列表中有多条内容相同的规则,则只删除第一条;必需保证被删除的规则是存在的,否则报错。命令形式:-D链名规则号码|规则的具体内容【例4】删除filter表的第5条规则。#iptables–tfilter-DINPUT5【例5】从INPUT链中删除内容为“-s211.84.150.137–jDROP”的规则。#iptables–tfilter-DINPUT-s211.84.150.137–jDROP-P:Policy,设置某个链的默认规则。命令形式:-P链名动作#iptables–tfilter–PINPUTREJECT当数据包没有被链的所有规则匹配时,则按链的默认规则处理。此规则前不能加“-j”参数。-F:清空指定表里的所有规则。【例6】清空filter表的所有规则。#iptables–F【例7】清空nat表里POSTROUTING链里的所有规则。#iptables–tnat-FPOSTROUTING-R:REPLACE,替换指定的规则。命令形式:-R链名规则号码规则内容11.2.9Iptables的状态机制iptables共有四种状态,分别被称为NEW、ESTABLISHED、INVALID、RELATED,这四种状态对于TCP、UDP、ICMP三种协议均有效。NEW:说明这个包是防火墙收到的第一个包,这是conntrack模块看到的某个连接的第一个包。ESTABLISHED:已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。只要发送并接到应答,连接就是ESTABLISHED的。一个连接要从NEW变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向等信息包也被看作是ESTABLISHED,只要它们是用户所发出的信息的应答。RELATED:当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。也就是说一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED的。INVALID:说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如内存溢出、收到不知属于哪个连接的ICMP错误信息等。一般地,系统丢弃(DROP)这个状态的任何东西,因为防火墙认为这是不安全的。Netfilter可以根据连接的状态对数据包进行过滤,这是一个非常好的特性。11.2.10配置实例iptables的所有命令都是以iptables开头,其总体的命令结构如下:iptables[-ttable]command[match][target/jump]1.限制内网用户访问外网使用的参数:Filter表的FORWARD链匹配条件参数:-s、–d、-p、–sport和–port。目标:ACCEPT或DROP【例26】禁止地址为192.168.1.100的计算机上网。#iptables–AFORWARD–s192.168.1.100–jDROP【例27】禁止MAC地址为02:01:00:00:3F的计算机上网。#iptables–AFORWARD–mmac–mac-source02:01:00:00:3F–jDROP【例28】禁止内网用户访问白宫政府网站。#iptables–AFORWARD–d–jDROP2.对外网开放内部服务器需要提前准备好如下参数:服务协议(TCP/UDP)对外服务的端口内部服务的私网IP内部服务的服务端口【例29】从ppp0接口进来的、目标端口是80的数据包,将其目的地址修改为内部服务器的私网IP192.168.1.200#iptables–tnat–APREROUTING-Ippp0–ptcp–dport80–jDNAT–
本文标题:第十一章安全管理
链接地址:https://www.777doc.com/doc-1267744 .html