iptables学习笔记(代码片段)

author author     2022-10-28     153

关键词:

学习的视频:http://edu.51cto.com/course/12914.html


IPTABLES LINUX防火墙

引言:
iptables作为一款老牌的Linux防火墙,给Linux系统提供了基于内核的安全防护机制。
优点:系统自带,无需安装,工作在OS底层(内核)从理论上说安全性更高;
缺点:学习难度高,配置项含义比较抽象,需要先搞清楚来龙去脉才能开始实际操作;

  • 防火墙的概念是什么
  • iptables是什么?做什么用?
  • iptables过滤型防火墙和win的对比
  • iptables4个表(tables)代表什么意思
  • iptables5个链(chain)代表什么意思
  • iptables链和内核功能块的关系
  • 通过数据包走向 分上下路 学习内核五个链的具体的功能以深入理解“五链”
  • PREROUTING上路判定(离开内核)学习 ->filter功能
  • PREROUTING下路判定(内核保留)学习 ->nat功能

防火墙的概念是什么

防火墙说白了其实是一种隔离技术,就是把从外面进来的访问按照事先定义好的一套规则进行过滤,合格的允许通过,不合格的就直接丢弃。
防火墙有硬件的、有软件的,有应用层的、有底层的。

iptables是什么?做什么用?

iptables其实是经过几个阶段发展而来的,ipfirewall > ipchains > iptables;

iptables在Linux系统中身份比较特殊
第一:表面上iptables是一个命令,也是一个服务;
iptables -h 查看使用手册
chkconfig --list | grep iptables
service iptables start/stop
然而使用ps或top命令是看不到iptables服务或进程的
为什么会出现这种现象呢?
因为iptables防火墙其实是系统内核的一部分,真正干活的实际上是内核当中一个叫做Netfilter的功能框架,也就是Linux内核利用其自身对于网络数据包的流向判断来间接起到防火墙的功能。
iptables只是作为方便我们用户随时控制内核中Netfilter功能的一个平台,可以理解为是一个“bash”。

iptables过滤型防火墙和win的对比

iptables -A input -s 172.16.0.0/16 -j DROP
iptables -L 查看规则
iptables -A input -s 192.168.0.0/16 -j ACCEPT
两个很简单的入门级设置

iptables4个表(tables)代表什么意思

“过滤型”防火墙是用得比较多的
过滤型防火墙规则,在iptables当中,实际上对应的是iptables当中的一个“表”,也就是filter表;
iptables中有4种标准化预定义的表:
filter/nat/mangle/raw
filter table主要是起到过滤的作用,根据一定的规则,把即将发送到OS的请求或者是即将发送出OS的请求(或者是转发的请求)预先做一个判断,根据判断结果,决定是否放行。这个是防火墙最基础也是使用频率最高的用法。
filter为默认表,-t table 常省略。
nat table network address translation 网络地址转换,是一种对数据包的特殊处理,主要的目的是把发送过来的请求,更改其原始的目的地址/端口或者更改其来源地址,达到数据转发的目的。
很多架构的应用,也是基于这种原理实现的,比如:反向代理,负载均衡等等。
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --192.168.102.37:22

iptables5个链(chain)代表什么意思

表在防火墙中是一个逻辑的大分类,在种类定下来后,才是真正开始定制规则了,在Linux当中,真正定义和实现防火墙功能的是五个链,可以理解为链是附属于每个表下面的。
定义防火墙规则,先按实现的功能不同,定义出不同的表,再在表下添加链,再加上对链的修饰,就最终组成了防火墙规则。
表+链+链修饰(规则)=一条防火墙规则

iptables一共有5种链,这5种链实际上对应着一个数据包的每个步骤:
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROOUTING:发送到网卡接口之前

iptables链和内核功能块的关系

                                              用户空间
                                    input          output
            请求  >  prerouting     内核空间         postrouting      出去
                                                forward

数据包刚刚到达时,不会立刻进入用户空间,必须先经过内核的筛选,才会进入(不管你是否设定iptables)。
重点:

  • 内核有FORWARD路由功能, ip v4 forward=1;
  • 内核还有针对路由功能的防火墙链,FORWARD链;
    这是两个概念,还是两个是直接相关的概念,
    5个链有好几层含义:
  • 命令行中,可以定义配置这5个链
  • 对应内核中Netfilter框架的5个功能块
  • 这5个功能块,对应的是内核代码中的5个钩子函数

最重要的一个核心理念:
误区:认为iptables本身是一个服务,把这个服务起来,防火墙就起来了。
执行service iptables stop命令时,只是改变了表下所有链的规则都设置成允许罢了,就跟没有防火墙一样了,但是内核的防火墙功能块始终都存在,你永远不可能关闭的。

通过数据包走向 分上下路 学习内核五个链的具体的功能以深入理解“五链”

第一个要经过的是内核中的PREROUTING链
可以拆为 PRE ROUTING 路由前
该链对数据包的判断,只会有2中结果:1.不需要经过路由转发2.需要路由转发;简单的说就是1.发给我本机的,2.发给别的地方的。
PREROUTING链作为第一道关卡,它检查数据包的机制就是判断数据包的目的地址、端口。

