文档库 最新最全的文档下载
当前位置:文档库 › 安装L7filter使iptables支持对七层应用进行过滤

安装L7filter使iptables支持对七层应用进行过滤

安装L7filter使iptables支持对七层应用进行过滤
安装L7filter使iptables支持对七层应用进行过滤

安装L7filter使iptables支持对七层应用进行过滤

重新编译内核,使iptables支持L7filter,对七层应用进行过滤

Iptables对于七层上面的应用过滤本身不支持,需要安装第三方的模块方可支持。

L7-filter是一个iptables的外挂模块,它可以过滤很多种的L7协议,这样能够封杀如P2P、IM等应用。

1.适用编译环境

操作系统:RedHat Enterprise Linux AS4 U4 以上且带有GCC编译工具

2.软件下载

kernel:2.6.25

https://www.wendangku.net/doc/7c9137803.html,/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2

iptables:

https://www.wendangku.net/doc/7c9137803.html,/projects/iptables/files/iptables-1.4.0.tar.bz2

l7-filter:

https://www.wendangku.net/doc/7c9137803.html,/project/showfiles.php?group_id=80085

netfilter-layer7-v2.20.tar.gz

l7-protocols-2008-04-23.tar.gz

3.给内核打L7-filter补丁

将以上各软件包都解压到/usr/src 目录

#cd /usr/src

#tar xzvf netfilter-layer7-v2.20.tar.gz

#tar xjvf linux-2.6.25.tar.bz2

#cd linux-2.6.25

#patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch

4.编译内核

#make oldconfig

使用make oldconfig可以继承老的kernel的配置,为自己的配置省去很多麻烦。

#make menuconfig

make menuconfig是文字界面下推荐一种方式,在这里可以选择你需要编译到核心的模块。因为前面make oldconfig已经很多都继承老的配置,所以一般配置不要动。

有两项需要注意:

第一项:(在我的版本里面默认就是选上的)

General setup —>features —>

Prompt for development and/or incomplete? code/drivers

第二项:(选择iptables里面关于L7filter的)

Networking —> Networking options —>

— Network packet filtering framework (Netfilter)

[ ] Network packet filtering debugging

Advanced netfilter configuration?>

Bridged IP/ARP packets filtering–?>

Core Netfilter Configuration —>

IP: Netfilter Configuration —>

Bridge: Netfilter Configuration —>

Core Netfilter Configuration —>

里面有很多的选项,推荐将其全部选择。

IP: Netfilter Configuration —>

IP tables support (required for filtering/masq/NAT)

该项必须选择,其它项可根据需要选择,不过同样推荐将其全部选择。

#make

#make modules

#make modules_install

#make install

#vi /boot/grub/grub.conf

default=0

修改默认以新的内核启动。

#cp /usr/src/linux-2.6.25/.config /boot/config-2.6.25

将新的内核配置文件复制到/boot目录。

#reboot

重启服务器。

#uname –r

2.6.25

重启完成后确认内核版本是否正确。

5.给iptables打补丁并升级

#rpm -qa |grep iptables

#rpm -e –nodeps iptables1.x.x

卸载系统中的旧版本iptables。

#cd /usr/src

#tar xjvf iptables-1.4.0.tar.bz2

#tar xzvf netfilter-layer7-v2.20.tar.gz

#cd iptables-1.4.0

# patch p1 < /usr/src/netfilter-layer7-v2.20/iptables-1.4-for-kernel-2.6.20forward-layer7-2.20.patch # chmod +x extensions/ .layer7-test

# export KERNEL_DIR=/usr/src/linux-2.6.25

# export IPTABLES_DIR=/usr/src/iptables-1.4.0

#make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install

# iptables -V

iptables v1.4.0

确认iptables版本是否正确。

6.安装l7-protocol

#cd /usr/src/

#tar xzvf l7-protocols-2008-11-23.tar.gz

#cd l7-protocols-2008-11-23

#make install

其实就是把响应的目录copy到/etc/l7-protocols/

真正调用的是/etc/l7-protocols/protocols/下面的文件

可以打开下面具体的文件,里面是一些L7程序特征码的正则表达式形式

这样自己也可以按照这样的样子,写自己的特征码。

该特征码软件包一直在不停的更新,其后面的日期就是更新的日期,推荐定期选择最新的包进行更新。

7.测试

#iptables -I FORWARD -p udp –dport 53 -m string –string ―tencent‖ –algo bm -j DROP

