web安全之防火墙的安全配置

iptables介绍

iptables是与最新的2.6.x版本的linux内核集成的ip信息包过滤系统。如果linux系统连接到因特网lan、服务器或链接lan和因特网的代理服务器,则该服务器有利于在linux系统上更好的控制ip信息包过滤和防火墙配置。

neitfilter/iptables ip信息包过滤系统是一种强大的工具,可用于添加、编辑和出去规则,这些规则是在做信息包过滤决定是,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,二这些表集成在linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链中。

隋坦netfilter/ iptables ip信息包过滤系统被称为单个实体,但实际上有两个组件netfilter和iptables组成。

neitfilter组件也称为内核空间(kernelspace),是内核一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables组件是一种工具,也成为用户空间(userpace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非晋正在使用RED HAT LINUX 7.1或更高版本

,否则需要下载该工具并安装使用它。

包交换和状态监测

防火墙通常使用的安全控制手段主要有包过滤、状态监测、代理服务。包过滤服务是一种简单、有效的安全控制技术。它通过在网络间相互连接的设备上加载允许、禁止来自某些特定的原地址、目的地址、TCP端口号等规则,对通过设备的数据包经行检测,限制数据包进出内部网络。

包过滤的最大优点是对用户透明,传输性能高。反由于安全控制层次在网络层、传输层。安全控制力度也只限于原地址、目的地址和端口号。因而只能进行较为初步的安全监测,对于恶意的拥塞攻击、内存覆盖或病毒等高层次的攻击手段,则无能为力。

状态监测是比包过滤更为有效的安全控制方法。对新建的应用连接,状态监测监察与此案时至的安全规则,允许符合规则的连接通过,并在内存中记录下该链接的相关信息,生成状态表。对该连接的后续数据包,只要符合状态表就可以通过。这种防治的好处在于:由于不需要对每一个数据包进行规则检查,而是一个连接的后续数据包(通常是大量的数据包)通过散列算法,直接进行状态检查,从而使得性能得到较大提高:而且由于状态表示动态的,因而可以有选择的、动态开通1024号以上端口,使得安全性得到进一步的提高。

现在防火墙主要分为以下三种类型:包过滤、应用代理、状态监测

包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术的防火墙哈~

代理防火墙:因为一些特使的报文可以轻松突破包过滤防火墙的保护,比如大家知道的SYN攻击、ICMP 洪水攻击,所以一代理服务器作为专门卫用户保密或者突破访问限制的数据转发通道的应用failing防火墙出现了哈~ 其实用了一种应用协议分析的新技术。

状态监测防火墙:其基于动态包过滤技术发展而来,加入了一种状态监测的模块,近一点发展了  会话过滤功能,会话状态的保留是有时间限制的,此防火墙还可以对报的内通进行分析,从而避免开放过多的端口。

iptables 功能介绍

基础的操作方法

启动指令:service iptables start

重启指令:service iptables restart

关闭指令: service iptables stop

iptables 的表与链

iptables具有Filter.NAT,Mangle,RAW四种内建表:

1Filter表

Filter表示iptables的默认表,因此如果你没有自定义表,那么久默认使用filter表,它具有以下三种内件链:

INPUT链-处理来自外部的数据。

OUTPOT链-处理向外发送的数据。

FORWARD链-将数据转达到本机的其他网卡设备上。

2 NAT表

NAT 表有三种内建链:

PREROUTING 链-处理刚到达本机并在路由转发前的数据包。他会转换数据包中的目标IP 地址(destination ip address ),通常用于DNAT(destination NAT).

POSTROUTING链-处于即将离开本机的数据包。他会转换数据包中的原IP 地址(source ip address ) ,通常用于SNAT(source NAT)。

OUTPUT链-处理本机产生的数据包。

3 Mangle 表

Mangle 表用于指定如何处理数据包。他能改变TCP 头总的QoS位。Mangle表具有5个内建链:

PREROUTING

OUTPUT

FORWARD

INPUT

POSTROUTING

4 Raw 表用于处理异常,他具有2个内建链:

PREROUTING chain

PUTPUT chain

下面展示了Iptables的三个內建表:

二、IPTABLES 规则(Rules)

牢记以下三点式理解iptables规则的关键:

RULES 包括一个条件和一个目标(target)

如果满足条件,就执行目标(target)中的规则或者特定值。

如果不满足条件,就判断下一条Rules

目标值 (Target Values)

下面是你可以在target例指定的特殊值:

ACCEPT- 允许防火墙接收数据包

DROP -防火墙丢弃包

QUEUE-防火墙数据包移交发哦用户空间

RETURN -防火墙停止当前连接中的后续Rules .并返回到调用链(the calling chain)中。

如果你执行iptables --list你将关防火墙上的可用规则、下列说明当前系统没有定义防火墙,你可以看到,他显示了默认的filter表,以及内默认的input连弩, forward链,output链。

查看mangle表:

查看NAT表:

查看RAW表

三、清空所有iptables规则

在配置iptables之前,你通常需要用iptables --list命令或者iptables-save命令查看有无存在规则,因为有时需要删除现有的iptables规则:

这两条命令式等效的。但是并非执行后就万事大吉了。你仍然需要检查规则是不是真的清空了,因为有linux发型版上的这个命令不会清除NAT中的规则,除此之外,此时只能手动清除:

四、永久生效

当你删除、添加规则后,这些更改并不能永久生效,这些规则很有可能在系统重启后恢复原样。为了让配置永久生效,根据平台不同,具体操作也不同,下面进行简单介绍:

1 Ubuntu

首先,保存现有规则:

然后新建一个bash 脚本,并保存到/etc/network/if-pre-up.d/目录下:

这样,每系统重启后Iptables规则都会被自动加载。

/!注意:不要尝试在。bashbrc 或者.profile中执行以上命令,因为用户通常不是root,而且这只能在登录时加载iptables规则。

2 CentOS,Red Hat

查看当前规则:

五、追加Iptables规则

可以使用iptables -A命令追加新规则,其中-A 表示Append。因此,新的规则将追加到链尾。

一般而言,最后一条规则用于丢弃(DROP)所有数据包。如果你已经有这样的规则了,并且使用-A参数添加新规则,那么就是无用功。

1语法

Iptables -A chain firewall-rule

-A chain -指定添加规则链

filewall-rule -具体的规则参数

2 描述规则的基本参数

以下这些规则参数用于描述数据包的协议、原地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。这些描述是对规则的基本描述

-P 协议(protocol)

指定的协议,如tcp,udp,icmp等,可以使用all来指定所有协议。

如果不指定-P 参数,则默认是all值。这并不明智,请总是明确指定协议名称。

可以使用协议(如tcp),或者协议值(比如6代表tcp)来指定协议。映射关系请查看/etc/protocols

还可以使用-protocol参数代替-P参数

-S 原地址(source)

指定数据包的原地址

参数可以使用ip地址、网络地址、主机名

例如 :- s 192.168.1.101指定ip地址

例如: -s 192.168.1.10/24 指定网络地址

如果不指定-s参数,就代表所有地址

还可以使用-src或者-source

-d 目的地址(destination)

指定目的地址

参数-S 相同

还可以使用-dst或者-destination

-j 执行目标(jump to target)

-j 代表jump to target

-j 指定了当与规则(Rule)匹配第如何处理数据包

可能的值是ACCEPT DROP QUEUE RETURN

还可以指定其他链(Chain)作为目标

-i  输入接口  (input interface)

-i 代表输入接口(input interface)

-i 指定了要处理来自哪个接口的数据包

这些数据包即将进入INPUT FORWARD PREROUTE

例如: -i etho 制定了要处理经由etho进入的数据包

如果不指定-i参数,那么将处理进入所有接口的数据包

如果出现! -i etho,那么将处理所有经由etho以外的接口进入的数据包

如果出现-i eth +,那么将处理所有经由eth开头进入的数据包

还可以使用-in-interface参数

-o 输出 (out interface)

-o 代表 out interface

-o 指定了数据包由哪个接口输出

这些数据包即将进入FORWARD OUTPUT POSTROUTING 链

如果不指定-o etho 那么系统上的所有接口都可以作为输出接口

如果出现! -o etho ,那么将从etho以为的接口输出

如果出现-i eth+,那么将仅从eth开头的接口输出

还可以使用-out -interface参数

3 描述规则的扩展参数

对规则有了一个基本描述之后,有时候我们还希望指定宽口、tcp标志 ICMP类型等内容。

- sport 源端口 (source port) 针对-p tcp 与-sport ssh

/etc/services文件描述了上述映射关系。

从性能上将,使用端口号更好

使用冒号可以匹配端口范围,如 -sport 22:100

还可以使用 -source-port

--dport 目的端口 (destination port)针对-p tcp 或者-p udp

参数和-sport类似

还可以使用-- destination-port

--tcp-flags TCP 标志 针对-p tcp

可以指定由都好=分隔开的多个参数

有效值可以是:SYN  ACK   FIN   RST   URG  PSH

可以使用all或者NONE

--icmp-type ICMP 类型 针对-p icmp

-icmp-type 0 表示Echo Reply

-icmp-type 8 表示Echo

时间: 2024-08-24 18:54:02

web安全之防火墙的安全配置的相关文章

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

华为防火墙6000web界面配置

实验名称华为防火墙6000web界面配置 实验拓扑图 3.实验目的:  1.使内网 192.168..2.0网段通过pat转化可以上外网 2.使内网 client 1可以访问外网web服务器 3.发布内网WEB服务器,可以使外网client2可以访问 4.地址 规划 :  trust : client1 : 192.168.2.1 255.255.255.0 gateway  192.168.2.254 dmz :  192.168.3.1 255.255.255.0 gateway 192.1

两种web最简单的负载均衡配置(nginx haproxy)

-------------------------------------------------------------- Centos 6.6 环境  php  http://lampol.blog.51cto.com/11662628/1851016 -------------------------------------------------------------- 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器

轻量级web服务器lighttpd的编译及配置(for x86-linux)

转自:http://blog.163.com/ljf_gzhu/blog/static/131553440201211522317367/ 备注: PC Linux:Ubuntu-10.10 Linux用户:root lighttpd版本:1.4.30 gcc版本:4.4.5 1. 编译.安装 1.1. 先到lighttpd官网下载对应版本的软件包: http://www.lighttpd.net/ 我下载的是 lighttpd-1.4.30.tar.gz 1.2. 将压缩包解压到任意目录(我的

Spring Web MVC框架(八) 配置Spring Web MVC

这一篇文章对应于Spring参考文档 Configuring Spring MVC,讲的是Spring Web MVC各部分的配置方法,包括Java代码配置和XML文件配置以及MVC命名空间的使用方法. 启用MVC Java配置和XML命名空间 默认配置 要启用MVC Java配置(@Controller等各种注解)和XML命名空间,如果使用的是Java配置,在配置类上再添加@EnableWebMvc注解即可. @Configuration @EnableWebMvc public class

Web 应用程序项目 XXXX 已配置为使用 IIS。 无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站。(转载)

Web 应用程序项目 XXXX 已配置为使用 IIS. 无法访问 IIS 元数据库.您没有足够的特权访问计算机上的 IIS 网站. 2012年05月19日 ⁄ 综合 ⁄ 共 261字 ⁄ 字号 小 中 大 ⁄ 评论关闭 问题:Windows8下直接使用VS 打开项目,出现问题: XXXX 已配置为使用 IIS.  无法访问 IIS 元数据库.您没有足够的特权访问计算机上的 IIS 网站. 解决: 1.以"管理员权限"运行VS,在VS菜单打开项目即可. 但是以上解决方法不方便. 2.较为

Web API 实现JSONP或者安装配置Cors跨域

前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想也是心痛不已,水太深了,摸索原理关键是太枯燥和乏味了,但是呢,从情感上还是挺乐意去摸索原理,而情绪上不太乐意去探究原理,于是乎,本文就由此诞生了,借此文缓解下枯燥的心情和压抑的情绪.后续继续摸索原理. 接下来我们要讲的就是利用JSONP和利用Cors这两种方式来实现跨域,请看下文..... JSON

juniper防火墙 L2TP VPN配置

juniper防火墙 L2TP  VPN配置 建立L2TP_POOL 创建连接的用户: 创建用户组: 更改L2TP的连接池: 更改L2TP的隧道: 设置防火墙的策略: Win7连接:

web.config中sessionState节点的配置方案

web.config中sessionState节点的配置方案 web.config关于sessionState节点的配置方案,sessionState有五种模式:Custom,off,inProc,StateServer,SqlServer. 1.Custom模式  会话状态将使用自定义数据存储区来存储会话状态信息. 2.off模式 从字面上就可以看出这个是关闭模式,如果当前页面不需要session的值,为了减少服务器资源,你可以去掉Session的开销. <sessionState mode=