iptables разрешает только определенные IP-адреса с определенного порта
Я всегда нервничаю при редактировании 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
3 ответа
Это не отвечает на ваш вопрос - другие хорошо справляются с этим - но это решает и другую вашу проблему: блокирование себя от удаленного сервера. Всякий раз, когда я делаю большой iptables
изменить в системе, я всегда проверяю, что atd
работает, затем положить at
работа в течение 10 минут в будущем, чтобы отключить брандмауэр, что-то вроде
at now + 10 minutes
at> service iptables stop
at> ^D
Таким образом, я знаю, что если я действительно запутаюсь и запрусь, через десять минут я смогу вернуться и исправить вещи. Если я закончу свою работу, и я не испортился, я смогу найти эту работу с atq
и удалите его с atrm
еще до того, как он запустится
Это должно работать, но это может быть улучшено. Вы не опубликовали, какая у вас политика INPUT по умолчанию. Если это ПРИНЯТЬ, то ваши команды должны работать, хотя и не самая рекомендуемая. Если это 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', который спрашивает вас, все ли в порядке после внесения изменений, если вы не отвечаете на вопрос, тогда изменения отменяются.