Skip to content

SSH限制IP连接

由于我这里使用的iptables,这里主要讲iptables

iptables组成

iptables 是 Linux 系统中用于配置和管理网络包过滤与防火墙功能的工具。它允许系统管理员定义一系列规则,以控制网络流量的进出。这些规则可以用于实现网络安全策略,如允许或拒绝特定类型的流量、端口、IP 地址等。

以下是 iptables 的主要组成部分和功能

表(Table)

iptables 使用表来组织规则,每个表包含若干条规则,用于特定的网络功能。常见的表包括:

  • filter表:用于基本的数据包过滤功能,如阻止或允许数据包通过防火墙。
  • nat表:用于网络地址转换(NAT),允许修改数据包的源或目标地址。
  • mangle表:用于修改数据包的各个字段,如 TTL、TOS 等。
  • raw表:用于配置原始数据包规则,通常在数据包进入连接追踪之前应用。

链(Chain)

每个表由一系列链组成,链是规则的集合点。数据包通过链按顺序进行处理,直到匹配到一条规则。常见的链包括:

  • INPUT:处理进入系统的数据包。
  • OUTPUT:处理从系统发出的数据包。
  • FORWARD:处理经过系统的数据包,但不是源自本地系统的或不是发往本地系统的。
  • PREROUTING:用于 nat 表,处理数据包进入路由前。
  • POSTROUTING:用于 nat 表,处理数据包离开路由后。

规则(Rule)

规则是定义在链中的,用于指定要对数据包执行的操作。每条规则由匹配条件和动作组成。匹配条件可以基于数据包的源地址、目标地址、端口等。动作指定对匹配的数据包执行的操作,如允许、拒绝、修改等。

匹配模块(Match Module)

iptables 允许使用各种匹配模块来匹配数据包的不同部分。这些模块允许管理员根据特定的标准来过滤数据包,如 IP 地址、端口号、协议类型等。

目标(Target)

目标指定当数据包匹配规则时要执行的操作。常见的目标包括

  • ACCEPT(允许数据包通过)
  • DROP(丢弃数据包)
  • REJECT(拒绝数据包并发送拒绝通知)
  • LOG(记录数据包信息)

限制IP访问

  • 允许特定外部IP连接

    shell
    sudo iptables -A INPUT -p tcp --dport 端口号 -s 外部IP地址 -j ACCEPT
  • 拒绝所有其他网络连接

    shell
    sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP
  • 允许内网访问

    shell
    iptables -A INPUT -i lo -j ACCEPT

特别注意

慎用!!! 用之前请检查好IP相关内容,设置完即生效,若设置错误则连接不上,可以先试着设置拒绝某个IP访问,让后设置拒绝所有