Запретить доступ к порту с локального хоста на OSX

Я хочу протестировать резервную стратегию для моего memcached драйвера (в случае, если порт защищен брандмауэром). Как я могу запретить доступ к определенному порту, на 127.0.0.1?

9
задан Vlad Zloteanu
20.04.2023 2:11 Количество просмотров материала 2538
Распечатать страницу

2 ответа

пример для Mac OS X 10.6 (Snow Leopard)

запретить соединения с localhost, порт SSH (= 22, читать из /etc/services):

sudo ipfw add deny tcp from any to localhost ssh
1
отвечен Florenz Kley 2023-04-21 09:59

можно использовать 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

когда вы закончите, вы можете удалить правило:

  1. либо загрузка исходного набора правил:

    sudo pfctl -f /etc/pf.conf 
    
  2. или удаление правила аналогичным образом добавлено правило:

    (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.
17
отвечен jaume 2023-04-21 12:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх