AuthorizedKeysCommand
CentOS 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-keys
SELinux가 허용으로 설정된 경우 작동하지만 필수로 설정된 경우에는 실패합니다.
SELinux 시행에서는 비밀번호를 묻는 메시지가 표시되지만 SELinux 권한 하에 이 명령으로 검색된 키를 사용하여 로그인할 수 있습니다.
답변1
친구, 당신이 그것을 알고 있다고 확신합니다. 하지만 만일의 경우에 대비해:
- selinux yum install setroubleshoot 문제를 해결하려면 도구가 필요합니다.
- 경고가 기록되었는지 확인하고 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