Fail2Banでアクセス制限
Fail2Banでアクセス制限
土, 9月 23, 2017
やりたいこと
- sshでの総当たり攻撃を拒否
- ブラックリストの自動更新
前提
- サーバーの
/var/log/auth.log
を見るとsshアクセスを試みている形跡がある - 不正アクセスはされていないようだが,制限しておいた方が良さそうな気がする
- ある程度のセキュリティ対策は既におこなっている
- rootログイン不可
- パスワード認証不可
- 認証の試行回数を制限
- ファイアウォール
ログの確認は以下のようにおこなう. 適宜フィルタリングしてどんなアクセスがあるか確認すれば良い.
//ログ確認
$ cat /var/log/auth.log | grep sshd
// 存在しないユーザーへのアクセス
$ cat /var/log/auth.log | grep sshd.\*Invalid
Fail2Ban
Fail2Banはログの解析により総当たり攻撃を検知し,IPアドレスに基づいて一定時間アクセス制限をおこなう.
導入
$ sudo aptitude install fail2ban
設定
/etc/fail2ban/jail.conf
は直接編集することが推奨されていないようなので,
/etc/fail2ban/jail.local
に設定を書き込む.
$ sudo emacs /etc/fail2ban/jail.local
jail.local
[INCLUDES]
before = paths-debian.conf
[DEFAULT]
ignoreip = 127.0.0.1/8
ignorecommand =
bantime = 600
findtime = 600
maxretry = 6
backend = auto
usedns = warn
logencoding = auto
enabled = false
filter = %(__name__)s
# Mail Settings
destemail = xxx@yyy.com
sendername = Fail2Ban
mta = mail
# Firewall Defaults
protocol = tcp
chain = INPUT
port = 0:65535
banaction = iptables-multiport
# Our Banning Action
# ban & send an e-mail with whois report and relevant log lines
# to the destemail.
action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
# Choose default action.
action = %(action_mwl)s
#
# JAILS
#
#
# SSH servers
#
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.*
maxretry = 6
[sshd-ddos]
enabled = true
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.*
maxretry = 6
bantime = -1
は永久ban.
起動
設定を変更した後は再起動する.
$ sudo service fail2ban start
// 再起動
$ sudo service fail2ban restart
確認
$ sudo fail2ban-client status
$ sudo fail2ban-client status sshd
ブラックリスト
GitHubレポジトリmitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banningから設定ファイルをダウンロードする.
// /etc/fail2ban/filter.d/blacklist.conf の作成
$ cd /etc/fail2ban/filter.d
$ sudo wget https://raw.githubusercontent.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning/master/filter.d/blacklist.conf -O blacklist.conf
// /etc/fail2ban/action.d/blacklist.conf の作成
$ cd /etc/fail2ban/action.d
$ sudo wget https://raw.githubusercontent.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning/master/action.d/blacklist.conf -O blacklist.conf
/etc/fail2ban/jail.local
の末尾へ追記する.
jail.local
[blacklist]
enabled = true
logpath = /var/log/fail2ban.*
filter = blacklist
banaction = blacklist
bantime = 31536000 ; 1 year
findtime = 31536000 ; 1 year
maxretry = 10
blacklistに登録されたipが列挙されるファイル/etc/fail2ban/ip.blacklist
を作成する.
sudo touch /etc/fail2ban/ip.blacklist
sudo chmod 755 /etc/fail2ban/ip.blacklist
その後,再起動する.
今後の課題
- しばらくモニタリングして結果を確認
- 不正アクセス元のIPがブラックリストへ追加されているか
- 総当たり攻撃が減っているか
参考
最終更新日