Netfilter/iptables的匹配方式及处理方法
匹配方式:
匹配方式是netfilter筛选数据包的最基本单元。
内置的匹配方式:
1.接口的匹配方式:
iptables -t filter -A FORWARD -i eth0 -o eth1 -j DROP 2.Source/Destination Address的匹配:
-d:匹配目的端的IP
-s:匹配来源端的IP
ex:a.不允许企业内的使用者访问http://www.baidu.com网站
iptables -A FORWARD -p tcp -i eth1 -o eth0 -d www.baidu.com -j DROP
b.不允许因特网上的192.168.10.1主机访问公司的web服务器,假设192.168.10.1为公网IP
iptables -A FORWARD -i eth0 -o eth1 -p tcp -s 192.168.10.1 -d $WEB_IP --dport 80 -j DROP
3.协议的匹配方式:
a.从模块扩展而来的匹配方式:
Tcp协议的高级匹配:#iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.0.0/24 --dport 21-j REJECT
b.MAC地址的匹配:
1.#iptables -A INPUT -p tcp --dport 3306 -m mac --mac-source 00:02:B3:0C:23:1B -j ACCEPT ---限制非固定IP的特定者才可以访问MySQL
c.Multiport的匹配:
iptables -A INPUT -p all -m state --state INVALILD -j DROP iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dport 21,22,23,25,80,110,443 -j ACCEPT
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
d.匹配数据包的MARK值:
将所有经过PREROUTING链且Destination port为80的数据包标记一个值,而这个值由管理员自行确认.
iptables -t mangle -A prerouting -p tcp --dport 80 -j MARK --set-mark 80
如果进入FORWARD链的数据包,其MARK值为80的话,就将其丢弃. iptables -A FORWARD -p all -m mark 80 -j DROP
e.owner的匹配:
只适用于OUTPUT链和PPOSTROUTING链
1.--uid-owner
iptables -A OUTPUT -p tcp -m owner --uid-owner kasumi --dport 80 -j ACCEPT
iptables -A OUTPUT -p udp -m owner --uid-owner kasumi --dport 53 -j ACCEPT
iptabes -A OUTPUT -p all -m owner --uid-owner kasumi -j DROP 2.--gid-owner
iptables -A OUTPUT -p tcp -m owner --gid-owner kasumi --dport 80 -j ACCEPT f.IP范围的匹配:
iptables -A INPUT -p all -s 192.168.0.0/26 -j DROP
--src-range / --dst-range
iptables -A INPUT -m iprange --src-range 192.168.0.2-192.168.0.61 -j DROP
g.TTL值的匹配:
iptables -A INPUT -m ttl --ttl-eq 64 -j REJECT
h.数据包的状态匹配:
I.使用connlimit模块限制连接的最大数量
限制一个IP或一个 网段同时对目标主机或服务服务所能建立的最大链接数
iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn -d $web_server --dport 80 -m connlimit --connlimit-above 32 -j DROP
j.使用connbytes模块限制每个模块连接中所能传输的数据量
限制使用者以HTTP协议下载20M以上的数据
iptanbles -A FORWARD -p tcp -d $WEB_SERVER --dport 80 -m connbytes --connbytes-dir replay --connbytes-mode bytes --connbytes 20971520:-j DROP
--connbytes-dir: original-来源方向 reply-应答方向 both-双向
--connbytes-mode:packets-以数据包的数量来计算 bytes-以数据传输量来计算
--connbytes:匹配多少的单位量
k.使用time模块来设置规则的生效时间
iptables -A FORWARD -o eth0 -d $SRV_FARM -m time --weekday Mon,Tue,Wed,Thu,Fri --timestart 09:00 --timestop 21:00 -j ACCEPTT
--datestart / --datestop / --monthdays / --weekdays
处理方法:
内置的处理方法:
1.ACCEPT和DROP的处理方法:
2.QUEUE的处理方法:QUEUE的功能是将符合条件的数据包转发给user space的应用程序来处理。当一个数据包由eth0接口进入之后,接着由netfilter来匹配这个数据包的特征,如果这个数据包不符合netfilter的条件,那么,这个数据包可能就由eth1接口送离本机,但如果这个数据包符合QUEUE方法来处理的条件,这个数据包就会送到user space应用程序来处理,待user space的应用程序处理完后,再依次由eth1接口送离本机。

