防火墙工具iptables应用详解

文章目录

  • 前言
  • 一、Netfilter内核
  • 二、Netfilter与iptables的关系
  • 三、iptables的表与链
  • 四、iptables的常用命令与参数
  • 五、 iptables使用案例


前言

iptables是Linux系统中一款强大的防火墙工具,它基于Netfilter内核模块,允许管理员定义数据包的转发、过滤和NAT(网络地址转换)规则,以保护网络安全,限制网络流量。

一、Netfilter内核

Netfilter是Linux内核中的一个网络包过滤框架,它不是一个单独的模块,而是一个集成在内核中的子系统。它提供了一种钩子机制,允许其他内核模块(如conntrack、nat等)在这些钩子点上注册回调函数,以便在数据包通过时执行特定的操作。

Netfilter的主要功能:

  • 数据包过滤:根据源IP地址、目标IP地址、端口号等条件对数据包进行筛选,允许或拒绝数据包的传输。
  • 网络地址转换(NAT):修改数据包中的源IP地址或目标IP地址,以实现网络地址的映射和隐藏。
  • 数据包修改:修改数据包头部或有效载荷,例如更改TCP/UDP端口号、设置TTL值等。
  • 流量控制:限制特定协议或端口的流量速率,防止网络拥塞和攻击。
  • 负载均衡:将流量分发到多个服务器上,以实现负载均衡和故障转移。

二、Netfilter与iptables的关系

iptables是一个用户空间工具,用于配置和管理Netfilter规则。通过iptables命令,用户可以定义过滤规则、NAT规则和mangle规则等,这些规则会被iptables工具转换为Netfilter可以理解的格式,并注册到相应的钩子点上。
iptables与Netfilter之间的关系可以类比为“用户界面”与“后台处理系统”之间的关系。iptables提供了丰富的命令行接口和配置选项,使得用户可以方便地配置和管理网络规则;而Netfilter则负责在内核中实际执行这些规则,对数据包进行过滤和处理。

三、iptables的表与链

iptables具有四种内建表:Filter、NAT、Mangle、Raw,不同的表含有的链也不同。
在这里插入图片描述

  1. Filter表(默认表):

    • 主要负责过滤功能。
    • 包含的链:INPUT、FORWARD、OUTPUT。
      • INPUT:处理进入本机的数据包。
      • FORWARD:处理经过本机的转发数据包。
      • OUTPUT:处理本机发出的数据包。
  2. NAT表

    • 主要负责网络地址转换功能。
    • 包含的链:PREROUTING、POSTROUTING、OUTPUT。
      • PREROUTING:处理刚到达本机并在路由转发前的数据包。
      • POSTROUTING:处理即将离开本机的数据包。
      • OUTPUT:处理本机产生的数据包。
  3. Mangle表

    • 用于修改数据包的头部信息,如TTL、TOS等。
    • 包含的链:PREROUTING、OUTPUT、FORWARD、INPUT、POSTROUTING。
  4. Raw表

    • 用于控制数据包是否被状态追踪机制处理。
    • 包含的链:PREROUTING、OUTPUT。

四、iptables的常用命令与参数

iptables提供了丰富的命令和选项,用于对防火墙规则进行增删改查、保存和加载等操作。

  1. 添加规则-A):

    • 在指定链的末尾添加一条新的规则。
    • 示例:iptables -A INPUT -p tcp --dport 22 -j ACCEPT(允许TCP端口22的流量通过)。
  2. 删除规则-D):

    • 删除指定链中的某一条规则。
    • 示例:iptables -D INPUT -p tcp --dport 22 -j ACCEPT(删除允许TCP端口22的规则)。
  3. 插入规则-I):

    • 在指定链的指定位置插入一条新的规则,默认在第一行添加。
    • 示例:iptables -I INPUT 1 -p icmp --icmp-type echo-request -j DROP(拒绝所有ICMP回显请求)。
  4. 列出规则-L):

    • -t :表示想要查看那个表,这里查看的是nat表。(iptables的所有命令如果不指定-t,默认是filter表)
    • -L:表示列出该表所有的链和规则
    • -v:详细显示,会将规则匹配的进出网口也列出来
    • –line-numbers :表示给规则进行编号处理,编号能方便我们后续对规则进行修改、删除等操作
    • 示例:iptables -L INPUT(列出INPUT链的所有规则)。
  5. 清空规则-F):

    • 清空指定链中的所有规则。
    • 示例:iptables -F INPUT(清空INPUT链的所有规则)。
  6. 设置默认策略-P):

    • 设置指定链的默认策略。
    • 示例:iptables -P INPUT DROP(将INPUT链的默认策略设置为DROP)。

