根据另一台计算机的请求通过脚本添加 IPtables 规则

根据另一台计算机的请求通过脚本添加 IPtables 规则

我想知道,是否可以编写一个脚本,根据其他 PC 的请求在 iptables 中添加规则?我的意思是,脚本“知道”要做什么,但规则的地址来自请求。

那你觉得应该怎么实现呢?我觉得应该是守护进程,或者说是被魔化了的脚本...

答案1

使用 PHP 或 Perl 等服务器端脚本语言来实现这一点可能是最简单的。但是,由于脚本的输入可由用户控制,因此您应该非常谨慎使用它作为输入。

下面是一个示例(我不是网络编码员,因此该代码可能存在巨大的安全问题,请谨慎使用):

#!/usr/bin/perl -wT

# Send HTTP content-type
print "Content-type:text/html\r\n\r\n";

my $requester_ip;
# Do some sanity checking on the IP send by the webserver
if ( $ENV{'REMOTE_ADDR'} =~ m/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)/ ) {
  my $requester_ip = $1;
} else {
  print "An error occurred\n";
  exit;
}

# Open SMTP for the requester
`sudo iptables -A INPUT -d $requester_ip -p tcp --dport 25 -j ACCEPT` 

如果你想使用此功能,请确保你的网络服务器用户可以运行sudo 仅有的使用这个特定的命令。再次强调,提供此代码是希望它能够有用,但不对任何特定用途提供任何保证或适用性。

如果能分两个阶段进行,效果会更好:

  • 让网络服务器将 IP 写入文件
  • 让单独的脚本从 crontab 运行以从文件中获取 IP 并运行iptables

相关内容