iptables防火墙详解

一、什么是iptables?

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统 
如果 Linux 系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置 
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中 在数据包过滤表中,规则被分组放在我们所谓的链(chain)中 而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则 虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成
netfilter 组件也称为内核空间(kernelspace),是内核的一部分 由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集 iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易 除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它
与firewalld防火墙相比,iptables防火墙与我们平常所说的三张表和五条链的关系更大

二、本次实验环境
server虚拟机做iptables服务搭建
两块网卡 :eth0 172.25.254.176 eth1 192.168.0.176
在这里插入图片描述
desktop虚拟机做测试端
单网卡: eth0 192.168.0.20
在这里插入图片描述
真机做测试端
br0 172.25.254.76
在这里插入图片描述
三、iptables相关设置
1、参数

-t指定表
-p协议
-n表示不做解析
-A向规则链中添加条目
-D从规则链中删除条目
-C检查策略
-I向规则链中插入条目
-R替换规则链中的条目
-L显示规则链中已有的条目
-F刷新,清除规则链中已有的条目
-N创建新的用户自定义规则链
-X删除链
-E替换名称
-S查看规则中的命令
-h显示帮助信息
-p指定要匹配的数据包类型
-s指定要匹配的数据包源地址
-i指定数据包要进入本机的网络接口
-o指定数据包要离开本机所使用的网络接口
-j指定行为 ACCEPUT/REJECT/DROP
-P修改默认规则,不能用reject

2、iptables安装

yum install iptables_server #下载iptables服务
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #开启默认关闭
systemctl mask firewalld #锁住防火墙
systemctl start iptables #打开iptables

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、查看三表五链的内容

iptables -nL #默认查看filter
iptables -t filter -nL #指定查看filter表
iptables -t nab -nL #指定查看nat表
iptables -nL -t mangle

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、保存查看过的表中的数据
永久
【1】

service iptables save  #保存
查看cat /etc/sysconfig/iptables

在这里插入图片描述
【2】

iptables-save #保存
iptables-save > /etc/sysconfig/iptables #永久保存

在这里插入图片描述
刷新掉再保存就清空保存的内容

iptables -F #刷新内容
service iptables save  #保存数据信息

4、iptables各参数的使用
【1】

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT #指定filter表添加输入,遵循tcp协议,目的地端口为22,接收连接
iptables -nL

在这里插入图片描述
【2】

iptables -D 1
iptables -t filter -A INPUT -s 172.25.254.76 -p tcp --dport 22 -j REJECT #指定主机拒绝可输入(ssh连接)
iptables -nL

在这里插入图片描述
在这里插入图片描述
【3】

iptables -t filter -I INPUT 1 -p tcp --dport 22 -j ACCEPT #指定插入到第一位,每一个策略都会读,从上往下
iptables -nL

在这里插入图片描述
【4】

iptables -S INPUT   #查看INPUT中的所有使用过的命令

在这里插入图片描述
【5】

iptables -N redhat #默认添加到filter组中
iptables -nL

在这里插入图片描述
【6】

iptables -E redhat star #修改链名
iptables -nL

在这里插入图片描述
【7】

iptables -X star #删除westos链
iptables -nL

在这里插入图片描述
【8】

intables -P INPUT DROP #修改filter表中INPUT链默认DROP
intables -nL

在这里插入图片描述
5、调整查询速度
设置原来连接过的连接时不需要依次读取,新的依次查找
netstat -antlupe #查看所有开启的端口

-i接口
-p协议
-m后边接状态
–state状态
ESTABLISHED第一次连接上未断开情况下,继续查询
RELATED连接过的查询
intables -A INPUT -m state ESTABLISHED,RELATED -j ACCEPT  #第一次连接上未断开或以前连接过的接受连接,不用向下调度
intables -A INPUT -m state --state NEW -i lo -j ACCEPT #通过本机回环接口的所有新连接数据都允许
intables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT #第一次使用22端口连接的主机允许服务
intables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT #第一次使用80端口连接的主机允许
iptables -A INPUTE -j REJECT

在这里插入图片描述
6、iptables地址伪装功能和地址转换功能
从eth0这出去的信息经过路由之后(地址伪装)传输给别人
我接收的来自eth0信息是在发生在路由之前(未经过内核,进行地址转换)
注意1:这里的进来出去均是对于路由器说的
DNAT 接收 地址伪装
SNAT 发送 地址转换

iptables -t nat -A POATROUTING -o eth0 -J SNAT --to-
source 172.25.254.176 #从eth0出去的
数据,将其源地址转换为172.25.254.176
iptables -t nat PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest  192.168.0.219:22 #从eth0网卡的22端口进来的数据,将其目的地转换为192.168.0.119

输入过程中若不小心输入错误解决方法:

iptables -nL -t nat #查看是否已链接
若链接到POSTROUTING上则:
iptables -D 1 POSTROUTING -t nat

实验:
【1】

> /etc/sysconfig/iptables #清空iptables所有缓存
iptables -nL  #查看默认表filter策略信息是否已经清空
iptables -nL -t nat  #查看表nat策略信息

在这里插入图片描述
【2】

sysctl -a | grep ip_forward   #查看内核路由功能是否开启
vim /etc/sysctl.conf   #编辑路由文件
net.ipv4.ip_forward = 1     #开启内核路由功能
sysctl -p    #重新加载内核信息

在这里插入图片描述
【3】
双网卡主机上

iptables -t nat -A POSTROUTING -o eth0 -J SNAT --to-source 172.25.254.176

在这里插入图片描述
此时在192.168.0.20主机上测试

ping 172.25.254.76(此网段所有主机均可ping通)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
server端:

iptables -t nat PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 192.168.0.20:22

在这里插入图片描述
此时在172.25.254.76主机上

ssh root@172.25.254.176
ip addr show

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值