Запущен контроль доступа к сети в Mac OS Lion

Во-первых, я активно использовал 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

Это работает, но я хотел бы использовать файлы доступа к хостам.

Ответы (1)

launchdне использует libwrap, как показано командой:

nm -a /sbin/launchd | grep hosts

Тот факт, что эта команда ничего не выводит, означает, что launchdона не использует никакой точки входа в libwrapбиблиотеке TCP-оболочки.

Этот ответ был проверен Snow Leopardи Lion.

Например lion, libwrapиспользуется by sshd, а не telnetdnor launchd:

% nm -a /usr/sbin/sshd | хосты grep
                 U _hosts_access
% nm -a /usr/libexec/telnetd | хосты grep
%

Библиотеки libwrapна горном льве нет.