#iptables -I FORWARD -p tcp -m multiport –dport 80,443 -m layer7 –l7proto qq -j DROP

#iptables -I FORWARD -p udp –dport 8000 -j DROP

#iptables -I FORWARD -p tcp -m layer7 –l7proto socks -j DROP

#iptables -I FORWARD -p udp –dport 53 -m string –string ―messenger‖ –algo bm -j DROP

#iptables -I FORWARD -p tcp -m multiport –dport 80,443 -m layer7 –l7proto msnmessenger -j DROP

#iptables -I FORWARD -p udp –dport 1863 -j DROP

#iptables -t mangle -A PREROUTING -m layer7 –l7proto qq -j DROP

#iptables -t mangle -A PREROUTING -m layer7 –l7proto msnmessenger -j DROP

可通过上面的策略表达式测试是否成功禁止掉qq和msn。

附注:

使用-j MARK 参数与TC搭配: https://www.wendangku.net/doc/7c9137803.html,/blog/archives/2005/07/cbqinit.html

lsmod可以查看当前加载的模块

modprobe可以加载模块

与iptables相关的模块在下面两个目录:/lib/modules/2.6.25/kernel/net/netfilter/

/lib/modules/2.6.25/kernel/net/ipv4/netfilter/

相关网址:

下载与说明:https://www.wendangku.net/doc/7c9137803.html,/HOWTO#Get

支持协议:https://www.wendangku.net/doc/7c9137803.html,/protocols 其它:Application Layer Packet Classifier for Linux L7-filter Supported Protocols

Netfilter Packet Traversal

流程图:

IPTABLES 规则(Rules)

二、IPTABLES 规则(Rules)
牢记以下三点式理解 iptables 规则的关键:
? ? ?
Rules 包括一个条件和一个目标(target) 如果满足条件,就执行目标(target)中的规则或者特定值。 如果不满足条件,就判断下一条 Rules。
目标值(Target Values)
下面是你可以在 target 里指定的特殊值: ACCEPT – 允许防火墙接收数据包 ? DROP – 防火墙丢弃包 ? QUEUE – 防火墙将数据包移交到用户空间 ? RETURN – 防火墙停止执行当前链中的后续 Rules, 并返回到调用链(the calling chain)中。 如果你执行 iptables --list 你将看到防火墙上的可用规则。 下例说明当前系统没 有定义防火墙,你可以看到,它显示了默认的 filter 表,以及表内默认的 input 链, f orward 链, output 链。 # iptables -t filter --list Chain INPUT (policy ACCEPT) target prot opt source destination
?
Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source 查看 mangle 表: # iptables -t mangle --list 查看 NAT 表: # iptables -t nat --list 查看 RAW 表:
destination
destination
# iptables -t raw --list /!\注意:如果不指定-t 选项,就只会显示默认的 filter 表。因此,以下两种命令形 式是一个意思: # iptables -t filter --list (or) # iptables --list 以下例子表明在 filter 表的 input 链, forward 链, output 链中存在规则:

iptables操作手册

1iptables与firewalld的关系 RHEL7.0以后,使用firewalld服务取代了iptables服务,但是依然可以使用iptables服务,只是默认不开启了,iptables和firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具,是操作系统上的一种服务,将定义好的规则交给内核中的netfilter(网络过滤器)来读取,从而实现防火墙的功能,firewalld和iptables除了可以可以在inbond和outbond方向做策略限制以外,还能实现snat和dnat功能。 注意:firewalld和iptables同时只能运行一种服务,否则会出现不可预知的情况 2iptables安装 RHEL7.0以后,iptables默认不开启,需要安装iptables服务 安装完成后

3实验场景 3.1源地址转换 需求: 源地址1(172.16.202.15)需要访问公网目的地址(192.168.111.245),源地址2(172.16.202.16)不需要访问公网。

