iptables的扩展匹配
iptables的匹配条件
一、通用匹配:-s、-d、-p、-i、-o
二、扩展匹配
1、隐含扩展:使用-p{tcp|udp|icmp}指定某特定协议后,自动能够对协议进行扩展
-p tcp
--dport m[-n]:匹配的目标端口,可以是连续的多个端口
--sport m[-n]:匹配的源端口,可以是连续的多个端口
--tcp-flags
URG,PSH,RST,SYN,ACK,FIN也可以使用ALL和NONE
--tcp-flags rst,syn,ack,fin syn 四个标志位中只有syn为1其他都为0的意思
放行来自于192.168.1.0/24网络的主机对本机ssh服务的请求
iptables -t filter -A INPUT -s 192.168.1.0/24 -d 192.168.1.202 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -s 192.168.1.202 -d 192.168.1.0/24 -p tcp -sport 22 -j ACCEPT
-p udp
放行本机tftp服务
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.202 -p udp --dport 69 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.202 -d 192.168.1.0/24 -p udp --sport 69 -j ACCEPT
-p icmp
--icmp-type
8:ping请求
0:ping响应
允许本机ping其他主机:
iptables -A INPUT -s 192.168.1.202 -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.202 -p icmp --icmp-type 0 -j ACCEPT
允许其他主机ping本机:
iptables -A INPUT -d 192.168.1.202 -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.202 -p icmp -icmp-type 0 -j ACCEPT
2、显式扩展:必须要明确指定得扩展模块
-m 扩展模块名称 --专用选项1 --专用选项2
multiport:多端口匹配,一次指定多个(15个以内)离散端口
--source-ports,--sports port [,port|,port:port]
--destination-ports, --dports
--ports
例子:
# iptables -I INPUT -d 192.168.1.202 -p tcp -m multiport --dports 22,80 -j ACCEPT
# iptables -I OUTPUT -s 192.168.1.202 -p tcp -m multiport --sports 22:80 -j ACCEPT
iprange:ip地址范围
[!] --src-range from[-to]
[!] --dst-range from[-to]
例子:
# iptables -A INPUT -d 192.168.1.202 -p tcp --dport 23 -m iprange --src-range 192.168.1.1-192.168.1.200 -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp --sport 23 -m iprange --dst-range 192.168.1.1-192.168.1.200 -j ACCEPT
time:指定时间范围
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
[!] --weekdays day[,day...]
例子:指定8081端口的访问时间位周一至周五的八点到十八点
# iptables -A INPUT -d 192.168.1.202 -p tcp --dport 8081 -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp --sport 8081 -j ACCEPT
string:字符串匹配
--algo {bm|kmp}:字符匹配查找时使用的算法
--string "STRING":要查找的字符串
--hex-string "HEXSTRING":要查找的字符,先编码成16进制格式
例子:拒绝页面中含有hello的页面
# iptables -I OUTPUT -s 192.168.1.202 -p tcp --sport 80 -m string --algo kmp --string "hello" -j DROP
connlimit:每IP对指定服务的最大并发连接数
[!] --connlimit-above n
例如:每个IP超过5个连接即拒绝掉
# iptables -I INPUT -d 192.168.1.202 -p tcp --dport 80 -m connlimit --connlimit-above 5 -j DROP
limit:报文速率控制
--limit #[/second|/minute|/hour|/day]
--limit-burst number
例子:限制icmp包峰值为5个每秒只能通过两个
# iptables -A INPUT -d 192.168.1.202 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 5 -j ACCEPT
可以使用hping3做测试,每秒钟发送多个icmp请求
使用watch命令可以看到防火墙的数据包实时变化
# watch -n 1 'iptables -L -nv'
state:状态匹配(只要是四层协议都能够基于state做追踪)
ip_conntract,nf_conntrack
--state
NEW:NEW说明这个包是我们看到的第一个包
ESTABLISHED:ESTABLISHED已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。
RELATED:一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。
INVALID:INVALID说明数据包不能被识别属于哪个连接或没有任何状态。
调整连接追踪功能所有能容纳的追踪的追踪最大连接数:
# cat /proc/sys/net/nf_conntrack_max 定义了连接追踪的最大值,按需调整该值
# less /proc/net/nf_conntrack 记录了当前追踪的所有连接
# cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established tcp的established的超时时间
法则:
(1)、对于进入的状态为ESTABLISHED都应该放行
(2)、对于出去的状态为ESTABLISHED都应该放行
(3)、严格检查进入的状态为NEW的连接
(4)、所有状态为INVALIED都应该拒绝
如何放行工作与被动模式下的FTP服务?
确保iptables加载ftp协议支持的模块:ip_nat_ftp,ip_conntrack_ftp
手动装载:
# modprobe ip_nat_ftp
# modprobe ip_conntrack_ftp
添加到配置文件自动装载:
编辑配置文件:
# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
放行请求报文的RELATED和ESTABLISHED状态,放行响应报文的ESTABLISHED状态
ftp放行20、21端口
# iptables -A INPUT -d 192.168.1.202 -p tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp --sport 22 -j ACCEPT
# iptables -P OUTPUT DROP
# iptables -P INPUT DROP
# iptables -A INPUT -d 192.168.1.202 -p tcp --dport 21 -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp --sport 21 -j ACCEPT
# iptables -A INPUT -d 192.168.1.202 -p tcp --dport 20 -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp --sport 20 -j ACCEPT
# iptables -A INPUT -d 192.168.1.202 -p tcp -m state --state RELAY,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp -m state --state ESTABLISHED -j ACCEPT
# iptables -I INPUT -d 192.168.1.202 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -I INPUT 2 -d 192.168.1.202 -p tcp -m state --state NEW -m multiport --dports 9001,80,21,22 -j ACCEPT
# iptables -I OUTPUT -s 192.168.1.202 -m state --state ESTABLISHED -j ACCEPT
# iptables -D INPUT 3
# iptables -D INPUT 3
# iptables -D INPUT 3
# iptables -D OUTPUT 2
# iptables -D OUTPUT 2
# iptables -D OUTPUT 2
最终的规则就是:
-A INPUT -d 192.168.1.202/32 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.1.202/32 -p tcp -m state --state NEW -m multiport --dports 9001,80,21,22 -j ACCEPT
-A OUTPUT -s 192.168.1.202/32 -m state --state ESTABLISHED -j ACCEPT
-j target
ACCEPT,DROP,REJECT,LOG,REDIRECT,SNAT,DNAT,MASQUERADE,MARK,RTURN,自定义链
例如:
# iptables -A INPUT -d 192.168.1.202 -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 192.168.1.202 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
添加自定链,过滤恶意数据包(标志位全为0或1):
# iptables -t filter -N clean_in
# iptables -A clean_in -d 192.168.1.202 -p tcp --tcp-flags ALL ALL -j DROP
# iptables -A clean_in -d 192.168.1.202 -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A clean_in -d 192.168.1.255 -p icmp -j DROP
# iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP
# iptables -A clean_in -d 192.168.1.202 -j RETURN
# iptables -I INPUT -d 192.168.1.202 -j clean_in
拒绝状态为INVALID
# iptables -I clean_in 5 -d 192.168.1.202 -m state --state INVALID -j DROP
iptables的扩展匹配的更多相关文章
- Linux防火墙之iptables常用扩展匹配条件(一)
上一篇博文讲了iptables的基本匹配条件和隐式匹配条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12269717.html:今天在来说说iptabel ...
- Linux防火墙之iptables常用扩展匹配条件(二)
上一篇博文我们讲到了iptables的一些常用的扩展匹配模块以及扩展模块的一些选项的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12273755.htm ...
- iptables 扩展匹配 第三章
获取帮助: centos 6 :man iptables centos 7: man iptables-extensions 扩展匹配: 隐式扩展:当使用-p指定某一协议之后,协议自身所支持的扩展就叫 ...
- iptables详解(6):iptables扩展匹配条件之’–tcp-flags’
如果你看过前文,那么你一定知道,前文已经对"tcp扩展模块"做过总结,但是只总结了tcp扩展模块中的"--sport"与"--dport"选 ...
- Linux防火墙之iptables基本匹配条件和隐式扩展匹配条件
一.iptables的基本匹配条件 上一篇博文我们说到了iptables的基本工作原理.数据报文在内核的走向和管理链.管理规则.以及查看规则.导入和导出规则:回顾请参考https://www.cnbl ...
- linux防火墙(三)—— iptables语法之匹配条件
一.iptables规则的匹配条件类型有三类 1.通用匹配:可直接使用,不依赖于其他条件或扩展,包括网络协议.IP地址.网络接口等条件 2.隐含匹配:要求以特定的协议匹配作为前提,包括端口.TCP标记 ...
- centos6.5下系统编译定制iptables防火墙扩展layer7应用层访问控制功能及应用限制QQ2016上网
iptables防火墙扩展之layer7应用层访问控制 概述: iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以基于网络层的数据包过滤机制为主,同 ...
- 四十七.iptables防火墙 filter表控制 扩展匹配 nat表典型应用
1.iptables基本管理 关闭firewalld,开启iptables服务 查看防火墙规则 追加.插入防火墙规则 删除.清空防火墙规则 1.1 关闭firewalld,启动iptables服务 ...
- 4、iptables扩展匹配及网络防火墙功能
关于centos7 firewalld http://www.ibm.com/developerworks/cn/linux/1507_caojh/index.html 如何保存及重载规则: ...
随机推荐
- js实现当前导航菜单高亮显示
为了增加用户体验度,增加网页的易用性和美观度,往往需要把当前导航菜单以特殊方式显示,通常是高亮显示或有不同于其它菜单的背景,有两种方法可以实现,第一种是用纯css来实现,二是用js辅助css来实现,两 ...
- 【转】Java反射 之 反射基础
一.反射 反射:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- Windows Server 2003 IIS6.0+PHP5(FastCGI)+MySQL5环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2003 SP2 32位 PHP版本:php 5.3.14(我用的php 5.3.10安装版) MySQL版本:MySQL5.5.25 ...
- 学习Excel 十大函数
云课堂视频教程 笔记总结: URL:http://study.163.com/course/courseLearn.htm?courseId=1009026#/learn/video?lessonId ...
- HighChats图表控件显示精度小数点的方法
相信大家对highchats这个图表控件并不陌生,最近在项目中用到它,但是某些字段需要显示为小数点,顾查找资料文档发现下面两个方式可以实现: 初始化时候添加如下两个参数 tooltip:{ fo ...
- Directory 与 DirectoryInfo 的区别
Directory 与 DirectoryInfo 这两个能够实现大多数相同的功能.区别可分为两点:一.静态与实例调用前者必须被实例化后才能使用,而后者则只提供了静态的方法.如果多次使用某个对象一般使 ...
- C#中Invoke的用法(转)
在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界 ...
- Mysql封装
<?php header("content-type:text/html;charset=utf-8"); class db{ //私有的静态属性 private ...
- 好文mark
用oracle的dblink连接mysql. http://f.dataguru.cn/thread-267150-1-1.html hadoop的机架感知: 本地化策略,以及备份都要知道哪个节点在哪 ...
- java集合类的学习(二)
ArrayList,LinkedList,Vector都是List的实现类,前两都没有实现同步机制,Vector实现了同步机制.他们代码类似. ArrayList代表大小可变的数组,允许对元素进行快速 ...