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 系ですね。
| 固定リンク
この記事へのコメントは終了しました。
コメント