Видалити або додати правило

я два рази додав 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