SELinux란?
SELinux(Security-Enhanced Linux)는 리눅스 커널에 포함된 보안 모듈로, 액세스 제어 보안 정책을 강제하는 메커니즘이다. SELinux는 미국 국가안보국(NSA)에서 개발했으며, 리눅스 시스템의 보안을 강화하기 위해 다양한 보안 정책을 적용할 수 있다. 기본적으로 파일 시스템, 프로세스, 네트워크 등에 대한 세부적인 접근 제어를 제공한다.
문제 발생: SSH 접속 불가
최근 CentOS 7서버에서 OpenSSL과 OpenSSH를 최신 버전으로 업그레이드한 후, SSH를 통해 원격으로 서버에 접속하려고 하자 "Access denied"라는 오류 메시지가 계속 나타났다. 콘솔을 통해 직접 로그인하는 데는 문제가 없었지만, PuTTY와 같은 SSH 클라이언트를 통해 접속하려고 하면 비밀번호 인증 실패 메시지가 나타났다.
원인 분석
로그 파일(/var/log/secure)을 살펴본 결과, "Failed password" 오류 메시지가 반복적으로 기록되어 있었다.
여러 가지 설정을 점검하고 수정해도 문제가 해결되지 않아, 마지막으로 SELinux 설정을 확인해 보았다.
SELinux가 활성화된 상태에서 특정 보안 정책이 SSH 접속을 차단하고 있었다.
SELinux는 시스템의 보안을 강화하는 데 매우 유용하지만, 때로는 예상치 못한 방식으로 정상적인 동작을 방해할 수 있다고 한다. (이 부분은 정확한 사항이 아님으로 참고만)
해결 방안: SELinux 비활성화
1. /etc/sysconfig/selinux 파일 편집
sudo vi /etc/sysconfig/selinux
2. SELINUX 설정 disabled로 변경
SELINUX=disabled
3. SSHD 데몬 재시작으로 변경사항 확인
systemctl status sshd
systemctl restart sshd
systemctl status sshd
SELinux 비활성화의 장단점
장점:
- 빠르게 문제를 해결할 수 있다.
- 시스템 설정을 복잡하게 조정할 필요가 없다.
단점:
- 시스템의 전체적인 보안 수준이 낮아질 수 있다.
- SELinux가 제공하는 세부적인 보안 제어를 사용할 수 없다.
결론
이번 경우에는 SELinux가 SSH 접속을 차단하고 있었다.
SELinux를 비활성화함으로써 문제를 해결할 수 있었지만, 보안 요구 사항에 따라 SELinux를 비활성화하는 것이 항상 최선의 해결책은 아닌 것으로 확인했다.
대안: SELinux 설정 조정
SELinux를 완전히 비활성화하는 대신, 특정 보안 정책을 수정하여 문제를 해결할 수도 있다.
예를 들어, SSH 관련 SELinux 설정을 조정하는 방법이다:
#관리자 계정(root)에 대한 SSH 로그인 허용
sudo setsebool -P ssh_sysadm_login 1
#SSH 세션에서 TTY를 사용할 수 있도록 허용
sudo setsebool -P allow_user_ssh_tty 1
#SSH chroot 환경에서 사용자 홈 디렉토리를 r/w 가능하도록함
sudo setsebool -P ssh_chroot_rw_homedirs 1
'Dev > Linux' 카테고리의 다른 글
[Linux] 스토리지 수동 마운트하는 방법 (자동 마운트 문제 해결) (2) | 2024.08.27 |
---|---|
[Linux] Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again (0) | 2024.07.30 |
[Linux] WARNING: UNPROTECTED PRIVATE KEY FILE! (0) | 2024.07.25 |
[Linux] 파일 찾기 find 명령어 완벽 가이드 (0) | 2024.07.10 |
[Linux] SFTP 연결 안 됨 (FileZilla에서 SSH 연결 문제 해결하기) (0) | 2024.07.08 |