skill——iptables(三)

匹配条件

一:-s 源地址:指定 ip 时可用 "," 隔开,指定多个;也可以指定网段,用 "!" 取反
注意:取反表示报文源地址 IP 不为 192.168.1.103 即满足条件,执行相应的动作
实例如下:

二:-d 目标地址
注意:
1. 源地址表示报文从哪里来,目标地址表示报文要到哪里去,当目标主机有两块或以上网卡时,示例如下
2. 上面说到 -s 的使用方法 -d 同样适用
案例一:
指定来 80.174 网卡拒绝接收来自 80.138 的报文

接着我们在 192.168.80.138 的机器中检查下

可以看到 80.138 可以 ping 通 80.144 的 ip 地址,但被 80.174 拒绝了 “目标端口不可到达”

三:-p 协议类型,指定需要匹配的协议类型
注意:
1. ssh 协议的传输层协议属于 tcp 协议类型,ping 命令使用 icmp 协议
2. Centos6 中,-p 支持 tcp、udp、udplite、icmp、esp、ah、sctp
3. Centos7 中,-p 支持 tcp、udp、udplite、icmp、esp、ah、sctp、icmpv6、mh
4. 当不使用 -p 时,默认表示要匹配所有类型,与 -p all 效果相同
案例二:拒绝来自 138 的 tcp 类型的请求

在 192.168.80.138 的机器中测试

四:网卡接口
-i:匹配报文是从哪块网卡流入本机的(了解)
-o:匹配报文是从哪块网卡流入本机的(了解)
我们回顾下下图:

数据包从 prerouting 链流入 input 链 与 forward 链
数据包从 output 链 与 forward 链 经 postouting 链流出
所以:-i 用于 prerouting input forward 链;-o 用于 output forward postouting 链
案例三:
-i 与 -o 举例

扩展匹配条件

一: tcp、multiport 扩展模块

选项 说明
tcp 模块 当 -p 指定 tcp 协议时,-m 可以将其省略掉
-m 指定扩展模块
--dport (tcp 扩展模块) 目标端口
--sport (tcp 扩展模块) 源端口
multiport 模块 同时指定多个离散端口

1. -p?tcp?-m?tcp?--sport?用于匹配 tcp 协议报文的源端口,可以使用 ":" 指定一个连续的端口范围
2. -p 与 -m 并不冲突,因为 -m 指定扩展模块的名称 -p 指定报文的协议,只不过是两者名字碰巧一样
3. 在不使用 -m 时,会默认使用与 -p 指定协议名相同的模块
4. --dport 针对端口可以使用的功能,--sport 同样适用,如:(:20)、(20:80)、(20:80)
案例四:
tcp 扩展模块举例

1)拒绝来自 101 的 ssh 请求
iptables?-I?INPUT?-s?192.168.1.101?-p?tcp?-m?tcp?--sport?22?-j?REJECT
2)拒绝来自 101 的 tcp协议的请求,拒绝的端口范围为:22 - 25 端口
iptables?-I?INPUT?-s?192.168.1.101?-p?tcp?-m?tcp?--dport?22:25?-j?REJECT
3)拒绝来自 101 的 tcp协议的请求,拒绝的端口范围为:0 - 22 端口
iptables -I?INPUT?-s?192.168.1.101?-p?tcp?-m?tcp?--dport?:22?-j?REJECT
4)拒绝来自 101 的 tcp协议的请求,拒绝的端口范围为:80 - 65535 端口
iptables?-I?INPUT?-s?192.168.1.101 -p?tcp?-m?tcp?--dport?80:?-j?REJECT
5)拒绝来自 101 的 tcp协议的请求,拒绝的端口范围为:不是 22 端口
iptables?-I?INPUT?-s?192.168.1.101?-p?tcp?-m?tcp?!?--sport?22?-j?ACCEPT

案例五:
multiport 扩展模块举例

1)使用 multiport 模块 指定 拒绝 101,102 两个端口
iptables?-l INPUT?-s?192.168.1.101?-p?udp?-m?multiport?--sports?101,102?-j?REJECT
2)使用 multiport 模块 指定 拒绝 22,80 两个端口
iptables?-I?INPUT?-s?192.168.1.101?-p?tcp?-m?multiport?--dports?22,80?-j?REJECT
3)使用 multiport 模块 指定 拒绝除 22,80 两个端口以外的端口
iptables?-I?INPUT?-s?192.168.1.101 -p?tcp?-m?multiport?!?--dports?22,80?-j?REJECT
4)使用 multiport 模块 指定 拒绝 80 - 88 范围内的端口
iptables?-I?INPUT?-s?192.168.1.101?-p?tcp?-m?multiport?--dports?80:88?-j?REJECT
5)使用 multiport 模块 指定 拒绝 22端口、80 - 88 范围内的端口
iptables?-I?INPUT?-s?192.168.1.101?-p?tcp?-m?multiport?--dports?22,80:88?-j?REJECT

