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

Linux系统防火墙之iptables

防火墙在一个系统中就好像是一个国家的军队,所谓国无军不安,在系统中也是这样,防火墙可以保护系统被别人攻击,过滤垃圾流量等,那么今天我们就来了解一下Linux系统中的一种防火墙iptables。

目录

iptables概述

规则

iptables操作使用

iptables常用选项

具体操作

内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。

内部网络服务器s1通过DNAT发布服务到互联网。

互联网主机pc2能够访问s1服务器,但是不能够进行ping和ssh连接。


iptables概述

iptables由表、链以及若干规则组成

规则

就是告诉iptables防火墙该做什么,等于是一个工作标准。

某些规则的集合就是链,每个链都有一定的相同点,分别为INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING,从字面上的意思也能大概理解。

  • INPUT:入站的数据包应用此链中的规则
  • OUTPUT:出站的数据包应用此链中的规则
  • FORWARD:转发的数据包应用此链中的规则
  • PREROUTING:想要修改目的地址数据包应用此链中的规则
  • POSTROUTING:想要修改源地址数据包应用此链中的规则

是若干规则和链的集合,分别为raw、mangle、nat、filter,这里我们重点了解常用的filter和nat

  • filter:负责过滤数据包
  • nat:负责地址转换
  • raw:确定是否进行转台跟踪
  • mangle:做流量整形,修改数据包内容

iptables操作使用

iptables常用选项

  • -t  指定表名
  • -j  指定控制类型
  • -A  在指定链的末尾追加一条新的规则
  • -I   在指定链的开头插入一条新的规则
  • -R  修改、替换指定链中的某一条规则
  • -P  设置指定链的默认策略
  • -D 删除指定链中的某一条规则
  • -F 清空指定链中的所有规则
  • -L  列出指定链中所有的规则
  • -n 使用数字形式显示输出结果
  • -v 显示详细信息
  • --line-numbers 显示规则的序号
  • -p 指定要匹配的数据包的协议类型
  • -s 指定要匹配的数据包的源IP地址
  • -d 指定要匹配的数据包的目的IP地址
  • -i 指定数据包进入本机的网络接口
  • -o 指定数据包离开本机做使用的网络接口
  • --sport 指定源端口号
  • --dport 指定目的端口号

命令的选项有点多,为了方便记忆,这里结合例子进行讲解,会更加的简单易懂。

具体操作

创建一个实验环境,三个局域网互联,一个为内部网络,一个为外部网络,一个为服务器网络

内部网络IP192.168.50.1 服务器网络IP192.168.60.1 外部网络IP192.168.70.1

与防火墙相连,防火墙开启IP地址转换

内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。

分析一下,PC1采用SNAT访问外部互联网,就是在PC1访问外部互联网时,将IP地址转换为公网IP,具体命令如下

 首先是PC1访问外部互联网,意思就是改变源地址,所以选择nat表,POSTROUTING链,

从192.168.50.0/24这个网段出发,通过ens256(连接防火墙的网卡),通过SNAT将地址转换成192.168.70.254即可实现前半个要求

无法ping到内部网关,命令如下

即来自192.168.50.1的icmp类型的请求数据会被丢弃,就无法ping通了

内部网络服务器s1通过DNAT发布服务到互联网。

逻辑与SNAT相反,将想要进来的IP地址转换成内部网段,命令如下

即从外部网络的从192.168.70.254地址,ens256,这里我的网络服务是nginx服务因此端口为80号端口,目的网络IP为192.168.60.1即服务器的IP地址。

互联网主机pc2能够访问s1服务器,但是不能够进行ping和ssh连接。

具体命令如下,

第一条即,从ens256到ens224的目的为192.168.60.1的tcp,接口为80的数据会被接收

第二条即,从ens256 目的是192.168.60.1的icmp的ping请求包会被丢掉

第三条即,从ens256目的是192.168.60.1的tcp,接口为22的(ssh)的包会被丢弃

这只是一个思路,通过不同的规则也可以达到同样的效果,所以大家可以发散思路,多练多看就可以掌握iptables的设置方法了。

http://www.xdnf.cn/news/936361.html

相关文章:

  • 工作记录 2017-08-01
  • 若依框架项目前缀配置
  • 如何在最短时间内提升打ctf(web)的水平?
  • Python安装使用教程
  • 实验三:VGA显示实验
  • JavaScript 数据类型详解
  • Razor编程中@Html的方法使用大全
  • Day25 异常处理
  • sizeof 与strlen的区别
  • Puppeteer测试框架 - Node.js
  • 解决transformers.adapters import AdapterConfig 报错的问题
  • Java中的抽象类
  • 【Redis】持久化
  • Redis知识体系
  • 【深度学习】表示学习:深度学习的数据解构与重构艺术
  • Effective Java 第三版 第二三章总结
  • Selenium自动化操作
  • Java中双端队列的多种实现类详解
  • 力扣面试150题--课程表
  • LabVIEW多道心电记录仪
  • 【靶场】XXE-Lab xxe漏洞
  • Java严格模式withResolverStyle解析日期错误及解决方案
  • PLC入门【1】PLC的简单介绍(教学软件:FX-TRN-BEG-C)
  • Spring Boot中Bean注入方式对比与最佳实践
  • AUTOSAR实战教程--开放式通用DoIP刷写工具OpenOTA开发计划
  • 分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
  • MCP Tool模块详解
  • 听写流程自动化实践,轻量级教育辅助
  • 【原创】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • Unity中如何播放视频