【问题标题】:Adding my current IP to whitelist on iptables?将我当前的 IP 添加到 iptables 上的白名单?
【发布时间】:2014-08-05 23:08:04
【问题描述】:

我对设置游戏服务器还很陌生,但我想阻止 rcon 访问除白名单之外的每个 ip。

首先我将通过 SSH 使用这个:

iptables -A INPUT -p tcp --destination-port 27015 -j LOG --log-prefix "SRCDS-RCON " -m limit --limit 1/m --limit-burst 1
iptables -A INPUT -p tcp --destination-port 27015 -j DROP

之后我希望当用户运行 bash 脚本或类似的东西时,它会检测用户 IP 并将其自动添加到白名单中。

我该怎么做?

【问题讨论】:

  • 您能否更具体地了解此脚本:它将在用户的机器上运行还是在您的游戏服务器上运行?你能说出你的服务器运行的是什么 GNU/Linux 变体吗?
  • 在我的游戏服务器上,我使用 Debian
  • 用户将如何连接到机器?通过 ssh 吗?作为哪个用户?

标签: linux bash iptables


【解决方案1】:

假设:

  • bash 脚本在服务器上运行
  • 用户使用 ssh 登录

你可以创建一个 ipset :

首先,在 iptables 中添加这条规则:

iptables -A INPUT -i eth0 -m set --match-set whitelist src -p tcp --destination-port 27015 -j ACCEPT

然后创建一个集合:

sudo ipset -N whilelist iphash

最后,使用 SSH_CONNECTION 环境变量添加这样的脚本:

#!/bin/bash
USER_IP=$(echo $SSH_CONNECTION | cut -f1 -d' ')
sudo ipset -A whitelist $USER_IP

您甚至可以在/root/.bash_profile 的末尾添加这两行,这样当有人以root 连接时它会自动完成。

但是,这假设您的朋友通过 ssh 以 root 身份连接。由于这是不可取的,您可以使用一个临时目录来保存 IP 地址,并添加一个 cron 作业来填充 ipset 哈希:

  • 使用:创建/etc/cron.d/check_ipset

    * * * * *   root    /usr/local/bin/check_ipset
    
  • 创建/usr/local/bin/check_ipset(和chmod 700):

    #!/bin/bash
    for i in `cat /tmp/ipset_pending | sort -u`; do 
      ipset -A whitelist $i
    done
    cat /dev/null > /tmp/ipset_pending
    
  • 将此添加到每个用户的 .bash_profile :

    ...
    echo $SSH_CONNECTION | cut -f1 -d' ' >> /tmp/ipset_pending
    ...
    

没有测试,所以 YMMV,但这应该足够接近。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2021-12-31
    相关资源
    最近更新 更多