Root 비밀번호 자동 변경 쉘 스크립트

좀 귀찮고 짜증나지만 보안관련해서 신경써야 할 것들이 여간 많은게 아니다.

그 중에서 현실적으로 내가 할 수 있는게 뭐 있을까 고민을 거듭하다 Root 비밀번호 관리만 빡세게 잘 된다면 솔직히 크게 문제될 것은 없을거라고 판단했다. 또한 SSH 포트 번호는 일반적으로 사용되는 22번에서 다른 임의의 번호로 이미 변경하였다.

CentOS 기반의 서버 4개를 돌리고 있다보니 매번 4개 서버에 접속해서 비번 바꾸는 것도 귀찮아 쉘 스크립트를 작성해봤다.

다음은 해당 쉘 스크립트 소스를 예제 버전으로 변경한 내용이다.

 

 

/dev/urandom 에서 ‘영문자/숫자/특정특수문자’를 12자리 추출한 뒤, 해당 12자리를 지정된 서버의 root 권한으로 접속하여 비밀번호를 변경한다. 이를 위해선 미리 SSH 자동로그인이 될 수 있도록 해야한다.

또한 해당 비밀번호를 임시파일에 간단히 기록하고 지정된 이메일 주소로 내용을 발송한 후 임시파일을 삭제하도록 했다.

 

위 쉘 스크립트를 매일 0시 1분에 실행하도록 crontab 을 설정했다. 매일 0시 1분에 지정된 이메일로 새롭게 변경된 서버들의 각 패스워드가 전달된다.

이로 인해 약간은 보안이 강화(?)되었다고 생각하고 있다.

 

– 뒷 얘기 –
원래 계획은 쉘에 접속중인 모든 유저들의 프로세스를 강제 kill 시킨 후 위 내용을 진행하려 했으나(테스트까지 모두 완료) 혹시 모를 중요한 사태에 대비해 해당 내용은 제외시켰다.

  • 메인 서버에서 본문의 스크립트를 실행해서 다수의 서버 Root 비번을 변경했다 하더라도 SSH 자동로그인이 설정 되어있다면 메인서버는 관리 서버들의 비번 교체 여부와 상관없이 바로 root로 진입할 수 있다.
    이는 위 스크립트를 실행하는 메인 서버 1대만 뚫리게 된다면 나머지 관리 서버들도 영향을 받는다는 얘기가 된다.
    (스크립트를 수정해서 해커의 이메일로도 내용을 쏘도록 이메일 주소를 추가한다던지..)
    관련해서 좀 더 고민을 해봐야겠다.

  • Pingback: Google OTP 이용하여 SSH 보안 강화 – 잡썰파티()