热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Linux】iptables入门简介

文章目录前言作用持久化和恢复执行的顺序前言简单地说,iptables是Linux的防火墙程序。它将使用表监控进出服务器的流量。这些表包含称为链的规则集,


文章目录


  • 前言
  • 作用
  • 持久化和恢复
  • 执行的顺序





前言

简单地说,iptables是Linux的防火墙程序。它将使用表监控进出服务器的流量。这些表包含称为链的规则集,这些规则将过滤传入和传出数据包。




作用

当数据包与规则匹配的时候,会为其指定一个目标,该目标可以是另一条链或者是以下的特殊值之一:


  • ACCEPT 允许数据包通过
  • DROP 直接丢弃
  • RETURN 组织数据包遍历链并告诉它返回到上一个链(没用过)

iptables 规则仅适用于 IPv4。如果要为 ipv6 协议设置防火墙,则需要改用 ip6tables。

默认我们使用的是filter表,常说三表五链,但是我所了解的更多有关于filter表和nat表。
首先大概了解一下报文经过防火墙时大概经历了哪些。
在这里插入图片描述

这里我们跳过安装部分。
介绍几个常见的指令:
查看当前的iptables 的配置:
iptables -nL
我们可以观察到一开始的所有的链上面的规则默认都是ACCEPT的。这明显是不安全的,说明任何的数据包到达之后我们都可以直接通过。图中圈起来的是默认策略,可以进行修改。
在这里插入图片描述
修改对应链的默认配置:
iptables -P FORWARD DROP
在这里插入图片描述
往对应链增加新规则:
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
比如说我想让所有访问tcp协议,访问我的主机的8080号端口的都放行,我可以在INPUT链做操作。
语法:
iptables -A -i -p -s --dport -j
在这里插入图片描述
-i (接口) — 要过滤其流量的网络接口,例如 eth0、lo、ppp0 等。
-p(协议) — 进行过滤过程的网络协议。它可以是tcp,udp,udplite,icmp,sctp,icmpv6等。或者,您可以键入 all 以选择每个协议。
-s(源) — 流量来自的地址。您可以添加主机名或 IP 地址。
–dport (目标端口) — 协议的目标端口号,例如 22 (SSH)、443 (https) 等。
-j (target) — 目标名称(ACCEPT, DROP, RETURN)。每次创建新规则时都需要插入此规则。

那么要是想在链头新增规则,可以采用-I 指定链 + number 进行插入,默认插入到第一行。
iptables -I INPUT -p tcp --dport 22 -j DROP
执行上面指令,就能让ssh失去连接。
在这里插入图片描述
那我如果后悔了,我的xshell或者vs code链接不上虚拟机了,此时可以使用
iptables -D INPUT 1
删除第一条规则,然后就可以恢复正常了。 要是嫌麻烦iptables -F可以删除所有链上已有的规则,可以指定链,默认对filter表的链全部进行删除。

基于源过滤数据包
Iptables 允许您根据 IP 地址或 IP 地址范围过滤数据包。您需要在 -s 选项后指定它。例如,要接受来自 192.168.1.3 的数据包,命令将是:
sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

如果要丢弃来自某个 IP 地址范围的数据包,则必须使用 -m 选项和 iprange 模块。然后,使用 –src-range 指定 IP 地址范围。请记住,连字符应分隔不带空格的 IP 地址范围,如下所示:
sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

丢弃所有其他流量
在定义 –dport 规则后,将 DROP 目标用于所有其他流量至关重要。这将防止未经授权的连接通过其他开放端口访问服务器。要实现此目的,只需键入:

sudo iptables -A INPUT -j DROP


持久化和恢复

由于每一次重启虚拟机防火墙策略都会发生改变,而一行行在终端上面修改又比较麻烦,所以通常持久化到文件当中。
iptables-save > /root/ipt.save iptables的保存
iptables-restore

其他:
链管理
 -X, --delete-chain [chain]:删除用户自定义的引用计数为0的空链;
 -E, --rename-chain old-chain new-chain:重命名链;

规则管理:
-R, --replace chain rulenum rule-specification:替换指定的规则为新的规则;

–syn 说明是tcp的syn字段为1,其他字段为0的情况。

state
限制收发包的状态

[!] --state state

INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.

NEW: 新连接请求;

ESTABLISHED:已建立的连接;

INVALID:无法识别的连接;

RELATED:相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接;

UNTRACKED:未追踪的连接;

也可以对icmp协议进行一个处理
iptables -A INPUT -p icmp --icmp-type 8 -j ljh


执行的顺序

iptables执行规则时,是从从规则表中从上至下顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作(accept, reject, log等),决定下一步执行的情况,后续执行一般有三种情况。

1.一种是继续执行当前规则队列内的下一条规则。比如执行过Filter队列内的LOG后,还会执行Filter队列内的下一条规则。也就是当我们进入任意一条链,执行完后也会返回。

2.一种是中止当前规则队列的执行,转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则,跳到nat队列规则去执行

3.一种是中止所有规则队列的执行。比如说DROP,当前访问被丢弃了。

iptables 是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查 Prerouting,然后检查目的 IP 判断是否需要转送出去,接着就会跳到 INPUT 或 Forward 进行过滤,如果封包需转送处理则检查 Postrouting,如果是来自本机封包,则检查 OUTPUT 以及 Postrouting。过程中如果符合某条规则将会进行处理,处理动作除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,还多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等,其中某些处理动作不会中断过滤程序,某些处理动作则会中断同一规则炼的过滤,并依照前述流程继续进行下一个规则炼的过滤(注意:这一点与 ipchains 不同),一直到堆栈中的规则检查完毕为止。透过这种机制所带来的好处是,我们可以进行复杂、多重的封包过滤,简单的说,iptables 可以进行纵横交错式的过滤(tables)而非炼状过滤(chains)。

参考:
iptables命令使用详解
执行顺序







推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
author-avatar
zz998877
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有