gpt4 book ai didi

linux - 将我当前的 IP 添加到 iptables 的白名单中?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:52 30 4
gpt4 key购买 nike

我对设置游戏服务器还很陌生,但我想阻止 rcon 访问除白名单中的 IP 之外的每个 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 并将其自动添加到白名单中。

我该怎么做?

最佳答案

假设:

  • 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 身份连接时它就会自动完成。

但是,这假设您的 friend 通过 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,但这应该足够接近了。

关于linux - 将我当前的 IP 添加到 iptables 的白名单中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105943/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com