内网两台服务器,分别为源地址1(172.16.202.15)和源地址2(172.16.202.16),公网出口处有一台centos 7.1的双网卡服务器,一个接口接内网(172.16.202.14),一个接口接外网(192.168.111.63)。 源地址1上首先需要保证和iptables服务器能够互通,并且有去往192.168.111.245的路由,路由下一跳需要指向iptables内网接口(172.16.202.14),由iptables服务器做源nat,把源地址(172.16.202.15)nat成公网接口地址(192.168.111.63),从而可以访问目的地址(192.168.111.245)。 一、首先在源地址1服务器上配置去往192.168.111.245的路由 ip route add 192.168.111.245 via 172.16.202.14 //临时添加路由,重启网卡或者系统后,路由会丢失,建议做路由固化路由固化:在/etc/sysconfig/network-scripts目录下,新建一个route配置文件,vi route-eth0,新增一条路由,192.168.111.245/32 via 172.16.202.14,重启网卡即可生效 二、iptables服务器上,配置snat策略 iptables -t nat -A POSTROUTING -s 172.16.202.15/32 -d 192.168.111.245/32 -j SNAT --to 192.168.111.63 注释: -t table table to manipulate (default: `filter') //

iptables防火墙架构实验报告

iptables防火墙架构实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: 1、熟悉和掌握TCP/IP协议的基础概念和方法; 2、掌握防火墙的概念、功能分类及实现方法; 3、掌握Linux系统防火墙和基于iptables的防火墙的配置方法。 4、参考课本课本P201,图9-2,完整实现SNAT的功能。 实验内容与分析设计: 防火墙在实施安全的过程中是至关重要的。一个防火墙策略要符合四个目标,而每个目标通常都不是一个单独的设备或软件来实现的。大多数情况下防火墙的组件放在一起使用以满足公司安全目的需求。防火墙要能满足以下四个目标: 1> 实现一个公司的安全策略 防火墙的主要意图是强制执行你的安全策略,比如你的安全策略需要对MAIL服务器的SMTP流量做限制,那么你要在防火墙上强制这些策略。 2> 创建一个阻塞点 防火墙在一个公司的私有网络和分网间建立一个检查点。这种实现要求所有的流量都要经过这个检查点。一旦检查点被建立,防火墙就可以监视,过滤和检查所有进出的流量。网络安全中称为阻塞点。通过强制所有进出的流量都通过这些检查点,管理员可以集中在较少的地方来实现安全目的。 3> 记录internet活动 防火墙还能强制记录日志,并且提供警报功能。通过在防火墙上实现日志服务,管理员可以监视所有从外部网或互联网的访问。好的日志是适当网络安全的有效工具之一。 4> 限制网络暴露 防火墙在你的网络周围创建了一个保护的边界。并且对于公网隐藏了内部系统的一些信息以增加保密性。当远程节点侦测你的网络时,他们仅仅能看到防火墙。远程设备将不会知道你内部网络的布局以及都有些什么。防火墙提高认证功能和对网络加密来限制网络信息的暴露。通过对所能进入的流量进行检查,以限制从外部发动的攻击。

iptables的详细中文手册

