SELinux는 공개 키를 통해 SSH를 차단합니다.

SELinux는 공개 키를 통해 SSH를 차단합니다.

$USER인증된 사용자 파일이 있는 시스템 사용자 계정인 사용자가 있습니다 . SELinux를 활성화하면 공개 키를 사용하여 서버에 SSH로 연결할 수 없습니다. setenabled 0지금 로그인할 수 있다면 $USER.

SELinux를 완전히 비활성화하지 않고 이 동작을 수정하려면 어떤 SELinux 부울/정책을 변경해야 합니까?

이 기본 SELinux 구성에서 비밀번호를 사용하여 로그인할 수 있다는 점은 주목할 가치가 있습니다. $USER여기서 무슨 일이 일어나고 있으며 SELinux가 이를 방지하지 않는 이유를 이해하고 싶습니다. (이 문제를 해결한 후 비밀번호 인증을 완전히 비활성화할 예정이므로 이 문제에 대해 알게 되어 더욱 기쁩니다)

답변1

~/.ssh/*에 대한 파일 시스템 권한이 정확하다고 가정하고 출력을 확인하십시오.

sealert -a /var/log/audit/audit.log

AVC 항목에 단서가 있어야 합니다. 솔루션은 다음을 실행하는 것으로 요약됩니다.

restorecon -R -v ~/.ssh

답변2

sealert최근에 만난 시스템에서처럼 파일이 시스템에서 누락된 경우 다음과 같은 경우도 가능합니다 audit2allow.

$ sudo audit2allow -w -a
type=AVC msg=audit(1548909218.552:1037): avc:  denied  { read } for  pid=13996 comm="sshd" name="authorized_keys" dev="dm-0" ino=4663556 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:admin_home_t:s0 tclass=file
    Was caused by:
            Missing type enforcement (TE) allow rule.

            You can use audit2allow to generate a loadable module to allow this access.

AVC 분석:

avc: denied { read } for pid=13996 comm="sshd" name="authorized_keys" dev="dm-0" ino=4663556
    "sshd" was denied read on a file resource named "authorized_keys".
scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023
    SELinux context of the sshd process that attempted the denied action.
tcontext=system_u:object_r:admin_home_t:s0 tclass=file
    SELinux context of the authorized_keys file.

scontextaudit2allow는 문제 해결 방법을 간결하게 알려주지 않지만 및 을 살펴보면 값 tcontext이 만족스럽지 않은 "authorized_keys" 파일 컨텍스트를 표시 scontext하면서 필요한 컨텍스트를 나타냅니다 .tcontext

이 경우 restorecon -R -v ~/.ssh자체적으로는 작동하지 않지만 필수 컨텍스트를 적용하면 다음이 수행됩니다.

$ sudo semanage fcontext --add -t ssh_home_t "/path/to/my/.ssh(/.*)?"; \
$ sudo restorecon -FRv /path/to/my/.ssh

필요한 경우 AVC에 표시되는 내용에 따라 리소스 이름 및/또는 컨텍스트를 변경합니다. 이 답변의 정확한 세부 정보는 "authorized_keys"와 관련된 문제를 해결하기 위해 구축되었지만 sealert생성된 AVC에 다른 파일이나 컨텍스트가 표시되더라도 솔루션은 이 모델을 따를 수 있습니다 audit2allow.

관련 정보