iptables学习
Posted escapist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables学习相关的知识,希望对你有一定的参考价值。
Iptables:基于软件的形式实现的一种防火墙的软件程序
Firewall:防火墙 实际是一个隔离工具:工作于主机或网络边缘,对于进出的报文根据事先定义好的匹配规则作检查,
对于能够被规则匹配到的报文做出相应处理的组件(硬件或者软件)
在协议栈上放防火墙
主机防火墙:工作在主机边缘
网络防火墙:工作在网络边缘 只能和外网通信时才能防火,对于内部的没有用
防火墙和杀毒软件的区别:前者针对可能出现的网络攻击 后者可能修改文件等等
比如:如果只是窃取数据,并没有修改文件内容 这就需要防火墙 而不能使用杀毒软件来防护
接受到报文的走向:
如果目标地址是本机 进入用户空间
不是本机 要进行核心转发(转发给下一跳 不会经过用户空间)
根据报文的流向 来进行防火 设置多个钩子函数
可以对报文做出修改
Nat 网络地址转化 改目标/源 IP
Pat 端口地址转换 改变端口
只能防范已经的攻击行为
IDS:入侵检测系统 只是能检测到入侵 通告给Firewall
合起来的功能 IPS 入侵防御系统
IDS:检测到入侵 可以出发报警
IDS的2中实现
HIDS 主机入侵检测系统
NIDS 网络入侵检测系统
Honeypot 伪装很巧妙的 让别人来攻击 蜜罐
iptables有2部分组成 全称是iptables/netfilter
内核中是framework(防火框架): netfilter
Netfilter:负责提供钩子(hooks function) 工作在内核空间
只是在报文流经的地方设置钩子函数
Iptables:负责在钩子上添加规则 他是一个规则管理工具 工作在用户空间
完成防火功能的组件 写成脚本 就能一直有效 只是让规则重新生效
防火墙并不是服务 并不需要运行任何进程 因为是工作在内核上
Iptables 前身
NetBSD 注重安全 有防火墙 linux就模仿写了一个
早期叫ipfw(很简单) --> ipchains --> iptables(表)
功能:
filter:过滤 防火墙的功能
net:地址转换 network address translation 重要功能 LVS的基础
mangle:拆解报文 做出修改 重新封装报文
row:net的补充 关闭net表上启用的连接追踪机制 用的不多
需要启用连接追踪功能
连接追踪:能识别主机的报文 需要记录 有些很繁忙的前端服务器 这个功能不能启用
否则 准备好足够多的内存
5个内置的链
PREROUTING: 报文刚到达本机 路由选择发生之前(用来判断是否是发往本机的报文)
INPUT:到本机内部
FORWARD:由本机转发 2中情况 (只是转发、本机发出的报文) 转发完成是需要重新做路由选择的
OUTPUT:本机内部发出的
POSTROUTING:第二次路由决策发出之后
既能做网络防火前(利用forward) 也能做主机防火墙(利用input 和output)
报文流向:
流入 PREROUTING --> INPUT
流出 OUTPUT --> POSTROUTING
转发 PREROUTING --> FORWARD --> POSTROUTING
各功能的分别实现:
Filter:INPUT、FORWARD、OUTPUT
Nat:PREROUTING(DNAT目标地址转换)、OUTPUT、POSTROUTING(SNAT源地址转换)
现在也有fullnat(目标和源都改变)
Mangle:5个地方都行
Raw:OUTPUT 、PREROUTING
路由发生的位置:
报文进入本机后:判断是否为目标主机
报文发出之前:经由哪个接口送往下一跳
Iptables:4表5链
添加规则时的考量点:
(1) 要实现什么功能:判断添加在那张表上
(2) 报文流经的路径:判断添加到哪个链上
链:链上规则的次序既为检查的次序:因此隐含一定的法则
(1) 同类规则匹配(控制同一种应用访问), 范围小的放上面:例如都访问22端口的
(2) 不同类规则(访问不同应用),匹配到报文频率大的放上面
(3) 设置默认规则 都没有匹配到 将有些可以合并的规则合并
白名单(默认为拒绝) 黑名单 建议使用白名单
功能的优先级次序 raw --> mangle -->nat -->filter
规则:
组成部分:报文的匹配条件,匹配到之后处理动作
匹配条件:根据协议报文特征指定
基本匹配条件 源/目标 端口 IP
扩展匹配条件
处理动作:
内建处理机制
自定义处理机制 自定义链
注意:报文不会经过自定义链, 只能在内置链上通过规则引用后生效
Iptables 就是规则管理工具 iptables将规则送往内核的netfilter并发起系统调用来让这些规则生效
添加 修改 删除 显示等
规则和链有计数器
Pkgs:由规则或链匹配到的报文的个数
Bytes: 由规则和链匹配到的所有报文大小之和
基本语法: 匹配标准
iptables [-t TABLE] COMMAND CHAIN CRETIRIA -j TARGET(处理动作)
-t TABLE:
Filter nat mangle raw 默认为filter 优先级刚好相反
COMMAND:
链管理相关:
-F:表示flush, 清空规则链 省略链表示清空指定表上的所有链
-N:表示new, 创建新的自定义规则连 不能重名
-X: 表示delete, 删除一条自定义的空的规则链(需要使用-F清空) 没有就删除所有自定义链
-Z: 表示zero 计数器归零
-P: 设置默认策略,对filter表来讲,默认规则为ACCEPT DROP REJECT
-E: 重命名自定义链 引用计数器不为0的自定义链无法改名和删除
链中的规则:
-A 将新规则追加至链的尾部
-I 将新规则插入至指定位置 省略时表示第一条
-D 删除指定链上的指定规则
有2种指定方式:
指定匹配条件 或者 指定规则标号
-R 替换指定链上的指定规则
查询:
-L 列出指定链上的所有规则
-n: 数字格式显示主机地址和端口,避免反解 避免速度慢
-v: 显示详细格式,-vv, -vvv 可以显示计数器
--line-numbers: 显示规则编号 然后可以通过这个编号来删除
-x 精确 不希望自动做单位换算(可能丢精度)
Iptables -t filter -L -n
Iptables -x 删除所有的自定义链
Iptables -t filter -N IN_putlic新建
target prot opt source destination
处理目标(可以是自定义链) 协议(3中) 选项 源地址 目标地址 追踪状态
Iptables -L -n -v
pkts bytes target prot opt in out source destination
包数 字节数 目标 协议 流入的接口 流出的接口 源地址 目标地址
Iptables -t filter -P FORWARD DROP 修改默认策略
以上是关于iptables学习的主要内容,如果未能解决你的问题,请参考以下文章