カテゴリー
Linux

vsftpd でログインに複数回失敗したクライアントをIP制限する

20140915security
 vsftpdにしつこくアクセスしてくるクライアントを自動でIP制限するようにしてみました。

またawkでいきます

以前もこんなの作りました。

自動でmod_securityのルール作って不正アクセスを防ぐようにしてみた | A-tak.com

これと同じ要領で行ってみたいと思います。

 こんなスクリプトを作った。

#!/bin/bash
awk -F " " '/vsftpd.*rhost=/ {split($14,array,"=");print array[2]}' /var/log/secure | sort | uniq -c | awk '{if ($1>3) print "vsftpd : "$2}' > /etc/hosts.deny

 secureログのvsftpdのログイン失敗ログを引っ張ってhosts.denyに追加してIP制限(ドメインが取れた場合はドメイン制限)しています。

 sercureログはこんな感じ。

Sep 15 18:11:05 xxxx vsftpd[xxx]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=xxxx rhost=xxxxx  user=xxxx

 なにをやっているかというと…

  1. awk コマンドで secureログのvsftpd 〜 rhostの文字列がある行を抽出(もし、ログイン成功もsecureログに残る環境なら条件の変更が必要)
  2. スペースで区切って14個目に"rhost=xxx.xxx.xxx"という文字列が入っているので、"="で分割
  3. "uniq -c"で同じrhostをカウント
  4. カウントが3以上のIPを抽出して"vsftpd : xxx.xxx.xxx.xxx"として/etc/hosts.denyファイルを作成

hosts.denyは上書きします

 hosts.deny を上書きするという雑なやり方なので、既にいろいろアクセス制限している人は、そのままじゃ使えないので注意。

この記事を書いた人: A-tak

A-tak.com(えいたっく どっとこむ)の管理人。
Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。
A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。今年で18年目!

Twitter
Mastodon
Facebook