Linux防火墙基础
iptables的表和链结构
数据包控制的匹配流程
编写防火墙规则
基本语法、控制类型
入侵检测系统(Intrusion Detection System):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况。主要以 提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类似于监控系统。
入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容:溢出攻击,拒绝服务攻击,木马等 进行准确的分析判断。
防火墙(Firewall):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某 规则时由规则定义的行为进行处理的一组功能组件。
防水墙(Waterwall):与防火墙相对,是一种防止内部信息泄露的安全产品。网络、外设接口、存储介质和打印机构 成信息泄露的全部途径。防火墙针对这四种泄密途径,在事前、事中、事后进行全面防护。
传输层 端口 防火墙
网络层 IP 路由器
数据链路层 mac 交换机
按保护范围划分:
主机防火墙:服务范围为当前一台主机
网络防火墙:服务范围为防火墙一侧的局域网
按实现方式划分:
硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如华为、山石
软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,windows防火墙
按网络协议划分:
网络层防火墙:OSI模型下四层,又称为包过滤防火墙
应用层防火墙/代理服务器:proxy代理网关,OSI模型七层
实现优点:在应用层对数据进行检查,比较安全
缺点:增加防火墙的负载
netfilter
位于Linux内核中的包过滤功能体系
称为Linux防火墙的‘内核态‘
iptables
位于/sbin/iptables,用来管理防火墙规则的工具
包过滤的工作层次
主要是网络层,针对IP数据包
体现在对包内IP地址、协议、端口等信息的处理上
Linux的防火墙体系主要工作在网络层,针对数据报实施过滤和限制
属于典型的包过滤防火墙(或称为网络层防火墙)
Linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和高效率。
★通信五元素:源/目的 端口 源/目的 IP 协议:(tcp/udp)
SCTP:在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务与UDP和TCP类似。
通信四元素:源/目的 端口 源/目的 IP
规则表
表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似filter:过滤规则表,根据与定义的规则过滤符合条件的数据包。
raw:确定是否对该数据包进行状态跟踪
mangle:为数据包设置标记
nat:修改数据包中的源、目标IP地址或端口
#security表 也算一个表
优先级:security ---> raw ---> mangle ---> nat ---> filter
总结:四表五链
PREROUTING链:处理数据包进入本机之前的规则
INPUT链:处理数据包进入本机的规则
FORWARD链:处理数据包转发到其他主机的规则
OUTPUT链:处理本机发出的数据报的规则,一般不做处理
POSTROUTING链:处理数据包离开本机之后的规则
在iptables中,路由选择是指根据不同的目的地址将数据包路由转发到不同的网络接口。
三种报文流向:
流入本机:PREROUTING --->INPUT --->用户控件进程 httpd服务-目的转换-httpd
流出本机:用户空间进程 --->OUTPUT --->POSTROUTING httpd服务-out-源地址
转发:PREROUTING --->FORWARD --->POSTROUTING 对forward链进行控制
iptables格式:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
-t:如果不指定,默认是filter
管理选项(大写):表示iptables规则的操作方式,如插入、增加、删除、查看等;
匹配条件:用来指定要处理的数据包的特性,不符合指定条件的数据包将不会处理;
控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。 (表里有链,链里有规则)
注意事项:
不指定表名,默认指filter表
不指定链名,默认指表内的所有链,一般不这么操作
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给出任何回应信息
REJECT:拒绝数据包通过,必要时会给数据发送端一个相应信息
SNAT:修改数据包的目标地址
DNAT:修改数据包的源地址
LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则
管理选项:
-A 在指定链末尾追加一条 iptables -A INPUT
-I 在指定链中插入一条新的,未指定序号默认作为第一条
-P 指定默认规则 iptables -P OUTPUT ACCEPT
-D 删除
-R 修改替换某一条规则 -
L 查看
-v 更详细地查看
--line-numbers 规则带编号
-F 清除链中所有规则
-X 清空自定义规则
匹配条件:
-p 指定要匹配的数据包的协议类型
-s 指定要匹配的数据包的源IP地址
-d 指定要匹配的数据包的目的IP地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机做使用的网络接口
--sport 指定源端口号
--dport 指定目的端口号
--dport 22:80 (小的要在前) multiport不用
iptables -vnL -L粗略查看 -nL数字化形式查看规则 -vnL详细数字化查看规则
第一行默认策略
第二行:包 大小 目标 协议 端口 源 目的
规则即时生效,无需重启
-A 在末尾追加规则
-I 在指定位置前插入,不指定就首行插入
iptables -t filter -A INPUT -p icmp -j REJECT 禁止ping
iptables -I INPUT 1 -p icmp -j ACCEPT
iptables -t filter -A INPUT -s 192.168.179.21,192.168.179.22 -p icmp -h REJECT
iptables -A INPUT -p tcp --dport 22 -j REJECT 必须先指定协议,再指定端口
curl 192.168.179.20
iptables -D INPUT -p icmp -j REJECT 先删除序号小的
iptables -D INPUT 序号 #指定序号删除 -R
iptables -R INPUT 1 -p icmp -j ACCEPT
修改默认规则:
默认策略是指四表五链中的默认策略,INPUT OUTPUT FORWARD filt默认ACCEPT
iptables -P INPUT DROP (生产默认全DROP,后加ACCEPT;)
第一种:防火墙设置只是临时设置,并未保存,重启服务器即可
第二种:操作服务器,重启iptables服务
第三种:进入机房操作
规则内的匹配顺序:
自上而下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略除外)
网络协议、IP地址、网络接口等条件
感叹号“!”表示取反 iptables -A INPUT ! -p icmp -j ACCEPT
接口匹配:-i 入站网卡 -o出站网卡
地址匹配:-s 源地址 -d 目的地址
ICMP模块
ICMP类型可以是字符串、数字代码
ICMP类型
Echo-Request 代码为8
表示请求 Echo-Reply 代码为0 表示回显#回复信息显示
Echo ination-Unreachable 代码为3 表示目标不可达(ACCEPT允许不可达)
iptables -A INPUT -p icmp --icmp-type 0 -j REJECT
★多端口匹配:iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20 -j REJECT
★IP范围匹配
-m iprange --src-range 源IP范围
-m iprange --dst-range 目的范围
iptables -A INPUT -p icmp -m iprange -src-range 192.168.179.20-192.168.179.23 -j REJECT
该方式范围过于有限,且操作不方便,用的不多!
-m mac --mac-source MAC地址
iptables -A INPUT -m mac --mac-source 00:0c:29:f7:24:38 -j DROP