Я хочу протестировать резервную стратегию для моего memcached драйвера (в случае, если порт защищен брандмауэром). Как я могу запретить доступ к определенному порту, на 127.0.0.1?
Запретить доступ к порту с локального хоста на OSX
2 ответа
пример для Mac OS X 10.6 (Snow Leopard)
запретить соединения с localhost, порт SSH (= 22, читать из /etc/services
):
sudo ipfw add deny tcp from any to localhost ssh
можно использовать pfctl
.
OS X 10.7 "Lion", а затем использовать OpenBSD PF (Фильтр Пакетов). Псевдо-устройство под названием /dev/pf
позволяет инструментам пространства пользователя настраивать фильтр пакетов. Команда pfctl
обеспечивает большую часть функциональности.
для фильтрации порта 1234 в loopback интерфейсе можно использовать правило вида:
block drop quick on lo0 proto tcp from any to any port = 1234
эти правила блокируют весь входящий / исходящий трафик на lo0
для порта 1234 (quick
значит в этот контекст, что, если это правило совпадает, никакое дальнейшее правило не должно быть применено).
команда для загрузки правила в PF:
(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -nf -
команда pfctl -sr 2>/dev/null
перечисляет все текущие правила (и посылает довольно раздражающее сообщение об ошибке No ALTQ support in kernel ALTQ related functions disabled
to /dev/null
). The echo
добавляет правило выше к выходу, который передается в pfctl
. Вариант -n
означает не применять, просто отметьте.
если нет сообщения об ошибке (кроме вышеупомянутого No ALTQ support
сообщение и предупреждение pfctl: Use of -f option, could result in flushing of rules present in the main ruleset added by the system at startup
), вы можете применить правило:
(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -f - 2>/dev/null
эта команда отличается от предыдущей тем, что я удалил -n
. Обратите внимание, что может потребоваться добавить параметр -e
включить фильтр пакетов (спасибо комментарий,Кэйси):(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -e -f - 2>/dev/null
теперь вы можете перечислить правила, чтобы проверить, что он был добавлен правильно:
sudo pfctl -sr 2>/dev/null
(...)
block drop quick on lo0 proto tcp from any to any port = 1234
когда вы закончите, вы можете удалить правило:
либо загрузка исходного набора правил:
sudo pfctl -f /etc/pf.conf
или удаление правила аналогичным образом добавлено правило:
(sudo pfctl -sr 2>/dev/null | fgrep -v "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -f -
(я протестировал всю процедуру на OS X 10.8.2 "Mountain Lion" и работал безупречно.)
вы можете найти больше информации в этом превосходном введении: http://nomoa.com/bsd/gateway/pf/valid/pfctl.html.
ipfw
еще в OS X 10.7 и 10.8, но не приветствуется:
IPFW(8) BSD System Manager's Manual IPFW(8)
NAME
ipfw -- IP firewall and traffic shaper control program (DEPRECATED)
SYNOPSIS
(...)
DESCRIPTION
Note that use of this utility is DEPRECATED. Please use pfctl(8) instead.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]