OS X 10.7 Lion (Server) に DenyHosts を設定して ssh のセキュリティを向上する。
サーバを外部に公開して ssh を有効にしていると、度々 ssh に対してアタックされるので軽くセキュリティ向上のために DenyHosts をインストールしました。これをインストールすることによって、何回かログインに失敗した host からのアクセスを制限します。
例えば、2回ログインに失敗したホストの IP を hosts.deny というブラックリストのファイルに記録し、hosts.deny に記録された IP からの接続を遮断するということができます。
インストール手順
- ダウンロードサイト DenyHosts にアクセスして、"Looking for the latest version? Download DenyHosts-2.6.tar.gz (42.7 kB)" から最新版をダウンロードします。
- ファイルを解凍し、わかりやすいところに DenyHosts-2.6 フォルダを保存します。
- ターミナルで DenyHosts-2.6 に移動します。(例:cd ~/Desktop/DenyHosts-2.6 )
- 更に次のコマンドを入力します。
sudo python setup.py install
DenyHosts のインストールは python が必要ですが、最近の Mac なら標準でインストールされていることでしょう。
これでインストールは完了しました。次にいろいろ設定ファイルを作成しましょう。いろいろめんどくさいので sudo su で設定しました。
- sudo su
Password: (管理者権限のパスワードを入力) - cd /usr/share/denyhosts/
- cp denyhosts.cfg-dist denyhosts.cfg
- vi denyhosts.cfg
- 1. i でインサート開始、下記の記述に変更。
- SECURE_LOG = /var/log/secure.log
- HOSTS_DENY = /etc/hosts.deny
- LOCK_FILE = /var/run/denyhosts.pid
- 2. esc でインサート終了
- 3. ZZ で vi 終了
- cp daemon-control-dist daemon-control
- vi daemon-control
- 1. i でインサート開始、下記の記述を変更。
- DENYHOSTS_BIN = "/usr/local/bin/denyhosts.py"
- DENYHOSTS_LOCK = "/var/run/denyhosts.pid"
- 2. esc でインサート終了
- 3. ZZ で vi 終了
- 拒否する/しないホストを記録するためのファイルを作成する。
sudo touch /etc/{hosts.deny,hosts.allow}
これで初期設定は完了。試しに起動してみる場合は、sudo /usr/share/denyhosts/daemon-control start で起動できる。
これをサーバ起動と共に動作するようにしたいので、起動スクリプトを作成する。めんどくさいので丸々コピーして CloudApp に保存しておく。
- 起動スクリプト (StartupItems)
- http://api.cld.me/2W3Y2r141q1I052a2c0v/download/DenyHosts.zip
DenyHosts.zip を解凍して、/Library/StartupItems/ にコピー - 起動スクリプト (LaunchDaemons)
- http://api.cld.me/1c3M471d2f241W0x1I2B/download/DenyHosts.plist
/Library/LaunchDaemons/ にコピー
アクセス権を修復する。
- cd /Library/StartupItems/
- sudo chmod -R 755 DenyHosts
- sudo chown -R root:wheel DenyHosts
- sudo vi /etc/hostconfig
/etc/hostconfig に DenyHosts=-YES- を追加する。 - cd /Library/LaunchDaemons/
- sudo chmod 755 DenyHosts.plist
- sudo chown root:wheel DenyHosts.plist
これでサーバを再起動してしばらく様子見。/var/log/denyhosts.log や /etc/hosts.deny をたまに確認して DenyHosts が動作しているか見るといいでしょう。hosts.deny に IP が記録されていたら動作しています。
hosts.deny が成長するとこんな感じになっていきます。→ http://cl.ly/25402t0U3t2j3b2e0i1J
これで少しは安心できる??