BSD界隈四方山話
第113回 blacklistd(8)を使ってsshd DoS攻撃を防止する方法
blacklistd(8)でsshd DoS攻撃を防止する方法
FreeBSD 11.
FreeBSD 11.
まず,
リスト /etc/
# sshd
sshd_enable="YES"
sshd_flags="-o UseBlacklist=yes"
# blacklistd
blacklistd_enable="YES"
# firewall
firewall_enable="YES"
firewall_type="OPEN"
sshdはデフォルトの設定ではblacklistd(8)に対応していませんので,
このままではblacklistd(8)がipfw(8)を使わないので,
図 ipfw(8)が使われるようにファイルを作成する
# touch /etc/ipfw-blacklist.rc
この状態でシステムを再起動すると,
図 blacklistd(8)に対応したsshd(8)
# ps auxww | grep sshd root 661 0.0 0.7 57812 6940 - Is 17:19 0:00.00 /usr/sbin/sshd -o UseBlacklist=yes #
ipfw(8)が有効になっているので,
図 ipfw(8) OPENで設定されているデフォルトのフィルタリングルール
# ipfw list 00100 allow ip from any to any via lo0 00200 deny ip from any to 127.0.0.0/8 00300 deny ip from 127.0.0.0/8 to any 00400 deny ip from any to ::1 00500 deny ip from ::1 to any 00600 allow ipv6-icmp from :: to ff02::/16 00700 allow ipv6-icmp from fe80::/10 to fe80::/10 00800 allow ipv6-icmp from fe80::/10 to ff02::/16 00900 allow ipv6-icmp from any to any ip6 icmp6types 1 01000 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136 65000 allow ip from any to any 65535 deny ip from any to any #
blacklistd(8)も次のように動作していることを確認できます。
図 blacklistd(8)の動作も確認
# ps auxww | grep blacklistd root 712 0.0 0.3 14772 2572 - Ss 17:19 0:00.01 /usr/sbin/blacklistd #
blacklistd(8)の保持しているルールはblacklistclt(8)コマンドで次のように確認できます。システムを再起動した段階では次のようになんのルールも入っているはずです。
図 まだ何も検出していない状態のblacklistd(8)
# blacklistctl dump -a address/ma:port id nfail last access #
blacklistd(8)の設定は/etc/
リスト blacklistd(8)の設定ファイルである/etc/
# $FreeBSD: releng/11.1/etc/blacklistd.conf 301226 2016-06-02 19:06:04Z lidl $
#
# Blacklist rule
# adr/mask:porttype 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でログインを試み,
図 blacklistd(8)経由でアクセスがブロックされた状態
$ 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: Permission denied (publickey,keyboard-interactive). $ ssh 192.168.185.50
この状態でipfw(8)のルールをチェックすると,
図 ipfw(8)のルールにブロックが追加されたことを確認
# ipfw list 00100 allow ip from any to any via lo0 00200 deny ip from any to 127.0.0.0/8 00300 deny ip from 127.0.0.0/8 to any 00400 deny ip from any to ::1 00500 deny ip from ::1 to any 00600 allow ipv6-icmp from :: to ff02::/16 00700 allow ipv6-icmp from fe80::/10 to fe80::/10 00800 allow ipv6-icmp from fe80::/10 to ff02::/16 00900 allow ipv6-icmp from any to any ip6 icmp6types 1 01000 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136 02022 deny tcp from table(port22) to any dst-port 22 ← ここに追加されている 65000 allow ip from any to any 65535 deny ip from any to any #
blacklistctl(8)コマンドでブロック情報を確認すると,
図 blacklistd(8)経由でブロックルールが追加されたことを確認
# blacklistctl dump -a address/ma:port id nfail last access 192.168.185.1/32:22 OK 3/3 2017/08/23 18:27:01 #
blacklistctl(8)コマンドは-rを指定するとルールが適用される残り時間を表示させることもできます。次のような感じです。
図 blacklistctl(8)はルールが適用される残り時間を表示させることもできる
# blacklistctl dump -ar address/ma:port id nfail remaining time 192.168.185.1/32:22 OK 3/3 23h58m22s #
blacklistd(8)はデフォルトの設定だと/var/
リスト システムを再起動したらブロックをクリア
blacklistd_flags="-f"
リスト システムを再起動したら再度ルールを適用してブロックを開始
blacklistd_flags="-r"
blacklistd.
ここまでの設定でだいたい一通り基本的な操作はできるようになります。blacklistd(8)はlibblacklist APIを使うことで汎用的に利用できますので,
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に関して発表を行いたい場合,
FreeBSD, blacklistd(8), 設定, サーバ管理, 勉強会
バックナンバー
BSD界隈四方山話
- 第142回 FreeBSD Meltdown対策機能による性能影響ベンチマーク
- 第141回 FreeBSD 11.2は6月リリース
- 第140回 AsiaBSDCon 2018
- 第139回 OpenBSD,Meltdownバイナリパッチ提供開始
- 第138回 OpenBSD,Meltdown対策機能をマージ
- 第137回 FreeBSDのMeltdown/Spectre対策,11系にマージ
- 第136回 FreeBSDのMeltdown/Spectre対策
- 第135回 NetBSDにおけるMeltdown/Spectre対策状況
- 第134回 Intelマイクロコードアップデート適用の一時中止を
- 第133回 OpenBSD on iTWire