PythonでIPTableを変更する最も安全な方法が何であるかを知っている人はいますか?
学校プロジェクトのための単純な依存ポータルを構築しています。ユーザーが Python と mariadb 経由でポータルで認証すると、Python は IP アクセス権を付与するために IPTables にコマンドを送信します。
しかし、これを行う最善の方法は何ですか? Pythonに正しいコマンドを入力しても、これが達成されるわけではないと確信しています。シェルスクリプトを実行するのですか?しかし、シェルスクリプトからIPアドレスをどのように送信できますか?
答え1
次のことができます。
import subprocess
ip = get_ip() # you have to create the code to fetch IP in this variable
subprocess.run(["/usr/sbin/iptables", "-A", "-p", "tcp", "-s", ip, "-j", "ACCEPT"])
# ^
# |
# This is a variable
答え2
Gillesが述べたようなシェルコマンドを実行したり、同様のライブラリを使用したりできます。Python iptables
また、これらの操作にはipsetを使用する方が便利です。
次のようにipsetを生成します。
ipset create allowed_list hash:ip
iptablesのルールは次のとおりです。
iptables -A INPUT -m set --match-set allowed_list src -j ACCEPT
IPアドレスの追加/削除
ipset add allowed_list 10.0.0.1
ipset del allowed_list 10.0.0.2