highlight.pack.js

2014年5月3日土曜日

Ubuntu で日本以外からのSSHアクセスを拒否する (GeoIP2 Python API ver.)

前の記事で紹介した方法は手軽なのですが、 実は MaxMind 社の古いAPIを使っているという、ちょっとだけ気になる点が存在します。

そこで、今度は最新のAPIを利用したスクリプトを使用+データーベースの自動更新をやってみたいと思います。

依存ライブラリのインストール

sudo pip install geoip2
で、python スクリプト geoip2 とその依存パッケージをインストールします。

チェック用スクリプトの配置

スクリプトを /opt/geossh/check に配置します。 ファイルの中身は以下のとおりです。

配置が終わったら、コマンドで実行権限を付与します。

sudo chmod +x /opt/geossh/check

データベースアップデートスクリプトの配置

データベースをアップデートするスクリプトを /opt/geossh/update に配置します。

その後実行権限を、以下のコマンドで与えます。

sudo chmod +x /opt/geossh/update

なお、これらのスクリプトは ts1さん のコードを参考に手直したものです。

データベースのダウンロード

先ほどのスクリプトを利用して、データベースをダウンロードしてきます。

sudo /opt/geossh/update

GeoIP.dat というファイルと、 GeoIP.timestamp というファイルが /opt/geossh 以下に作成されます。

データーベースを定期的にダウンロードするようにする

sudo crontab -e
で、crontab を編集します。以下の内容を追加してください。

これは、月の最初の火曜日にファイルの更新が行われるため、その時に自動でスクリプトを走らせるための設定になります。

/opt/geossh/check の動作確認

前の記事と同じ方法で動作確認を行ってください。

自分が普段使っているクライアントPCののグローバルIPでリターンコードが 1 になることは必ず確認して下さい。

hosts.deny からスクリプトを呼び出す

アクセス制限をかけるために、 /etc/hosts.deny に以下の内容を追加します。

sshd: ALL: aclexec /opt/geossh/check %a

以上で終了です。お疲れ様でした。

0 件のコメント:

コメントを投稿