Я всегда нервничаю при редактировании iptables, так как знаю, насколько просто заблокировать весь трафик на сервер, что является довольно большой проблемой, когда ваш сервер находится в облаке.
Будет ли это правильная серия команд?
iptables -A INPUT -p tcp --dport 123 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 123 -s 5.6.7.8 -j ACCEPT
iptables -A INPUT -p tcp --dport 123 -j DROP
iptables-save
Это не отвечает на ваш вопрос - другие хорошо с этим справляются, - но решает другую вашу проблему: блокировку доступа к удаленному серверу. Всякий раз, когда я делаю большой iptables
изменения в системе, я всегда проверяю, что atd
работает, затем поставьте at
примерно на 10 минут в будущем, чтобы отключить брандмауэр, что-то вроде
at now + 10 minutes
at> service iptables stop
at> ^D
Таким образом, я знаю, что если я действительно запутаюсь и заблокируюсь, через десять минут я смогу вернуться и все исправить. Если я закончу свою работу и не ошибусь, я найду эту работу с atq
и удалите его с помощью atrm
еще до того, как он запустится.
Он должен работать, но его можно улучшить. Вы не опубликовали свою политику INPUT по умолчанию. Если это ACCEPT, то ваши команды должны работать, хотя и не самая рекомендуемая. Если это DROP, то строка перед iptables-save
.
Наиболее рекомендуемая политика для iptables, как и для любого другого брандмауэра, - УДАЛИТЬ ВСЕ, а затем явно разрешить порты / протоколы, которые вы хотите разрешить. Итак, вы начнете с этого -
iptables -A INPUT -j DROP
Затем вы явно разрешаете входящий трафик, предназначенный для порта 123 / tcp.
iptables -A INPUT -p tcp --dport 123 -s 1.2.3.4 -j ПРИНЯТЬ
iptables -A INPUT -p tcp --dport 123 -s 5.6.7.8 -j ПРИНЯТЬ
В пакете debian iptables есть '/ usr / sbin / iptables-apply', который спрашивает вас, все ли в порядке после применения изменений, если вы не ответите на вопрос, изменения будут отменены.