一句一句解说 iptables的详细中文手册 (2009-06-02 22:20:02) 总览 用iptables -ADC 来指定链的规则,-A添加-D删除-C 修改 iptables - [RI] chain rule num rule-specification[option] 用iptables - RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名[选项] iptables -[NX] chain 用-NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名新的链名 用新的链名取代旧的链名 说明 Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 TARGETS 防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者RETURN[返回]。 ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。 TABLES 当前有三个表(哪个表是当前表取决于内核配置选项和当前模块)。 -t table 这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT(处理进入

利用Iptables实现网络黑白名单防火墙怎么设置

利用Iptables实现网络黑白名单防火墙怎么设置 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。这篇文章主要介绍了详解Android 利用Iptables实现网络黑白名单(防火墙),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 具体步骤 二、Iptables网络黑白名单(防火墙)实现细节 因为考虑到一些权限的问题所以在实现方法上采用的是创建一个systemserver来运行这些方法。并提供出manager到三方应用,这样在调用时可以排除一些权限的限制。同时本文只是做一个简单的参考概述,所以在后文中只提供了增加黑白名单的方法和iptables规则,并没有提供相应的删除规则等,原理类似大家可自行补充添加。

2.1、创建systemserver 2.1.1、在/system/sepolicy/service.te中添加 type fxjnet_service, system_api_service, system_server_service, service_manager_type; 2.2.2、在/system/sepolicy/service_contexts中添加如下, fxjnet u:object_r:fxjnet_service:s0 2.2.3、在frameworks/base/core/java/android/content/Context.java中添加 也可以不添加这个,只不过为了后面调用方便所以添加了。如果跳过此步,那么后面出现Context.FXJNET_SERVICE的地方都用字串代替即可。 public static final String FXJNET_SERVICE="fxjnet";

iptables命令详解_共进电子

Iptables规则是如何练成的 本章将详细地讨论如何构建Iptables规则。Iptables 包含三个表(filter、nat 、mangle),默认使用filter表,每个表包含若干条链(PREROUTING,POSTROUTING,OUTPUT,INPUT和FORWARD),每条规则就添加到相应的链上。规则就是指向标,在一条链上,对不同的连接和数据包阻塞或允许它们去向何处。插入链的每一行都是一条规则。我们也会讨论基本的matche及其用法,还有各种各样的target。 流程图 1. 基础 我们已经解释了什么是规则,在内核看来,规则就是决定如何处理一个包的语句。如果一个包符合所有的条件(就是符合matche语句),我们就运行target 或jump指令。书写规则的语法格式是: iptables [-t table] command [chain] [match] [-j target/jump] 注意target指令必须在最后。如果你不想用标准的表,就要在[table]处指定表名。一般情况下没有必要指定使用的表,因为iptables 默认使用filter表来执行所有的命令。也没有必要非得在这里指定表名,实际上几乎可在规则的任何地

方。当然,把表名在开始处已经是约定俗成的标准。 尽管命令总是放在开头,或者是直接放在表名后面,我们也要考虑考虑到底放在哪儿易读。command告诉程序该做什么,比如:插入一个规则,还是在链的末尾增加一个规则,还是删除一个规则,下面会仔细地介绍。 Chain 指定表的哪条规则链。 match细致地描述了包的某个特点,以使这个包区别于其它所有的包。在这里,我们可以指定包的来源IP 地址,网络接口,端口,协议类型,或者其他什么。下面我们将会看到许多不同的match。 最后是数据包的目标所在。若数据包符合所有的match,内核就用target来处理它,或者说把包发往target。比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。下面有详细的讨论。 2. Tables 选项-t用来指定使用哪个表,它可以是下面介绍的表中的任何一个,默认的是filter表。 Table 2-1. Tables Table(表名)Explanation (注释) nat nat表的主要用处是网络地址转换,即Network Address Translation,缩写为NA T。做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们 的规则进行的。属于一个流的包只会经过这个表一次。如果第一个包被允许做 NA T或Masqueraded,那么余下的包都会自动地被做相同的操作。也就是说, 余下的包不会再通过这个表,一个一个的被NA T,而是自动地完成。这就是 我们为什么不应该在这个表中做任何过滤的主要原因。PREROUTING 链的作 用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链 改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前 改变其源地址。 mangle这个表主要用来mangle数据包。我们可以改变不同的包及包头的内容,比如TTL,TOS(服务类型)或MARK。注意MARK并没有真正地改动数据包, 它只是为包设了一个标记。防火墙内的其他的规则或程序(如tc)可以使用这 种标记对包进行过滤或高级路由。注意,mangle表不能做任何NAT,它只是 改变数据包的TTL,TOS或MARK,而不是其源目地址。NAT是在nat表中 操作的。 filter filter表是专门过滤包的,内建三个链,可以毫无问题地对包进行DROP、LOG、ACCEPT和REJECT等操作。FORW ARD链过滤所有不是本地产生的并且目

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中使用者自定链中的规则 我们在来看一下

关于 iptables 入站 出站以及NAT实例

关于 iptables 入站出站以及NAT实例 本文是自己工作上的iptables笔记总结,适合的可以直接拿去用,不适合的,适当修改即可! iptbales默认ACCEPT策略,也称通策略,这种情况下可以做拦截策略,还有种叫堵策略,然后开放通的规则。(我偏向堵策略,自己需要开放什么在开,以下例子也是在此基础上的) iptables 一些参数名称: 四表五链:fifter表、NAT表、Mangle表、Raw表。 INPUT链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链 INPUT链–处理来自外部的数据。 OUTPUT链–处理向外发送的数据。 FORWARD链–将数据转发到本机的其他网卡设备上。 PREROUTING链–处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。(NAT表需要开启linux路由 net.ipv4.ip_forward = 1) POSTROUTING链–处理即将离开本机的数据包。它会转换数据包中的源IP 地址(source ip address),通常用于SNAT(source NAT)。 OUTPUT链–处理本机产生的数据包。 iptables 新建时情况所有记录 iptables -F iptables -X iptables -F -t mangle iptables -t mangle -X iptables -F -t nat iptables -t nat -X 开放22 SSH端口 iptables -A INPUT -p tcp -p tcp --dport 22 -j ACCEPT (允许外部访问本机的22端口) iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (有进就有出,IP包是来回的)

Linux下iptables

Linux防火墙iptables学习笔记(一)入门要领 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有 很多数据包进入,离开,或者经过我们的计算机。 首先我们要弄明白,防火墙将怎么对待这些数据包。这些数据包会经过一些相应的规则链,比如要进入你的计算机的数据包会首先进入INPUT链,从我们的计算机发出的数据包会经过OUTPUT链,如果一台计算机做一个网络的网 关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的数据包会经过这台计算机,这台计算机即相当于一个路由器),可能会有很多数据经过这台计算机,那么这些数据包必经FORWARD链,FORWARD链即数据转发链。明白了这些“链”的概念我们才能进一步学习使用iptables。 现在我们再来分析一下iptables规则是如何工作的,假如我们要访问网站https://www.wendangku.net/doc/7c9137803.html,,我们要对https://www.wendangku.net/doc/7c9137803.html,发出请求,这些数据包要经过OUTPUT链,在请求发出前,Linux的内核会在OUTPUT链中检查有没有相应的规则适合这个数据包,如果没有相应的规则,OUTPUT链还会有默认的规则,或者允许,或者不允许(事实上,不允许有两种,一种是把请求拒绝,告诉发出请示的程序被拒绝;还有一种是丢弃,让请求发出者傻等,直到超时)。如果得到允许,请求就发出了,而https://www.wendangku.net/doc/7c9137803.html,服务器返回的数据包会经过INPUT链,当然,INPUT链中也会有相应的规则等着它。 下面我们介绍几个iptable的命令 iptables-L[-t filter] 这条命令是显示当前有什么已经设置好的防火墙规则,可能的显示结果如下: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 从这里我们可以看出,iptables有三个链分别是INPUT OUTPUT和FORWARD. 其中 INPUT是外部数据要进过我们主机的第一外关卡(当然你前面也可以再加硬件防火墙). OUTPUT是你的主机的数据送出时要做的过绿卡 FORWARD是转发你在NAT时才会用到 要设置iptables主要是对这三条链进行设置,当然也包括-nat的另外三个链我们以后再说 你要用iptables你就得启到它启动命令service iptables restart iptables的默认设置为三条链都是ACCEPT如下: iptables-P INPUT ACCEPT iptables-P OUTPUT ACCEPT iptables-P FORWARD ACCEPT 以上信息你可以用iptables-L看到 总体来说iptables可以有二种设置

