IP 表

IP 表

我想禁止请求某些页面的 IP,例如向 发送请求example.com/weird.php的 IP 。POSTexample.com/weirder.php

我搜索了很多,了解了一些iptables,但似乎有些是针对 CentOS 的说明。我也担心被锁定。所以我在寻找一些详细且安全的答案。

我使用 AWS EC2、Ubuntu 和 nginx。

答案1

首先在您有物理访问权的机器上尝试此操作。

IP 表

首先,让我们弄清楚阻止 IP 地址的 IP 表规则。有关详细说明,查看本指南让我们删除来自特定 IP 的所有传入连接:

iptables -A INPUT -s A.B.C.D -j DROP

此后,照常重新启动 iptables。尝试此命令以检查它是否正常工作,熟悉语法,然后继续下一步。

Bash 脚本

让我们创建一个 Bash 脚本来阻止 IP。它看起来像这样(警告:您可能需要使用用户权限和 sudo 才能使其工作)。创建一个新文件,例如 blockip.sh。

#! /usr/bin/env bash
iptables -A INPUT -s $1 -d DROP
<other stuff you want to do when you block an IP>
<note: the IP address is in variable $1>

运行chmod +x blockip.sh以使脚本可执行。现在您可以将其作为 运行/path/to/file/blockip.sh 1.2.3.4

Sudo 权限

如果你的脚本需要有 root 用户权限,你需要配置 sudo 来提供无密码访问。参考这个 Stack Overflow 问题,运行sudo visudo并添加以下行:

nobody ALL = NOPASSWD: /your/script

保存文件并退出。作为安全警告,请确保只有您可以修改脚本文件,否则,有人可能会通过修改脚本以 root 用户身份运行有害代码。

PHP 代码

当您想要屏蔽某人时,请运行这段代码。

exec("sudo /path/to/file/blockip.sh ".$_SERVER['REMOTE_ADDR']);

结论

首先,在一台您可以物理访问的机器上测试此代码。另外,请注意 LAN 后面的多个用户将共享相同的外部 IP,阻止其中一个用户将导致阻止所有用户。请小心。如果答案对您有帮助,请点赞。

相关内容