This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Sshguard
sshguard は侵入防止システムです。サーバーのログを精査して害意ある行動を検出し、危害を加えようとする接続元IPアドレスを拒絶するファイアーウォールを用います。sshguard は、C言語で書かれており、インタプリターは不要です。
動作の仕組み
sshguard は、一つないし複数のログファイルを継続追跡する簡単なデーモンです。他のデーモンが記録したログイン試行失敗のログを精査して、その接続を拒絶するようにシステムファイアーウォールを更新することで、更なる試行を阻止します。
sshguard は、その名称にも拘わらず、 SSH のログのみを精査するわけではありません。多くのメールシステムやいくらかの FTP システムにも対応しています。対応しているサービスの全リストは、sshguard.net ウェブサイト で公開されています。
インストール
Emerge
app-admin/sshguard をインストール:
root #
emerge --ask app-admin/sshguard
また、システムファイアーウォールを展開するために、 net-firewall/iptables もインストールします。なお本稿作成段階では、 sshguard は net-firewall/nftables には対応していません。
root #
emerge --ask net-firewall/iptables
iptables の利用と設定に関しての詳細は、 iptables の記事 も参照してください。
設定
ファイアーウォールの準備
When sshguard blocks any malicious users (by blocking their IP addresses), it will use the sshguard chain.
チェーンを用意し、新しい着信接続が検出された場合、それはまたトリガされるのを確認してください:
root #
iptables -N sshguard
root #
iptables -A INPUT -j sshguard
ログファイルの監視
ネイティブsshguard構成ファイルが存在しない - sshguardの基本的な考え方は、管理者がアプリケーションのオプションとして見るためにログファイル(複数可)に渡すことです。
On Gentoo, the options can be best configured in the /etc/sshguard.conf file:
/etc/sshguard.conf
Configuring sshguard to read /var/log/messages and /var/log/auth.log# Full path to backend executable (required, no default) BACKEND="/usr/libexec/sshg-fw-iptables" # Space-separated list of log files to monitor. (optional, no default) FILES="/var/log/messages /var/log/auth.log" # How many problematic attempts trigger a block THRESHOLD=10 # Blocks last at least 24 hours (60480 seconds) BLOCKTIME=60480 # Track IP addresses for 24 hours (60480 seconds) DETECTION_TIME=60480 # IPv6 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 128) IPV6_SUBNET=64 # IPv4 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 32) IPV4_SUBNET=24 # Full path to PID file (optional, no default) PID_FILE=/run/sshguard.pid
sshguardランタイムユーザーが、使用するログファイルにアクセス可能であることを確認してください。
Services
OpenRC
sshguardをデフォルトのランレベルに追加することでデフォルトで起動されます:
root #
rc-update add sshguard default
root #
rc-service sshguard start
Blacklisting hosts
With the blacklisting option after a number of abuses the IP address of the attacker or a IP subnet will be blocked permanently. The blacklist will be loaded at each startup and extended with new entries during operation. sshguard inserts a new address after it exceeded a threshold of abuses.
Blacklisted addresses are never scheduled to be released (allowed) again.
To enable blacklisting, create an appropriate directory and file:
root #
mkdir -p /var/lib/sshguard
root #
touch /var/lib/sshguard/blacklist.db
While defining a blacklist it is important to exclude trusted IP networks and hosts in a whitelist.
To enable whitelisting, create an appropriate directory and file:
root #
mkdir -p /etc/sshguard
root #
touch /etc/sshguard/whitelist
The whitelist has to include the loopback interface, and should have at least 1 IP trusted network f.e. 192.0.2.0/24.
/etc/sshguard/whitelist
Whitelisting trusted networks127.0.0.0/8 ::1/128 192.0.2.0/24
The 192.0.2.0/24 entry has to be adjusted to fit the own needs.
Add the BLACKLIST_FILE and WHITELIST_FILE file to the configuration:
/etc/conf.d/sshguard
Configuring sshguard to blacklist abusersBACKEND="/usr/libexec/sshg-fw-iptables" FILES="/var/log/auth.log" THRESHOLD=10 BLOCK_TIME=43200 DETECTION_TIME=604800 IPV4_SUBNET=24 IPV6_SUBNET=64 PID_FILE=/run/sshguard.pid # Add following lines BLACKLIST_FILE=10:/var/lib/sshguard/blacklist.db WHITELIST_FILE=/etc/sshguard/whitelist
Restart the sshguard daemon to have the changes take effect:
root #
/etc/init.d/sshguard restart
トラブルシューティング
File '/var/log/auth.log' vanished while adding!
起動時に、sshguardは、次のエラーを報告します:
Sep 23 03:39:11 foo.bar.com sshguard[64933]: File '/var/log/auth.log' vanished while adding!
ターゲット・ファイルがシステム上で利用できない場合、このようなエラーが(ファイルパス自体が異なる場合があります)が発生します。それが作成されていることを確認し、または監視のためにそれを追加しないようにsshguard構成を更新します。
On a syslog-ng system with OpenRC, the following addition to syslog-ng.conf can suffice:
/etc/syslog-ng/syslog-ng.conf
creating auth.log filelog { source(src); destination(messages); }; log { source(src); destination(console_all); }; destination authlog {file("/var/log/auth.log"); }; filter f_auth { facility(auth); }; filter f_authpriv { facility(auth, authpriv); }; log { source(src); filter(f_authpriv); destination(authlog); };
変更を有効にするために、設定を再ロード:
root #
rc-service syslog-ng reload
参考
- Iptables - An article on installing and configuring the iptables firewall on Gentoo.
外部の情報
sshguard documentationはさらに調整アプリケーションに必要なすべての情報を提供しています。