Linux(iptables防火墙)

防火墙

功能:隔离功能; 防火墙一般部署在网络的边缘,或者主机的边缘(一个网络整体的进、出口)

主要作用:

用来决定哪些数据可以被外网访问,以及哪些数据可以进入内网访问

运用到的安全技术:

1、入侵检测系统:当检测数威胁(例如:木马、病毒等),不会立刻阻断网络访问,而是过后才报警和监督

2、入侵防御系统:一旦检测出威胁,会立刻阻断,主动的方式保护网络安全,以透明模式工作,一般采取在线部署的方式(即所有数据的进出都会经过此检测)

特殊:防水墙  (water wall)

作用:防止信息泄露

软件防水墙:iptables、firewall、火绒、360……

硬件防水墙:路由器、交换机、三层交换机……

防火墙的划分方式

1、保护范围

主机防火墙:服务于当前自己的主机

网络防火墙:必经之路

2、实现方式

硬件防火墙:既有专业硬件实现功能,也有软件进行配置

软件防火墙:运用代码实现,判断

3、网络协议划分

网络层:包(数据包)过滤防火墙

应用层(代理服务器):设置数据进出

Linux防火墙

CentOS 7 自带

firewall   防火墙

iptables  包过滤防火墙

selinux   自带安全工具

上述三者都集成在一个内核中:netfilter 组件

iptables 包过滤防火墙

工作在网络层;针对数据包进行过滤和限制

iptables属于用户态

过滤数据包:IP地址、端口、协议都可以在iptables中进行配置,同时页可以进行限制或者放行

主要的作用协议:TCP

iptables的组成和工作机制

组成部分:

四表五链;(特殊:selinux 也是一个表,但是,是不在讨论范围之内的第五表)

四表:

raw 表:连接跟踪机制;可以加快封包穿过防火墙的速度;数据包跟踪

mangle 表:数据标记

nat 表:地址转换表

filter 表:过滤规则表;根据规则来定义或者过滤符合条件的数据包;默认表

四表的优先级

security——>raw ——>mangle ——>nat ——>filter

五链

INPUT:处理数据包,进入本机的规则

OUTPUT:处理数据包发出本机的规则

prerouting:处理数据包进入的规则

postrouting:处理数据包离开本机之后的规则

FORWARD:处理数据包转发的规则

iptables 的规则

表里有链(每个表里都可以有着五个链),链里有规则(规则:自定义的对于数据包的控制命令)

匹配顺序

1、根据表的优先级进行匹配;在表中从上到下进行检查,找到匹配的规则后立刻停止,不在继续从表中向下查找,如果匹配不到规则,则按照链的默认规则进行处理

2、报文流向

流入本机:prerouting——>INPUT链——>用户进程——>请求——>相应——>数据返回给用户

流出本机:例  httpd——>相应(报文)——>OUTPUT链——>postrouting(是否要进行地址转换)——>用户

转发:数据包进来,一定来自非同一网段,路由转发——>FORWARD链——>数据包出去

            (如不允许转发,则数据包将被直接丢弃)

iptables 的命令格式

iptables [-t 表名](如果不使用-t指定表则默认指定filter表) 管理选项 [链名] [匹配条件] [-j 控制类型]

末尾可以添加字段  --line-number  :表示给自定义的条件编号

管理选项

-A:在链的末尾追加一条;添加一条规则

-I:在链中插入一条新的规则;指定插入的序号   -I 后指定序号

-P:修改默认策略(链的)

-D:删除规则;可以指定序号删除

-R:替换、修改规则(一般不使用)

-L:查看链中的规则;一般配合 v:显示详细信息,和  n:将规则以数字形式展示  -vnL

-F:清空链中的所有规则;慎用!!!!

匹配条件

-p:指定匹配的协议类型

-s:指定匹配的源IP地址(数据包)

                                                       ------  指定的IP地址要写在指定的协议之前;指定多个IP地址需要用“,”隔开

-d:指定匹配的目的IP地址(数据包) 

-i:指定数据包进入本机的网络接口

-o:指定数据包离开本机的网络接口

--sport:指定源端口号

                                               -------  指定端口号要写在指定的协议之后;同时指定多个端口号要用":"隔开,注意书写格式  由小到大 例如:22:80:443

--dport:指定目的端口号

控制类型

ACCEPT:允许数据包通过

DROP:拒绝,并且直接丢弃数据包,不给主机做出任何信息回应

REJECT:拒绝,但会给主机做出相应

SNAT:修改数据包的源IP地址

DNAT:修改数据包的目的IP地址

在生产中,iptables 中所有链的默认规则都是DROP

隐藏模块

在 -p 指定协议时,如已经指明了是什么协议,就无需在用-m来指明控制模块;当指定端口号时,可以使用冒号的形式,也可以使用-m因此模块来实现

-m 可以用明确的形式来指出类型、多端口、mac地址、IP地址、数据包状态

用法:   -p tcp -m multiport --dport 22,20,3306,80 -j ACCEPT

可以看出 使用-m multiport 来指定多端口时,要使用“.”隔开,而且不用顾及大小排序

IP范围

-m iprange --src-range       源ip范围

-m iprange --dst-range       目的IP范围

使用方法:  -p icmp -m iprange --src-range 20.0.0.10-20.0.0.20 -j ACCEPT

mac地址范围

-m mac --mac-source

iptables 的备份与还原

1、在命令行中的iptables配置都是临时,即重启服务就会失效

2、永久配置

步骤:

首先将策略全部备份 ——> iptables-save > /opt/iptables.bak

之后将备份的策略重定向到 iptables的默认永久配置文件 /etc/sysconfig/iptables

另外一种临时配置格式

iptables-restore < /opt/iptables.bak

创建自定义链

iptables -N 自定义链名

没有指定链名 (-t 链名),会默认创建在filter表中

更改表中的链名

iptables -E 原来的链名 新链名

创建在自定义链中的规则,需要添加到默认链中,才能启用

iptables -I INPUT -p icmp -j 自定义链名

       

删除自定义链

iptables -X 自定义链名

注意:如果自定义链的规则已经在默认链中引用,则需要先删除默认链中的引用规则,然后再删除自定义链中的规则,最后才能删除自定义的链

Linux系统如何实现抓包

使用tcpdump 来实现Linux的抓包;tcpdump为Linux自带的工具

命令示例:

tcpdump 协议 -i 设备名(如ens33) -t -s0 -c 10(指定抓包次数) and dst port 80 and src net 20.0.0.0/24 -w(保存) ./ens33.cap

-i ens33:只抓经过ens33的数据包

-t:不显示时间戳

-s0:抓取完整的数据包

and dst port 80 :目的端口为80

and src net 20.0.0.0/24 :指定网段 为数据包的源地址

-w :把数据包的内容保存; ./表示保存位置为当前目录;或/../..直接指定准确保存文件

动态抓包(即一直抓,手动停止)

tcpdump tcp -i ens33 -s0 -w ./ens33.acp

注意:此工具抓的包无法在Linux中直接解析出,而要在winshark中直接打开保存的.cap包

猜你喜欢

转载自blog.csdn.net/ZZZ_CCC01/article/details/131941485