« 2014.06.12 | トップページ | 2014.06.13 »

2014年6月13日 (金)

OS X 10.9 (Maverics) で firewall の設定

OS X 10.9 って、 /etc/hosts.allow, /etc/hosts.deny がつかえない。設定しても、無視される。調べてみたら TCP wrapper が入ってない!なので、外部から ssh ログインを許可すると、途端にブルートフォースアタックの標的になってしまいます。これ、困っている人はいないの?とかおもいながら調べてみたましたが、ssh の接続元を制限する設定方法が、ほとんどどこにも書かれておらず、難儀しました。

いろいろ調べてみたら、 10.9 では ipfw は使えるらしく、お試しの設定をしてみたら、ちゃんと設定通りになりました。ただ、ipfw って、DNSの逆引きをしないので、イマイチ気に入らんな- という感じです。 pf とか入れれればいのかな…とか

以下、firewall を設定するファイルです。これ、OS起動時に読ませるにはどうすればいいのだろうか…

なお、以下のスクリプトでは、IPアドレスとして、絶対にありえない値を設定していますが、これは、意図的にそのようにしています。ご利用の際は、御自身で、適切なものに書き換えて下さい。あと、コメントアウトされているものもあるので、意味を理解してからコメントアウトを外して下さい。

### 基本設定
IPFW="/sbin/ipfw" # ipfw のフルパス
ALLOW="allow"
ALLOWLOG="allow log" # allow 指定時の文字列.log を付け足すことでロギング
DENY="deny"
DENYLOG="deny log" # deny 指定時の文字列.log を付け足すことでロギング

ETIF="en0"
BRDG="bridge100"

MYHOST="333.444.555.666"
MYNET="333.444.555.128/25" #当ホストと近いホストのIPアドレス領域
SPECIAL="666.777.888.999" #自分が安全にログインできるホスト(自分用踏み台)

### まずは初期定義を初期化
${IPFW} -q -f flush

### ICMP 用ルール
${IPFW} 100 add ${ALLOW} icmp from any to any

### ループバックパケットの許可
${IPFW} 200 add ${ALLOW} ip from any to any via lo0

### 内側のネットワークからの通信は制限無し
${IPFW} 400 add ${ALLOW} ip from ${MYNET} to any via ${ETIF}

### アドレス詐称パケットの拒否
${IPFW} 500 add ${DENYLOG} ip from ${MYNET} to any recv ${ETIF}
${IPFW} 510 add ${DENYLOG} ip from 127.0.0.1 to any recv ${ETIF}
${IPFW} 520 add ${DENYLOG} ip from any to 127.0.0.0/8
${IPFW} 530 add ${DENYLOG} ip from 127.0.0.0/8 to any

### アドレス詐称パケットの拒否
${IPFW} 520 add ${DENY} ip from any to 127.0.0.0/8
${IPFW} 530 add ${DENY} ip from 127.0.0.0/8 to any

### NetBIOS を破棄
${IPFW} 600 add ${DENY} tcp from any 137-139,445 to any
${IPFW} 610 add ${DENY} udp from any 137-139,445 to any
${IPFW} 620 add ${DENY} tcp from any to any 137-139,445
${IPFW} 630 add ${DENY} udp from any to any 137-139,445

### パケットが既に確立されているパケットを許可
${IPFW} 1000 add ${ALLOW} tcp from any to any established

### ${ETIF} を通過する内部から外側へのすべてのパケット通過の許可
${IPFW} 1010 add ${ALLOW} ip from any to any out via ${ETIF}

### 外部 DNS 参照時の要求と返答を許可
${IPFW} 1300 add ${ALLOW} udp from any to any 53
${IPFW} 1310 add ${ALLOW} udp from any 53 to any

### 外からの HTTP を許可
${IPFW} 1400 add ${ALLOW} tcp from any to ${MYHOST} 80 setup

### 外からの HTTPS を許可
# ${IPFW} 1410 add ${ALLOW} tcp from any to ${MYHOST} 443 setup

### 外からの SMTP を許可
# ${IPFW} 1500 add ${ALLOW} tcp from any to ${MYHOST} 25 setup

### NTP 返信を許可
${IPFW} 1600 add ${ALLOW} udp from any 123 to any

### SNMP 返信を許可
# ${IPFW} 1700 add ${ALLOW} udp from any 161 to any

### 外からの POP3 を許可
# ${IPFW} 1800 add ${ALLOW} tcp from any to ${MYHOST} 110 setup

### special からの ssh を許可
${IPFW} 2100 add ${ALLOW} tcp from ${SPECIAL} to ${MYHOST} 22 setup

### インターネット共有からの通信を許可
${IPFW} 3000 add ${ALLOW} tcp from any to any via ${BRDG}

### それ以外は全て拒否
${IPFW} 9900 add ${DENYLOG} tcp from any to any

### keep-state を使った、LAN から外部への UDP 通信の許可
${IPFW} 20000 add ${ALLOW} udp from any to any keep-state out via ${ETIF}
${IPFW} 20010 add check-state

### それ以外の UDP パケットの禁止
${IPFW} 20020 add ${DENY} udp from any to any

付記

その後、外部からの攻撃を監視するログを作ってみたところ、約20時間で157件の攻撃がありました。(すべて firewall で接続拒否)約半数は port 22 なので sshd でした。その後が 8080, 23, 5900, 3306, 9080, 443, 3389, 25, 21320でした。 DB 系ですね。

|

« 2014.06.12 | トップページ | 2014.06.13 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/140645/59809366

この記事へのトラックバック一覧です: OS X 10.9 (Maverics) で firewall の設定:

« 2014.06.12 | トップページ | 2014.06.13 »