Sshguard

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Sshguard and the translation is 45% complete.

Outdated translations are marked like this.
Other languages:
English • ‎español • ‎italiano • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

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:

FILE /etc/sshguard.confConfiguring 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.

FILE /etc/sshguard/whitelistWhitelisting trusted networks
127.0.0.0/8
::1/128
192.0.2.0/24
Note
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:

FILE /etc/conf.d/sshguardConfiguring sshguard to blacklist abusers
BACKEND="/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は、次のエラーを報告します:

CODE Error message when trying to add a monitor for /var/log/auth.log
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:

FILE /etc/syslog-ng/syslog-ng.confcreating auth.log file
log { 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はさらに調整アプリケーションに必要なすべての情報を提供しています。