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

 

路由发生的位置:

报文进入本机后:判断是否为目标主机

报文发出之前:经由哪个接口送往下一跳

 

Iptables45

添加规则时的考量点:

(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学习的主要内容,如果未能解决你的问题,请参考以下文章

iptables学习总结

iptables学习

iptables学习笔记

iptables学习笔记

Linux防火墙--iptables学习

CentOS初步学习记录iptables