Linux学习笔记:iptables命令管理

server/2024/11/14 1:13:20/

1、iptables简介

其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。

语法格式:iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION

  • -t:指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。
  • COMMAND:子命令,定义对规则的管理。
  • chain:指明链表。
  • CRETIRIA:匹配参数。
  • ACTION:触发动作。

“四表五链”:

1. filter表——三个链:INPUT、FORWARD、OUTPUT

作用:过滤数据包 内核模块:iptables_filter

2. nat表——四个链:PREROUTING、POSTROUTING、OUTPUT、INPUT

作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat

3. mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle

4. raw表——两个链:OUTPUT、PREROUTING

作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw

5. security表——三个链:INPUT、FORWARD、OUTPUT

作用:强制访问控制(MAC)网络规则

各种报文的流向:

1、流入本机:PREROUTING-->INPUT-->用户空间进程

2、流出本机:用户空间进程-->OUTPUT-->POSTROUTING

3、转发:PREROUTING-->FORWARD-->POSTROUTING

规则表之间的优先顺序:raw > mangle > nat > filter

参考来自:Linux iptables命令详解-CSDN博客

iptables全面详解(图文并茂含命令指南)_iptables命令详解-CSDN博客


2、NAT表

IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。

在路由模式下,包从路由器的lan侧出去的时候,会经过nat表的POSTROUTING链,去做SNAT,然后才能发送至外网。MASQUERADE的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT。

参考来自:Linux防火墙配置工具iptables中MASQUERADE的含义_iptables masquerade-CSDN博客(总结版)

iptable端口重定向 MASQUERADE[通俗易懂]-腾讯云开发者社区-腾讯云 (tencent.com)(详细版)

使用iptables进行反向代理(将80端口重定向到8080端口):
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080


3、Filter表

动作区别:iptables drop与reject 的区别-CSDN博客,里面还提及了用tcpdump抓包、time nmap查看端口耗时。

nc可以监听端口,还可以像telnet一样查看某IP的端口是否可用。

iptables 之 REJECT 与 DROP 对比_iptables drop reject-CSDN博客


4、具体操作

首先安装:yum install iptables-services

注意:iptables-services 和 iptables 是不一样的,iptables 一般自带会有,但是安装了 services 才有/etc/sysconfig/iptables。

1、查看所有规则

 以排序方式列出,可以看见行号

[root@centos7 ~]# iptables -L --line-number

cat  /etc/sysconfig/iptables-config

iptables --list

iptables -nvL或iptables -L 

2、替换某条规则,需要用到这个行号

3、删除规则,需要用到这个行号

[root@centos7 ~]# iptables -D INPUT 1 -s 10.7.0.0/16 -p icmp -j REJECT

[root@centos7 ~]# iptables -D INPUT 1

有时需要删除的规则较长,删除时需要写一大串的代码,这样比较容易写错,这时可以先使用 -line-number 找出该条规则的行号,再通过行号删除规则。

这里尝试了一下好像-s是删不掉的,还是直接使用行号删除吧。

4、添加规则

使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后,而使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则。

允许源IP地址为192.168.0.0/24网段的包流进(这里没有加-p,就包括了所有的协议。这里也可以指定单个IP)

[root@centos7 ~]# iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
5、调整规则顺序

可以在添加规则时,指定新增规则的编号,这样我们就能在任意位置插入规则了,只需要把刚才的命令稍作修改即可,这里举例子示范了一下:

仍然使用-I选项进行插入规则操作,-I INPUT 2表示在INPUT链中新增规则,新增的规则的编号为2。

6、列出XX表的规则内容

iptables-save -t nat

iptables-save -t filter

iptables -t nat --list

7、清空规则

清空所有的规则:iptables -F

清空所有自定义的规则链:iptables -X

清空指定链 INPUT 上面的所有规则:iptables -F INPUT

清除iptables nat表规则:iptables -F -t nat