iptables命令大全

数据包经过防火墙的路径 图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种情况: 来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。 由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径 来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。 图1 如果我们从上图中略去比较少用的mangle表的图示,就有图2所显示的更为清晰的路径图.

图2 禁止端口的实例 禁止ssh端口 只允许在192.168.62.1上使用ssh远程登录,从其它计算机上禁止使用ssh #iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT #iptables -A INPUT -p tcp --dport 22 -j DROP

?禁止代理端口 #iptables -A INPUT -p tcp --dport 3128 -j REJECT ?禁止icmp端口 除192.168.62.1外,禁止其它人ping我的主机 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT #iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP 或 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT #iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP 注:可以用iptables --protocol icmp --help查看ICMP类型 还有没有其它办法实现? ?禁止QQ端口 #iptables -D FORWARD -p udp --dport 8000 -j REJECT 强制访问指定的站点

Linux防火墙 iptables详细介绍

周旭光unixzhou@https://www.wendangku.net/doc/7c9137803.html, Linux防火墙iptables 周旭光 unixzhou@https://www.wendangku.net/doc/7c9137803.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操作系统自带的防火墙来提高网络的管理控制功能呢?具体的来说,我们可以分三步走。一是先在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

Windows和Linux防火墙实例

一、Windows系统中的防火墙实例 Windows防火墙是一个基于主机的状态防火墙,它丢弃所有未请求的传入流量,即那些既没有对应于为响应计算机的某个请求而发送的流量(请求的流量),也没有对应于已指定为允许的未请求的流量(异常流量)。Windows防火墙提供某种程度的保护,避免那些依赖未请求的传入流量来攻击的恶意用户和程序。这里以对目前常用的Windows XP Service Pack 2自带防火墙为实例,介绍它的基本配置及应用。 打开Windows XP的访问控制面板,这里包括Windows自带防火墙。Windows XP SP2与之前的Windows系列相比,自带防火墙新增了以下主要特性: 1、默认对计算机的所有连接启用。 2、应用于所有连接的全局配置选项。 3、用于全局配置的新增对话框集。 4、全新的操作模式。 5、启动安全性。 6、本地网络限制。 7、异常流量可以通过应用程序文件名指定。 8、对Internet协议第6版(IP V6)的内建支持,配置对话框可同时配置IPv4和IPv6流量。 9、采用Netsh和组策略的新增配置选项。 打开自带防火墙,可以看到对话框中包含“常规”、“异常”和“高级”三个选项卡,如图7-9所示。完成这些选项卡的设置,便可以实现对Windows防火墙的基本安全配置。新的Windows防火墙对话框包含以下选项卡: 图7-9 Windows防火墙的“常规”选项卡 在“常规”选项卡上,主要有以下几个可选项: (1)“启用(推荐)” 选择这个选项可以对“高级”选项卡上所选择的所有网络连接启用Windows防火墙,这也是默认功能。Windows防火墙启用后将仅允许请求的和例外的传入流量。例外的网

