详解Linux操作系统的iptables原理及配置
linux网络防火墙
netfilter :内核中的框架,过滤框架,网络过滤器!
iptables :实现数据过滤、net、mangle等规则生成的工具
防火墙:硬件、软件、规则(匹配规则、处理办法)
/proc/sys/net/ipv4/ip_forward :转发数据报文
根据目标ip完成路由决策
hook :钩子函数(四表五链)
PREROUTING :在路由决策之前
INPUT :进入本机
OUTPUT :本机出去
FORWARD :本机转发
POSTROUTING :在决策之后,就要离开本机
规则链:一个钩子上放着多条规则
filter(过滤):表
INPUT
OUTPUT
FORWARD
nat(地址转换):表
PREROUTING
OUTPUT
POSTROUTING
mangle (把报文拆开做了修改,再缝上):表
PREROUTING
INPUT
OUTPUT
POSTROUTING
FORWARD
raw(原始转状态):表
OUTPUT
PREROUTING

可以使用自定义链,它只能在被调用时才能发挥作用,而且如果没有自定义链中的任何匹配规则,还应该有返回机制。
用户可以删除自定义的空链,默认链无法删除。
每个规则都有两个内置的计数器
被匹配的报文个数
被匹配的报文大小之和
规则:匹配标准、处理动作
格式:iptables -t 指定表名 子命令 操作链 [第几条规则] 匹配标准 -j 处理办法
匹配标准
通用匹配 :自身能够完成检查
-s : 指定源地址
-d : 制定目标地址
-p [tcp|udp|icmp] :指定协议
-i 网络接口 :指定数据报文流入的接口
可用于定义标准的链:PEREOUTING INPUT FORWARD
-o 网络接口 :指定数据报文流出的接口
可用以定义标准的链:OUTPUT POSTROUTING FORWARD
扩展匹配:依赖于模块才能完成的检查
端口,状态是请求报文或者是响应报文
iptables -A OUTPUT -s 192.168.2.128 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
设置防护墙出站规则只允许源地址是192.168.2.128的tcp链接,而且连接的是22端口,状态是响应报文
查看防火墙连接状态:ipstate
iptstate需要两个东西的支持,一个是ncurses库,一个是libnetfilter_conntrack 的支持,如果没有这两个东西,是运行不了的。
格式: ..... -m state --state 状态类型,状态类型 -j 处理办法
处理办法
-j :跳转
ACCEPT 允许
DROP 直接丢弃数据包,不作任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端回一个响应信息
LOG 记录日志
语法格式: iptables -t 表名 command CHAIN [那条规则] 匹配标准 -j 处理办法
命令
管理规则
-A :附加一条规则,添加在链的尾部
-I CHAIN [数字] :插入一条规则,插入在对应的CHAIN上的第几条
-D CHAIN [数字] :删除指定链中第几条规则
-R CHAIN [数字] :替换指定的规则
管理链
-F [CHAIN] :用于清空指定规则链,若省略CHAIN则实现删除对应表中的所有链
-P CHAIN :设定指定链的默认策略
-N :自定义一个新的空链
-X :删除一个自定义的空链
-Z :置零指定链中所有规则的计数器
-E :重命名自定义的链
查看类的命令
-L :显示指定表中的规定
-n :以数字格式显示主机地址和端口号
-v :显示链及规则详细信息
-x :显示计数器的精确值
--line-numbers :显示规则号码
处理动作类的命令(target)
ACCEPT 允许
DROP 丢弃
REJECT 拒绝
DNET 目标地址转换
SNET 源地址转换
REDIREC 端口重定向
MASQUERADE 地址伪装,实现原地址转换
LOG 记录日志
MARK 给报文打一个标记
iptables 不是服务,但有服务脚本,服务脚本的主要作用在于管理保存的规则。
lsmod :查看内核模块
lsmod| grep ip :查看iptables有关的的模块
ping类型:
0 回显应答,ping应答,响应报文
8 回显请求,ping请求,请求报文
保存规则
当防火墙重启的时候,他会清空每个表中的链,重启完之后不会有任何的规则,
想要配置永久生效的防火墙规则,建立完一条规则,必须用一条命令service iptables save 进行保存,保存到/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables.112 把防火墙的规则保存在。。。
iptables -restore < /etc/sysconfig/iptables.112 重启防火墙时选择读取那个防火墙规则
常用扩展模块:
-m iprange :指定ip范围
--src-range ip-ip :匹配源的
--dst-range ip-ip :匹配目标的
加!可以取反,除他之外的范围,不加叹号为这个范围内的
-m limit :连接数限定,
-j LOG 处理动作记录日志
iptables -N 链名 :创建一条空链
iptables -I 主链名 -j 自定义链名 :把规则引用到主链上
NAT及其过滤功能:
DNAT:目标地址转换
SNAT:源地址转换(一定要在NAT表postrouting链中做)
-j SNAT 地址转换
--to-source IP地址 :转换为那一个地址作为源地址,也可以指定范围(IP地址-IP地址)
-j DNAT
iptables -t nat -A PREROUTING -i 接口 -d 公网接口 -p tcp --dport 端口 -j DNAT --to-destination 私有地址
DNAT :目标地址转换
SNAT : 源地址转换
让linux服务器带有路由功能,需要一个模块ip_forward,在/proc/sys/net/ipv4/ip_forward位置,设值为1。
编辑 /etc/sysctl.conf 改forward =1 然后保存,sysctl -p 使其生效!
使用rpm包安装tcpdump抓包
使用格式:tcpdump -i 接口 -nn -X 协议
详解Linux操作系统的iptables原理及配置的更多相关文章
- 详解Linux下iptables中的DNAT与SNAT设置(转)
详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下 原文连 ...
- [转帖]详解Linux系统inode原理--硬链接、软链接、innodb大小和划分等
详解Linux系统inode原理--硬链接.软链接.innodb大小和划分等 原创 波波说运维 2019-07-17 00:03:00 https://www.toutiao.com/i6713116 ...
- 详解Linux操作系统的进程
系统 计算机运行起来以后,就是由内核和运行在内核之上的众多进程来实现的(kernel+process) 内存分为 : 线性内存: 物理内存: 计算机的所有运行都只在内存和CPU中运行! 内核空间 ...
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- 详解Linux运维工程师
运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...
- Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)
1 前景回顾 1.1 Linux的调度器组成 2个调度器 可以用两种方法来激活调度 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测 ...
- IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)
IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...
随机推荐
- Java 并发系列之五:java 锁
1. Lock接口 2. 队列同步器AQS 3. 重入锁 ReentrantLock 4. 读写锁 ReentrantReadWriteLock 5. LockSupport工具 6. Conditi ...
- linux quota磁盘限额,引发的rename系统调用 errno:18 - Invalid cross-device link
起因: log4j日志滚动失败,debug发现jvm调用native方法rename失败,也就是系统调用rename失败. 自己写c程序系统调用rename,证实确实是这个问题. 日志打在容器里,日志 ...
- shell备份,重命名,删除目录下面的文件
因为经常会用到shell脚本,所以经常会写一些,但是我从来没有系统的学习过shell脚本,遇到问题,就去看手册,或者google一下,到了一定的程度才发现自己的基础真的好差.下面在系统学习shell时 ...
- [转帖]JVM性能调优详解
JVM性能调优详解 https://www.cnblogs.com/secbro/p/11833651.html 应该是 jdk8 以前的方法 貌似permsize 已经放弃这一块了. 前面我们学习了 ...
- jupyter lab matplotlib 画图
解决jupyter lab plt.plot() 不画图的问题 import matplotlib.pyplot as plt %matplotlib inline #insert this c ...
- B树和B+树的增/删结点(转)
add by zhj: 算法其实不复杂,尤其是增加结点的算法,逻辑很简单,但有时自己想不到. 增加结点算法:首先,对于B树,没有重复结点,所以新插入的数据一定会落在叶结点上,或者说落在叶结点的所有父结 ...
- TJOI2018简要题解
Day1T1数学计算 按照时间轴建一棵线段树即可,复杂度为\(O(m \log m)\) #include <bits/stdc++.h> #define N 100005 #define ...
- 『2019 SummerCamp 总结』
做题 对于习题方面,我们感觉一个暑假还是留下了不少的题要写,大部分应该是讲师讲课的例题,还有少部分考试题.考试题没有订正完是因为还有算法不会,或是因为题太毒瘤了不会.同时,也发现自己还是有很多应该学的 ...
- TestNG系列(三)TestNG之XML文件配置
前言 上一篇博客说了TestNG的注解,这篇博客来介绍Test.xml文件. Test.xml文件可以更方便的管理和执行测试用例 一.Test.xml-suite: suite为Test.xml的根节 ...
- 一段代码看 Java 引用类型
Java 中的操作数(不知道叫什么,相对于 bytecode 而言,类似 CPU 的操作码和操作数)分为值类型和引用类型: 值类型就是直接存储最终数值的,如 char, int, float, dou ...