IPtables是基于包过滤的防火墙软件,可以在低配置的服务器上面运行良好,所有的Linux发行版都包含它。

在网络设备上的安全规则,通常是顺序匹配,例如Cisco设备的ACL。而IPTables的核心是Table Chain和Rules,数据包除了顺序匹配之外,还可以通过设定目标Chain来自由跳转。下图描述了数据包经过Table和Chain时的顺序。

  • Table的优先级是:RAW>MANGLE>NAT>FILTER。

  • 数据包的Chain流向是:PREROUTING->INPUT->FORWARD->OUT->POSTROUTING。

  • 每个Chain包含若干规则。这些规则将会被从上到下顺序匹配。

  • 规则一旦被匹配,数据包将会流向下一个Table和Chain。

用户访问线上环境的基本流程如下:

  • 用户登录Open×××系统,系统验证通过后,用户获取一个私有IP地址,同时系统记录其账号名。

  • 连接建立后,Open×××系统调用Connect脚本。

  • IPtables将用户所属IP加入到对应的规则组Chain中。

  • 用户获取到相应的访问权限。

  • 用户完成访问,断开连接,IPTables将用户占用IP地址从规则组Chain中去除。

由于安全网关主要是要在公司内网和线上环境的内网之间进行网络的转发和限制,本文主要使用了Table FILTER和Chain FORWARD。Filter是默认的Table。

通常的一条规则如下:

iptables -A FORWARD -s 1.1.1.1 -d 2.2.2.2 -p tcp --dport 80 -j DROP

在这个解决方案最初的时候,我尝试一条一条写规则,但是当我开始导入规则时,我碰到了×××烦。

当我导入了100个用户,目标网段有50个,每个网段需要访问10个端口。我发现我一下得到了100*50*10条,即50000条规则, FORWARD链的长度变得非常长。极端情况,用户的数据包会经过50000条规则才被匹配到。

为了解决上面这个问题,我在系统中引入了组的概念,同时使用了自定义Chain进行规则的跳转:

  • 所有对象都被配置成组,例如:用户组,网络地址组,端口组。IPTables本身是没有区分数据包的用户或者用户组机制的。想要实现用户和用户组的判定,需要额外的脚本程序和配置数据库配合,这个解决方案建立了一个额外的配置数据库,利用Open×××用户帐号和用户IP地址的映射关系,来实现用户的权限设置。

  • FORWARD Chain中的规则为:iptables -A FORWARD -s 1.1.1.1 -j USERGROUP_1,假设每个用户都同时属于20个组,FORWARD规则数为:2000条规则。

  • USERGROUP_1 Chain中的规则为: iptables -A USERGROUP_1 -j RULE_1, 假设每个组同时有20个规则,USERGROUP_1中的规则数为:20条

  • RULE_1 Chain中的规则为:iptables -A RULE_1 -d 1.0.0.0/8 -j PORT_1,假设每个网段开放了10种不同组合的端口,SG_1规则数为:50*10=500条规则。

  • PORT_1 Chain中的规则为:iptables -A PORT_1 -p tcp --dport 80 -j ACCEPT,PORT_1规则数为10条。

这样,源地址为1.1.1.1的用户访问线上系统,最多会经过2000+20+500+10=2530条规则,这个长度已经比之前有了很大的改善。

转载于:https://blog.51cto.com/wuliyasutai/1349830

安全网关之三:IPTables相关推荐

  1. 鸟哥的Linux私房菜(服务器)- 第二十一章、文件服务器之三: FTP 服务器

    第二十一章.文件服务器之三: FTP 服务器 最近更新日期:2011/08/08 FTP (File Transfer Protocol) 可说是最古老的协议之一了,主要是用来进行档案的传输,尤其是大 ...

  2. docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name

    docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming ext ...

  3. centos7下没有iptables进行安装或更新

    从centos7开始使用linux,之前版本的没有深入了解过,今天要开放个端口,需要有防火墙的相关操作,从网上查资料都是编辑/etc/sysconfig目录下面的iptables文件,可我进入这个文件 ...

  4. 25个iptables常用示例

    本文将给出25个iptables常用规则示例,这些例子为您提供了些基本的模板,您可以根据特定需求对其进行修改调整以达到期望.  格式 iptables [-t 表名] 选项 [链名] [条件] [-j ...

  5. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...

  6. iptables命令(备忘)

    语法 iptables(选项)(参数) 选项 -t<表>:指定要操纵的表: -A:向规则链中添加条目: -D:从规则链中删除条目: -i:向规则链中插入条目: -R:替换规则链中的条目: ...

  7. linux防火墙cc,Linux防火墙后面的Alljoyn服务(iptables)

    我想在嵌入式linux设备上使用Alljoyn框架.由于安全原因,有必要为该设备配置防火墙.这是通过iptables完成的.Linux防火墙后面的Alljoyn服务(iptables) 我到目前为止所 ...

  8. 关于对IPtables规则的理解

    1,iptables中的所有规则都会存放到/etc/sysconfig/iptables文件中 2,最前端的规则既是现有规则 3,如果要改变现有的规则有两种办法: (1) 使用iptables -t ...

  9. linux nat 端口,linux – iptables nat只是端口25?

    下面的代码将完成这项工作. Iptables很容易使用 – 您只需要明确告诉它如何处理来自或到达特定端口上特定位置的流量.虽然您只请求了端口25和110,但我还包括安全SMTP和安全POP3的选项. ...

最新文章

  1. java异常对象引用变量_Java面向对象编程-异常处理
  2. Mac下搭建solr搜索引擎与PHP扩展开发(上)
  3. Day 11 权力核金钱是成功得标志吗
  4. 合并多个Word文档
  5. 1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】
  6. 【转】IT名企面试:腾讯笔试题(2)
  7. 电脑软件:5个实用的Windows软件,大幅度提高你的工作效率!
  8. .NET Core系列 :3 、使用多个项目
  9. 关于myeclipse输入法编程繁体的修正
  10. selenium java po模式_selenium + java po模式
  11. 造了一个 Redis 分布锁的轮子,没想到还学到这么多东西!!!
  12. 计算机excelsumif的公式,EXCELsumif函数的用法展示
  13. 【前端图表】echarts散点图鼠标划过散点显示信息
  14. python代码风格
  15. 连接mysql出现Access denied for user ‘root’@’localhost’ (using password:YES)问题解决办法...
  16. .NET开发不可错过的25款必备工具,徐汇区网站设计
  17. Linux系统安装三菱编程软件,如何安装三菱plc编程软件gx developer
  18. Matplotlib可视化数据分析图表上(解决中文乱码、解决负号不显示问题、round函数、为图表中各个数据点添加文本标签、坐标轴范围、添加文本标签、设置标题和图例、添加注释)
  19. linux -shell编程-循环语句
  20. macos 系统固件 路径_itunes下载固件在哪里 itunes下载固件位置【介绍】

热门文章

  1. git bash here创建项目无法选择m_git 版本控制初学者指南
  2. 安川机器人程序还原_安川机器人 程序示例
  3. 运行程序时java后面跟的是文件名对吗_运行程序时java命令后面跟的是文件名。...
  4. linux arm内核栈切换,ARM Linux中断发生时内核堆栈切换
  5. python中运行结果为false-python 两个一样的字符串用==结果为false问题的解决
  6. java面试题二十 try catch
  7. jquery ajax传值和后台取参数
  8. android 照片拼接长图_我才发现,微信里面有一个功能,能将手机照片自动拼成长图...
  9. excel打印预览在哪里_Excel如何打印表格,每页纸都有标题?
  10. JVM插桩之二:Java agent基础原理