-------------------------------------------------------------------------------------------------------------------------------------

iptables

(filter)iptables

filter基础概念
基础概念(iptables命令)
基础概念(隐式扩展)
基础概念(显式扩展)
保存及重载规则

保存规则至指定文件

iptables命令(-L查看表)
[iptables命令(-L -n查看表)](#iptables命令(-L -n查看表))
[iptables命令(-L -n -v显示详细信息)](#iptables命令(-L -n -v显示详细信息))
iptables命令(-L -n --line-numbers显示规则编号)
iptables命令(-X删除用户指定义的空链)
iptables命令(-N创建新的自定义规则链)
iptables命令(-E重命名自定义链)
iptables命令(-P为指定链设置默认策略)
iptables命令(-I将新规则插入至指定链的指定位置)
iptables命令(-D删除指定链上的指定规则)
iptables命令(-m扩展,multiport扩展)
iptables命令(-m扩展,iprange扩展)
iptables命令(-m扩展,string扩展)
iptables命令(-m扩展,time扩展)
iptables命令(-m扩展,connlimit扩展)
iptables命令(-m扩展,imit扩展)
iptables命令(-m扩展,state扩展)
写一个简单的规则(凡是访问本机的报文,属于tcp协议通通放行)
写一个简单的规则(凡是由本机发出的tcp协议报文跟任何主机相通信,都允许出去)
写一个简单的规则(修改这这两条规则,拒绝所有非tcp协议的报文访问)
写一个简单的规则(ping进来-i限制流入,ping出去-o限制流出)
写一个简单的规则(允许我ping别人,不允许别人ping我)

写一个简单的规则(问题:如果开放被动模式的ftp服务使用state模块)

(filter)网络防火墙功能

网络防火墙功能示例,打通内网和外网
网络防火墙功能示例,内网配置httpd服务
网络防火墙功能示例,添加防火墙规则

(net)iptables

net基础概念
net地址转换实例
net地址转换实例(打开地址转发功能)

filter基础概念


所有的转发都会经过FORWARD,默认是ACCEPT接受
INPUT:当收到访问防火墙本地地址的数据包时,应用此链的规则
OUTPUT:当防火墙本机向外发出数据时,应用此链的规则。
FORWARD:当收到要通过防火墙发送给其他网络地址的数据包时,应用此链的规则。
PREROUTING:在对数据包做路由选择之前,应用此链的规则。
POSTROUTING:在对数据包做路由选择之后,应用此链的规则。


基础概念(iptables命令)




基础概念(隐式扩展)

基础概念(显式扩展)








NEW 新建立的连接,tcp三次握手第一次就是新建立的连接,udp请求到了,响应这就是第一次连接,请求报文到达时就是NEW连接

保存及重载规则


保存规则至指定文件


iptables命令(-L查看表)

-L 默认查看filter表,默认有三个链,INPUT,FORWARD,OUTPUT

target 表示处理目标
prot 表示那种协议,有三种tcp,utp,icmp
opt 表示选项
source 表示来自哪个地址,0.0.0.0表示所有地址
destination 表示目标是那台主机的,0.0.0.0表示所有地址
ctstate 表示链接追踪状态,有两种状态,RELATED,ESTABLISHED
-t指定表,nat表 -L 查看nat表,默认有三个链,PREROUTING,PRSTROUTING,OUTPUT

-t指定表,mangle表 -L 查看mangle表,默认有五个链,PREROUTING,INPUT,FORWARD,OUTPUT,PRSTROUTING

-t指定表,raw表 -L 查看raw表,默认有两个链,PREROUTING,OUTPUT

iptables命令(-L -n查看表)

iptables命令(-L -n -v显示详细信息)






pkts 由规则或链所匹配到的报文的个数
bytes 字节数

iptables命令(--line-numbers显示规则编号)

可以指定编号进行删除策略

iptables命令(-X删除用户指定义的空链)



-X 不-t指定表,表示删除所有用户指定的空链,可以删除单一指定的链(0 references)表示自定义的是没有没有被引用,被引用的链是不可以删除的,

iptables命令(-N创建新的自定义规则链)

链名叫IN_putlic

iptables命令(-E重命名自定义链)

被引用的链也是不可以被重命名的,

iptables命令(-P为指定链设置默认策略)

iptables命令(-D删除指定链上的指定规则)


写一个简单的规则(凡是访问本机的报文,属于tcp协议通通放行)

凡是访问本机的报文,属于tcp协议通通放行
iptables 关键字
-t 指定表
-A 将新规则追加于指定链的尾部
INPUT 进来,到本机内部,经过两条链,在INPUT这条链上做过滤
-s 指定源地址,不写默认是所有地址
-d 指定目标地址
172,16.100.9 本地主机
-p 指定协议
tcp TCP协议
-j 指定目标
ACCEPT 接受

在INPUT链上,tcp协议,源地址是任意地址,目标地址是本机172,16.100.9都做放行过滤,ping操作不是tcp协议,因此无法ping通

写一个简单的规则(凡是由本机发出的tcp协议报文跟任何主机相通信,都允许出去)

iptables 关键字
-t 指定表
-A 将新规则追加于指定链的尾部
OUTPUT 出去
-s 指定源地址
172,16.100.9 本机地址
-d 指定目标地址,任意的可以省略
-p 指定协议
tcp TCP协议
-j 指定目标,行为
ACCEPT 接受

由于链接的ssh pkts和bytes会接收到一大堆报文

写一个简单的规则(修改这这两条规则,拒绝所有非tcp协议的报文访问)



ping操作就被拒绝访问,但是此刻ssh协议还可以链接,原因就是先写了这条规则,否者ssh远程修改后也不能链接
添加一条规则允许ping命令进来


依然不通,原因是,允许icmp协议进去INPUT,但是不允许出来OUTPUT
添加icmp协议出站OUTPUT规则

写一个简单的规则(ping进来-i限制流入,ping出去-o限制流出)


iptables命令(-I将新规则插入至指定链的指定位置)

iptables 关键字
-I 将新规则插入至指定链的指定位置
INPUT 进来操作
OUTPUT 流出,出去操作
-d 外部进入 目标地址
172.16.100.9 来访问本地ip
-s 源主机 源地址
172.16.100.9 本地主机
-p 指定协议
tcp TCP协议
--dport 数据访问我的端口 目标端口
--sport 对方的数据包从哪里发过来 源端口,只能从这个端口发进来
22 22号端口
-J 指定目标,操作方式
ACCEPT 接受


hpptd服务80端口,INPUT第一条规不能匹配,不是22号端口,第二条规则可以匹配,是tcp服务

删掉第二条规则就无法访问,请求无法访问80端口,如果想使用就添加80端口

写一个简单的规则(允许我ping别人,不允许别人ping我)



别人ping我不行

iptables命令(-m扩展,multiport扩展)


一条规则就能实现多端口匹配和放行了

iptables命令(-m扩展,iprange扩展)

iptables命令(-m扩展,string扩展)



不管从哪来,不管从哪去,只要有movie这个字符出现不能访问

iptables命令(-m扩展,time扩展)


时间匹配范围内的就无法匹配,注意时区CST UTC

iptables命令(-m扩展,connlimit扩展)


不管从哪来,不管从哪去,22端口最大3个连接


三个连接正常


第四个就不行了

iptables命令(-m扩展,imit扩展)


ping操作 获取的包很少 速率很慢,5秒钟只能有30个响应

iptables命令(-m扩展,state扩展)


src 谁访问过
dst 访问目标ip
type 8
code 0
src 源地址
dst 目标地址


web服务此时是不能放行的

此时web服务就添加上了
可以使用multiport扩展合并规则

允许ping

写一个简单的规则(问题:如果开放被动模式的ftp服务使用state模块)

模块存放位置

装载ftp模块

安装vsftp





ftp无法访问

加载模块,放行ftp命令连接,和数据连接

网络防火墙功能示例,打通内网和外网

第一台网关主机配置两块网卡


临时打开地址转发

第二台内置主机配置自定义网络



第三台外网主机


第二台主机 由于第一台开启了路由转发功能可以出来,但是包响应后回不去,第三台需要添加路由表指定地址

第二台内网地址,就可以ping通了

网络防火墙功能示例,内网配置httpd服务



网关正常访问

外网也可以访问,因为之前配置可以ping通

网络防火墙功能示例,添加防火墙规则

网关,FORWARD链上已经匹配到报文了

所有的转发都会经过FORWARD,默认是ACCEPT接受

外网ping通内网网络,添加规则只能访问web服务,不能ping内网

在网关上配置规则
iptables -P FORWARD DROP
此刻外网不能ping也访问不了web服务

放行请求报文
iptables -A FORWARD -d 192.168.20.2 -p tcp --dport 80 -j ACCEPT
放行响应报文
iptables -A FORWARD -s 192.168.20.2 -p tcp --s port 80 -j ACCEPT

优化策略

放行内网ftp服务,外网可以访问

外网可以访问内网web,和ftp服务,无法ping内网网络

net基础概念


SNET 网关型防火墙把源地址转换,修改数据包的源地址
DNET 目标地址转换,修改数据包的目标地址

源地址转换:iptables -t net -A POSTROUTING(链,规则) -s 本网 !非 -d 本地网络 -j SNET --to-source(转到哪去) ExtIP(外部ip)
iptables -t net -A POSTROUTING(链,规则) -s 本网 !非 -d 本地网络 -j MASQUERADE(地址伪装)

目标地址转换:iptables -t net -A PREROUTING(链,规则) -d

net地址转换实例

内网地址

网关


内网添加路由表,可以ping通网关

网关,永久打开地址转发功能,打开核心转发



外网主机提供一个web服务



内网请求web服务

外网进行抓包


192.168.20.2去请求172.16.100.12http服务
172.16.100.12http服务 回应192.168.20.2,发现地址不可达
加条路由

内网可以访问外网的web服务

net地址转换实例(打开地址转发功能)

在路由上添加net表上添加规则

iptables 关键字
-t 指定表
net net表
-A 将新规则追加于指定链的尾部
POSTROUTING 在对数据包做路由选择之后,应用此链的规则。
-s 源地址
192.168.20.0/24 网络中的主机
! -d 192.168.20.0/24 非192.168.20.0/24地址的网络
-j 指定目标,操作方式
SNET 网关型防火墙把源地址转换,修改数据包的源地址
--to-source 转到哪去
172.16.100.9 改为这个地址

所有来自192.168.20.0/24 网络中的主机,只要非非192.168.20.0/24地址的网络的指定,通通改为172.16.100.9 改为这个地址

服务端发现 请求来的是100.9这个主机的地址

posted @ 2019-11-29 14:28  给文明以岁月  阅读(2297)  评论(0编辑  收藏  举报
----------------------------------------------------------