由模块扩展的处理方法:
1.REJECT的处理方式:
REJECT和DROP有点相似,两者的差异在于DROP仅会将数据包丢弃,这使得发送端误以为在网络上传输时丢失了,因此发送端会重复地发送数据包直到超时为止;但REJECT丢弃发送端所发送过来的数据包,会发送一个icmp包给发送端,由此告诉网络或者服务发生问题,当发送端收到这个icmp包之后,就会终止服务请求的操作。
使用原则:
DROP:凡是对付来自因特网的数据包一律使用DROP来处理,因为我们无须浪费系统资源来回复因特网上的攻击者,而DROP还可以拖延攻击者的攻击操作,因为攻击者可能需要等待一段的时间,不过,也并非一定是如此,还是得看攻击的方式而定。
REJECT:以网关式防火墙而言,如果要限制企业内的用户连接到因特网上,最好是使用REJECT的处理方法,因为REJECT将可以让企业内的使用者快速得知这个链接是不允许的,而不需要去等待一段超时的时间。
2.LOG的处理方法:
netfilter默认并不会生成任何日志,如果需要日记记录,就得使用LOG这个模块
iptables -A INPUT -p tcp --syn --dport 22 -j LOG --log-level alert (--syn只记录连接的第一条记录)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
rsyslog服务的设置:
在配置文件/etc/rsyslog.conf下添加:kern.=alert /var/log/netfilter
内核产生的alert级别的日志就存放在/var/log/netfilter
3.ULOG的处理方法:
LOG是将日志交给系统的syslogd来处理,ULOG是将日志交给特定的user space来处理。

Netfilter/iptables的匹配方式及处理方法的更多相关文章
- Netfilter/iptables防火墙
http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...
- netfilter/iptables全攻略
转:http://www.linuxso.com/linuxpeixun/10332.html 内容简介防火墙的概述iptables简介iptables基础iptables语法iptables实例案例 ...
- iptables 扩展匹配 第三章
获取帮助: centos 6 :man iptables centos 7: man iptables-extensions 扩展匹配: 隐式扩展:当使用-p指定某一协议之后,协议自身所支持的扩展就叫 ...
- netfilter/iptables 简介
netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制.iptables 则是一个命令行工具,用来配置 netfilter 防火墙.下图展示了一个带有防火墙的简单网络 ...
- netfilter/iptables 防火墙
目录 文章目录 目录 iptables 与 netfilter 工作机制 规则(Rules) 链(chain) 表(tables) 网络数据包通过 iptables 的过程 总结链.表和规则的关系 i ...
- Linux防火墙之iptables基本匹配条件和隐式扩展匹配条件
一.iptables的基本匹配条件 上一篇博文我们说到了iptables的基本工作原理.数据报文在内核的走向和管理链.管理规则.以及查看规则.导入和导出规则:回顾请参考https://www.cnbl ...
- Linux中级之netfilter/iptables应用及补充
一.iptables介绍 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常 ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- jquery.validate 以alert方式显示错误方法
$.validator.setDefaults({ submitHandler: function() { alert("submitted!");return false; } ...
随机推荐
- comet4j
简介 准备工作 下载服务端jar文件 下载客户端js文件 修改服务器配置文件 在web.xml中加载Comet4J框架 客户端使用简介 JS.Engine.start方法 JS.Engine.stop ...
- CentOS7下GNOME桌面的安装
1,搭建yum源仓库.(yum的配置文件在/etc/yum.repos.d目录) (详见http://www.cnblogs.com/zyh120/p/6020781.html) 2,列出yum仓库里 ...
- 【CronExpression表达式详解和案例】
1. cron表达式格式: {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} 2. cron表达式各占位符解释: {秒数} ==> 允许值范围: 0~59 ,不允许 ...
- shell编写mysql备份工具
如需转载,请经本人同意. 这是之前写的一个备份脚本,调用的备份工具是xtrabackup 编写思路是:每周一全备份,备份后提取lSN号,对备份文件进行压缩,其余时候在LSN的基础上进行增量备份,并对3 ...
- Win7 64位 MinGW环境测试SDL2.0.3
下载MinGW版的文件 http://www.libsdl.org/release/SDL2-devel-2.0.3-mingw.tar.gz 解压放到mysys下面 运行Makefile mysys ...
- 【转载】【树形DP】【数学期望】Codeforces Round #362 (Div. 2) D.Puzzles
期望计算的套路: 1.定义:算出所有测试值的和,除以测试次数. 2.定义:算出所有值出现的概率与其乘积之和. 3.用前一步的期望,加上两者的期望距离,递推出来. 题意: 一个树,dfs遍历子树的顺序是 ...
- Method not found : Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)
找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean) ...
- Linux下TCP网络编程与基于Windows下C#socket编程间通信
一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...
- reduce方法
API里面这样写 reduce(initial, sym) → obj reduce(初始值,符号) reduce(sym) → obj re ...
- 关于PHP堆栈与列队
在PHP中数组常被当作堆栈(后进先出:LIFO)与队列(先进先出:FIFO)结构来使用.PHP提供了一组函数可以用于push与pop(堆栈)还有shift与unshift(队列)来操作数组元素.堆栈与 ...