iptables中有以下三种类型的表:

  1. FILTER表,默认的表,包含以下三种内建链:

    • INPUT链,发给本地sockets的包
    • FORWARD链,经由系统发送的包
    • OUTPUT链,本地生成并发出的包
  2. NAT表,当一个包试图创建新连接时将访问该表,该表包含以下内建链:

    • PREROUTING链,更改刚接收到的包
    • OUTPUT链,更改本地产生的包
    • POSTROUTING链,更改即将发出的包
  3. MANGLE表,用于包的更改:

    • PREROUTING链:更改传入连接
    • OUTPUT链:更改本地产生的包
    • INPUT链:更改传入的包
    • POSTROUTING链:更改即将发出的包
    • FORWARD链:更改经过的包

本次业务需求,我们仅需要操作FILTER表。

使用iptables思路

  由于每条tcp连接对于每个主机来说,都需要两个端口。对服务端来说,需要监听端口,即inputPort,也需要对客户端进行响应的出端口,即 outputPort。对客户端来说,也需要两个端口,一个去连接服务端的outputPort,一个接受服务端返回数据的inputPort。

  限制端口,可以在客户端进行限制,也可以在服务端进行限制。一般都是客户端去连接服务端的某个指定端口,所有只有服务端的inputPort是固定的,客户端的inputPort、outputPort和服务端的outPort都是随机端口,每次重新连接后,都会改变。故我们仅需用iptables对服务端的input端口进行限制即可。

iptables 具体配置详解

说明:
-A:参数就看成是添加一条 INPUT 的规则
-p:指定是什么协议 我们常用的tcp 协议,当然也有udp,例如53端口的DNS
--dport:就是目标端口,当数据从外部进入服务器为目标端口
--sport:数据从服务器出去,则为数据源端口
-j:就是指定是 ACCEPT接收或者DROP不接收

仅对input进行拦截。

   iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

清理原有所有iptables规则,并查看结果

sudo iptables -F && sudo iptables -X && sudo iptables -Z && sudo iptables -S

结果如下:

   -P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT

允许回环流量 

Loopback接口,也被称为lo ,就是一台电脑用来进行网络连接到自身。 
iptables -A INPUT -i lo -j ACCEPT

允许下面端口被别人连接

因为output没有做限制,所以只需要限制input即可。
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT

允许自己去连接别人的以下端口

因为对input做了限制,所以当自己去连接别家服务器的端口时,自己作为客户端,input端口需要开通,且该端口时随机的,故只能对数据源端口进行区分
iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许docker容器间的通信

首先先查看本机docker使用的网段,再进行设置,此处docker网段为172.17.0.1/24,若不设置该规则,masami将无法访问mysql数据库
iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT

下面是目前使用的iptables规则

目前仅对kafka和baas进行了限制,未对k8s的slave和master进行限制

10.0.0.59 master1
10.0.0.69 slave1
10.0.0.71/192.168.9.28 baas1 10.0.0.70 master2
10.0.0.91 slave2
10.0.0.92/192.168.9.51 baas2 10.0.0.83 master3
10.0.0.95 slave3
10.0.0.74/192.168.9.32 baas3 10.0.0.55 master4
10.0.0.49 slave4
10.0.0.42/192.168.9.30 baas4 10.0.0.56 master5
10.0.0.61 slave5
10.0.0.73/192.168.9.29 baas5 10.0.0.65/192.168.9.45 kafka1
10.0.0.77/192.168.9.46 kafka2 清理原有规则
iptables -F && iptables -X && iptables -Z && reboot kafka1
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,2375 -j ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被特定ip连接
iptables -A INPUT -p tcp -s 10.0.0.69,10.0.0.91,10.0.0.95,10.0.0.49,10.0.0.61,10.0.0.65,10.0.0.77 -m multiport --dports 9092:9094,2181:2183,2888:2890,3888:3890 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,9092:9094,2181:2183,2888:2890,3888:3890 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许docker0和本地网卡流量
iptables -A INPUT -s 172.18.0.0/24 -d 10.0.0.65 -j ACCEPT
允许docker0内部流量
iptables -A INPUT -s 172.18.0.0/24 -d 172.18.0.0/24 -j ACCEPT kafka2
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,2375 -j ACCEPT
允许下面端口被特定ip连接
iptables -A INPUT -p tcp -s 10.0.0.69,10.0.0.91,10.0.0.95,10.0.0.49,10.0.0.61,10.0.0.65,10.0.0.77 -m multiport --dports 9092:9094,2181:2183,2888:2890,3888:3890 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,9092:9094,2181:2183,2888:2890,3888:3890 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许docker0和本地网卡流量
iptables -A INPUT -s 172.18.0.0/24 -d 10.0.0.77 -j ACCEPT
允许docker0内部流量
iptables -A INPUT -s 172.18.0.0/24 -d 172.18.0.0/24 -j ACCEPT baas5
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许masami和mysql通讯
iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas4
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许masami和mysql通讯
iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas3
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许masami和mysql通讯
iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas2
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许masami和mysql通讯
iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas1
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
允许回环流量
iptables -A INPUT -i lo -j ACCEPT
允许下面端口被别人连接
iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT
允许自己去连接别人的以下端口
iptables -A INPUT -p tcp -m multiport --sports 22,443,31410,8080,38254,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT
允许masami和mysql通讯
iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT 转载请注明出处:https://www.cnblogs.com/zooqkl

