Help us understand the problem. What is going on with this article?

公衆無線 LAN に接続した Mac のセキュリティを高める

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

共有フォルダくらいなら都度無効化するでもいいかもしれませんが、例えば Dropbox の LAN 同期が有効になっているとか、1Password を使っているとかすると知らないうちにポートが開いています。試しに 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 proto udp from self to port domain keep state

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

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

# in 方向のパケットは全てブロック
block in log 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 などを実行してみましょう。ダラダラとログが流れるはずです。

zakkied
https://twitter.com/zakkied
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした