前の記事で紹介した方法は手軽なのですが、 実は 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 件のコメント:
コメントを投稿