iptables基础
简介
Linux防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和限制。iptables是linux防火墙的管理程序,为包过滤机制的实现制定规则,并告诉内核空间的netfilter如何处理这些网络数据包。
在centos7中,默认的防火墙管理程序是firewalld,通过yum install -y iptables-services安装iptables。firewalld可以通过systemctl stop firewalld && systemctl disable firewalld停止。
iptables的四表五链
如何对网络数据包进行过滤和处理成为规则,规则的集合成为规则集。按照规则集的不同用途,可以划分为四个规则表。处理数据包的不同时机分为五种规则链,每个规则表中含有不同的规则链。
规则表
filter表:用于数据包过滤,具体的规则要求决定如何处理数据包。- 表中有
input、output和forward三个链。
- 表中有
nat表:网络地址转换,主要用来修改数据包的IP、端口号等信息。- 表中有
output、prerouting和postrouting三个链。
- 表中有
managle表:主要用来修改数据包的服务类型、生存周期,为数据包设置标记、实现流量整形、策略路由等。- 表中有
input、output、forward、prerouting和postrouting五个链
- 表中有
raw表:主要用来决定是否对数据包进行状态跟踪。- 表中有
output和prerouting两个链。
- 表中有
当数据包到达防火墙时,如果对应的链中有规则,将按照 raw -> mangle -> nat -> filter的顺序通过各个规则表。
规则链
input:当收到访问本机的数据包时,将应用此链中的规则。主要用于针对本机的防火墙规则。output:当本机向外发送数据包时,将应用此链中的规则。主要用于针对本机的防火墙规则。forward:当收到需要通过本机转发到其它地址的数据包时,将应用此链中的规则。prerouting:在对数据包做路由选择之前,将应用此链中的规则。postrouting:在对数据包做路由选择之后,将应用此链中的规则。
外部数据包到达防火墙时,要先通过prerouting链进行路由选择。如果该数据包访问的是本机,则交给input规则链处理。如果是其它地址,则交给forward链处理,再交给postrouting链处理。
内部数据包到达防火墙时,首先被output链处理,然后选择路由,交给postrouting处理。
数据包进入规则链时按照顺序依次匹配处理。如果找到匹配数据包的处理规则,将不再执行当前规则链之后的其它规则。如果整个链都没有相应规则,将按照默认策略进行处理。
iptables命令基本语法
# iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
- 未显式指定表名时,默认使用
filter表。 - 管理选项:iptables操作方式,比如:
-A: 在链尾增加一条规则-D: 删除链中某一条规则,可指定序号或具体内容-I: 指定序号插入规则,未指定序号时,在链首插入-R: 修改链中某一条规则,可指定序号或具体内容-L: 列出链中所有规则,未指定链名时,列出表中所有规则链的规则-F: 清空指定链中的所有规则,未指定链名时,清空表中所有规则链的规则-P: 设置指定链的默认规则-n: 使用数字形式显示输出结果-v: 查看规则列表时显示详细信息--line-numbers: 查看规则列表时,同时显示规则在链中的序号
- 控制类型
accept: 允许数据包drop: 丢弃数据包,且不给回应消息reject: 拒绝数据包,必要时会给数据发送方回应log: 在/var/log/meesages文件中记录日志信息
简单示例(入站防护示例)
# 禁止192.168.11.0/24的IP访问
iptables -A INPUT -s 192.168.11.0/24 -j DROP
# 允许192.168.12.0/24使用tcp协议访问本机80端口
iptables -A INPUT -s 192.168.12.0/24 -p tcp --dport 80 -j ACCEPT
# 允许192.168.12.0/24使用tcp协议访问本机80和443端口
iptables -A INPUT -s 192.168.12.0/24 -p tcp -m multiport --dport 80,443 -j ACCEPT
# 允许192.168.12.0/24使用udp协议访问本机2000 - 3000端口
iptables -A INPUT -s 192.168.12.0/24 -p udp --dport 2000:3000 -j ACCEPT
# 禁止ICMP
iptables -A INPUT -p icmp -j DROP
# 查看规则列表并显示序号
iptables -L INPUT --line-numbers
# 使用数字形式避免地址解析,提高命令执行速度
iptables -nL INPUT
# 删除INPUT链第3条规则
iptables -D INPUT 3
# 清空INPUT链中所有规则
iptables -F INPUT
# 设置默认禁止入站
iptables -P INPUT DROP
其他命令
- 导出iptables规则到文件中
iptables-save > /root/backup/iptables_bak20220508.txt
- 从文件中导入iptables规则
iptables-restore < /root/backup/iptables_bak20220508.txt
参考
- 杰哥的iptables手册V1.0.pdf
iptables基础的更多相关文章
- Iptables基础整理
Iptables基础框架
- 腾讯云:iptables基础
iptables 基础 iptables 基本命令 任务时间:5min ~ 10min iptables 可以简单理解为 Linux 系统内核级防火墙 netfilter 的用户态客户端. Linux ...
- iptables基础知识
iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置 iptables将会帮助你更有效地管理Linux防火墙.如果你是第一 ...
- iptables基础知识详解
iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置 iptables将会帮助你更有效地管理Linux防火墙.如果你是第一 ...
- iptables基础实战练习
目录: 一.基本规则练习 二.SNAT源地址转移 三.DNAT目标地址转移 一.基础规则练习 (1) 放行ssh (端口:22) 1 iptables -A INPUT -d 192.168.42.1 ...
- iptables基础命令详解
TCP/IP基本概念: TCP/IP将网络分为四层:应用层,传输层,网络层,链路层. 传输层:定义了两种通信协议,分别为TCP协议和UDP协议. TCP协议:TCP协议在传输 数据过程中会检查数据的完 ...
- iptables 基础知识
[root@tp ~]#iptables -L -n 查看防火墙规则 [root@tp ~]# iptables -D INPUT 1 根据命令iptables -L -n --line-numbe ...
- iptables基础信息介绍
在linux系统下,网络安全,除了有SElinux,另外就是iptables防火墙了,这个是用的最多也是功能非常强大的一个工具,今天就对其简单的架构上技术进行概要描述.让自己后续能够逻辑清晰的处理云环 ...
- Linux防火墙iptables基础详解
原文来自于:https://www.linuxidc.com/Linux/2017-01/140073.htm(引用自) 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分 ...
- iptables基础配置
启动指令:service iptables start 重启指令:service iptables restart 关闭指令:service iptables stop 规则相关配置:/e ...
随机推荐
- 2022-08-15:k8s安装pgadmin,yaml如何写?
2022-08-15:k8s安装pgadmin,yaml如何写? 答案2022-08-15: yaml如下: # 依赖postgres.yaml apiVersion: apps/v1 kind: D ...
- 2021-08-14:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T。
2021-08-14:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T. 福大大 答案2021-08-14: 样本对应模型. 时间复杂度:O(N^2). 空间复杂度:O(N^2) ...
- 2021-08-07:与数组中元素的最大异或值。给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是
2021-08-07:与数组中元素的最大异或值.给你一个由非负整数组成的数组 nums .另有一个查询数组 queries ,其中 queries[i] = [xi, mi] .第 i 个查询的答案是 ...
- 【设计模式】使用 go 语言实现简单工厂模式
最近在看<大话设计模式>,这本书通过对话形式讲解设计模式的使用场景,有兴趣的可以去看一下. 第一篇讲的是简单工厂模式,要求输入两个数和运算符号,得到运行结果. 这个需求不难,难就难在类要怎 ...
- LC19. 删除链表的倒数第 N 个结点
删除链表的倒数第N个结点(中等) Q:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例: 示例一:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3, ...
- 8张图带你全面了解kafka的核心机制
前言 kafka是目前企业中很常用的消息队列产品,可以用于削峰.解耦.异步通信.特别是在大数据领域中应用尤为广泛,主要得益于它的高吞吐量.低延迟,在我们公司的解决方案中也有用到.既然kafka在企业中 ...
- drf——反序列化校验源码(了解)、断言、drf之请求和响应、视图之两个视图基类
1.模块与包 # 模块与包 模块:一个py文件 被别的py文件导入使用,这个py文件称之为模块,运行的这个py文件称之为脚本文件 包:一个文件夹下有__init__.py # 模块与包的导入问题 '' ...
- bootstrap treeview基本运用
虽然现在有了很多新的前端框架,但是有的时候我们做一个不需要任何其他js编译环境就可以运行的项目,那还是的使用一些老式技术,接下来就来回顾一些bootstrap treeview + jquery的使用 ...
- 拒绝conda, 用virtualenv构建多版本的python开发环境
本文章转载自公众号 "生信码农笔记(ID:bio-coder)",已获得原作者授权. 1. 不喜欢用 conda 特别不喜欢 bioconda, miniconda, Anacon ...
- Anaconda 使用的一些体验与困惑
Channels 使用 需要注意的是做生信分析的童鞋使用 conda 环境时一定要特别注意 conda channels 的设置,滥用 channels 很有可能会导致你的软件升降级(甚至环境)错乱. ...