Fail2Ban CentOSメモリ消費

Fail2Ban CentOSメモリ消費

Fail2Banは私のシステムで多くのメモリ(1.2GB)を使います。これを減らす方法を説明するいくつかの記事があります。以下は Debian の例です。

  • /etc/default/fail2banファイルに1ulimit1コマンドを追加します。
  • (ファイルに)最後の行に追加します。

    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`

残念ながら、結果はまだ1251888KBです。

ベストアンサー1

/etc/基本

このディレクトリは/etc/defaultRed Hat ベースのディストリビューションでは絶対に使用されません。これが Debian/Ubuntu 主義です。 Centos 7の場合は、fail2ban以下に関連するインストール済みパッケージを表示できます。

$ rpm -aq|grep fail
fail2ban-server-0.9-9.el7.noarch
fail2ban-sendmail-0.9-9.el7.noarch
fail2ban-firewalld-0.9-9.el7.noarch
fail2ban-systemd-0.9-9.el7.noarch
fail2ban-0.9-9.el7.noarch

Fail2ban-serverの内容

fail2ban-serverSystemd用のサービスファイルが含まれています。

$ rpm -ql fail2ban-server-0.9-9.el7.noarch | grep systemd
/usr/lib/python2.7/site-packages/fail2ban/server/filtersystemd.py
/usr/lib/python2.7/site-packages/fail2ban/server/filtersystemd.pyc
/usr/lib/python2.7/site-packages/fail2ban/server/filtersystemd.pyo
/usr/lib/systemd/system/fail2ban.service

システムサービスファイル

Systemdサービスファイルの内容:

$ more /usr/lib/systemd/system/fail2ban.service
[Unit]
Description=Fail2ban Service
After=syslog.target network.target firewalld.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

[Install]
WantedBy=multi-user.target

したがって、動作するかどうかを確認する迅速で汚れた方法でファイルに追加オプションを追加できます。

長期的な修正

fail2banこれを永久にするために、パッケージの更新がこのファイルの変更を上書きしないように、より「公式」な方法でオプションを追加します。fail2ban.serviceこのディレクトリにファイルのカスタムバージョンを追加するだけです。

/etc/systemd/system/fail2ban.service

メモ:このディレクトリのファイルは/etc/systemd/system常にデフォルト.serviceファイルよりも優先されます。

ただし、この作業にはいくつかの注意事項があります。そのうちの1つは、サービスファイルがここにある場合、そのファイルを介してfail2ban更新すると、手動でyum再度有効になるまでサービスが無効になることです。したがって、.service下のディレクトリにファイルの断片を追加して上書きすることができます/etc

抜粋

パッケージで提供される単位ファイルを編集するには、/etc/systemd/system/unit.d/ というディレクトリ (例: /etc/systemd/system/httpd.service.d/) を作成して *.conf ファイルを配置できます。 。そこに上書きまたは新しいオプションを追加してください。 systemdはこれらの* .confファイルを解析して元のデバイスに適用します。たとえば、ユニットに追加の依存関係を追加する場合は、次のファイルを生成できます。/etc/systemd/system/unit.d/customdependency.conf

   [Unit]
   Requires=new dependency
   After=new dependency

別の例として、ワンタイムタイプではないデバイスのExecStartディレクティブを置き換えるには、次のファイルを作成します。 /etc/systemd/system/unit.d/customexec.conf

   [Service]
   ExecStart=
   ExecStart=new command

したがって、ディレクトリを作成し/etc/systemd/system/fail2ban.service.d*.confその中に次の内容でファイルを追加できます。

[Service]
ExecStart=
ExecStart=new command

そこにオプションを追加してください。

UlimitsとSystemd

特定のサービスのオプションを設定する場合は、ulimitマニュアルページを確認してくださいsystemd.exec

抜粋
LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=, 
LimitNOFILE=, LimitAS=, LimitNPROC=, LimitMEMLOCK=, LimitLOCKS=,
LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=, LimitRTTIME=
These settings control various resource limits for executed processes. See 
setrlimit(2) for details. Use the string infinity to configure no limit 
on a specific resource.

したがって、上記のLimitSTACK=256カスタムファイルに追加するだけで設定と同じ効果が得られます。.confulimit -s 256

抜粋 - setrlimit(2) マニュアルページ

マニュアルページを見ると、これらのスイッチがSystemd制限とどのように一致するかをsetrlimit(2)確認できます。ulimit

   RLIMIT_STACK
        The maximum size of the process stack, in bytes.  Upon reaching 
        this limit, a SIGSEGV signal is generated.  To handle this signal, 
        a process must employ an alternate signal stack (sigaltstack(2)).

        Since Linux 2.6.23, this limit also determines the amount of space 
        used for the process's  command-line  arguments  and  environment
        variables; for details, see execve(2).

引用する

おすすめ記事