我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Iptables防火墙基本匹配条件应用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Iptables防火墙基本匹配条件应用详解

引言

@[TOC] 应用匹配条件时,经常会用到以下几个参数。

  • -p:指定要操作的协议类型,不指定-p参数声明是那种协议,默认是all,也就是所有协议。
  • -s:指定源地址。
  • -d:指定目标地址。
  • --sport:指定源端口.
  • --dport:指定目标端口。
  • -i:指定从哪个网卡进入的报文。
  • -o:指定从哪个网卡出去的报文。
  • -m
  • -j:指定策略的动作。

基本匹配条件案例一

**需求:**

仅允许 192.168.20.21 访问 192.168.20.20 的80端口,其余的来源客户端都拒绝访问。

明确需求后,下面来分析应该如何实现。

这条需求分包含两种不同的条件,首先是允许192.168.20.21访问目标端口,然后是拒绝其他所有的客户端访问。

  • 首先来思考允许的条件如何实现:

1、允许某个来源访问本机的特定服务,这种访问属于数据的流入,那么就会经过PREROUTING和INPUT两个链,允许或者拒绝这些操作都是在filter表实现的,PREROUTING链没有filter,因此首先就可以得出结论,这条规则会在INPUT链的filter表中进行添加。

2、允许192.168.20.21这个地址,那么就需要指定来源的IP,然后根据来源IP的请求,还需要指定目标端的地址。

3、限制来源地址仅访问本机的某个服务,那么就需要指定服务具体的协议以及端口号。

4、最后指定匹配完这些条件后,执行的动作,也就是ACCEPT。

  • 然后来思考拒绝的条件如何实现:

1、首先明确拒绝其余来源访问本机的某个服务,那么一定是在INPUT链的filter表中添加具体的规则。

2、最后声明拒绝其他的来源地址。

注意:由于不是全部拒绝,还有一个来源地址192.168.20.21是允许访问TCP的80端口的,因此在写入拒绝规则时,不能在使用-I参数添加到表的最顶端,应该通过-A参数添加到表的最后一行,追加进去。

1)实现该需求的防火墙规则如下

1.允许192.168.20.21访问192.168.20.20的80端口
[root@jxl-1 ~]# iptables -t filter -I INPUT -s 192.168.20.21 -d 192.168.20.20 -p tcp --dport 80 -j ACCEPT
2.拒绝其余来源IP访问本机的80端口
[root@jxl-1 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j DROP

注意第二条拒绝所有的时候一定要使用-A参数追加到最后一行,否则所有的来源都将不可访问。

2)查看设置的防火墙规则

INPUT链中一共有2条规则,第一条规则的动作是允许,允许192.168.20.21访问192.168.20.20的tcp 80端口,第二条规则的动作是拒绝,拒绝全部IP访问本机的80端口。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 9483 packets, 17M bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  *      *       192.168.20.21        192.168.20.20        tcp dpt:80
2        0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 9619 packets, 15M bytes)
num   pkts bytes target     prot opt in     out     source               destination         

3)测试结果

只有来源地址为192.168.20.21的IP,才能访问到192.168.20.20的TCP 80端口的服务。

基本匹配条件案例二

**需求:**由本机发出的TCP协议的报文都允许,发出的其他协议报文都拒绝。

明确需求后,下面来分析应该如何实现,和案例一类似,分为两种规则,一是允许某一个协议,二是拒绝其余所有的协议。

首先要明确在哪一个链的哪一个表中添加Iptables防火墙规则,看需求中的关键字“由本机发出”,由本机发出都需要经过POSTROUTING和OUTPUT链,这种过滤规则一定会在OUPUT链进行添加,引起POSTROUTING链没有filter表。

明确完再哪一张表和哪一个链添加规则后,就非常容易了。

1)先来添加允许TCP协议报文流出的Iptables防火墙规则。

2)然后来添加拒绝剩余的其他报文,一定要将拒绝的规则添加在允许规则的下面,否则允许的规则将永不生效。

可以先将之前添加的规则清空,以免受到干扰。

[root@jxl-1 ~]# iptables -t filter -F

1)实现该需求的防火墙规则如下

1.允许本机的TCP协议报文流出
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp -j ACCEPT
2.拒绝本机所有协议报文流出
[root@jxl-1 ~]# iptables -t filter -A OUTPUT -p all -j DROP

2)查看设置的防火墙规则

在OUTPUT链可以看到两条规则,第一条规则允许TCP协议报文流出,第二条规则拒绝所有协议的报文流出。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 5138 packets, 8863K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     6703   10M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        1    76 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0  

3)测试结果

由于拒绝了除TCP协议以外的所有协议,因此再使用ICMP协议时就产生了拒绝的现象,但是使用TCP协议就没有任何影响。

基本匹配条件案例三

需求: 禁止其他主机从ens192发送来的ping请求。

首先来进行分析,案例三就非常简单了,只有一种条件,那就是禁止其他的主机从本机的ens192网卡发送来的数据报文,从字面意思可以清楚的知道这是一条数据流入的规则。

那么一定是在INPUT链的filter表添加相应的规则策略。

1)实现该需求的防火墙规则如下

[root@jxl-1 ~]# iptables -t filter -I INPUT -i ens192 -p icmp -j DROP

2)查看设置的防火墙规则

在INPUT链中已经添加上了这条规则,凡是来自ens192网卡并且协议是icmp的报文都会被拒绝。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 2680 packets, 4308K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       icmp --  ens192 *       0.0.0.0/0            0.0.0.0/0           
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 2752 packets, 4004K bytes)
num   pkts bytes target     prot opt in     out     source               destination  

3)测试结果

在其他主机ping防火墙主机的ens192网卡,发现不通,但是ens224网卡就通。

拒绝所有协议进入本机的规则配置

iptables -t filter INPUT -j DROP

--dport参数声明多个连续的端口号

--dport 20:22
表示20-22三个端口都可以进行匹配。

以上就是Iptables防火墙基本匹配条件应用详解的详细内容,更多关于Iptables防火墙匹配条件的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Iptables防火墙基本匹配条件应用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Iptables防火墙基本匹配条件应用详解

这篇文章主要为大家介绍了Iptables防火墙基本匹配条件应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Iptables防火墙iprange模块扩展匹配规则详解

这篇文章主要为大家介绍了Iptables防火墙iprange模块扩展匹配规则详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Iptables防火墙limit模块扩展匹配规则详解

这篇文章主要为大家介绍了Iptables防火墙limit模块扩展匹配规则详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Iptables防火墙tcp-flags模块扩展匹配规则详解

这篇文章主要为大家介绍了Iptables防火墙tcp-flags模块扩展匹配规则详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

linux之centos7防火墙基本使用详解

1、firewalld的基本使用 启动:systemctl start firewalld查看状态:systemctl status firewalld停止:systemctl disable fi
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录