iptables使用详解

iptables使用详解@(linux)[iptables]
前言最近买了一个VPS , 并在上面搭了DOCKER , 然后再DOCKER中安装Mysql 。但只要将网络端口映射到宿主机上 , 那么外部网络就可以直接访问该数据 。属实吓人 。为此 , 我们需要使用防火墙 。
说到防火墙 , CentOS有FirewallD , Ubuntu有ufw。它们的用法和语法不尽相同 , 但有一点却是一致的 , 那就是他们底层都使用了iptables 。所以为了在不同发行版的linux下都能安全管理我们的服务器 , 教练 , 我想学这个iptables
由于FirewallD和ufw本质都是基于iptables的 , 那么它们都会在iptables中添加一些规则 , 甚至定义一些链 , 为了不跟往后我们自己定义的规则相冲突 , 第一件事 , 便是停止并卸掉FirewallD和ufw对应的服务 。
停掉FirewallD
sudo systemctl stop firewalld //停止FirewallDsudo systemctl disable firewalld //让FirewallD 不要随系统启动而启动停掉ufw
sudo ufw disable //停止并在系统启动时不启动ufwiptables是啥iptables是一个linux下的防火墙工具 , 它能帮助我们基于规则进行网络流量控制 。它可以做到 , 但不限于以下功能:

  • 允许/拒绝某种协议的链接建立 , 比如TCP , UDP
  • 允许/拒绝 来自某个ip的访问
  • 允许/拒绝某个端口被访问
  • ...
表、链、规则规则(rule)来自192.168.2.31的访问 , 就要将其拒绝 , 这即是一条规则
链(chain)往往我们的安全策略不只一条规则 , 除了来自192.168.2.31的访问 , 就要将其拒绝 这条规则之外 , 我们还有其它规则 , 比如:来自192.168.43.22的访问 , 也要将其拒绝
甚至 , 我们可能还有多个互斥的规则 , 这多个规则 , 哪个规则先执行? 这就涉及到链这个概念 。简单来讲 , 链就是将多个规则从上大小串起来的一个集合单位 。规则按从上倒下依次进行匹配 。
iptables使用详解

文章插图
表(table)链条可以有多个 。将多个链条再规整在一起的集合 , 叫做表 。
iptables使用详解

文章插图
总览在iptables中 , 有四张表:
  • filter:这里面的链条 , 规则 , 可以决定一个数据包是否可以到达目标进程端口
  • mangle: 这里面的链条 , 规则 , 可以修改数据包的内容 , 比如ttl
  • nat:这里面的链条 , 规则 , 可以修改源和目标的ip地址 , 从而进行包路由 。
  • raw:这里面的链条 , 规则 , 能基于数据包的状态进行规则设定
上述四张表中 , 会内置一些链 , 且每个链 , 都有默认包处理策略 , 默认策略一般在链中的所有规则都没匹配时生效 。filter表中的链有:
- INPUT:对路由策略分派过来的包到达目标进程端口之前进行匹配并处理 , 后续会讲到细节- FORWARD:对路由策略分派过来的包进行路由转发 , 后续会讲到细节- OUTPUT:判断 , 从本地的目标进程端口处理好的包如何返回/要不要返回给请求方mangle表中的链有:
PREROUTING:包在到达网口时 , 进行规则匹配INPUT:含义同filterFORWARD: 含义同filterOUTPUT: 含义同filterPOSTROUTING: 包离开网口的时候匹配

经验总结扩展阅读