macos Catalina - межсетевой экран Packet Filter (pf) - как ограничить www access указанным c IP-адресом в локальной сети? - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь использовать pf межсетевой экран на Macos Catalina 10.15.3, чтобы разрешить доступ www (80,443) для указанного c локального IP-адреса в моей домашней сети. Этот локальный IP-адрес будет запрашивать веб-страницы у экземпляра nginx. Если я отключу брандмауэр macos в настройках => Безопасность и конфиденциальность, тогда www is успешно и nginx отображаются. Однако я не могу получить запрос, когда включен брандмауэр.

После этого я попытался выяснить, как настроить брандмауэр pf для пропуска запроса. Мой /etc/pf.conf в настоящее время выглядит следующим образом:

#
# com.apple anchor point
#
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

#
# only allow www traffic on wifi interface from a specific LAN ip address
#
www_services = "{ http, https }"
pass quick inet proto tcp from <the LAN IP address> to any port $www_services keep state
#int_if = "en0"
#table <allowed> { <the LAN IP address> } persist
#block in quick from urpf-failed
#block return in quick on $int_if proto tcp from !<allowed> to $int_if port 80

Кто-нибудь может помочь?

Я включаю брандмауэр pf с помощью pfctl -E и отключаю с помощью pfctl -X <token>

Интересно, что если я настрою nginx для прослушивания на другом порту, отличном от порта 80, а затем добавлю nginx в список разрешенных приложений в брандмауэре Security & Privacy, запрос будет разрешен через.

Однако я подозреваю, что это разрешено для всех IP-адресов в локальной сети, и все порты nginx прослушивает ?? Я пытаюсь настроить межсетевой экран фильтра пакетов (pf) так, чтобы IP-адрес и порт были ограничены. Может быть, порт 80 является root зарезервированными портами, следовательно, причина, по которой он был заблокирован ???

Как заставить брандмауэр pf пропустить только указанный c IP-адрес для запроса http для указанного * Порт 1028 *, например 8080?

...