401(認証失敗)や403(禁止領域へのアクセス)は通常好ましくはないので、攻撃とみなしてIPを収集しよう。
というわけで標準状態のアクセスログであれば以下のコマンドでIPごとの出現回数を取得できる。
awk '{ print $9,$1}' access_log | grep 401 | sort | uniq -c | sort -r
パイプを何回も重ねているので解説すると、まずawkでステータスコードとアクセス元IPを取得して、401(絞りたいステータスコード)でgrepし、いったんソートする。
uniqは重複行除去命令だが、ソートされていなければならない。-cオプションで重複行の件数を出せる。その後重複件数の多い順(-rが降順)で表示する。
定期的に不正アクセスをチェックしよう。