iptables
镇楼图
防火墙种类:
硬件防火墙:整个企业的入口
三层路由
深信服
软件防火墙:开源软件,网站内部 封ip 封端口
iptables:写入内核
firewalld
云防火墙:
阿里云安全组
必须熟悉的名词:
- 容器:瓶子、管子、存放东西
- 表(table):存放链的容器
- 链(chain):存放规则的容器
- 规则(policy):准许或拒绝规则
Netfilter | 表(tables) | 链( chains) | 规则(policy) |
一栋楼 | 楼里的房子 | 房子里的柜子 | 柜子里的衣服,摆放规则 |
四表五链:
iptables 是 4表五链
注:大写是链、小写是表
4表:filter表、nat表、raw表、mangle表
归类:
INPUT链——进来的数据包应用此规则链中的规则
OUTPUT链——外出的数据包应用此规则链中的规则
FORWARD链——转发数据包时应用此规则链中的规则
PREROUTING链——对数据包作路由选择前应用此链中的规则
POSTROUTING链——对数据包作路由选择后应用此链中的规则
nat表:
- 实现nat功能
- 实现共享上网
- 端口映射
- ip映射
负责网络地址转换的,即源与目的ip地址和port的转换
应用:和主机本身无关,一般用于局域网共享上午或者特殊端口转换服务相关
工作场景:
1.用于企业路(zebra)由或网关(iptables),共享上网(POSTROUTING)
2.做内部外部ip地址一对一映射(dmz),硬件防火墙映射ip到内部服务器。ftp服务器。
3.web,单个端口的映射,直接映射80端口,这个表定义了三个链,net功能相当于网络的acl控制,和网络交换机acl类似
链:
OUTPUT:
和主机放出去的数据包有关,改变主机发出数据包的目的地址。
PREROUTING:
数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址,目的端口等
就是收件是,根据规则重写收件人的地址。
例如:
把公网ip xxx.xxx.xxx.xxx映射到局域网的xxx.xxx.xxx.xxx服务器上
如果是web服务器,可以把80转换为局域网的服务器9000端口上
10.0.0.61 8080(目标端口)-----nat-----10.0.0.7 22
POSTROUTING:
在数据离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。
写好发件人的地址,要让家人回信时能够有地址可回。
例如:
默认笔记本和虚拟机都是局域网地址,在出外网的时候呗路由器将源地址改成了公网地址。
生产应用:局域网共享上网
filter表:屏蔽或允许端口
强调和主机自身相关,真正负责本机防火墙功能的过滤流入流出数据包filter表示iptables默认使用的表,这个表定义了三个链,企业工作场景主机防火墙
INPUT
负责过滤所有目标地址是本机地址的数据包,通俗来说就是过滤进入主机的数据包
FORWARD
负责转发流经主机的数据包,起转发的作用,和nat关系很大,后面会详细介绍LVS NAT模式,
net.ipv4.ip_forward=0
OUTPUT
处理所有源地址是本机地址的数据包,通俗的来说:就是处理本机发出去的数据包
实操:
查:
-L ,--list 列出当前的规则
[root@web01]# iptables -L
-n,禁止反向解析
-v,显示数据包详情
-t,指定操作的表(默认的表是:filter)
增加:
#追加
-A.--append 追加一条规则到链中
-j : 指定动作,转发模式
ACCEPT :允许通过
DROP:不允许通过
-s 源地址
-d 目标地址
--sport 源端口
--dport 目标端口
注意:链的匹配规则是从上到下的,一旦匹配上了就无法往下匹配了
案例1:不允许访问本机
iptables -t filter -A INPUT -p ALL -j DROP
案例2:要求172.16.1.0可以访问web01,其他的请求全部拒绝
iptables -t filter -A INPUT -p ALL -s 172.16.1.0/20 -j ACCEPT
iptables -t filter -A INPUT -p ALL -j DROP
# 插入
-I, --insert 插入一条规则,插入到顶部
案例3:要求在案例2的基础上,允许192.168.15.66可以访问?
iptables -t filter -I INPUT -p ALL -s 192.168.15.66 -j ACCEPT
案例4:只允许其他网络ping web01
iptables -t filter -I INPUT -p ICMP -s 192.168.15.7 -j ACCEPT
#删
-F,--flush 清空
iptables -F 清空所有的防火墙规则
-D,--delete 删除链中的规则
-R,--replace 修改
-S,--list-rules 列出所有的规则
-Z,--zore清空计数器(包数量,包大小)
-N,--new-chain 创建一个自定义链
-X,--delete-chain 删除一个自定义链
-P,--policy 指定链的默认策略
-i 进来的网卡
-o 出去的网卡
-m 指定的模块
-j 转发模式