Назад | Перейти на главную страницу

путаница с ufw и iptables

Я ранее добавлял некоторые правила netfilter через iptables. Теперь я хотел бы управлять этими правилами через ufw и для упрощения вещей, я хотел избавиться от текущих правил и начать заново, как если бы я использовал ufw с самого начала.

Я побежал sudo iptables --flush чтобы удалить все текущие правила, затем sudo ufw allow 22 разрешить ssh и sudo ufw enable. Затем меня выгнали из сеанса ssh, поэтому правило явно не сработало.

Я подключился к сеансу консоли и сравнил sudo iptables -L -v на другой сервер, который работал с ufw, и я заметил, что верхняя цепочка INPUT на этом сервере была пуста, тогда как на рабочем сервере было:

Chain INPUT (policy DROP 77 packets, 3613 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 3842  682K ufw-before-logging-input  all  --  any    any     anywhere             anywhere            
 3842  682K ufw-before-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-after-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-after-logging-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-reject-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-track-input  all  --  any    any     anywhere             anywhere 

Похоже, что сброс очистил некоторые правила по умолчанию, которые ufw применил к цепочке INPUT, это правильное предположение? Если да, то а) как исправить ситуацию и б) как правильно выполнить этот процесс?

Оказалось, что мои подозрения верны и sudo iptables --flush стерли правила цепочки INPUT ufw, которые называли его собственными пользовательскими цепочками. По какой-то причине (до сих пор мне неизвестной) ufw не вставлял их обратно, когда был включен.

Чтобы заставить ufw вернуть эти правила, мне пришлось удалить все цепочки ufw из iptables, а затем включить ufw. Я сделал вот так:

sudo iptables -X ufw-after-forward
sudo iptables -X ufw-after-input
sudo iptables -X ufw-after-logging-forward
sudo iptables -X ufw-after-logging-input
sudo iptables -X ufw-after-logging-output
sudo iptables -X ufw-after-output
sudo iptables -X ufw-before-forward
sudo iptables -X ufw-before-input
sudo iptables -X ufw-before-logging-forward
sudo iptables -X ufw-before-logging-input
sudo iptables -X ufw-before-logging-output
sudo iptables -X ufw-before-output
sudo iptables -X ufw-reject-forward
sudo iptables -X ufw-reject-input
sudo iptables -X ufw-reject-output
sudo iptables -X ufw-track-input
sudo iptables -X ufw-track-output

Когда я после этого включил ufw, он правильно настроил iptables ..