IPTABLES使用总结(内网模拟银行网络)的更多相关文章

  1. iptables 实现centos内网机器访问外网

    环境:一台带外网和内网的机器,另一台只有内网,默认不能上网.两台机器都是centos系统带外网机器的外网ip为 123.221.20.11, 内网ip为 192.168.15.100内网机器的内网ip ...

  2. linux服务器外网内网(双网络)搭建

    一共有2台服务器,分别用a,b表示.a双网卡,即有外网也有内网.b只有内网环境.a,b的内网是通过交换机组建.至于外网怎么搭建我就不说了.关键说一说内网是怎么组建的. 如果你对linux不熟悉,对网卡 ...

  3. 如何通过iptables代理访问内网

    场景 A机器能够联通内网机器,B机器能够联通A机器,但是访问不到内网机器,场景是希望通过A机器能够转发直接联通局域网内的其它机器 机器IP 内网为172.0.0.x/24 A机器为172.0.0.10 ...

  4. iptables 端口转发--内网实现上网

    iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 118.x.x.xiptables -A FORWARD -s ...

  5. CS内网横向移动 模拟渗透实操 超详细

    @Webkio 前言: 最近在跟朋友搞一些项目玩,所以最近没怎么更新内容接下来我将在虚拟中模拟内网多层靶场,进行内网渗透实验,超详细,适合小白.本文仅供网安学习,不可利用于未授权渗透工作中,否则后果自 ...

  6. 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网

    因为戴维营公司在长沙的学员,研发人员和北京的研发人员须要协同研发,故须要让北京的兄弟们增加到长沙办公室的内网,訪问版本号 管理server,于是採用在内网server上搭建一个OpenVPN服务,并把 ...

  7. centos 内网ip访问mysql数据库

    参考博文: CentOS 配置mysql允许远程登录 Centos6.5 双网卡配置一个上外网一个接局域网  这个博文仅作参考 公司租用景安的服务器,给景安沟通配置内网. [root@bogon ng ...

  8. 内网服务器离线编译安装mysql5.7并调优

    目录 内网服务器离线编译安装mysql5.7并调优 前言 关于MySQL 一.MySQL安装篇 部署环境 前期准备工具 挂载系统ISO镜像,配置yum源 二.MySQL调优篇 1.对MySQL进行安全 ...

  9. iptables之NAT代理-内网访问外网

    1.前言 本文使用NAT功能:内网服务器,想上网又不想被攻击. 工作原理:内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不做 ...

随机推荐

  1. Byword for Mac(Markdown编辑器)中文版

    还在找Markdown编辑器吗?那不妨试试Byword for Mac吧!这是一款轻量级的富文本编辑器,byword mac版提供了完整的Markdown支持,包含脚注.表格.交叉引用等功能,Bywo ...

  2. ffmpeg 多个音频合并 截取 拆分

    1 多个mp3文件合并成一个mp3文件 一种方法是连接到一起 ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy outpu ...

  3. C++实验二——函数重载、函数模板、简单类的定义和实现

    一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...

  4. 与图论的邂逅03:Lengauer-Tarjan

    回想一下,当我们在肝无向图连通性时,我们会遇到一个神奇的点——它叫割点.假设现在有一个无向图,它有一个割点,也就是说把割点删了之后图会分成两个联通块A,B.设点u∈A,v∈B,在原图中他们能够互相到达 ...

  5. js某一元素在数组中的索引

    第一种:数组遍历 function search(arr,dst){ var i = arr.length; while(i-=1){ if (arr[i] == dst){ return i; } ...

  6. 微信中H5网页如何唤醒打开外部浏览器打开指定链接

    最近遇到一个需求.朋友找我制作一个在微信中的聊天框,或者公众号菜单发布一条链接或者二维码.跳出微信打开一个指定的我们自己的页面, 拿到这个需求后我们团队分开去找资料研究方案,通过微信的开发文档.腾讯的 ...

  7. 比NGINX更快:nginx-1.15.5 vs mongols-1.2.3

    nginx是多进程web服务器的优秀代表. 本文要用mongols-1.2.3实现一个比nginx更快的多进程的web服务器. mongols是C++ 服务器基础设施库, 它的主要特性如下: tcp ...

  8. gcc Build-in functions

    https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html gcc -posix -E -dM - </dev/null

  9. sitecore开发入门之如何在代码中获取SITECORE图像URL

    using Sitecore; using Sitecore.Data.Items; using Sitecore.Resources.Media; public string GetUrl() { ...

  10. Linux防火墙iptables基础详解

    原文来自于:https://www.linuxidc.com/Linux/2017-01/140073.htm(引用自) 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分 ...