Во-первых, я активно использовал pf в OpenBSD, поэтому хорошо знаю его набор правил. Хотя я больше привык к более свежим версиям.
Однако я хотел бы знать, есть ли более простой способ регулировать сетевой доступ к launchd или, точнее, к afp.
Я попытался поместить ALL: ALL (или launchd: ALL и другие комбинации) в /etc/hosts.deny, но я не думаю, что launchd вообще использует эти файлы. Может ли кто-нибудь подтвердить это? hosts_options(5) показывает расширения, сделанные для него, возможно, Apple, но я не могу понять, как перезагрузить launchd для использования этих файлов.
Мое решение прямо сейчас состоит в том, чтобы заблокировать все подключения к порту 548, а затем разрешить только мои домашние компьютеры. Для этого я изменил /etc/pf.conf следующим образом, добавив последнюю строку.
#
# Default PF configuration file.
#
# This file contains the main ruleset, which gets automatically loaded
# at startup. PF will not be automatically enabled, however. Instead,
# each component which utilizes PF is responsible for enabling and disabling
# PF via -E and -X as documented in pfctl(8). That will ensure that PF
# is disabled only when the last enable reference is released.
#
# Care must be taken to ensure that the main ruleset does not get flushed,
# as the nested anchors rely on the anchor point defined here.
#
# See pf.conf(5) for syntax.
#
#
# com.apple anchor point
#
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
include "/etc/pf.userrules"
И в файле /etc/pf.userrules, который является моим собственным творением, он может быть перезаписан при следующем обновлении Apple.
block in inet proto tcp from any to port 548
pass in inet proto tcp from { 10.10.10.11, 10.10.10.12 } to port 548
Это работает, но я хотел бы использовать файлы доступа к хостам.
launchd
не использует libwrap
, как показано командой:
nm -a /sbin/launchd | grep hosts
Тот факт, что эта команда ничего не выводит, означает, что launchd
она не использует никакой точки входа в libwrap
библиотеке TCP-оболочки.
Этот ответ был проверен Snow Leopard
и Lion
.
Например lion
, libwrap
используется by sshd
, а не telnetd
nor launchd
:
% nm -a /usr/sbin/sshd | хосты grep U _hosts_access % nm -a /usr/libexec/telnetd | хосты grep %
Библиотеки libwrap
на горном льве нет.