Iptables应用层库函数实现机制

Iptables应用层库函数实现机制(iptables-1.2.7) 1. iptables命令概述 首先分析iptables命令的特点:命令、选项、匹配(match)、target四部分组成。命令中只允许一个命令,每次添加一个命令时通过add_command来检验命令是否唯一。允许多个不同的选项但是不允许多个相同的选项(除了--verbose选项,-v选项可以指定多个,例如iptables –L INPUT –v –v其显示的信息比iptables –L INPUT –v要多,会把内核里有关iptables规则相对位置等等更详细的信息都显示出来-----主要是用于规则信息的调试),每次添加一个选项都通过set_option 来实现。可通过Inverse_for_options数组查看哪些选项允许前面带有!符号,SOURCE、DESTINATION、PROTOCOL、VIANAMEIN、VIANAMEOUT、FRAGMENT选项允许前面带有!符号。分片选项-f的!有点特殊是这样实现的iptables …! –f …是放在-f前面而不是后面,那么在命令解析中是怎样实现这一点的,首先命令解析出!是无效选项case 1:在无效选项处理中将invert标志为1。 1.1 命令: 命令类型:INSERT、APPEND、DELETE、REPLACE、LIST、FLUSH、ZERO、NEWCHAIN、DELETECHAIN、RENAMECHAIN、POLICY 1.2 选项: 选项类型:VERBOSE、NUMERIC、LINENUMBERS、COUNTERS、SOURCE、DESTINATION、PROTOCOL、JUMP、EXACT、VIANAMEIN、VIANAMEOUT、FRAGMENT 1.3 匹配: 匹配的种类:第一类是generic matches(通用的匹配),适用于所有的规则;第二类是TCP matches,顾名思义,这只能用于TCP包;第三类是UDP matches,当然它只能用在UDP包上了;第四类是ICMP matches ,针对ICMP包的;第五

iptables系统配置防火墙和NAT功能的实例学习

iptables系统配置防火墙和NAT功能的实例学习 来源: ChinaUnix博客日期:2007.11.01 11:55(共有0条评论) 我要评论 关于Slackware 9.1.0 的配置说明 ********************************************************* * * *******关于防火墙系统恢复操作和启动方法说明******************* * * ********************************************************* 该系统主要作用就是对内部服务器作静态nat映射和端口访问控制。 在防火墙中,系统启动时已经自动启动了以上防火墙脚本,启动位置为:/etc/rc.d/rc.local文件中,sh /etc/rc.d/nat_firewall.sh #在系统启动时自动启动该脚本 如果需要手动启用防火墙和静态nat映射功能,操作以下步骤即可。 cd /etc/rc.d/ ./portnat.sh 如果用户不需要对内部服务器作任何端口控制,只需要作静态nat映射,只要执行以下文件,即可恢复不设防火墙状态。 cd /etc/rc.d/ ./no_firewall.sh ********************************************************** * * ****关于Slackware 9.1.0 系统配置防火墙和NAT功能的配置说明***** ****(nat_firewall.sh) * **********************************************************

(完整版)linux下各种服务进程之iptables详解

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

iptables使用方法

IP6tables使用方法(man手册)

