広告
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
なにをやっているかというと…
- awk コマンドで secureログのvsftpd 〜 rhostの文字列がある行を抽出(もし、ログイン成功もsecureログに残る環境なら条件の変更が必要)
- スペースで区切って14個目に”rhost=xxx.xxx.xxx”という文字列が入っているので、”=”で分割
- “uniq -c”で同じrhostをカウント
- カウントが3以上のIPを抽出して”vsftpd : xxx.xxx.xxx.xxx”として/etc/hosts.denyファイルを作成
hosts.denyは上書きします
hosts.deny を上書きするという雑なやり方なので、既にいろいろアクセス制限している人は、そのままじゃ使えないので注意。
広告