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/default
Red 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-server
Systemd用のサービスファイルが含まれています。
$ 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
カスタムファイルに追加するだけで設定と同じ効果が得られます。.conf
ulimit -s 256
マニュアルページを見ると、これらのスイッチが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).