tcp 扩展模块之 --tcp-flags
--tcp-flags:指 tcp 头中的标志位,可以用此扩展匹配,去匹配 tcp 报文的头部的标识位,然后根据标识位实现控制的功能
使用方法如下:

iptables?-I?INPUT?-p?tcp?-m?tcp?--dport?22?--tcp-flags?SYN,ACK,FIN,RST,URG,PSH?SYN?-j?REJECT
iptables?-I?INPUT?-p?tcp?-m?tcp?--dport?22?--tcp-flags?ALL?SYN?-j?REJECT
其中 tcp 扩展模块专门提供了一个可以匹配 " 第一次握手 " 的选项:**--syn**
iptables?-t?filter?-I?INPUT?-p?tcp?-m?tcp?--dport?22?--syn?-j?REJECT
**注意:--syn 相当于 --tcp-flags?SYN,RST,ACK,FIN?SYN**

二: iprange、string、time、connlimit、limit 扩展模块
1. iprange 指定一段连续的 IP 地址范围(-s 与 -d 无法指定一段连续的 IP 地址范围)
--src-range:匹配报文的源地址所在范围
--dst-range:匹配报文的目标地址所在范围
案例六:
指定一段连续的 IP 地址

2. string 匹配字符串,即包含对应的字符串,则匹配成功执行相应动作
--algo:指定匹配的算法(bm/kmp)二者必须选其一
--string:指定需要匹配的字符串
案例七:
匹配字符串 “It works!” 字符串,执行 REJTCT 动作
下面是 Apache 的展示页


规则如下,结果再次访问时未响应

3. time 指定时间范围

扩展条件 说明
--timestart 指定时间范围的开始时间,不可取反
--timestop 指定时间范围的结束时间,不可取反
--weekdays 指定 "星期几" ,可取反
--monthdays 指定 "几号" ,可取反
--datestart 指定日期范围的开始时间,不可取反
--datestop 指定日期范围的结束时间,不可取反

案例八:
time 扩展模块举例

1)早上 9 点至晚上 7 点不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80?-m?time?--timestart?09:00:00?--timestop?19:00:00?-j?REJECT
iptables?-I?OUTPUT?-p?tcp?--dport?443?-m?time?--timestart?09:00:00?--timestop?19:00:00?-j?REJECT
2)周六、日不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80??-m?time?--weekdays?6,7?-j?REJECT
3)每月的 22、23 不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80??-m?time?--monthdays?22,23?-j?REJECT
4)每月的除了 22、23 不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80??-m?time?!?--monthdays?22,23?-j?REJECT
5)周六、日的早上 9 点至晚上 7 点不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80??-m?time?--timestart?09:00:00?--timestop?18:00:00?--weekdays?6,7?-j?REJECT
6)每月的 22-28 的星期五不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80??-m?time?--weekdays?5?--monthdays?22,23,24,25,26,27,28?-j?REJECT
7)2018-12-24 至 2018-12-27 不可以浏览网页
iptables?-I?OUTPUT?-p?tcp?--dport?80??-m?time?--datestart?2018-12-24?--datestop?2018-12-27?-j?REJECT

4. connlimit 限制 IP 并发连接数

扩展条件 说明
--connlimit-above 单独使用此选项时,表示限制每个 IP 的连接数量
--connlimit-mask 不可以单独使用,在使用 --connlimit-above 选项时,配合此选项,表示限制 某类 IP 段内一定数量的 IP 连接数

案例九:
connlimit 扩展模块举例

1)每个 IP 地址最多只能占用两个 ssh 链接远程到服务端(不指定 IP 即表示所有 IP)
iptables?-I?INPUT?-p?tcp?--dport?22?-m?connlimit?--connlimit-above?2?-j?REJECT
2)在 C 类网段中,最多同时有 20 个 ssh 客户端连接到服务器
iptables?-I?INPUT?-p?tcp?--dport?22?-m?connlimit?--connlimit-above?20?--connlimit-mask?24?-j?REJECT
3)在 C 类网段中,最多同时有 10 个 ssh 客户端连接到服务器
iptables?-I?INPUT?-p?tcp?--dport?22?-m?connlimit?--connlimit-above?10?--connlimit-mask?27?-j?REJECT

5. limit 扩展模块
limit 限制 "报文到达速率",即限制单位时间内流入包的数量

扩展条件 说明
--limit-burst 参考 " 令牌桶 " 算法,指定令牌桶中令牌的最大数量
--limit 参考 " 令牌桶 " 算法,指定令牌桶中令牌生成的频率,时间单位有:/second、/minute、/hour、/day

案例十:
当外部主机对本机进行 ping 操作时,本机没 6 秒放行一个包

iptables?-t?filter?-I?INPUT?-p?icmp?-m?limit?--limit-burst?3?--limit?10/minute?-j?ACCEPT
iptables?-t?filter?-A?INPUT?-p?icmp?-j?REJECT