既然一个数据包都已经被我这台机器收到了,那它的原本的目的地址一定是我这台机器啊,怎么可能还会是发给别的地址呢?其实这就要说到PREROUTING链的功能的本质了,PREROUTING链和POSTROUTING这两个链其最终的目的,都是用来修改数据包的地址和端口的(在匹配上了规则之后)
PREROUTING链负责修改目的地址和端口
POSTROUTING链负责修改来源地址和端口
数据包到达第一个PREROUTING链时,PREROUTING链会根据它下面的事先定义好的规则(修饰)先来判断,这个数据包是否要被我修改目的地址和端口。
例子:
iptables -t nat -A PREROUTING -s 172.16.0.0/8 -d 192.168.56.102 -p tcp -j DNAT --to-destination 192.168.56.103
如果符合了上面的规则,则目标地址会被修改
如果不符合上面的规则,则目标地址不会被修改
如果发现这个数据包并不符合任何链下面的规则的话,这个包的目的地址和端口都不会被修改
那么这种情况下数据包就会被PREROUTING链判定为这个数据包不需要被修改,这个一个进入主机的数据包,相反的,这个数据包符合其中一条PREROUTING链的规则,就会判定这个数据包需要被修改,并且这是个要递交给路由的数据包。看是走“上路”进入input还是“下路”进入forward。

PREROUTING最终判定上路(离开内核)学习 ->filter功能

进入用户空间,INPUT链,是一个内核空间和用户空间的关卡,就是最常配置的链了。防住任何对用户空间有害的请求。
走“上路”实际上就是过滤型的防火墙;
filter表可以配置的链有3个:input, output, forward。

PREROUTING最终判定下路(内核保留)学习 ->nat功能

走”上路”的有个特殊的,比如port修改了IP不变,IP是本机的IP,这个虽然是修改port的,但还是走“上路”。
重要知识点:
数据包提交给FORWARD链,FORWARD链判断后提交给路由表,但提交给路由表不一定执行所谓的路由功能,要取决于目的地址在路由表的判定,有可能直连,有可能路由,有可能丢弃。
完整的“下路”数据包流程:
PREROUTING链->FORWARD链->路由表->路由功能判定->POSTROUTING链->下一层网络目的地。

iptables笔记(代码片段)

查看iptables表iptables-tfilter-Liptables-tnat-Liptables-tmangle-L介绍iptables命令iptables-ttable命令chainrules-jtargettable可以是filter、nat、mangle,默认是filter-p或--policy定义默认策略-A或--addend在规则列表的最后增加一条规则-I或--insert在指定 查看详情

iptables学习笔记

iptables学习笔记为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。http://www.cnblogs.com/shijiaqi1066/p/3812510.html   1Linux防火墙概述Linux防火墙实际指的是Linux下的Netfilter/Iptables。Netfilter/Iptables... 查看详情

iptables学习笔记

firewall图像化配置[[email protected]~]#firewall-configiptabes-Fiptabes-Xiptabes-Z先设置默认规则(最后防线)[[email protected]~]#iptables-PINPUTDROP&&iptables-POUTPUTDROP&&iptables-PFORWARDDROP 查看详情

iptables学习(代码片段)

一:防火墙:硬件,软件:规则(匹配标准,处理办法)framework:默认规则:开放关闭规则:匹配标准ip:源ip,目的iptcp:sportdportudp:sportdporticmp:icmp-type数据报文过滤:openBSDlinux2.0ipfw/Firewalllinux2.2ipchain/firewalllinux2.4iptables/netfilterhook:钩子函数pr 查看详情

centos初步学习记录iptables(代码片段)

一、前言iptables中文名:IP信息包过滤系统,它是一个配置Linux内核防火墙的命令行工具,是netfilter项目的一部分。术语iptables也经常代指该内核级防火墙。iptables可以直接配置,也可以通过许多前端和图形界面配置。iptables用于ipv... 查看详情

linux学习-iptables之tcpwrapper(代码片段)

tcp_wrapper:tcp包装器对基于tcp协议开发并提供服务的应用程序,提供一层访问控制工具基于库调用实现其功能,libwrap#判断服务是否能够由tcp_wrapper进行访问控制1)动态编译:ldd命令2)静态编译:strings/path/to/progra... 查看详情

学习笔记第三十二节课

iptables规则备份和恢复。serviceiptablessave会把规则保存到/etc/sysconfig/iptables配置文件中,但是有时候不想保存这个位置。可以用命令iptables-sabe>到你想保存的位置。恢复备份的规则的话是iptables-restore保存之后清空掉就没有规则了... 查看详情

springboot学习笔记——thymeleaf(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换SpringBoot学习笔记——自动配置原理SpringBoot学习笔记... 查看详情

markdowntensorflow学习笔记(代码片段)

查看详情

markdown学习笔记(代码片段)

查看详情

markdownsympy学习笔记(代码片段)

查看详情

markdown熊猫学习笔记(代码片段)

查看详情

markdown机器学习笔记(代码片段)

查看详情

ceressolverdocument学习笔记(代码片段)

CeresSolverDocument学习笔记CeresSolverDocument学习笔记1.基本概念2.基本方法2.1CostFunction2.2AutoDiffCostFunction2.3NumericDiffCostFuntion2.4LossFunction2.5LocalParameterization2.6Problem2.7Solver2.8CovarianceCeresSol 查看详情

学习笔记mybatis学习笔记(代码片段)

本文是动力节点MyBatis教程的学习笔记。第一章1.三层架构(1)三层的功能表示层(UserInterfaceLayer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(BusinessLogic... 查看详情

学习笔记mybatis学习笔记(代码片段)

本文是动力节点MyBatis教程的学习笔记。第一章1.三层架构(1)三层的功能表示层(UserInterfaceLayer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(BusinessLogic... 查看详情

lsof学习笔记(代码片段)

lsof学习笔记安装yuminstalllsof应用1、查看端口lsof-i:332242、查看进程ps-aux|grep876792、统计数量dockerimages|grep163110|wc-l 查看详情

springboot学习笔记——web开发探究(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换SpringBoot学习笔记——自动配置原理Web开发探究简介... 查看详情