Вопрос: Как запретить внешний доступ к 127.0.0.1? [закрыто]


Я использую tcp socket на 127.0.0.1:9000 для подключения nginx к php5-cgi. Однако я хочу убедиться, что на этот IP-адрес не может быть отправлен дополнительный запрос, чтобы злоумышленник не мог запутать IP-адрес и обходить nginx, чтобы делать неприятные вещи с помощью php.

Теперь мне интересно, действительно ли можно сделать такой эксплойт, и если да, то как я могу избежать его использования iptables?


4
2018-01-14 07:37


Источник


это базовые сети, которые должны были быть очень легко найти - Jim B
Никакая внешняя система не может подключиться к 127.0.0.1 в другой системе. - joeqwerty
@JimB - проблема со многими основными сетевыми вопросами, которые очевидны, заключается в том, что иногда бывает трудно найти ссылку на них. Поиск способа блокировать удаленный доступ к локальному хосту не очень хорошо документирован, потому что он не нужен, и «каждый» просто это знает. - Johnny
@Johnny, однако сообщество решило давно, чтобы не следовать примеру переполнения стека. Видеть stackoverflow.com/questions/1137158/what-is-a-variable для примера того, что мы решили, мы не хотели. - Jim B


Ответы:


Как правило, доступ к услугам, связанным только с localhost, от внешних адресов. SF - довольно  переполненный  с вопросы о том, как обратить вспять это положение вещей, и требуемые для этого гимнастики являются нетривиальными, именно потому, что вся концепция привязки только к localhost предназначен для того, чтобы предоставить вам эту безопасность без лишнего шума.


21
2018-01-14 07:50



Очевидно, что то же самое не верно для IPv6, где ::1 может быть подделан в зависимости от конфигурации брандмауэра. - CodesInChaos
Конечно, это будет исправлено. Никакие запросы localhost не должны выполняться ядром / сетевым уровнем из физической ссылки. - phyrfox
@phyrfox Вот почему это ошибка. Вы не должны ставить циклический трафик на физический уровень независимо от ОС - Jim B


Вы можете создать правило брандмауэра для блокировки этого трафика, но гораздо проще включить фильтрацию обратного пути.

(root)$ echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter

Фильтрация обратного пути использует таблицы маршрутизации для фильтрации поддельных адресов входящих пакетов.

Вы можете включить это по умолчанию на всех интерфейсах, добавив следующее в /etc/systcl.conf:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

Больше информации: http://www.slashroot.in/linux-kernel-rpfilter-settings-reverse-path-filtering

Однако...

Как уже упоминалось в MadHatter, это совершенно необязательно для 127.0.0.1/8. (Если вы хотите, вы можете зарегистрировать эти пакеты, используя net.ipv4.conf.all.log_martians = 1).


5
2018-01-14 08:32