web-dev-qa-db-ja.com

OSXのローカルホストからポートへのアクセスを拒否する

Memcachedドライバーのフォールバック戦略をテストしたい(ポートがファイアウォールで保護されている場合)。 127.0.0.1で特定のポートへのアクセスを拒否するにはどうすればよいですか?

5
Vlad Zloteanu

Mac OS X 10.6(Snow Leopard)の例

ローカルホストへの接続を拒否するには、ポートSSH(= 22、/etc/servicesから読み取る):

Sudo ipfw add deny tcp from any to localhost ssh
1
Florenz Kley

pfctlを使用できます。

OS X 10.7 "Lion"以降では、 OpenBSD PF (パケットフィルター)を使用します。 /dev/pfと呼ばれる疑似デバイスを使用すると、ユーザースペースツールでパケットフィルターを構成できます。コマンドpfctlは、ほとんどの機能を提供します。

ループバックインターフェイスでポート1234をフィルタリングするには、次のようなルールを使用できます。

block drop quick on lo0 proto tcp from any to any port = 1234

このルールは、ポート1234のlo0上のすべてのインバウンド/アウトバウンドトラフィックをブロックします(このコンテキストでは、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/dev/nullに送信します)。 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「MountainLion」で手順全体をテストし、問題なく動作しました。)

この優れた紹介で詳細を見つけることができます: http://nomoa.com/bsd/gateway/pf/valid/pfctl.html

ipfwはOSX 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.
18
jaume