22.4. 設定の例
22.4.1. デーモンとしての Rsync リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux を使用する場合は、rsync をデーモンとして使用できるため、複数のクライアントが中央サーバーとして直接通信し、集中ファイルを格納して同期を維持できます。以下の例は、正しいドメインのネットワークソケットで rsync をデーモンとして実行し、SELinux がこのデーモンを事前定義済み (SELinux ポリシー) の TCP ポートで実行する方法を示しています。次に、
rsync デーモンが標準以外のポートで通常どおり実行できるように SELinux ポリシーを変更する方法を示します。
この例は、1 つのシステムで実行し、SELinux ポリシーと、そのローカルデーモンおよびプロセスに対する制御を示します。これは単なる例で、SELinux が rsync に与える影響を示していることに注意してください。rsync の包括的なドキュメントは、このドキュメントの範囲外です。詳細は、公式の rsync のドキュメント を参照してください。この例では、rsync、setroubleshoot-server、および audit パッケージがインストールされ、SELinux Targeted ポリシーが使用され、SELinux が Enforcing モードで実行されていることを前提としています。
手順22.1 rsync を rsync_t として起動させる
- getenforce コマンドを実行して、SELinux が Enforcing モードで実行されていることを確認します。
getenforce Enforcing
~]$ getenforce EnforcingCopy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux が Enforcing モードで実行されていると、このコマンドはEnforcingを返します。 - which コマンドを実行して、rsync バイナリーがシステムパスにあることを確認します。
which rsync /usr/bin/rsync
~]$ which rsync /usr/bin/rsyncCopy to Clipboard Copied! Toggle word wrap Toggle overflow - rsync をデーモンとして実行する場合は、設定ファイルを使用して、
/etc/rsyncd.confとして保存する必要があります。この例で使用されている以下の設定ファイルは非常に単純であり、使用可能なすべてのオプションを示しているわけではなく、rsyncデーモンを示すだけで十分であることに注意してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - rsync がデーモンモードで動作するための簡単な設定ファイルが存在するようになったため、以下のコマンドを実行して起動できます。
systemctl start rsyncd.service
~]# systemctl start rsyncd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow rsyncdが正常に起動したことを確認します (出力は以下のようになります。タイムスタンプのみが異なります)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux は、rsync_tドメインで実行しているときに、rsyncデーモンにプロテクションメカニズムを適用できるようになりました。ps -eZ | grep rsync system_u:system_r:rsync_t:s0 3220 ? 00:00:00 rsync
~]$ ps -eZ | grep rsync system_u:system_r:rsync_t:s0 3220 ? 00:00:00 rsyncCopy to Clipboard Copied! Toggle word wrap Toggle overflow
この例は、
rsync_t ドメインで実行しているrsyncdを取得する方法を示しています。Rsync は、ソケットが有効なサービスとして実行することもできます。これにより、クライアントがサービスへの接続を試行するまで、rsyncdが実行されません。rsyncd がソケットにより起動したサービスとして実行できるようにするには、上記の手順を行います。rsyncd をソケット起動サービスとして起動するには、root で以下のコマンドを実行します。
systemctl start rsyncd.socket
~]# systemctl start rsyncd.socket
以下の例は、デフォルト以外のポートでこのデーモンを正常に実行する方法を示しています。次の例では、TCP ポート 10000 が使用されています。
手順22.2 デフォルト以外のポートでの rsync デーモンの実行
/etc/rsyncd.confファイルを変更し、グローバル設定領域 (つまりファイル領域が定義する前) のファイルの一番上にあるport = 10000行を追加します。新しい設定ファイルは以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - この新しい設定で
rsyncデーモンを起動すると、次のような拒否メッセージが SELinux によりログに記録されます。Jul 22 10:46:59 localhost setroubleshoot: SELinux is preventing the rsync (rsync_t) from binding to port 10000. For complete SELinux messages, run sealert -l c371ab34-639e-45ae-9e42-18855b5c2de8
Jul 22 10:46:59 localhost setroubleshoot: SELinux is preventing the rsync (rsync_t) from binding to port 10000. For complete SELinux messages, run sealert -l c371ab34-639e-45ae-9e42-18855b5c2de8Copy to Clipboard Copied! Toggle word wrap Toggle overflow semanageユーティリティーを使用して、rsync_port_tの SELinux ポリシーに TCP ポート 10000 を追加します。semanage port -a -t rsync_port_t -p tcp 10000
~]# semanage port -a -t rsync_port_t -p tcp 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow rsync_port_tの SELinux ポリシーに TCP ポート 10000 が追加され、rsyncdはこのポートで通常どおり起動して動作するようになりました。systemctl start rsyncd.service
~]# systemctl start rsyncd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow netstat -lnp | grep 10000 tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 9910/rsync
~]# netstat -lnp | grep 10000 tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 9910/rsyncCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SELinux ではポリシーが変更され、
rsyncd の TCP ポート 10000 での動作が許可されるようになりました。