LoginSignup
175
155

More than 1 year has passed since last update.

フリー Wi-Fi で Mac をよりセキュアに使う

Last updated at Posted at 2015-08-20

スタバやホテルなどで WiFi を使うと、たまに共有フォルダが見えていたり、しかも見たらダメそうなファイルが置かれていたりします。

共有フォルダくらいなら都度無効化すればいいかもしれませんが、意外とたくさんのサービスが有効になっています。試しに netstat -an | grep LISTEN してみると、意外とポートがオープンになっていると思います。

これらをしらみつぶしに無効化していくのは大変ですし、認証が必要とはいえオープンになっているのはあまり気持ちのいいものではありません。

ところで Mac OS X には OpenBSD 由来の pf という高機能なファイアウォールが搭載されています。これを使って Mac に対する攻撃(いたずら)を防ぐ設定をしてみました。

<追記>
WEP などの脆弱性や、AP での盗聴を防ぐため、公衆無線 LAN では VPN は必須であると言われます。しかし VPN を設定していても AP 内の端末同士の通信は無防備なので、適切にコントロールする必要があります。
</追記>

どのようなルールにするのか

おおまかに以下のようなルールにします。

  • インターネットへの通信は許可
  • WiFi AP にぶら下がっている他の端末からの通信は拒否
  • WiFi AP にぶら下がっている他の端末への通信も拒否

pf.conf

/etc/pf.conf の末尾に以下を追記します。

# loopback インターフェースで処理するものは常に許可
set skip on lo0

# DHCP
pass in quick proto udp from port bootps to port bootpc

# DNS
pass quick proto {tcp,udp} from self to port domain keep state

# WiFi 他端末への通信を拒否
block out quick log on en0 from self to en0:network

# 自発のパケットは許可。
# keep state で戻りパケットの許可ルールを動的に作成
pass out all keep state

# in 方向のパケットは全てブロック
block in all

pfctl

反映などの操作は pfctl(1) から行います

  • pfctl -f /etc/pf.conf: ルールの反映
  • pfctl -nf /etc/pf.conf: syntax チェック
  • pfctl -d: pf を無効化する
  • pfctl -e: pf を有効化する
  • pfctl -sr: 反映されているルールの確認

確認

pf.conf に log と記載したルールは tcpdump でそのログを読むことができます。

# ifconfig pflog0 create          # 最初の一回だけ
# tcpdump -v -n -e -ttt -i pflog0

この状態で他の wifi 端末へ/から ping などを実行してみましょう。ダラダラとログが流れるはずです。

175
155
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
175
155