IPTables разрешают только локальный доступ


58

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

У меня есть сервис, к которому я хочу разрешить доступ только локальному хосту.

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


2
На каком порту работает эта служба?
Барт Де Вос

44344, услуга написана собственными силами
iptablessuck

1
Я бы хотел временно сменить ник на «iptablesrules», но не могу
Арт Шайдеров

@Art, они только отстой, потому что я их не понимаю :)
iptablessuck

@iptablessuck на самом деле, похоже, я могу. Но я не буду, потому что я не уверен, что смогу изменить это обратно :)
Арт Шайдеров

Ответы:


65

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

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

1
«Все, что поступает с локального хоста на порт 25, примите», а второе правило гласит «Удалите все, что поступает в порт 25». Первая строка обрабатывается первой, позволяя localhost, а все остальное будет отброшено второй строкой. Да?
iptablessuck

Это правильно!
Hyppy

4
@ Хиппи, как бы ты "отменил" это?
тестер

10
@tester снова введите эти команды, но замените -Aна-D
pepoluan

1
@ Астронавт типа 'sudo service iptables save', чтобы сохранить изменения. затем перезагрузите компьютер. Вы можете проверить, были ли сохранены изменения, набрав 'sudo iptables -L'
Vinayak

30

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

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таблиц. Вот два великих:

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


ти! loпоявляется после использования этих команд с последней командой по этой ссылке cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers

2
@Gracchus Я считаю, что намного проще в использовании iptables-save, сохранить вывод в файл, отредактировать его с помощью vimили emacs, и iptables-apply
повторно импортировать

Я думаю, в зависимости от варианта использования, второе правило должно явно ОТКАЗАТЬ, а не отбрасывать молча. Это отброшено молча как лучшая практика? Безопасно ли использовать REJECT?
Мистер Doomsbuster

1
@ tech-pro Да, REJECT безопасен в использовании. Это зависит от того, чего вы пытаетесь достичь, и хотите ли вы быть вежливыми по отношению к людям, пытающимся использовать порт. REJECT отправит обратно пакет TCP RST, сообщая клиенту, что машина работает, но порт закрыт. Если вы закрываете порт, который люди могут законно ожидать использовать, тогда REJECT - это хорошо. Если вы ожидаете только сканеры портов, то DROP лучше.
Закон 29

1
@ x-yuri Например, я запускаю unboundкак DNS-кеш, перед dnscrypt-proxy. unboundсвязывает 127.0.53.1:53и dnscrypt-proxyсвязывает с 127.0.53.2:53. Когда приложение запрашивает unbound или dnscrypt-proxy для разрешения полного доменного имени, угадайте, с какого исходного адреса будет отвечать unbound / dnscrypt-proxy?
pepoluan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.