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. Jenkins+Jmeter持续集成笔记(五:问题优化)

    通过前面的一系列文章,我的API自动化测试平台已经搭建成型,但是要投入具体项目使用时,还有以下几个问题需要优化. 还是接着以上一篇笔记中的“test_token”项目为例: 1.邮件通知问题 (1)问 ...

  2. Movavi Video Editor 15 Plus(视频编辑软件) 中文版

    Movavi Video Editor 15 Plus Mac版是Movavi系列中的一款视频编辑器,Movavi Video Editor Plus 15破解版提供了全面的视频功能,另外还支持为视频 ...

  3. 2019年春季学期第四周作业Compile Summarize

    这个作业属于哪个课程 C语言程序设计一 这个作业要求在哪里 2019春季学期第四周作业 我的课程目标 重新学习有关数组的问题 这个作业在哪个具体方面帮助我实现目标 对于置换有了新的见解 参考文献 中国 ...

  4. 【长文】Google面试官分步解析自己泄漏前的面试题,超多干货和建议

    本文翻译自Google工程师/面试官Alex Golec的文章:Google Interview Questions Deconstructed: The Knight's Dialer:翻译:实验楼 ...

  5. UML与软件建模:第一次作业(UML用例图绘制)

    uml第一次作业: 用例图是什么? 用例图我感觉就是把网站中各个用户的动作分解一下,再用rational rose软件把图画出来. 画例图主要分为三个步骤:a 确定系统角色  b 确定用例  c 对用 ...

  6. spring-data-radis错误

    org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested ...

  7. Qt QSpinBox 和 QDoubleSpinBox

    展示一个效果: QDoubleSpinBox跟QSpinBox类似,只是多了一个decimal.

  8. js左右大小变化

    点左边左边变大.点右边右边大左边小 <style type="text/css"> *{ margin:0px auto; padding:0px; } #wai{ w ...

  9. HTML表单简单练习

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  10. ubuntu window 10 双系统

    https://rufus.ie/ U盘制作工具 http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso   ubuntu ...