Fedora 16을 실행하는 홈 서버가 있습니다. SSH를 통해 원격으로 액세스하고 싶습니다. sudo 액세스 권한이 있는 사용자의 경우 키를 사용하여 WAN에서만 연결하도록 허용해야 하는데, 로컬 네트워크에서는 비밀번호를 사용하여 연결하도록 허용하고 싶습니다.
내 sshd_config는 다음과 같습니다.
#Logging
SyslogFacility AUTHPRIV
#Allow the two types of ssh groups
AllowGroups ssh_key_users ssh_pass_users
PermitRootLogin no
#Accept environment variables - these come from the fedora default config
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
#Other options
X11Forwarding yes
GSSAPICleanupCredentials yes
#Set up sftp subsytem
Subsystem sftp /usr/libexec/openssh/sftp-server
#Just as a default, we'll change it per network and group
PasswordAuthentication no
#Re-enable password access for the local network
Match Address 192.168.1.0/24 Group ssh_key_users
PasswordAuthentication yes
#Settings for users which can login by password (non-sudoers)
Match Group ssh_pass_users
PasswordAuthentication yes
ChrootDirectory %h
재미있는 부분은 sshd -d -p 4000
디버그 모드로 설정하고 테스트할 때 완벽하게 작동하지만 systemctl을 통해 sshd를 실행할 때 비밀번호로 로그인하려고 하면 실패한다는 것입니다.
이 시스템을 구성하는 동안 대부분의 문제가 그러했듯이 SELinux가 원인이라고 생각합니다. audit.log의 오류 메시지는 다음과 같습니다.
type=USER_AUTH msg=audit(1345320824.824:123275):
pid=0 uid=0 auid=4294967295 ses=4294967295
subj=system_u:system_r:sshd_t:s0-s0:c0.c1023
msg='op=password acct="chockey" exe="/usr/sbin/sshd"
hostname=? addr=192.168.1.201 terminal=ssh res=failed'
SELinux를 일시적으로 끄면 작동합니다. 이 메시지에 audit2why를 사용하면 출력이 제공되지 않습니다. 이 메시지에 대해 audit2allow를 사용하려고 하면 줄 바꿈 3개가 출력되지만 그 외에는 출력되지 않습니다. 어쩌면 내가 잘못 사용하고 있을지 모르지만, 내가 한 일은 다음과 같습니다.
$ tail -n 1 /var/log/audit/audit.log > error.txt
$ audit2why -i error.txt
$ audit2allow -i error.txt
$
전에 이런 일을 겪은 사람이 있나요? SELinux를 그대로 놔둘 가치가 있나요?