谈谈我对linux防火墙的理解

背景描述

最新在公司中接到了一个需求,需要我在linux上配置权限,需求如下:
(1)限制指定的ip访问我的机器;
(2)限制本机访问外部的ip信息(防止出现数据泄露);
主要是机器是我们组申请的,让其他人使用,禁止数据上传和下载的情况;

拿到这个需求,第一个想到的就是linux的防火墙;目前linux的防火墙主要是使用iptables和firewall;区别在于firewall是在redhat 7.0之后开始使用的;在拿到需求之后,首先试着使用firewall的方式,但是firewall无法满足需求(可能是自己没有研究透),firewall能够很好的阻止外部数据访问,但是对于由内向外的访问,无法做到很轻松容易,因此本篇文章主要是讲述iptables;

iptables介绍

本次文章主要是参考了以下的飞书文章:
https://firststory.feishu.cn/docs/doccnr9KMt9Ynbmv4oJIRWrh4vh

以下是对上述文章的一些理解:
(1)我们用iptables进行拦截,主要是拦截入站流量,出站流量和转发流量三种;
(2)iptables有5条规则链,分别是PREROUTING,INPUT,OUTPUT,FORWARD和POSTROUTING;

PREROUTING:路由选择前,路由选择前处理数据包;入站包及转发包都可以使用。
INPUT:路由选择后,目的地为本机,入站包才可以使用。
OUTPUT:本机产生的数据包对外转发,出站包才可以使用。
FORWARD:路由选择后,目的不为本机,转发包才可以使用。
POSTROUTING:离开本机网卡前,路由选择后处理数据包。所有数据包都可以使用,最后一步的处理,如SNAT,地址伪装。
在这里插入图片描述
当数据进来之后,会先经过prerouting,之后经过路由决策,判断是进行转发还是其他操作,如果是进行转发,跳入到forward进程,如果不是forward进程,此时会进入INPUT操作,INPUT操作会进行过滤操作;然后进入到自己的程序中,最后经过OUTPUT操作拦截过滤;再发往外部;
(3)对于INPUT和OUTPUT等拦截是采用链式结构的,即会进行一条一条的匹配,知道匹配完成位置;以INPUT为例,假设INPUT有5条规则,按照顺序一次是A,B,C,D,E;E为默认规则,流量进入INPUT,会依次匹配A,B,C,D,E规则,直至匹配完成位置;
(4)一般会设置一个默认规则,即所有规则都不匹配,则采用默认规则,在我们的案例中,对于INPUT,默认规则设置成屏蔽所有的INPUT流量;

iptables -P INPUT DROP

以下只是给了上述背景的解决办法;
#解决方案:
1.安装iptables和iptables-service;
2.清除之前的所有的权限(删除Filter表中所有的数据)

iptables -F

3.创建规则,设置related,established的规则,记住状态,对先前登录的不用过滤

iptables -A INPUT -p  tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

这里需要讲述,防火墙有两种,一种是每次访问都进行拦截,第二种是根据防火墙的状态进行拦截,上述的两个命令就是对于和之前建立的链接,以及相关的链接会直接放过;

4.配置指定ip的ssh的INPUT权限

iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT 
iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT

5.禁止INPUT其他所有ip为drop

iptables -P INPUT DROP

6.配置OUTPUT只能访问指定的ip

iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT

7.禁止OUTPUT其他所有的ip

iptables -P OUTPUT DROP

8.重新确认,没有问题将配置结果进行保存

iptables save

9.其他
针对iptables,还有一些常用的命令,具体如下:
查询当前配置的情况

iptables -vnL --line-number

在指定的位置插入:

iptables -I INPUT XXXX
iptables -I OUTPUT XXX
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值