IPtables之三:显式扩展规则

简介:

对于显式扩展与隐式扩展的区别,先分析以下2条规则

规则1:iptables -t filter -A INPUT -s 192.168.1.0/24 -d 172.16.100.1 -p udp –dport 53 -j DROP

规则2:iptables -t filter -A INPUT -s 192.168.1.0/24 -d 172.16.100.1 -p udp -m udp –dport 53 -j DROP

相对于规则1,在规则2上使用了-m选项,明确指定了对udp进行扩展,扩展端口为53

而对于隐式扩展,不需要使用-m选项进行明确指定,对于tcp而言,可以扩展tcp的标志位、源和目标端口,对于udp,可以扩展源和目标端口,对于icmp,可以扩展request,replay等不同数据包

下面讲讲几个常用的显式扩展:

 

显式扩展之一 state:连接状态 
-m state –-state {NEW|ESTABLISHED|RELATED|INVALID|}

在第一篇博文中提到过:包过滤防火墙可以分为“状态检测型”和“简单包过滤型” 
接下来介绍下用iptables实现状态检测包过滤

介绍tcp以下4种状态的连接

    1.NEW 
        即3次握手的第一次,一次新的请求

iptable -A OUTPUT -o eth0 -m state --state NEW -j DROP 
分析这条规则,其中-m表示扩展加载state状态检测模块,--state NEW表示检测tcp的第一次握手,整条规则的作用就是拒绝从eth0网卡发出的新的tcp连接。

    2.ESTABLISHED 
        二次握手以后,连接断开之前的连接

    3.RELATED 
        相关连的状态,可解决控制ftp连接这种超麻烦的协议

    4.INVALID 
        无法识别的状态

应用案例: 
结合NEW和ESTABLISHED这2种状态,实现以下规则 
iptables -A INPUT -d 192.168.1.1 -p tcp –dport 22 -m state –-state NEW,ESTABLISHED -j ACCEPT 
允许外面向主机发起的新的ssh请求

iptables -A INPUT -d 192.168.1.1 -p tcp -dport 80 -m state –-state NEW,ESTABLISHED -j ACCEPT 
允许外面向主机发起的新的web连接

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 22 -m state -–state ESTABLISHED -j ACCEPT 
处于连接状态时,允许主机发往外部的ssh数据包

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 80 -m state –-state ESTABLISHED -j ACCEPT 
处于连接状态时,允许主机发往外部的web数据包

iptables -P INTUP DROP 
拒绝其它所有进来的数据包

iptables -P OUTPUT DROP 
拒绝其它所有出去的数据包 
这几条规则可以用在web服务器上,只允许客户向服务器发出ssh和web请求的访问,服务器不能主动向外发出任何连接,避免服务器成为黑客的跳板

 

显式扩展之二 mport:多端口匹配 
-m {mport|multiport} 
    --source-ports 
    --destination-ports 
    --ports

此扩展可以指定不连续的端口,在这里优化以上的案例来说明其作用 
iptables -A INPUT -d 192.168.1.1 -m mport –-destination-ports 22,80,443 -m state –-state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -s 192.168.1.1 -m mport –-source-ports 22,80,443 -m state –- state ESTABLISHED -j ACCEPT

iptables -P INTUP DROP 
iptables -P OUTPUT DROP

一次可以添加多个端口,端口之间用逗号隔开

 

显式扩展之三iprange:多IP匹配 
-m iprange 
    –-src-range 
    –-dst-range

这里用一个简单的例子来说明

iptables -A INPUT -d 192.168.1.1 -m iprange –src-range 192.168.0.1-192.168.0.100 -p tcp –-dport 80 -j DROP 
拒绝192.168.0.1-192.168.0.100这段地址访问192.168.1.1的web服务

 

显式扩展之四connlimit:并发连接请求个数限制 
-m connlimit 
    –-connlimit-above

 

显式扩展之五limit:速率限制 
-m limit 
    –-limit 平均速率 
    –-limit-burst 突发速率 
iptables -A INPUT -d 192.168.1.1 -p tcp –dport 80 -m limit –-limit 10/second –-limit-burst 30  -j ACCEPT 
此条规则限制了每秒10个数据包,突发最大速率是每秒30个数据包

 

显式扩展之六limit:时间限制 
-m time 
    –-timestart 
    –-timestop 
    --days 
    --datestart 
    --datestop

区分以下两种写法来理解这几个选项的意义

iptables -A INPUT  -d 192.168.1.1 -p tcp –-dport 80 -m time –-datestart 2012:07:20:08:30:00 –-datestop  2012:07:20:14:30:00 -j ACCEPT 
从7月20号 8:30到7月30号14:30允许访问本机web服务

iptables -A input -d 192.168.1.1 -p tcp –-dport 80 -m time –- timestart 08:30:00 –-timestop 14:30:00 –-datestart 2012:07:20 –-datestop 2012:07:30 -j ACCEPT 
从7月20号到7月30号 每天的8:30—14:30时分允许访问本机web服务

 

显式扩展之七string:字符限制(对中文字符匹配有限) 
-m string 
    –-algo bm|kmp 指定字符匹配算法 
    --string 指定字符

iptables -A out -s 172.16.100.1 -p tcp –-sport 80 -m string –-algo kmp –string “baidu.com” -j DROP 
包含baidu.com的数据包都拒绝


本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/940735,如需转载请自行联系原作者

相关文章
|
缓存 监控 安全
在Linux中,如何排查系统崩溃问题?
在Linux中,如何排查系统崩溃问题?
|
存储 算法 芯片
ov2640子设备核心操作详细分析
ov2640子设备核心操作详细分析
543 0
|
安全 Java 应用服务中间件
基于CAS,实现SSO单点登录,很细
基于CAS,实现SSO单点登录,很细
1750 2
基于CAS,实现SSO单点登录,很细
|
19小时前
|
云安全 人工智能 自然语言处理
|
5天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
310 116
|
8天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
550 51
Meta SAM3开源:让图像分割,听懂你的话
|
20天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
4天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。