blacklistd(8)でsshd DoS攻撃を防止する方法 pf編
前回はFreeBSD 11.
前回はファイアウォールにipfw(4)を使う方法を紹介しました。今回はファイアウォールにpf(4)を使う方法を紹介します。pf(4)はOpenBSD由来のファイアウォール機能です。FreeBSDネイティブなファイアウォール機能ではありませんが、
まず、
# sshd
sshd_enable="YES"
sshd_flags="-o UseBlacklist=yes"
# blacklistd
blacklistd_enable="YES"
blacklistd_flags="-f"
#blacklistd_flags="-r"
# firewall - pf
pf_enable="YES"
sshdはデフォルトの設定ではblacklistd(8)に対応していませんので、
blacklistd(8)がpf(4)を使うように/etc/
ext_if=インターフェース名
anchor "blacklistd/*" in on $ext_if
この状態でシステムを再起動すると、
# ps auxww | grep sshd root 650 0.0 0.7 57812 6940 - Is 14:14 0:00.00 /usr/sbin/sshd -o UseBlacklist=yes #
pf(4)が有効になっているので、
# pfctl -sr anchor "blacklistd/*" in on インターフェース名 all # pfctl -sr -a blacklistd/22 #
blacklistd(8)も次のように動作していることを確認できます。
# ps auxww | grep blacklistd root 703 0.0 0.3 14772 2576 - Ss 14:14 0:00.01 /usr/sbin/blacklistd -f #
blacklistd(8)の保持しているルールはblacklistclt(8)コマンドで次のように確認できます。システムを再起動した段階では次のようになんのルールも入っているはずです。
# blacklistctl dump -a address/ma:port id nfail last access #
blacklistd(8)の設定は/etc/
# $FreeBSD: releng/11.1/etc/blacklistd.conf 301226 2016-06-02 19:06:04Z lidl $
#
# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h
ftp stream * * * 3 24h
smtp stream * * * 3 24h
submission stream * * * 3 24h
#6161 stream tcp6 christos * 2 10m
* * * * * 3 60
# adr/mask:port type proto owner name nfail disable
[remote]
#129.168.0.0/16 * * * = * *
#6161 = = = =/24 = =
#* stream tcp * = = =
ほかのホストからsshでログインを試み、
$ ssh 192.168.185.50 Password for daichi@virt.ongs.co.jp: Password for daichi@virt.ongs.co.jp: Password for daichi@virt.ongs.co.jp: ← 3回目の失敗 Permission denied (publickey,keyboard-interactive). $ ssh 192.168.185.50 ↓ 接続できずにタイムアウト ssh: connect to host 192.168.185.50 port 22: Operation timed out $
この状態でpf(4)のルールをチェックすると、
# pfctl -sr anchor "blacklistd/*" in on インターフェース名 all # pfctl -sr -a blacklistd/22 ↓ 新しく追加されたルール block drop in quick proto tcp fromto any port = ssh #
blacklistctl(8)コマンドでブロック情報を確認すると、
# blacklistctl dump -a address/ma:port id nfail last access 192.168.185.1/32:22 OK 3/3 2017/09/06 15:32:17 #
blacklistd(8)はデフォルトの設定だと/var/
このようにblacklistd(8)とpf(4)を使うと自動的にアクセスをブロックするといった設定を実現できます。blacklistd(8)の使い方に関して下記勉強会で詳しい内容を取り上げます。ご興味ある方は勉強会の参加を検討してみてください。
勉強会
10月4日(水)19:00~ 第66回 FreeBSD勉強会~vBSD 2017とEuroBSDCon 2017から旬な技術をご報告! - ヴァル研究所 セミナールーム
9月に米国バージニア州で開催されるvBSDcon 2017とフランスで開催されるEuroBSDCon 2017から、
本勉強会への参加者には抽選か勝ち抜きかデーモンTシャツなどのグッズをお渡しします。ふるってご参加ください。
参加登録はこちらから。
10月26日(木)19:00~第67回 FreeBSD勉強会~blacklistd(8)でsshd DoS攻撃を防止する方法 基礎から応用まで - ドワンゴ セミナールーム
FreeBSD 11.
FreeBSD 11.
blacklistd(8)と類似した機能を提供するソフトウェアにはsshguard、
blacklistd(8)はライブラリとしてlibblacklistを提供しているため、
今回の勉強会ではblacklistd(8)がどのように動作しているのか紹介するとともに、
参加登録はこちらから。
FreeBSD勉強会 発表者募集
FreeBSD勉強会では発表者を募集しています。FreeBSDに関して発表を行いたい場合、