4,723
回編集
差分
新しいページ: 'SIPでのFail2banは'''SIP-Fail2ban'''を参照してください。<br> ここでの解説はSIPとIAXを併用するようになっています。<br> <br> ==fail2ban== ...'
SIPでのFail2banは'''[[SIP-Fail2ban]]'''を参照してください。<br>
ここでの解説はSIPとIAXを併用するようになっています。<br>
<br>
==fail2ban==
ログファイルとiptablesを利用したファイアウォールの一種。Brute Forceアタックの対策に使いやすい。<br>
:http://www.fail2ban.org/
:http://sourceforge.net/projects/fail2ban/
==動作条件==
pythonとiptablesが必要。yum install python iptablesなどで入れておいて下さい。
==インストール==
まずSFからfail2banをダウンロードし、展開します。
tar jxvf fail2ban-0.8.4.tar.bz2
展開したディレクトリでインストールを実行します。
cd fail2ban-0.8.4
python ./setup.py
スタートアップ・スクリプトをコピーしておきます(CentOSなどRedHat系の場合の例)。
cp files/redhat-initd /etc/init.d/fail2ban install
==設定==
===Asteriskのログフォーマットを変更する===
Fail2banはそのままではAsteriskのログの日付を認識できないため、Asteriskのログフォーマットを変更します。<br>
/etc/asterisk/logger.confを編集し、日付のフォーマット変更を行います。<br>
[general]セクションにある
dateformat=%F %T
のコメントを外すか、もしこのエントリがなければ記述します。設定を変更したら、Asteriskを再起動するか、loggerモジュールのリロードを行って、変更を有効にします。これによりAsteriskのログの日付形式が以下のように変わりますので、確認してください。
[2010-12-30 09:25:25] NOTICE[17537] chan_sip.c:.....
===Asterisk用の定義ファイルを作る===
/etc/fail2ban/filter.d ディレクトリに asterisk-iax.conf という名前で以下のようなファイルを作ります。ここで指定したメッセージがBAN基準として使われるメッセージとなります。<br>
<br>
Asterisk 1.8系の場合
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf
[Definition]
#_daemon = asterisk
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = No registration for peer '.*' \(from <HOST>\)
Host <HOST> failed MD5 authentication
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
この部分に合致するメッセージが、ログファイルに現れたならばBAN基準になりますので注意して記述します。これ意外にも、引っかけたいメッセージがある場合にはそれも記述するとよいでしょう。<br>
'''1.6までのメッセージ募集中。編集してください。'''<br>
===BANのアクションを作成する===
ここではUDPの4569ポート、つまりIAXだけをBAN対象としたいためアクションをIAX用に作成します。 /etc/fail2ban/action.d で以下のようにしてアクションを作成します。<br>
まず
cp iptables-allports.conf iptables-iax.conf
を行って、全ポート用のアクションをコピーします。次に iptables-sip.conf を編集し、以下のようにBANとUNBANのエントリを修正します。
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionban = iptables -I fail2ban-<name> 1 -s <ip> -p udp --dport 4569 -j DROP
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionunban = iptables -D fail2ban-<name> -s <ip> -p udp --dport 4569 -j DROP
-p udp と --dport 5073 を actionban と actionunban に追記します。
===fail2banの設定ファイルを修正===
/etc/fail2ban にある jail.conf ファイルの最後に以下を追加します。
[asterisk-iax]
enabled = true
filter = asterisk-iax
action = iptables-sip[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.net]
logpath = /var/log/asterisk/messages
maxretry = 5
findtime = 600
bantime = 604800
*action
BAN処理のアクションを定義します。この例ではiptables-sipを実行します。その後、sendmail-whois で BANしたIPアドレスのwhois情報を dest= で指定された宛先に送ります。このとき使用されるメールのFrom:はfail2ban@exampleになりますので、適切なものに書き換えます。<br>
アクションの所で iptables-allports を指定するとSIPだけでなく、すべてのポートからの接続を蹴るように iptables に設定されます。『怪しい攻撃元』をブロックするという意味では、こちらのアクションの方がより安全と言えます。
*logpath
Asteriskのログファイルへのパスを記述します。
*maxretry
何回以上失敗したらBANするかの指定です。
*findtime
この時間内にmaxretryで指定した回数以上失敗するとBANします。上の例では600秒(10分)の間に、5回以上の失敗があった場合にはBANされます。
*bantime
ここで指定された期間がBAN期間になります。指定は秒数です。上の例では 60x60x24x7=604800、つまり1週間になります。
==fail2banを起動する==
/etc/init.d/fail2ban start
起動したら期待の動作をするかどうかを、よく確認してください。試しに故意に間違えたパスワードで5回以上ログインをしてみるなどです。<br>
起動に問題がなければ、fail2banが自動起動されるように登録しておけば良いでしょう。
chkconfig --add fail2ban
===起動の確認===
iptables -L -v で確認すると
61638 8222K fail2ban-ASTERISK all -- any any anywhere anywhere
や
Chain fail2ban-ASTERISK (1 references)
pkts bytes target prot opt in out source destination
61627 8216K RETURN all -- any any anywhere anywhere
のようなエントリがあるはずです。<br>
BANされるとメールが送られ
11 6424 DROP udp -- any any xxx.xxx.xxx.xx anywhere udp dpt:iax
のようなDROPのエントリが追加されているはずです。
[[Category:セキュリティ]]
ここでの解説はSIPとIAXを併用するようになっています。<br>
<br>
==fail2ban==
ログファイルとiptablesを利用したファイアウォールの一種。Brute Forceアタックの対策に使いやすい。<br>
:http://www.fail2ban.org/
:http://sourceforge.net/projects/fail2ban/
==動作条件==
pythonとiptablesが必要。yum install python iptablesなどで入れておいて下さい。
==インストール==
まずSFからfail2banをダウンロードし、展開します。
tar jxvf fail2ban-0.8.4.tar.bz2
展開したディレクトリでインストールを実行します。
cd fail2ban-0.8.4
python ./setup.py
スタートアップ・スクリプトをコピーしておきます(CentOSなどRedHat系の場合の例)。
cp files/redhat-initd /etc/init.d/fail2ban install
==設定==
===Asteriskのログフォーマットを変更する===
Fail2banはそのままではAsteriskのログの日付を認識できないため、Asteriskのログフォーマットを変更します。<br>
/etc/asterisk/logger.confを編集し、日付のフォーマット変更を行います。<br>
[general]セクションにある
dateformat=%F %T
のコメントを外すか、もしこのエントリがなければ記述します。設定を変更したら、Asteriskを再起動するか、loggerモジュールのリロードを行って、変更を有効にします。これによりAsteriskのログの日付形式が以下のように変わりますので、確認してください。
[2010-12-30 09:25:25] NOTICE[17537] chan_sip.c:.....
===Asterisk用の定義ファイルを作る===
/etc/fail2ban/filter.d ディレクトリに asterisk-iax.conf という名前で以下のようなファイルを作ります。ここで指定したメッセージがBAN基準として使われるメッセージとなります。<br>
<br>
Asterisk 1.8系の場合
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf
[Definition]
#_daemon = asterisk
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = No registration for peer '.*' \(from <HOST>\)
Host <HOST> failed MD5 authentication
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
この部分に合致するメッセージが、ログファイルに現れたならばBAN基準になりますので注意して記述します。これ意外にも、引っかけたいメッセージがある場合にはそれも記述するとよいでしょう。<br>
'''1.6までのメッセージ募集中。編集してください。'''<br>
===BANのアクションを作成する===
ここではUDPの4569ポート、つまりIAXだけをBAN対象としたいためアクションをIAX用に作成します。 /etc/fail2ban/action.d で以下のようにしてアクションを作成します。<br>
まず
cp iptables-allports.conf iptables-iax.conf
を行って、全ポート用のアクションをコピーします。次に iptables-sip.conf を編集し、以下のようにBANとUNBANのエントリを修正します。
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionban = iptables -I fail2ban-<name> 1 -s <ip> -p udp --dport 4569 -j DROP
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionunban = iptables -D fail2ban-<name> -s <ip> -p udp --dport 4569 -j DROP
-p udp と --dport 5073 を actionban と actionunban に追記します。
===fail2banの設定ファイルを修正===
/etc/fail2ban にある jail.conf ファイルの最後に以下を追加します。
[asterisk-iax]
enabled = true
filter = asterisk-iax
action = iptables-sip[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.net]
logpath = /var/log/asterisk/messages
maxretry = 5
findtime = 600
bantime = 604800
*action
BAN処理のアクションを定義します。この例ではiptables-sipを実行します。その後、sendmail-whois で BANしたIPアドレスのwhois情報を dest= で指定された宛先に送ります。このとき使用されるメールのFrom:はfail2ban@exampleになりますので、適切なものに書き換えます。<br>
アクションの所で iptables-allports を指定するとSIPだけでなく、すべてのポートからの接続を蹴るように iptables に設定されます。『怪しい攻撃元』をブロックするという意味では、こちらのアクションの方がより安全と言えます。
*logpath
Asteriskのログファイルへのパスを記述します。
*maxretry
何回以上失敗したらBANするかの指定です。
*findtime
この時間内にmaxretryで指定した回数以上失敗するとBANします。上の例では600秒(10分)の間に、5回以上の失敗があった場合にはBANされます。
*bantime
ここで指定された期間がBAN期間になります。指定は秒数です。上の例では 60x60x24x7=604800、つまり1週間になります。
==fail2banを起動する==
/etc/init.d/fail2ban start
起動したら期待の動作をするかどうかを、よく確認してください。試しに故意に間違えたパスワードで5回以上ログインをしてみるなどです。<br>
起動に問題がなければ、fail2banが自動起動されるように登録しておけば良いでしょう。
chkconfig --add fail2ban
===起動の確認===
iptables -L -v で確認すると
61638 8222K fail2ban-ASTERISK all -- any any anywhere anywhere
や
Chain fail2ban-ASTERISK (1 references)
pkts bytes target prot opt in out source destination
61627 8216K RETURN all -- any any anywhere anywhere
のようなエントリがあるはずです。<br>
BANされるとメールが送られ
11 6424 DROP udp -- any any xxx.xxx.xxx.xx anywhere udp dpt:iax
のようなDROPのエントリが追加されているはずです。
[[Category:セキュリティ]]