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가 언급한 것과 같은 쉘 명령을 실행하거나 유사한 라이브러리를 사용할 수 있습니다.파이썬 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