Я ранее добавлял некоторые правила 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 ..