systemd 서비스 - UDP 브로드캐스트가 다른 시스템에 도달할 수 없습니다.

systemd 서비스 - UDP 브로드캐스트가 다른 시스템에 도달할 수 없습니다.

/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

앱을 직접 시작하면 dotnet에서 udp-port를 사용하고 있는 것을 볼 수 있습니다. 하지만 서비스가 앱을 실행하면 이 줄이 사라집니다.

netstat -lntup
udp    0   0 0.0.0.0:14235    0.0.0.0:*     11319/dotnet

답변1

Dan Walsh의 2014년 라이브저널에 대한 설명이 있지만 unconfined_service_tSELinux 전문 용어가 너무 무거워서 현재 SELinux 지식 수준에서는 많은 것을 얻지 못할 수도 있습니다.

귀하의 의견에 따라 프로세스의 SELinux 레이블은 다음과 같습니다.

  • .service 파일로 시작할 때:system_u:system_r:unconfined_service_t:s0
  • 수동으로 시작한 경우:unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

SELinux 라벨은 네 부분으로 구성됩니다.

  • 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_tSELinux는 다음과 같이 "생각합니다": "이것이 무엇인지 모르겠습니다. 레이블이 사라진 것은 Ultra Top Secret일 수 있으므로 일부 관리자가 적절한 레이블을 알려줄 때까지 보안을 강화하자." 한마디로 default_t고쳐야 할 부분입니다.

달리 명시하는 SELinux 규칙이 지정되지 않는 한 파일은 일반적으로 생성 시에 있는 디렉터리의 레이블 지정을 상속합니다. 그러나 와 같은 새로운 최상위 디렉토리를 만드는 경우 /APIX레이블을 지정하는 방법을 결정해야 합니다. 그렇지 않으면 로 끝나게 되어 default_t문제가 발생할 수 있습니다.

설정을 시도해 볼 수 있습니다 semanage permissive -a unconfined_service_t. 무료 액세스를 사용하는 모든 서비스를 허용하는 동시에 SELinux가 완전히 활성화된 것처럼 unconfined_service_tSELinux 정책 위반을 계속 기록합니다 . /var/log/auth/그런 다음 감사 로그의 관련 부분을 실행하면 audit2whySELinux가 프로그램이 원하는 작업을 수행하지 못하도록 차단하는 이유에 대한 더 명확한 설명을 얻을 수 있습니다.

올바른 수정은 단순히 /APIX/적절한 파일 시스템 레이블로 디렉토리에 레이블을 지정하는 것일 수 있습니다.

관련 정보