名称 ip6tables – Ipv6包过滤管理 摘要 ip6tables [-t table] –[AD] chain rule-specification [options] ip6tables [-t table] –I chain [rulenum] rule-specification [options] ip6tables [-t table] –R chain rulenum rule-specification [options] ip6tables [-t table] –D chain rulenum [options] ip6tables [-t table] –[LFZ] [chain] [options] ip6tables [-t table] –N chain ip6tables [-t table] –X [chain] ip6tables [-t table] –P chain target [options] ip6tables [-t table] –E old-chain-name new-chain-name 描述 ip6tables通常是用来建立、维护、检查linux内核IPv6包过滤表的。 可能定义了几个不同的表。每个表都包含了一些内置的链和用户定义的链。 每个链都是匹配一组包的规则的列表。每个规则都说明了如何匹配一

个包。这是一个target的调用,这个target在相同的表中或许会跳转到用户定义的链。 目的 防火墙规则说明了包的规则和目标。如果一个包没有匹配,用链中的下一个规则检查;如果不匹配,下一个规则用target的值说明,target的值可能命名了一条用户定义的链,或者指定了ACCEPT、DROP、QUEUE或RETURN 值中的一个。 ACCEPT意思是让包通过,DROP的意思是在底层把包丢弃。QUEUE的意思是把传送到用户空间。RETURN的意思是停止正在遍历的链,返回先前链的下一个规则。如果到达内置链的最后或者匹配上了带RETURN值的target 内置链的规则,被链策略指定的target决定了包的命运。 表 目前有两个独立的用于nat的表没有实现。 -t,--table表名 该选项指出包匹配的表名,该表就是命令操作的那个表。如果内核被配置为自动加载模块,如果这个表不存在,内核就要加载对应于这个表的模块。有如下表: filter:如果没有-t 选项,该表是默认的表。它包含了内置的链INPUT (用于进入防火墙的包)、FORWARD(用于经防火墙转发的包)和OUTPUT(防

ACL 和 Iptabless

ACL 1.访问控制列表的类型 标准访问控制列表:根据数据包的源IP地址来允许或拒绝。(标号1—99) 扩展访问控制列表:根据数据包的源IP地址、目的IP地址、指定协议、端口和标志(100-199) 命名访问控制列表:允许在标准和扩展访问控制列表中使用命名来代替标号 定时访问控制列表:提供基于时间的附加访问控制。 2.标准的ACL配置 语法:Router(config)#access-list (1—99) {permit|deny} 源ip的网段反掩码 1.允许19 2.168.1.0/24和192.168.1.2 的流量通过 Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255 Router(config)#access-list 1 permit 192.168.1.2 0.0.0.0.0 或Router(config)#access-list 1 host 192.168.1.1 2.拒绝访问任何网段 Router(config)#access-list 2 deny any 3.删除以建立的ACL Router(config)# no access-list 1 4.将ACl应用到端口 Router(config-if)#ip access-group (1——99){in | out } 3.扩展访问ACL 配置 Router(config)#access-list (100-199){permit | deny} protocol {原地址反掩码目标地址反掩码} [operator operan ] Operator:lt-小于;gt—大于;eq—等于;neq-不等于 Protocol:TCP;UDP;IP;ICMP 1.允许网络19 2.168.1.0/24访问网络192.168.2.0/24的ip流量通过。而拒绝其他的任何流量 Router(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 Router(config)#access-list 100 deny ip any any 2. 拒绝网络192.168.1.0/24访问FTP服务器192.168.2.2。而其允许他的任何流量 Router(config)#access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21 Router(config)#access-list 101 permit ip any any 3.禁止192.168.1.0/24中的主机ping服务器192.168.2.2 而允许其他任何流量 Router(config)#access-list 119 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo Router(config)#access-list 119 permit ip any any 4.将ACL应用到端口Router(config)# ip access-group 101 {in|out} 5.查看 show access-list 4.命名访问控制列表 1. Router(config)#ip access-list {standard |extended} access-list-name 2.标准命名ACL: Router(config-std-nacl)#【seq-Num】 {permit|deny}source 【source-vildcard】 3.扩展命名ACL: Router(config-std-nacl)#【seq-Num】{permit|deny} Protocol {src src-vildcard dst dst-vildcard} 【operator operan】 如:允许来自主机192.168.1.1/24和192.168.2.6/24的流量通过,而拒绝其他的流量通过 Router(config)#ip access-list cisco Router(config-std-nacl)#15 permit host 192.168.2.6 Router(config-std-nacl)#permit host 192.168.1.1

相关文档