五、 iptables使用案例

#查看INPUT链的规则,显示行号
iptables -L INPUT --line-numbers
#删除INPUT链的第一条规则,行号从1开始
iptables -D INPUT 1
#拒绝进入防火墙的所有ICMP协议数据包
iptables -A INPUT -p icmp -j REJECT
#允许防火墙转发除ICMP协议以外的所有数据包。使用”!”可以将条件取反
iptables -A FORWARD -p ! icmp -j ACCEPT
#拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据
iptables -A FORWARD -s 192.168.1.10 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
#所有发给目标网口是wlan0 且目标ip是121.18.238.0/29 地址的包,都会被丢弃,不作任何回复
iptables -A OUTPUT -o wlan0 -d 121.18.238.0/29 -j DROP
#拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
#禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包,无任何回复
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
#web服务器开启80端口,可接收外部的http请求
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许ping。由于是双向的,所以INPUT链、OUTPUT链都要设置
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
##将本机的对8080端口请求转发至其他主机,主机IP:192.168.0.141,目标主机IP和端口:192.168.0.142:80;
#进入PREROUTING作目标地址转换。由192.168.0.141:8080转为192.168.0.142:80
iptables -t nat -A PREROUTING -d 192.168.0.141/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.142:80
#数据包进入POSTROUTING链,即将离开本机,做源地址转换,由客户端IP转换为192.168.0.141
iptables -t nat -A POSTROUTING -d 192.168.0.142/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.141
#将本机的对80端口请求重定向到8080端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
#清空所有iptables规则
iptables -F
#清除iptables nat表规则
iptables -t nat -F
#保存iptables规则
service iptables save

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/392782.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解MVCC

概念 MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现…

超级会员卡积分商城小程序多功能源码系统 带完整的安装代码包以及部署教程

源码系统概述 超级会员卡积分商城小程序多功能源码系统是一款集合了多种功能于一体的会员积分商城小程序源码系统。该系统采用先进的技术架构,支持多门店统一管理,提供丰富的会员信息和商品管理服务,支持多种支付方式和营销活动,同…

认真学习JVM中类加载过程

本文我们总结JVM中类加载器子系统关于类加载过程,这里默认是Oracle的Hotspot。 【1】类加载器子系统作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载&#xff0…

一款一站式、开源、高质量的数据提取工具,支持:PDF 文档、网页和电子书提取

大家好,今天给大家分享的是一款一站式、开源、高质量的数据提取工具MinerU,主要包含以下功能: Magic-PDF PDF 文档提取 Magic-Doc 网页与电子书提取 项目介绍 Magic-PDF 简介 Magic-PDF 是一款将 PDF 转化为 markdown 格式的工具。支持转换本地文档…

ABAP+json格式数据转换时参数为空没传值

CALL METHOD /UI2/CL_JSON>SERIALIZE 我们在ABAP传输json格式数据到外围系统时,会用到这个类方法 /UI2/CL_JSON>SERIALIZE CALL METHOD /UI2/CL_JSON>SERIALIZEEXPORTINGDATA LO_DATACOMPRESS XPRETTY_NAME /UI2/CL_JSON>PRETTY_M…

【Linux】网络基础_3

文章目录 十、网络基础5. socket编程socket 常见APIsockaddr结构简单的UDP网络程序 未完待续 十、网络基础 5. socket编程 socket 常见API // 创建 socket 文件描述符 (TCP/UDP, 客户端 服务器) int socket(int domain, int type, int protocol);// 绑定端口号 (TCP/UDP, 服…

