Приветствую, уважаемый читатель!
Столкнулся с необходимостью
писать новые правила для iptables
из
python.
Решил поделиться найденными вариантами, как это можно сделать.
Первый вариант длиннее
и для его реализации необходимо воспользоваться дополнительной библиотекой для python, а именно python-iptables. Буду писать в
комментариях аналог правила на bash.
import iptc
# iptables -I BAS 1 -s 111.111.111.111 -p tcp --dport 22 -j DROP
rule = iptc.Rule()
rule.protocol = "tcp"
rule.target = iptc.Target(rule, "DROP")
rule.src = "111.111.111.111"
match = iptc.Match(rule, "tcp")
match.dport = "22"
rule.add_match(match)
chain_bas = iptc.Chain(iptc.Table(iptc.Table.FILTER), "BAS")
chain_bas.insert_rule(rule)
# iptables -I BAS 1 -d 8.8.8.8 -p udp --dport 53 -m iprange --src-range
192.168.1.1-192.168.1.254 -j ACCEPT
rule = iptc.Rule()
rule.protocol = "udp"
rule.target = iptc.Target(rule,"ACCEPT")
rule.dst = "8.8.8.8"
match = iptc.Match(rule, "udp")
match.dport = "53"
rule.add_match(match)
match = iptc.Match(rule,"iprange")
match.src_range = "192.168.1.1-192.168.1.254"
rule.add_match(match)
chain_bas = iptc.Chain(iptc.Table(iptc.Table.FILTER), "BAS")
chain_bas.insert_rule(rule)
Второй вариант привычен
с точки зрения синтаксиса написания правил, т.к. используется модуль os.
import os
ip = "111.111.111.111"
os.system('iptables
-I BAS 1 -s %s -p tcp --dport 22 -j ACCEPT' % ip)
Комментариев нет:
Отправить комментарий