선행글
앞선 글들을 통해서 리눅스 웹콘솔과 OTP설정하는 법을 포스팅했는데 이번에는 두가지 (cockpit 과 google authenticator를 이용하여) 웹콘솔 OTP를 설정해보도록 하겠다.
기존 ssh에 otp를 설치하는건 selinux의 우회를 하였기때문에 정상적으로 작동 했는데. cockpit같은경우 session으로 otp를 물기때문에 selinux에서 방어한다. 그래서 예외처리까지 함께 진행하겠다.
*SElinux를 끄는 방법도 있지만 보안상 안좋기 때문에 예외처리로 한다.
설정 파일 수정하기
vi /etc/pam.d/cockpit
auth required /usr/local/lib/security/pam_google_authenticator.so secret=${HOME}/.ssh/.google_authenticator
이렇게 설정값을넣고 웹으로 접속하면
Verification code: 를 넣으라고 하는데 정상적인 otp값을 넣어도
위처럼 인증실패가 나온다.
cockpit 에서 지원해주는 GUI로 selinux 로그를 살펴보면 아래처럼 Prevent 되었다고 나오고 조치방법도 설명해준다.
- If you want to allow polyinstantiation to enabled
이 솔루션을 자동으로 적용할 수 없습니다
You must tell SELinux about this by enabling the ‘polyinstantiation_enabled’ boolean.
=> ‘polyinstantiation_enabled’을 하라는거같고 - If you believe that cockpit-session should be allowed write access on the .ssh directory by default.
이 솔루션을 자동으로 적용할 수 없습니다
You should report this as a bug. You can generate a local policy module to allow this access.
=> .ssh 디렉토리에 대한 쓰기 엑세스 허용 권한을 로컬 정책 모듈로 생성하라고한다.
SELinux 정책 적용
setsebool -P polyinstantiation_enabled 1
ausearch -c 'cockpit-session' --raw | audit2allow -M my-cockpitsession
semodule -i my-cockpitsession.pp
하고나서 다시 로그인 접속시도. 계속 조금씩 다른 이름으로 SElinux Error가 나올텐데 2,3번을 반복해서 예외처리해주면된다.
한 3번정도해주면 다시 정상적으로 접속이 가능하다.
블로그 그만하고 일해라 애송이ㅋ
관심 감사합니다
힘내세요. 석석박사님