別のコンピュータの要求に応じてスクリプトでIPtablesのルールを追加する


1

他のパソコンからのリクエストでiptablesにルールを追加するスクリプトを作成することは可能でしょうか。つまり、スクリプトは何をすべきかを「知って」いますが、ルールのアドレスは要求から来ています。

そしてそれはどのようにして実現されるべきだと思いますか?私は、それはデーモン、あるいは悪魔化されたスクリプトであるべきだと思います...

回答:


1

PHPやPerlなどのサーバーサイドのスクリプト言語を使用してこれを実装するのがおそらく最も簡単です。ただし、スクリプトへの入力はユーザーが制御できるので、入力として使用するときは十分注意する必要があります。

以下に例を示します(私はWebコーダーではないので、このコードには重大なセキュリティ問題がある可能性があります。細心の注意を払って使用してください)。

#!/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` 

これを使用したい場合は、Webサーバーユーザーがこの特定のコマンドでsudo のみ実行できることを確認してください。繰り返しますが、このコードは有用であることを期待して提供されていますが、特定の目的に対する保証または適合性はありません。

2段階のプロセスでこれを行うのがさらによいでしょう。

  • WebサーバーにIPをファイルに書き込ませる
  • ファイルからIPを取得して実行するために、crontabから別のスクリプトを実行しますiptables
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.