Fail2Banがシステムで大量のメモリ(1.2 GB)を使用しています。それを減らす方法を説明するいくつかの記事があります。以下はDebianの例です。
/etc/default/fail2ban
ファイルに追加します。最後の行に(ファイルに)追加します。
ulimit -s 256
残念ながら、CentOS 7にはそのようなファイルやディレクトリはありません。これを私のシステムに適用する方法は?
いくつかのヒントの後、Fail2BanのSystemdファイルは
[Unit]
Description=Fail2ban Service
[Service]
Type=forking
ExecStart=/usr/bin/fail2ban-client -x start
ExecStop=/usr/bin/fail2ban-client stop
ExecReload=/usr/bin/fail2ban-client reload
PIDFile=/var/run/fail2ban/fail2ban.pid
Restart=always
LimitSTACK=256`
残念ながら、結果はまだ1251888 KBです。
解決策は、/ etc/init.d/fail2banを編集することでした。
これは開始スクリプトです:
start() {
echo -n $"Starting fail2ban: "
ulimit -s 256
${FAIL2BAN} -x start > /dev/null
RETVAL=$?
if [ $RETVAL = 0 ]; then
touch ${lockfile}
echo_success
else
echo_failure
fi
echo
return $RETVAL
}
残念ながら、50MBしか節約できません
ulimitは、このようなスタックサイズの制限を許容しない可能性のあるsendmailなどの通知メールプログラムを含む、子プロセスにも影響します。このis exim4 sendmailの場合、提案されたメモリを使用して、「recidive」jailが有効になっている場合のように、電子メールで送信する代わりにTweakがsegfaultします。
マシンに通常のsysvinitスクリプトがある場合は、/etc/init.d/fail2ban
(十分早い段階、つまりデーモンが起動する前)。
マシンでsystemdを使用している場合は、fail2ban.service
。たとえば、代わりに
ExecStart=/usr/bin/fail2ban-client -x start
行う
ExecStart=/bin/sh -c 'ulimit -s 256; /usr/bin/fail2ban-client -x start'