当前位置: 首页 > news >正文

Linux实验记录:使用iptables

前言:

本文是一篇关于Linux系统初学者的实验记录。

参考书籍:《Linux就该这么学》

实验环境:

VmwareWorkStation 17——虚拟机软件

RedHatEnterpriseLinux[RHEL]8——红帽操作系统

备注:

防火墙作为公网与内网的屏障,在保障数据安全性方面起着至关重要的作用。

防火墙有软件和硬件之分,但主要功能都是依据策略对穿越防火墙自身的流量进行过滤

iptables和firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的工具,是一种服务。

这种服务会把配置好的防火墙策略交由Linux系统的内核层面处理。

目录

前言:

备注:

策略与规则链:

基本的命令参数:

正文:

iptables:

实验1:

实验2:

实验3:

实验4:

实验5:

实验6:

实验7:

实验8:

实验9:

最后,如果想让配置的防火墙策略永久生效,执行保存命令:


策略与规则链:

  防火墙会按照从上到下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作去执行匹配项中定义的行为(放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。

iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据包处理位置的不同进行分类:

1.在进行路由选择前处理数据包(PREROUTING)

2.处理流入的数据包(INPUT)

3.处理流出的数据包(OUTPUT)

4.处理转发的数据包(FORWARD)

5.在进行路由选择后处理数据包(POSTROUTING)

 上面是所谓“四表五链”中的五条规则链。

一般来说,从内网向外网发送的流量一般都是可控且良性的,因此使用最多的就是INPUT规则链,该规则链可以增大黑客人员从外网入侵内网的难度。

ACCEPT(允许流量通过)

REJECT(拒绝流量通过)

LOG(记录日志信息)

DROP(拒绝流量通过,不回复)

基本的命令参数:

参数作用
-P设置默认策略
-F清空规则链
-L查看规则链
-A在规则链末尾加入新规则
-I num在规则链头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号“!”,表示这个IP除外
-d匹配目标地址
-i网卡名称匹配从这块网卡流入的数据
-o网卡名称匹配从这块网卡流出的数据
-p匹配协议,如TCP、UDP、ICMP
--dport num匹配目标端口号
--sport num匹配来源端口号

正文:

iptables:

实验1:

在iptables命令后面加-L参数查看已有的防火墙规则链

实验2:

在iptables命令后面加-F参数清空已有的防火墙规则链

实验3:

把INPUT规则链的默认策略设置为拒绝

把INPUT链设置为默认拒绝后,所有流入的数据包都会被默认拒绝。

需要往里面写入允许策略。

如图:使用ping命令ping自己

规则链的默认拒绝动作只能是DROP,而不能是REJECT。 

实验4:

向INPUT链中添加允许ICMP流量进入的策略规则

此时ping自己就可以ping通,用隔壁CentOS8虚拟机也能ping通。

实验5:

删除INPUT规则链中刚刚加入的那条策略:

 这时RHEL8和CentOS8都ping 不通192.168.0.128(RHEL8的IP地址)

 现在把默认策略设置为允许:

再次ping测试:连通

实验6:

将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,

拒绝来自其他所有主机的流量。

使用CentOS 8对RHEL进行ssh连接:

现在对防火墙进行设置:

connection refused 

实验7:

向INPUT规则链中添加拒绝所有人访问本机的12345端口的策略规则:

实验8:

向INPUT规则链中添加拒绝192.168.10.5主机访问本机80端口的策略规则。

实验9:

向INPUT规则链中添加拒绝所有主机访问本机100~1024端口的策略规则。

最后,如果想让配置的防火墙策略永久生效,执行保存命令:

相关文章:

  • 《Docker极简教程》--前言--Docker的简介
  • 【每日一题】6.LeetCode——轮转数组
  • 最新GPT4.0使用教程,AI绘画-Midjourney绘画,GPT语音对话使用,DALL-E3文生图+思维导图一站式解决
  • 代理模式(静态代理、JDK 动态代理、CGLIB 动态代理)
  • 【每日一题】 2024年1月汇编
  • 12. 双目视觉之极线矫正
  • React18-完成弹窗封装
  • 【51单片机系列】中断优先级介绍及使用
  • STM32——I2C
  • 负载均衡下的webshell连接
  • win11安装wsl作为linux子系统并当作服务器
  • 学习鸿蒙基础(3)
  • 《区块链简易速速上手小册》第6章:区块链在金融服务领域的应用(2024 最新版)
  • Chiplet,汽车“芯”风向
  • 数学公式OCR识别php 对接mathpix api 使用公式编译器
  • AngularJS指令开发(1)——参数详解
  • go append函数以及写入
  • Hibernate最全面试题
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • LintCode 31. partitionArray 数组划分
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Swoft 源码剖析 - 代码自动更新机制
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue全家桶实现一个Web App
  • vue--为什么data属性必须是一个函数
  • 成为一名优秀的Developer的书单
  • 从输入URL到页面加载发生了什么
  • 给github项目添加CI badge
  • 关于 Cirru Editor 存储格式
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 技术:超级实用的电脑小技巧
  • 聚簇索引和非聚簇索引
  • 手写一个CommonJS打包工具(一)
  • 数据科学 第 3 章 11 字符串处理
  • 双管齐下,VMware的容器新战略
  • 一个JAVA程序员成长之路分享
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • !$boo在php中什么意思,php前戏
  • # Apache SeaTunnel 究竟是什么?
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #NOIP 2014# day.2 T2 寻找道路
  • $.ajax,axios,fetch三种ajax请求的区别
  • (0)Nginx 功能特性
  • (2015)JS ES6 必知的十个 特性
  • (java)关于Thread的挂起和恢复
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Python) SOAP Web Service (HTTP POST)
  • (二)hibernate配置管理
  • (分类)KNN算法- 参数调优
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (剑指Offer)面试题34:丑数