iptables--防火墙
讲解防火墙
iptables简介(内核)
netfilter/iptables 分别是内核态模块和用户态工具,netfilter 位于 Linux 内核中的包过滤功能体系,iptables 位于 /sbin/iptables,用来管理防火墙规则的工具,管理员通过 iptables给netfilter变更规则实现防火作用
kernel 2.0.x firewall ipfw
kernel 2.2.x firewall ipchains
kernel 2.4.x netfilter iptables
kernel 3.13.x netfilter firewall
# 攻击方式:
拒绝服务 : DOS
流量清洗 云盾
已知漏洞
口令破解
字典
欺骗用户/社会工程学
# 行业内部的安全设备分类:
基础类防火墙
根据数据报文的特征进行数据报文过滤的设备或者装置
IDS 类防火墙:
入侵检测系统
IPS 类防火墙:
入侵防御系统
主动安全类:
waf daf
# 基础类防火墙 iptables
定义:工作在主机边缘处或者网络边缘处对进出的数据报文根据规则进行过滤的装置或者设备
# centos6
内核态:netfilter (内核空间中的核心程序)
用户态:iptables netfilter/iptables(用户空间的管理工具)
# centos7
内核态:netfilter
用户态:firewalld disable iables yes
防火墙的链-表
# 链:承载规则
INPUT:入站数据报文处理
OUPUT:出站数据报文处理
FORWARD:转发数据报文处理
PREROUTING:DNAT 目标地址转换
POSTROUTING:SNA源地址转换
功能形态访问方式一INPUT:入站数据报文处理工具

客户端发送数据报文到eth0的80端口,若没有防火墙,基于INPUT函数上传至上层空间; 若启用了netfilter防火墙,则报文经过netfilter的1号过滤点,(1号位置处理入站规则) 而后向上层传递,完成了一次数据报文的访问。 即:INPUT:入站数据报文处理工具
访问方式二 OUPUT:出站数据报文处理

数据从CURL发送,若没有防火墙,通过网卡转发出去,就达成访问的目的; 若开启了netfilter规则,出站的数据报文需要提交到netfilter的接口上过滤。允许或拒绝 OUPUT:出站数据报文处理
访问方式三 FORWARD:转发数据报文处理

若没有开启防火墙,数据报文经过10.11的网卡,开启路由转发发送到66.11的网卡,通过后 发送到客户端 若开启了防火墙,则数据报文先经过10.11网卡,在经过开启nerfilter的端口过滤,在被转发 到66.11的网卡,最后发送到客户端。
路由前和路由后

PREROUTING:DNAT:目标地址转换 路由前
POSTROUTING:SNAT源地址转换 路由后
客户端访问内网web服务器
DNAT:目标地址转换映射(修改数据报文的目标地址)
客户端发送数据报文到eth0,在路由表之前的端口进行转换修改器目标地址,经过 netfiltre的端口发送至eth1,在发送到web服务器
表、链、规则关系(四表五链)
# 表:承载链
raw:数据报文跟踪
mangle:数据报文修改 TTL
nat:地址转换
filter:数据报文过滤
# 链:承载规则
INPUT:入站数据报文处理
OUTPUT:出站数据报文处理
FORWARD:转发数据报文处理
PREROUTING:DNAT
POSTROUTING:SNAT
# 规则
自定义规则
allow 443
allow 80
默认规则
deny all # 允许某个,拒绝所有。
iptables的链表结构

顺序
# 表顺序
raw > mangle > nat > filter
# 链顺序
入站:PREROUTING > INPUT
出站:OUTPUT > POSTROUTING
转发:PREROUTING > FORWARD > POSTROUTING
# 规则顺序
自上而下 依次匹配 匹配即停止 除非动作类型是 LOG (匹配完成后继续匹配) # # 书写顺序
访问量大的数据报文的匹配应优先配置
数据匹配流程

# 入站:(网络A发送数据报文到本机应用程序)PREROUTING > INPUT
数据报文一次经过raw表、mangle表、nat表,而后进入路由表,路由表进行匹配,若是 找本机应用,则经过mangle表、filter表,进入本机
# 出站:(本机应用程序发送数据报文到网络B) OUTPUT > POSTROUTING
发送数据包,经过路由表选择后,经过raw表、mangle表、nat表、filter表,在经过 mangle表、nat表,
# 转发:(网络A发送数据到网络B)PREROUTING > FORWARD > POSTROUTING
数据报文一次经过raw表、mangle表、nat表的PREROUTING,而后进入路由表,路由表进 行匹配,匹配成功,经过mangle表、filter表的FORWARD,在经过 mangle表、nat表的 POSTROUTING,数据报文成功转发。
基础命令
开。关。持久化
$ service iptables stop/start/restart/save
$ chkconfig iptables on/off
$ /etc/sysconfig/iptables 持久化保存文件
语法构成
# iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
几个注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
列:
iptables -t filter -F INPUT #清空链的规则
iptables -t filtre -F FORWARD # 清除指定的链名
数据包控制类型
ACCEPT: 允许通过
DROP: 直接丢弃,不给出任何回应
REJECT: 拒绝通过,必要时 会给出提示
LOG: 记录日志信息,然后传给下一条规则继续匹配
SNAT: 修改数据包源地址
DNAT: 修改数据包目的地址
REDIRECT: 重定向
添加新的规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
$ iptables -t filter -A INPUT -p tcp -j ACCEPT
$ iptables -I INPUT -p udp -j ACCEPT
$ iptables -I INPUT 2 -p icmp -j ACCEPT
# 放行某一个,拒绝所有
$ iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT 放行80端口
$ iptables -t filter -A INPUT -j DROP 拒绝所有端口
查看规则列表
-L:列出所有的规则条目
-n:以数字形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
--line-numbers:查看规则时,显示规则的序号
$ iptables -L INPUT --line-numbers
删除、清空规则
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
# 清空所有表的所有链的所有规则
[root@www ~]# iptables -t mangle -F
[root@www ~]# echo "" > /etc/sysconfig/iptables
[root@www ~]# service iptables restart
$ iptables -D INPUT 3
$ iptables -n -L INPUT
Chain INPUT (policy ACCEPT) target
prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
设置默认策略
-P:为指定的链设置默认规则
$ iptables -t filter -P FORWARD DROP
$ iptables -P OUTPUT ACCEPT
常用选项

匹配分类、
# 通用匹配
可直接使用,不依赖于其他条件或扩展
包括网络协议、IP地址、网络接口等条件
# 隐含匹配
要求以特定的协议匹配作为前提
包括端口、TCP标记、ICMP类型等条件
# 显式匹配
要求以“-m 扩展模块”的形式明确指出类型
包括多端口、MAC地址、IP范围、数据包状态等条件
iptables -t filter -A INPUT -p tcp --dport 80 -j REJECT
1)通用匹配
# 常见的通用匹配条件
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址
接口匹配:-i 入站网卡、-o 出站网卡
$ iptables -A FORWARD -s 192.168.1.11 -j REJECT
$ iptables -I INPUT -s 10.20.30.0/24 -j DROP
$ iptables -I INPUT -p icmp -j DROP
$ iptables -A FORWARD -p ! icmp -j ACCEPT
$ iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
2)隐含匹配
# 常用的隐含匹配条件
端口匹配:--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
3)显式匹配
# 常用的显式匹配条件
多端口匹配:-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac –mac-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
注:本文为博主查阅多方资料整理而成,如有侵权请留言联系博主删除。
学习新东西,不要忘记复习旧知识,这样你才能更好!

浙公网安备 33010602011771号