
/usr/lib/systemd/system の下にサービスがあります。このサービスは、私が開発しているアプリ (.net core 2.0) を実行します。同じアプリが、異なるマシン (両方とも Centos7) で実行されます。これらは、UDP ソケットを使用して互いを検索します。
準備する前に、このアプリを長い間テストしてきました。サービス彼らのためにファイルを作成し、すべてがうまく機能しました。彼らはお互いにメッセージをブロードキャストすることができました。
サービスがアプリケーションを実行すると、そのインスタンスが取得できる唯一のメッセージは、同じインスタンスが最初にブロードキャストしていたメッセージです。他のマシンでも同じ状況です。独自のブロードキャストは取得できますが、他のマシンのブロードキャストは取得できません。
私は Linux 初心者で、どこを調べて何を検索すればいいのかわからず、役に立たない情報に出くわしたので、ここで助けが必要です。
ありがとう
.service ファイルの内容
[Unit]
Description=Apix
[Service]
WorkingDirectory=/apix
ExecStart=/usr/bin/dotnet /APIX/Apix.dll
[Install]
WantedBy=multi-user.target
自分でアプリを起動すると、udp ポートが dotnet によって使用されていることがわかります。ただし、サービスがアプリを実行すると、この行は消えます。
netstat -lntup
udp 0 0 0.0.0.0:14235 0.0.0.0:* 11319/dotnet
答え1
ダン・ウォルシュの2014年のライブジャーナルには の説明がありますunconfined_service_t
が、SELinux の専門用語が多用されているため、現在の SELinux の知識レベルではあまり役に立たないかもしれません。
コメントのとおり、プロセスの SELinux ラベルは次のとおりです。
- .service ファイルで起動した場合:
system_u:system_r:unconfined_service_t:s0
- 手動で開始する場合:
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
SELinux ラベルには 4 つの部分があります。
- SELinux ユーザー (サフィックス付き
_u
) - SELinux ロール (
_r
サフィックス付き) - SELinux タイプ (サフィックス付き
_t
) - SELinuxレベルの定義は、完全な多層セキュリティSELinuxポリシー(軍事セキュリティなど)、デフォルトではないターゲットを絞ったポリシー。
SELinux のデフォルト ポリシーでは、SELinux ユーザー識別子は通常のユーザー名とは異なります。つまり、SELinux はファイルやプロセスが正確に誰に属しているかを気にせず、ユーザーが重要なシステム プロセスであるか、システム プロセスによって開始されたもの ( system_u
)、管理者 ( sysadm_u
)、通常のユーザー ( user_u
)、または SELinux ポリシーによって制限なしと指定されたもの ( unconfined_u
) であるかだけを気にします。
dbadm_r
ロール部分を使用して、データベース管理やlogadm_r
システム ログへのアクセスなど、いくつかの「部分管理者」ロールを指定できます。
最も重要な部分はターゲットを絞ったSELinux ポリシーは、タイプ指定、つまりサフィックスが付いた部分です_t
。
unconfined_service_t
制限のないタイプであるはずなので、何が問題なのかはわかりません。/APIX/
ディレクトリ ツリーの下のファイルはすべてラベル付けされていないため、問題が発生している可能性があります。
プロセスと同様に、ファイルにも SELinux ラベルが必要ですls -Z
。これは で表示できます。一般に、SELinux はdefault_t
ラベルが指定されていないファイルに対して を付与します。 に直面するとdefault_t
、SELinux は「これが何なのかわかりません。ラベルを失った Ultra Top Secret かもしれません。そのため、管理者が適切なラベルを教えてくれるまでは、特別にセキュリティ保護しましょう」と「考えます」。つまり、default_t
は修正する必要があるものです。
通常、ファイルは、SELinux ルールで別の指定がない限り、作成時に存在していたディレクトリのラベルを継承します。ただし、 のような新しい最上位ディレクトリを作成する場合は/APIX
、ラベルの付け方を決める必要があります。そうしないと、 になりdefault_t
、問題が発生する可能性があります。
設定を試してみるとよいかもしれませんsemanage permissive -a unconfined_service_t
: これにより、フリー アクセスを使用するすべてのサービスが許可されますunconfined_service_t
が、SELinux が完全に有効になっているかのように、SELinux ポリシー違反がログに/var/log/auth/
記録されます。次に、audit2why
監査ログの関連部分を実行すると、SELinux がプログラムの実行をブロックしている理由がより明確に説明されます。
正しい修正方法は、単に/APIX/
ディレクトリに適切なファイルシステム ラベルを付けることです。