详细版参考:linux之iptables基础_iptables代理-CSDN博客


5、使规则永久生效

当你删除、添加规则后,这些更改并不能永久生效,这些规则很有可能在系统重启后恢复原样。为了让配置永久生效,根据平台的不同,具体操作也不同。下面进行简单介绍:

1、保存现有的规则

保存在默认文件夹中(保存防火墙规则):# iptables-save > /etc/sysconfig/iptables

【CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中】

保存在其他位置(备份防火墙规则):# iptables-save > 文件名称

2、保存iptables规则

iptables-save 

service iptables save

注意:可以修改/etc/sysconfig/iptables-config 将里面的IPTABLES_SAVE_ON_STOP=”no”, 这一句的”no”改为”yes”这样每次服务在停止之前会自动将现有的规则保存在 /etc/sysconfig/iptables 这个文件中去。】

3、重启iptables服务

systemctl restart iptables


http://www.ppmy.cn/server/96294.html

相关文章

使用Go语言绘制柱状图教程

使用Go语言绘制柱状图教程 本文将介绍如何使用Go语言及gg包绘制柱状图,并将图表保存为PNG格式的图片。gg包是一个功能强大的2D图形库,适合用于绘制各种图表。 安装gg包 首先,确保你已经安装了gg包。如果还没有安装,可以使用以下…

算法通关:014_1:用栈实现队列

文章目录 题目总结代码运行结果 题目 用栈实现队列 leetcode :232 总结 时间复杂度 平均下来每个方式是O(1) 代码 class MyQueue {public Stack<Integer> in;public Stack<Integer> out;//初始化public MyQueue() {in new Stack<>();out new Stack<…

【Linux 从基础到进阶】Linux 内核参数调优

Linux 内核参数调优 引言 内核参数调优是提升 Linux 系统性能和稳定性的重要手段。通过合理配置和优化内核参数,可以显著改善系统资源利用率和响应速度。本文将介绍内核参数的调优方法,并提供适用于 CentOS 和 Ubuntu 系统的具体示例。 1. 内核参数简介 内核参数是控制 L…

Spring为啥用三级缓存而不用两级缓存

1. 背景介绍 Spring框架&#xff1a;一个广泛应用于Java应用开发的轻量级容器框架。三级缓存机制&#xff1a;Spring框架特有的设计&#xff0c;旨在解决单例Bean创建过程中的循环依赖问题。 2. 缓存层级详解 一级缓存&#xff08;Singleton Objects&#xff09; 作用&#x…

通过指令深入了解Linux

文章目录 1.简单介绍XShell1.1下载安装XShell1.2 使用XShell登录主机1.3 XShell下的复制粘贴 2. Linux下的基本指令2.1 ls指令2.1.1 对文件的理解2.1.2 目录下的隐藏文件 2.2 pwd指令2.3 cd指令2.3.1 Linux下目录结构的认识 2.4 touch指令2.5 mkdir指令2.6 clear指令 1.简单介绍…

面试中的算法 [ 持续更新中 ] 基于Python语言 如何判断链表有环

本文主要介绍了如何判断链表有环的问题&#xff0c;并进行了延伸&#xff1a; 如果链表有环如何求出环的长度&#xff0c;入环节点... ...嗯&#xff0c;点个赞总可以不&#xff01;&#xff01;&#xff01; 目录 5.1如何判断链表有环 5.1.1 有一个单向链表&#xff0c;链表…

serial 反序列化靶机

1.安装靶机 2.扫描靶机ip,端口,访问 3.扫描目录,发现有 backup 目录,访问发现是压缩包,下载,解压,查看 通过审计源代码了解到: 首次访问该网站后,会通过 user.class.php 中的创建一个user对象, 内容为wel变量创建welcome对象,同时进行序列化base64编码存入cookie,在此过程中调用…

自学黑客(网络安全)

前言&#xff1a; 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“…