iptables-配置笔记

◆基础知识◆

网络安全设备的分类:

基础类防火墙:通过数据包过滤加固服务器
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              #内网端口

猜你喜欢

转载自www.cnblogs.com/LyShark/p/9062613.html