Видалити або додати правило
я два рази додав iptables -I INPUT -m set --match-set dirtybots4 src -j DROP
iptables -L INPUT -n | grep dirtybots4
DROP 0 -- 0.0.0.0/0 0.0.0.0/0 match-set dirtybots4 src
DROP 0 -- 0.0.0.0/0 0.0.0.0/0 match-set dirtybots4 src
Як видалити один?
У тебе зараз у ланцюгу INPUT
два однакових правила, і iptables
виконає обидва, хоча ефект буде той самий.
Щоб видалити одне з них, треба знати його номер у ланцюзі.
1. Подивитися нумерацію правил
iptables -L INPUT -n --line-numbers
Вивід буде приблизно такий:
num target prot opt source destination
1 DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set dirtybots4 src
2 DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set dirtybots4 src
...
2. Видалити зайве правило за номером
Наприклад, щоб видалити друге правило:
iptables -D INPUT 2
(-D
— delete, видалення за номером у ланцюзі)
3. Перевірити
iptables -L INPUT -n --line-numbers | grep dirtybots4
Я з неуважності видалив правило #3 ACCEPT 0 -- ::/0 ::/0
, причому з iptables (не ip6tables як хотів!).
Це правило було для дозволу всього IPv4-трафіку для будь-яких з'єднань!
I мене одразу викинуло з терміналу, так я був на IPv4. Залогінитися не можна. SSH для IPv6 вимкнено...
iptables -L INPUT -n --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP 0 -- ::/0 ::/0 match-set dirtybots6 src
2 DROP 0 -- ::/0 ::/0 match-set dirtybots6 src
3 ACCEPT 0 -- ::/0 ::/0
4 ACCEPT 0 -- ::/0 ::/0 ctstate RELATED,ESTABLISHED
...
Зайшов через консоль провайдера.
Щоб повернути його точно в те саме місце (#3), виконай:
iptables -I INPUT 3 -j ACCEPT
де:
-I INPUT 3
— вставити на позицію 3,-j ACCEPT
— дія: дозволити весь трафік (з будь-якого джерела, на будь-який порт).
Перевірка
iptables -L INPUT -n --line-numbers
Там знову має з’явитися ACCEPT на третьому місці.
Якщо ти не хотів, щоб це правило дозволяло все підряд, треба уточнити, що саме воно робило, бо за твоїм виводом воно не мало обмежень (::/0
— будь-яка IPv6-адреса, будь-який порт).
Last updated