maxlogins

Integrated Technical Solutions で配布されている、ssh に対する brute force attack に対抗するためのツール。perl で記述されている。v2.0 では時限制御機能も搭載した。ここでは v2.0 について述べる。

インストール

ITS のページからリンクをたどって maxlogins.txt という perl スクリプト本体をダウンロードする。
ダウンロードしたファイルを perl のスクリプトファイルだとわかりやすいように、名前の変更を行う。

# mv maxlogins.txt maxlogins.pl

次に&attachref(maxlogins.patch,,この patch ファイル);をダウンロードして、適用する。

# patch < maxlogins.patch

これはそのままでは対応していない以下の警告を検知するためである*1

sshd[234]: Invalid user test from 10.0.0.1
sshd[345]: Did not receive identification string from 10.0.0.1

ファイルの所有権を変更し、実行属性をつけたら、/usr/local/bin やそのほかの好きなところに移動する。

# chown root:wheel maxlogins.pl
# chmod 750 maxlogins.pl
# mv maxlogins.pl /usr/local/bin/

/etc/syslog.conf に以下を追加する。コマンドラインオプションを使用するならば、一緒に記述する。

auth.info;authpriv.info        |exec /usr/local/bin/maxlogins.pl

/etc/hosts.allow の先頭に以下を追加する。このとき必ず ALL : ALL : allow という行よりも上に記述する*2

sshd : /var/log/whiteist : allow
sshd : /var/log/maxlogins : deny

/var/log/whitelist 内に常に接続を許可する IP やホスト名を記述する*3。仮に以下のようにした。

127.0.0.1
.example.net

最後にこれまでの変更を反映させるために syslogd を再起動する。

# /etc/rc.d/syslogd restart

コマンドラインオプション


*1 パスワードによる認証を許可していない場合、"sshd[00000]: Failed password for root from 10.0.0.1 port 55555 test" といった警告がログには残らない。
*2 hosts.allow は 1 行目から順に適用されるので、"ALL : ALL : allow" より下に書くと、接続が拒否されない。
*3 記述の仕方は hosts_access(5) を参照

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-05-11 (水) 15:25:24