原文地址:http://blog.51cto.com/12384628/2307438

时间: 2024-10-12 01:26:42

skill——iptables(三)的相关文章

skill——iptables(二)

iptabls 查.增.删.改,保存 一:查 参数 说明 -t 指定要查看的表,默认为 filter 表 -L 列出表中规则 -v 查看详细信息 -x 显示计数器的精确值 -n 不对 IP 地址进行名称反解,直接显示 IP --line-number 显示规则的行号,可缩写为 --line 案例一:查询 fileter 表 INPUT 链中中的规则丢弃 ip:192.168.8ptables -t filter -vL INPUT下面介绍下每列的含义 列明 说明 pkts 匹配到的报文的个数 b

skill——iptables(五)

黑白名单 黑名单:即默认策略为 ACCEPT,链中规则对应的动作应该为 DROP 或 REJECT ,表示只有匹配到规则的报文才会被拒绝,没有匹配到规则的报文默认被放行白名单:即默认策略为 DROP 或 REJECT,链中规则对应的动作应该为 ACCEPT ,表示只有匹配到规则的报文才会被放行,没有匹配到规则的报文默认被拒绝也就是说:白名单时,默认所有人是坏人,只放行好人黑名单时,默认所有人是好人,只拒绝坏人案例一:简单的黑名单(默认策略为 ACCEPT,链中规则对应的动作为 DROP 或 RE

Linux学习(二十九)iptables(三)nat表的应用

需求 A机器可以访问外网,B机器和A机器处于同一个内网,现在要让B机器通过A机器访问外网. 步骤 1.为虚拟机添加一块网卡. 如果没有区段名称的话,点击'LAN区段(S)...'按钮,新建一个. 2.ifconfig -a命令可以看到刚添加进来的尚未启用的网卡: [[email protected] ~]# ifconfig -a eth1 Link encap:Ethernet HWaddr 00:0C:29:AC:CC:56 inet addr:192.168.182.130 Bcast:1

iptables (三)

NAT network address translation 网络地址转换 功能实现在 PREROUTING,INPUT,OUTPUT,POSTROUTING 请求报文:修改源/目标IP,定义如何修改 响应报文:修改源/目标IP,根据跟踪机制自动实现 SNAT source NAT 源网络地址转换.让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装 功能实现在 POSTROUTING, INPUT 请求报文:修改源IP DNAT destination NAT 目标网络地址转换.把本

skill——iptables(四)

扩展匹配条件 一:udp 扩展模块 选项 说明 --sport 匹配报文的源端口 --dport 匹配报文的目标端口 和 tcp模块中的名称一样,不同的是, udp 模块中的 --sport 与 --dport 是用来匹配 UDP 协议报文的源端口与目标端口的udp 模块与 tcp 模块类似,适用于 tcp 模块的使用方式同样适用于 udp 模块,multiport 也同样适用 udp 模块指定多个离散的端口案例一:udp 模块用法举例二:icmp 扩展模块如下图:icmp报文类型案例二:icm

skill——iptables(六)

相关动作 REJECTLOGSNATDNATMASQUERADEREDIRECT详情请仔细阅读此博主文章 iptables 小结 1. 规则的顺序非常重要因为链中规则的顺序是自上而下的,当报文已经被前面的规则匹配到,iptables 会执行对应的动作,而后面即使有可以匹配到刚才已经执行过相应的动作的报文,也不会再执行相应的动作了(第一次匹配到规则的动作为 LOG 除外),所以,针对相同的服务规则,更严格的规则应该放在前面2.当规则中有多个匹配条件时,条件之间默认存在 "与" 的关系,即

Linux下的配置iptables防火墙增强服务器安全

Linux下的配置iptables防火墙增强服务器安全 实验要求 iptables常见概念 iptables服务器安装及相关配置文件 实战:iptables使用方法 例1:使用iptables防火墙保护公司web服务器 例2:使用iptables搭建路由器,通过SNAT使用内网机器上网 例3:限制某些IP地址访问服务器 例4:使用DNAT功能把内网web服务器端口映射到路由器外网 实验环境 iptables服务端:xuegod-63   IP:192.168.1.63 iptables客户端:x

2-10~2-11 配置iptables防火墙增强服务 selinux简单讲解

学习一个服务的过程: 1.此服务器的概述:名字,功能,特点,端口号 2.安装 3.配置文件的位置 4.服务启动关闭脚本,查看端口 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上,从内到外) ------------------------------------- iptables概述 netfilter/iptables : IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables 组成. netfilter/iptables 关系: netfilt

[moka同学摘录]iptables防火墙规则的添加、删除、修改、保存

文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的防火墙工具,包括配置iptables三个链条的默认规则.添加iptables规则.修改规则.删除规则等. 一.查看规则集 iptables --list -n // 加一个-n以数字形式显示IP和端口,看起来更舒服 二.配置默认规则 iptables -P INPUT DROP  // 不允许进