◆基础知识◆
网络安全设备的分类:
基础类防火墙:通过数据包过滤加固服务器
IDS类防火墙:入侵检测系统,没有防护能力,仅仅提供事后日志的报告!
IPS类防火墙:入侵防御系统
主动安全类防火墙:waf 和daf
云盾:相当于代理服务器,有大量带宽,和性能,普通攻击无效
DDOS攻击:
SYN攻击:发起最小syn包,通过频繁发送大量数据包,导致CPU消耗殆尽
CC攻击:请求大量请求,通过http协议发起大量正常连接, 导致内存消耗殆尽
长连接攻击:通过http1.1协议,建立正常通信,一点一点的发送请求,导致网络带宽消耗殆尽
UDP攻击:DNS攻击?向DNS一直发送解析请求,导致瘫痪
死亡Ping:把你的外网带宽占满,正常主机就无法访问
QPS:代表每秒攻击数
防火墙和IDS最好要买,申请服务:让他们背锅
防火墙的分类:
软件:
linux有4层防御控制:iptables selinux tcpwapper acl
硬件:
深信服 联想网域 360 绿盟(一体化服务)
防火墙的安装位置:
定义:工作在主机边缘处或工作在网络边缘处,根据自定义规则或者默认规则对数据报文操作的组件
如果路由器性能比防火墙好,应把路由器放在前面(让路由器抗压)
如果防火墙性能比路由器好,应把防火墙放在前面(让交换机抗压)
如果装在主机与交换机之间,可以隔离内网,但一般不这样配置,不方便
netfilter/iptables 分别是内核态模块和用户态工具
◆案例1◆ iptables常用规则配置
iptables的规则:
自定义规则: SMAC DMAC SIP DIP SPORT DPORT STATES
默认规则: 动作只有accpet/drop
iptables的动作:
ACCEPT #放行
DROP #丢弃
REJECT #拒绝包,并返回错误
LOG #将符合规则的数据包,写入日志
QUEUE #传输给其他应用程序使用
iptables 的4张表:
raw #跟踪
mangle #标记
nat #地址转换
filter #包过滤
iptables内置链:
PREROUTING #DNAT数据包进入本机,进入路由表之前(多台内网主机共用一个IP上网)
POSTROUTING #SNAT 数据包通过路由表之后,(将外网访问映射至内网主机)
INPUT #入站,通过路由表后
OUTPUT #出站,向外转发
FORWORD #转发,通过路由表之后
书写顺序:
书写顺序:无相关大范围优先,有相关小范围优先
规则匹配顺序:自上而下依次匹配匹配即停止
链的匹配顺序:
入站:PREROUTING INPUT
出站:OUTPUT POSTROUTING
转发:PREROUTING FORWORD POSTROUTING
表的顺序:raw mangle nat filter
防火墙参数:
添加 -A #在链的末尾插入一条规则 -I #在链表开头插入一条规则 查看 -L #列出所有规则项目 -n #以数字形式显示地址,端口等信息 -v #一详细信息显示 --line-numbers #查看规则时,显示规则序号 删除清空 -D #删除链内制定序号(或内容)的一条规则 -F #清空所有规则 -P #未指定的链设置默认规则 通用匹配 -p 协议名 #协议匹配 -s 源地址 -d 目的地址 #地址匹配 -I 入站网卡 -o 出站网卡 #接口匹配 隐含匹配 --sport 源端口 --dport 目的端口 #端口匹配 --tcp-flags 检查范围 #tcp标记匹配 --icmp-type ICMP类型 icmp类型匹配 显示匹配 -m multiport –sport | --dport 端口列表 #多端口匹配
◆常见的通用匹配条件◆
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址
接口匹配:-i 入站网卡、-o 出站网卡
# iptables -A FORWARD -s 192.168.1.11 -j REJECT #拒接IP的转发请求 # iptables -I INPUT -s 10.20.30.0/24 -j DROP #丢弃IP网段的入站请求 # iptables -I INPUT -p icmp -j DROP # iptables -A FORWARD -p !icmp -j ACCEPT # iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP # iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
◆常用的隐含匹配条件◆
端口匹配:--sport 源端口、--dport 目的端口
ICMP类型匹配:--icmp-type ICMP类型
# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT # iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT # iptables -A INPUT -p icmp --icmp-type 8 -j DROP # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT # iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT # iptables -A INPUT -p icmp -j DROP
◆常用的显式匹配条件◆
多端口匹配:-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac –mac1-source MAC地址
状态匹配:-m state --state 连接状态
# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT # iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT # iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP # iptables -P INPUT DROP # iptables -I INPUT -p tcp -m multiport --dport 80-82,85 -j ACCEPT # iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
◆常用例子◆
iptables -L -n --line-number #查看默认规则 iptables -F #清空当前的规则 iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #放行80端口 iptables -t filter -I INPUT -p tcp --dport 443-j ACCEPT #插入在顶端一条放行443端口的规则 iptables -t filter -I INPUT 2 -p tcp --dport 443 -j ACCEPT #在第二列插入一条443放行规则 iptables -t filter -A INPUT -p tcp --dport 80 -j DROP #丢弃80端口的请求 iptables -I INPUT 2 -p icmp -j DROP #丢弃ICMP请求 iptables -t filter -D INPUT 3 #删除第三条规则
◆设置默认规则.拒绝所有只允许单个80端口◆
iptables -t filter -P INPUT DROP #设置默认规则,拒绝所有 iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #放行80口 iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT #放行22口 iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT #放行22口
◆案例3◆ iptables网络地址转换
◆SNAT◆ 将本地数据包转为公网数据包 <内网-->公网>
例:将本地192.168.1.1的请求自动转成外网地址8.8.8.8
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.1 -j SNAT --to-source 8.8.8.8 -o #指定外网接口 -s #内网口的地址 --to-source #外网口的地址
◆DNAT◆ 将公网数据包转到指定内网主机 <公网-->内网>
例:将请求8.8.8.8且端口为80的数据包,自动映射到内网192.168.1.1
iptables -t nat -A PREROUTING -i eth0 -d 8.8.8.8 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1 --to-destination #内网口地址 -i #绑定外网接口 -d #外网地址 -dport #内网端口