tcpdump使用指南

tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有。 # 1. 基于IP地址过滤 # 根据源ip进行过滤 $ tcpdump -i eth2 src 192.168.10.100# 根据目标ip进行过滤 $ tcpdump -i eth2 dst 192.16…

江协科技51单片机学习- p33 PWM呼吸灯和直流驱动电机调速

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

还在花大几千定制 AI Agent ?来这里分分钟让你实现 Agent 自由!海量模板任你挑选!

大家好,又见面了,最近很多人都对 AI Agent 感兴趣,有的朋友想花大几千进行 Agent 定制,当时就被我劝住了,我想这不是免费了吗?怎么还花钱呢?纯纯的信息差呀! 同时我也收到了几位伙伴…

VTK8.2.0编译(Qt 5.14.2+VS2017)

VTK8.2.0编译(Qt 5.14.2VS2017) 关于Qt和MSVC的安装,可以参考文章(QtMSVC2017)。 本篇VTK在QtMSVC的配置下的编译。VTK 以8.2.0为例。 一、环境变量的配置 我们打开电脑的环境变量,可以看到没有Qt相关的…

C#串口通信的实现

1、实现代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Security.Cryptography; using System.Security.Policy; using System.Text…

人工智能时代,程序员如何保持核心竞争力?

在人工智能时代,程序员如何保持核心竞争力? 在今天这个人工智能迅速发展的时代,程序员面临着前所未有的机遇和挑战。随着AIGC(如ChatGPT、MidJourney、Claude等)大语言模型的兴起,以及AI辅助编程工具的普及…

Axure八大优质Web端系统框架模版

在当今数字化转型的浪潮中,Axure作为一款强大的原型设计工具,以其快速、直观和易用的特点,成为了众多设计师和产品经理的首选。本文将详细介绍六套基于Axure制作的智慧系统原型框架模版,包括智慧园区、智慧社区、智慧乡村、智慧驾…

Oracle SQL Developer 连接第三方数据库

首先Oracle SQL Developer除了支持连接Oracle数据库外,还支持连接第三方数据库,包括: Amazon RedshiftHiveIBM DB2MySQLMicrosoft SQL ServerSybase Adaptive ServerPostgreSQLTeradataTimesTen 首先,你需要在菜单Tools > Pr…

C++笔试练习笔记【5】:最小花费爬楼梯(有题目链接) 初识动态规划

文章目录 题目思路代码 动态规划简介**一、什么是动态规划****二、动态规划的应用场景****三、动态规划的基本步骤****四、动态规划的优缺点** 题目 题目链接:https://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e?tpld230&tpld39751&ru/…

IT课程学习搭子

各种IT课程齐全可学,价格你绝对想不到,相比于培训班有以下优势: 1、避免被割韭菜,避免踩坑,避免交智商税,最低的成本学最有价值的课,同时又能达到比培训班更好的效果 2、收徒,带你学…

【Linux课程学习】:对于权限的理解(粘滞位)

🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 这篇文章主要理解权限的概念,以及如何更改…

KubeVirt虚拟机存储及网络卸载加速解决方案

1. 方案背景 1.1. KubeVirt介绍 随着云计算和容器技术的飞速发展,Kubernetes已成为业界公认的容器编排标准,为用户提供了强大、灵活且可扩展的平台来部署和管理各类应用。然而,在企业的实际应用中,仍有许多传统应用或遗留系统难…

AOP学习

AOP概述 AOP(Aspect Oriented Programming):⾯向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。 什么是SpringAOP? ⽽ AOP 是⼀种思想,⽽ Spring AOP 是⼀个框架,提供了⼀种对 AOP 思…

【Vue3】element-plus中el-tree的递归处理赋值回显问题

由于项目是从0-1开始构建的rbac都需要重新构建对接 所以涉及到了权限管理和菜单管理 整体思路很简单:初始化树 -> 处理 el-tree 回显 -> 递归处理所有层级菜单选中的id 不处理情况下: 只要勾选一个子节点,回来接收到的父节点数据 会…