Вопрос: IPTables разрешает доступ к локальному хосту


Я боролся на протяжении многих лет, чтобы получить четкое понимание iptables. Каждый раз, когда я пытаюсь читать страницы, мои глаза начинают гладить.

У меня есть служба, которую я хочу разрешить только локальному хосту.

Какие условия (или конфигурация, если кто-то чувствует себя великодушным), должен ли я использовать Google для того, чтобы только хост-хост-хост имел доступ к данному порту?


48
2018-03-14 14:37


Источник


На каком порту работает этот сервис? - Bart De Vos
44344, его услуга, написанная собственными силами - iptablessuck
Я хотел бы временно изменить мой ник для 'iptablesrules', но я не могу - Art Shayderov
@Art, они только сосут, потому что я их не понимаю :) - iptablessuck
@iptablessuck на самом деле, похоже, я могу. Но я не стану причиной, я не уверен, что смогу изменить его назад :) - Art Shayderov


Ответы:


Если по сервису вы имеете в виду конкретный порт, то должны работать следующие две строки. Измените «25» на любой порт, который вы пытаетесь ограничить.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP

56
2018-03-14 14:47



«Все, что происходит от localhost до порта 25, принимает», а второе правило говорит «Отбросьте все, что попадает в порт 25». Первая строка обрабатывается первой, разрешая localhost, и что-то еще будет сброшено второй строкой. Да? - iptablessuck
Правильно! - Hyppy
@Hyppy, как бы вы «отменили» это? - tester
@tester снова введите эти команды, но замените -A с -D - pepoluan
@Astronaut type 'sudo service iptables save' для сохранения изменений. затем перезагрузитесь. вы можете проверить, были ли сохранены изменения, набрав 'sudo iptables -L' - Vinayak


Я бы рекомендовал:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Поскольку, самонаправленные пакеты не обязательно содержат 127.0.0.1 в качестве источника, но все они «вводят» из lo интерфейс.

Теперь, если вы действительно хочу понять iptables первое, что вам нужно сделать, это загрузить и распечатать хорошие диаграммы, объясняющие отношения netfilter столы. Вот два больших:

Наконец, прочитайте много iptables HOWTO-х. Практические примеры помогут вам быстро перейти к быстрому :)


26
2018-03-14 16:43



ти! lo появляется для меня после использования этих команд с последней командой из этой ссылки cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules  iptables -L -v -n --line-numbers
@Gracchus Мне гораздо проще использовать iptables-save , сохраните вывод в файл, отредактируйте его с помощью vim или emacs, и реимпортируйте отредактированный файл, используя iptables-apply - pepoluan
Я думаю, что в зависимости от варианта использования, второе правило должно явно ОТКЛЮЧИТЬ, вместо того, чтобы тихо отбрасывать. Является ли это прекрасным, как наилучшая практика? Безопасен ли REJECT? - Mr. Doomsbuster
@ tech-pro Да, REJECT безопасен в использовании. Это зависит от того, что вы пытаетесь выполнить, и хотите ли вы быть вежливым с людьми, пытающимися использовать порт. REJECT отправит обратно пакет TCP RST, сообщающий клиенту, что машина занята, но порт закрыт. Если вы закрываете порт, который люди могут законно ожидать, то REJECT хорош. Если вы ожидаете только сканеры портов, тогда DROP лучше. - Law29
У меня был веб-сервер, работающий на порту, который я хочу получить только через локальный хост. В другом случае, чтобы немедленно отказаться от того, кто использует в браузере, я думал, что REJECT может быть лучше. Если он отключен, браузер зависает до истечения таймаута. Имеет ли смысл смысл в этом случае? - Mr. Doomsbuster