ソースパッケージのREADMEには次のように書かれています。
When installing ufw from source, you will also need to integrate it into your
boot process for the firewall to start when you restart your system. Depending
on your needs, this can be as simple as adding the following to a startup
script (eg rc.local for systems that use it):
# /lib/ufw/ufw-init start
For systems that use SysV initscripts, an example script is provided in
doc/initscript.example. See doc/upstart.example for an Upstart example. Consult
your distribution's documentation for the proper way to modify your boot
process.
私のシステムではこれがあります:
# /etc/ufw/ufw.conf
#
# Set to yes to start on boot. If setting this remotely, be sure to add a rule
# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
ENABLED=yes
では、ブート時に単純なiptablesルールマネージャーを起動する必要があるのはなぜですか?それには秘密がありますか、それともすべてのルールが整っているかどうかを確認するだけですか?
システムの起動時には、ファイアウォールルールはありません。カーネルはそれらをどこにも保存していません。
UFW(または他のファイアウォールマネージャー)を起動しない場合、iptablesは空です。また、各チェーン(FORWARD、INPUT、OUTPUT)のデフォルトルールはACCEPTであるため、すべてが許可されます。
UFWは単にチェックするだけでなく、実際にそれらのルールを配置し、ルール管理に使用する追加のチェーンを作成します。
Iptables(Linuxでnetfilterファイアウォールルールを操作するための低レベルツール)を実行すると、ルールはカーネルのみにロードされるため、RAMにあります。シャットダウンまたは再起動すると、RAMは永続メモリではないため、カーネルが再初期化され、デフォルトですべてのテーブルに対してACCEPTになります(またはファイアウォールなしになります)。
したがって、ブート後にファイアウォールを使用可能にするには、カーネルにiptablesルールをロードする必要があります。これは、/ etc/rc.localなどの起動時に実行されるスクリプトにiptablesルールを追加するか、ツールを使用して手動で行うことができます。 ufwはそのようなツールの1つであり、有効にすると、READMEのようにブートプロセスに統合されている場合、ブート時にファイアウォールルールのロードを処理します。 Ubuntuのようにufwがディストリビューション用にパッケージ化されている場合、パッケージングがそれを処理します。簡単に言えば、Ubuntuでapt-getを使用してufwをインストールした後、「Sudo ufw enable」を実行する以外にシステムに統合するためにこれ以上何もする必要はありません。
Ufwステータスを保存するには、次のコマンドを実行する必要があります。
Sudo invoke-rc.d iptables-persistent save
ルールは保存され、再起動後にロードされます。