Linux~防火墙管理之iptables

一:Iptables介绍

在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。

在这里插入图片描述

4表5链介绍:

4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。

filter:这是默认的表(经过内核),包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。

nat:(不经过内核),这个表被查询时表示遇到了产生新的连接的包,由四个内建的链构成:INPUT, PREROUTING
(修改到来的包,做目的地地址转换DNAT)、POSTROUTING(修改准备出去的包,做源地址转换SNAT)、OUTPUT(修改路由之前本地的包)。

mangle:(附加表)这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)

raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

RAW 表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链 上,RAW表处理完后,将跳过NAT表和 ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了. RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。
5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

  PREROUTING:数据包进入路由表之前

  INPUT:通过路由表后目的地为本机

  FORWARD:通过路由表后,目的地不为本机

  OUTPUT:由本机产生,向外转发

  POSTROUTIONG:发送到网卡接口之前。

基本命令参数
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。另外,防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误。以下是常用的iptables命令参数。
在这里插入图片描述

二:iptables的相关配置使用:

1.为了试验iptables防火墙,我们先把本机的firewalld防火墙冻结并且关闭
在这里插入图片描述
2:下载安装iptables防火墙服务(我们的虚拟机一般自带装好的iptables),因此需要启动:
在这里插入图片描述
3:在iptables命令后添加-L参数查看已有的防火墙规则链:
-n :数字输出,ip地址和端口会以数字的形式打印,默认情况下,程序显示主机名,网络名或者服务(可用的)
-L 列出指定链中的所有规则

在这里插入图片描述
4:查看iptables服务nat表中防火墙规则链
在这里插入图片描述
5:查看iptables服务mangle表中防火墙规则链
在这里插入图片描述

6:在iptables命令后添加-F参数清空已有的防火墙规则链:
在这里插入图片描述
但是当重新启动iptables服务时,会恢复默认值,清空的数据会回来

在这里插入图片描述
因此在重启服务之前把规则保存到规则文件中 ,重启之后策略就不会恢复原来的默认值
command:server iptables save
在这里插入图片描述

7:添加自定义链名,以及链名的改名,删除:

-N 添加链名;-E改名;-X删除
在这里插入图片描述
在这里插入图片描述
8:表中的规则连遵循由上到下优先原则,如添加两个矛盾规则
将INPUT规则链设置为拒绝172.25.254.42的主机访问本机的22端口
将INPUT规则链设置为允许172.25.254.42的主机访问本机的22端口
-t 指定表名
-A 指定链名
-s指定源地址(主机名,网络名,ip)
-p规则或待检查包的协议,如此处指定协议tcp
–dport 端口号(如22,80)
-j目标跳转 (指定规则目标)指定规则处理数据包

在这里插入图片描述
在这里插入图片描述

测试:由优先原则可知,火墙这执行策略是,优先执行INPUT第一条规则,所以当172.25.254.42号主机通过22端口访问时被拒绝
在这里插入图片描述

9:删除filter表中INPUT规则链中的第一条规则
-D 删除
-INPUT 1 :INPUT规则链中的第一条规则

在这里插入图片描述
10: 规则链中是遵循上下优先原则,-I :根据给出的规则序号向所选链中插入一条或者多条规则。如果序号为1,规则会插入链头部。

在已有一条策略的情况下,添加一条策略允许172.25.254.42来访问本机的80端口策略:
在这里插入图片描述
11:设置filter表中INPUT链的默认规则,当数据包没有被规则列表中的任何规则匹配到时,默认此规则

在这里插入图片描述

12:两种指定用户允许某服务的方法
#将INPUT规则链设置为只允许指定网段(172.25.254.42)的主机访问本机的22端口,拒绝来自其他所有主机的流量

第一种
先添加规则INPUT链中的所有服务都拒绝
再添加规则允许42号主机访问22端口并放在第一位

在这里插入图片描述
测试:在这里插入图片描述

第二种
除了4号主机访问本机的22端口允许,其他主机访问任何服务都拒绝;使用!除了:
在这里插入图片描述

测试:
在这里插入图片描述

13:端口转发和地址伪装(以下实验实在家里做的,因此主机ip切换为了62,虚拟机切换为了100和200)

环境:
server主机IP为192.168.0.200 网关为192.168.0.100
服务器desktop做路由作用,共有两块网卡, IP1=172.25.254.100 IP2=192.168.0.100
真机IP为172.25.254.62

A:端口转发(目的地地址转换;DNAT)
-i eth0 指定数据包从eth0网卡进
-j 指定数据包的动作
–to-dest 执行DNAT动作后数据包到达的目的地址

B:地址伪装:
地址伪装(目的地地址转换;SNAT)
-o eth0 指定数据包从eth0网卡进
-j 指定数据包的动作
–to-source执行SNAT动作后数据包到达的目的地址

检查地址伪装功能是否开启,没有开启的话编辑配置文件设置为1:
sysctl -p生效
添加策略:
在这里插入图片描述
在这里插入图片描述
测试:使用192.168.0.200连接真机62时,在真机端看到的是172.25.254.100连接的它:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值