SSH AuthorizedKeysCommand 및 SELinux

SSH AuthorizedKeysCommand 및 SELinux

AuthorizedKeysCommandCentOS 6.5 시스템에서 SSH를 사용하려고 하는데 SELinux 오류가 발생합니다. SELinux를 허용 모드(사용)로 전환하면 setenforce 0작동하지만 SELinux를 강제 모드로 다시 전환하면 명령이 더 이상 작동하지 않습니다.

감사 로그에 다음과 같은 내용이 표시됩니다(모두 한 줄).

type=AVC msg=audit(1404210795.382:917): avc: denied { execute } for pid=2924 comm="sshd"
name="get-keys" dev=dm-0 ino=167467 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023
tcontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tclass=file

이 명령에 대한 SELinux 정책 get-keys은 다릅니다. 명령과 동일한 설정으로 설정했습니다 sshd. 또한 모든 SSH 관련 SELinux 부울을 true로 설정해 보았습니다. 찾을 수 있는 모든 부울은 다음과 같습니다 grep.

$ getsebool -a | grep ssh
allow_ssh_keysign --> on
fenced_can_ssh --> on
ssh_chroot_full_access --> on
ssh_chroot_manage_apache_content --> on
ssh_chroot_rw_homedirs --> on
ssh_sysadm_login --> on

/usr/bin/get-ssh-keys/명령이 포함되어 있습니다 get-keys. 다음은 디렉터리의 권한입니다.

$ ls -laZ /usr/bin/get-ssh-keys/
drwxr--r--. root root unconfined_u:object_r:etc_t:s0   .
dr-xr-xr-x. root root system_u:object_r:bin_t:s0       ..
-rwx--x--x. root root system_u:system_r:sshd_t:s0-s0:c0.c1023 get-keys

[...]

$ ls -laZ /usr/
drwxr-xr-x. root root system_u:object_r:usr_t:s0       .
dr-xr-xr-x. root root system_u:object_r:root_t:s0      ..

[...]

관련 /etc/ssh/sshd_config설정은 다음과 같습니다.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysCommand /usr/bin/get-ssh-keys/get-keys
AuthorizedKeysCommandRunAs root

get-keys명령은 소켓을 통해 다른 서버에 연결하고 /var/log/get-ssh-keys/error_log.

제가 분명히 놓치고 있는 것이 있나요?

에 대해 약간의 혼란이 있습니다 AuthorizedKeysCommand. 실제로 ~/.ssh/디렉토리에서 키를 읽지 는 않습니다 . 대신, 이 AuthorizedKeysCommand설정은 특정 사용자의 모든 키를 표준 출력에 별도의 줄로 인쇄하는 프로그램을 지정합니다.

내가 지정한 명령은 get-keysSELinux가 허용으로 설정된 경우 작동하지만 필수로 설정된 경우에는 실패합니다.

SELinux 시행에서는 비밀번호를 묻는 메시지가 표시되지만 SELinux 권한 하에 이 명령으로 검색된 키를 사용하여 로그인할 수 있습니다.

답변1

친구, 당신이 그것을 알고 있다고 확신합니다. 하지만 만일의 경우에 대비해:

  1. selinux yum install setroubleshoot 문제를 해결하려면 도구가 필요합니다.
  2. 경고가 기록되었는지 확인하고 sealert -a /var/log/audit/audit.log를 본 후 정책을 생성하십시오.

이 도구는 무엇을 해야할지 알려줄 것입니다

[root@zabbix audit]# sealert -a /var/log/audit/audit.log
 49% done'list' object has no attribute 'split'
 100% done
found 1 alerts in /var/log/audit/audit.log
--------------------------------------------------------------------------------

SELinux is preventing /usr/bin/python2.7 from name_connect access on the       tcp_socket port 3306.

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that python2.7 should be allowed name_connect access on the      port 3306 tcp_socket by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep python /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

관련 정보