본문 바로가기
etc

시스템 관리자가 저지르는 어리석은 보안 실수 10가지

by (주)엠플 2015. 12. 7.

보안은 기술적인 문제인 동시에 사람과 관련된 문제이다. 기술보다는 사람과 관련된 실수가 많다. 게다가 시스템 관리자를 비롯한 IT 담당 직원 등 알만한 사람들이 실수를 저지르는 경우가 많다.

 

인터미디어(Intermedia)의 2015년 내부 위험(Insider Risk) 보고서에 따르면, 보안과 관련해 '위험한' 실수를 가장 많이 저지를 수 있는 사람들은 IT 종사자들이다. 비밀번호와 로그인 정보를 공유하고, 업무용 애플리케이션에 개인 비밀번호를 사용하고, 개인 계정의 인증서를 다른 사람에게 주는 행위 등을 예로 들 수 있다.

 

이는 일반 사용자보다 더 큰 위험을 초래할 수 있다. 시스템 관리자는 네트워크에 '신과 같은 영향력'을 행사하기 때문이다. IT 담당자들은 사용자만큼이나 피싱, 몰웨어 등의 공격에 취약하다. 그리고 시스템 관리자의 인증서를 도난 당하면, 예외 없이 더 심각한 보안 침해 사고가 발생한다. 다음은 시스템 관리자와 IT 담당자가 가장 많이 범하는 실수 10가지를 정리한 내용이다.

 

 

실수 1. 'Sudo(슈퍼 유저)' 권한 남용

 

루트 로그인을 하면 완벽한 권한을 갖게 된다. 이는 아주 위험한 상황을 초래할 수 있다. 해커가 인증서를 훔쳐, 자신이 원하는 일을 맘껏 할 수 있기 때문이다. 윈도우 환경에서 관리자 권한의 작업이 필요 없다면, 굳이 관리자로 로그인할 필요가 없다. 시스템에 루트 로그인하는 대신 개인 계정을 통해 로그인해야 한다. 그리고 필요한 경우에만 'Sudo'를 이용한다.

주의하지 않으면, 다시 실수를 저지르기 쉽다. 명령 중 하나에 'Sudo'가 필요해 스크립트에 문제가 발생한다. 이제 모든 것을 다시 시작해야 한다. 고급 권한이 필요한 명령, 필요 없는 명령을 추적 기록하지 않으면, 모든 것을 다시 'Sudo'로 처리해야 한다.

 

 

실수 2. 출처가 확인되지 않은 스크립트 실행

 

서드파티 리눅스 애플리케이션을 설치할 때에도 Sudo가 남용되곤 한다. 명령어를 복사, 스트립트가 설치될 터미널에 직접 붙여 넣기만 하면 된다(이미 Sudo를 사용할 수 있게끔 준비된 상태). 스크립트의 모든 명령어가 특수 권한(Elevated privileges)으로 실행될 것이다.

다음을 예로 들 수 있다(웹에 복사, 숨겨진 URL).

sudo -v && wget -nv -O- https://xxx/xxx/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"

이는 웹의 다른 곳에 호스팅되어 있으며, 로컬로 파이썬을 실행하는 항목에 Sudo 권한을 준다. 권장할 수 없는 방법이다. 윈도우 관리자는 파웨셸 스크립트를 다운로드 받아 실행할 때 이와 유사한 문제에 직면할 수 있다. 소스를 신뢰할 수 있는 경우에도, 인터넷에서 다운로드 받은 스크립트가 안전할 것이라고 가정해서는 안 된다. 먼저 스크립트 내용을 검사하고, 명령을 실행시켰을 때 문제가 발생하지 않는지 확인해야 한다.

 

 

실수 3. 실수 특수 권한 서비스를 루트로 실행

 

애플리케이션을 루트로 실행시켜서는 안 된다. 시스템에서 실행되는 각 애플리케이션과 서비스에 구체적인 권한을 지정하고, 고유의 서비스 계정을 생성해야 한다. 서비스 계정에는 일반적으로 홈 디렉토리가 없다. 또 누군가 계정을 이용해 로그인을 시도할 경우, 파일 시스템에서 할 수 있는 일을 제한한다. 공격자는 서비스 계정을 탈취해도, 코드를 실행시킬 특수 권한을 얻기 위해 로컬 취약점을 찾아야 한다.

각 애플리케이션은 루트나 관리자의 개인 계정이 아닌 맞춤화 계정을 사용해 데이터베이스에 액세스할 수 있도록 해야 한다. 웹 애플리케이션은 적절한 그룹이나 사용자가 소유하고 있어야 한다. 윈도우 애플리케이션에 도메인 권한을 부여할 경우, 애플리케이션에는 관리자 권한의 액세스를 허용하지 않는다.

인기 유명 리눅스 배포판은 서비스 계정을 기본 값으로 지원한다. 그러나 관리자가 서드파티 패키지를 수동으로 구성할 때 실수를 저지르기 쉽다. 설치와 성정을 완료한 후 승인 권한을 바꿔, 루트나 관리자 개인 계정이 애플리케이션 소유자가 되지 않도록 만들어야 한다.

 

 

실수 4. 비밀번호 재사용

 

여러 시스템, 사이트, 애플리케이션에 동일한 비밀번호를 사용했을 때 발생할 수 있는 문제점은 잘 알려져 있다. 그러나 아직까지도 큰 문제점으로 남아있다. 시스템 관리자 역시 예외가 아니다.

최근 모질라의 발표에 따르면, 신원이 확인되지 않은 해커가 특수 권한 사용자의 계정을 이용해 버그 트래킹 데이터베이스인 버그질라(Bugzilla)에 침입, 중요 취약점 53개에 대한 정보를 훔쳤다. 조사 결과 특수 권한 사용자가 버그질라 비밀번호를 다른 웹사이트에서 이용했고, 이 웹사이트에 침해 사고가 발생하면서 비밀번호가 노출된 것으로 밝혀졌다.

취약한 관리자 비밀번호, 네트워크의 다른 장치에서 이용된 것과 동일한 비밀번호로 서버를 구성하는 사례가 많다. 동일 비밀번호와 사전을 이용하는 무차별 공격(Brute-force attack)이 성공하는 이유는 이런 실수를 저지르는 사람들이 많기 때문이다. 여러 시스템에 동일한 비밀번호를 사용하면 문제가 커진다.

시스템 관리자는 모든 시스템에 동일한 루트 비밀번호를 설정하는 대신 키 파일을 사용해야 한다. 모든 서버에 퍼블릭 키 파일이 있어야 한다. 그리고 시스템 관리자의 워크스테이션에는 퍼블릭 키와 연동된 프라이빗 키가 있어야 한다. 이렇게 하면 시스템 관리자는 네트워크에 배치된 모든 시스템에 액세스할 수 있지만, 네트워크를 이동하는 공격자는 유효한 키가 없어 로그인을 할 수 없다. 또 비밀번호를 가로채기 당할 염려도 없다.

 

 

실수 5. 관리자 계정 공유

 

데이터베이스와 관리자 포털 액세스에 쓰이는 관리자 계정이 공유되는 사례가 많다. 관리자가 필요에 따라 특수 권한을 요청하는 환경을 구축하는 대신 무차별적으로 관리자 계정을 공유한다. 루트용 계정, 각 관리자용 계정 등 별개의 계정을 만들어 이용하는 것이 이상적이다. 처음부터 관리자 계정에 최고 수준의 액세스 권한을 부여해서는 안 된다. 관리자는 특별한 작업 동안 특별한 액세스 권한을 요청할 수 있다. 인터미디어가 조사한 결과에 따르면, IT 직종 종사자 가운데 32%가 다른 직원에게 로그인과 비밀번호 정보를 제공한 것으로 밝혀졌다.

관리자 계정을 사용한 사람을 정확히 파악하지 못하는 것도 문제이지만, 더 큰 문제는 관리자가 퇴사했을 때 비밀번호를 재설정하지 않는 것이다. 비밀번호를 재설정하지 않아, 퇴사자가 아무 문제 없이 회사 시스템에 다시 로그인해 피해를 초래할 수 있다.

인터미디어 조사 결과에 따르면, 퇴사 후에도 회사 정보에 액세스할 수 있었다고 대답한 비율이 20%에 달한다. 비밀번호 변경 정책을 최종 사용자에게만 적용해서는 안 된다. 관리자와 서비스 계정을 중심으로 모든 비밀번호를 주기적으로 변경해야 한다. 그리고 관리자 퇴사하면 비밀번호를 재설정한다.

 

 

실수 6. 트러블슈팅 작업 방치

 

트러블슈팅 작업을 할 경우, 문제를 해결하기 위해 여러 기법과 시험을 적용한다. 이 과정에 일반적인 프로세스를 놓치는 경우가 많다. 특정 문제를 해결하고 떠났을 때 문제가 발생한다. 관리자가 서두르다 작업한 내용을 정리하는 것을 잊어버려 위험에 노출되는 것이다.

예를 들어, 애플리케이션이 응답하지 않는 이유를 찾으면서 방화벽의 포트를 열어놓을 수 있다. 문제를 해결하면, 공격자가 이를 악용하기 전에 포트를 닫아야 한다. 또 트러블슈팅에 방해가 된다는 이유로 SELinux를 끌 수 있다. 작업이 끝나면 이를 다시 켜야 한다는 사실을 기억해야 한다.

트러블슈팅 동안 작업한 내용을 추적해 기록해야 한다. 그래야 (불가피한 변경을 제외하고) 원래 설정으로 복원할 수 있다.

 

 

실수 7. 로그 파일 추적 실패

 

로그 파일은 유용하다. 특히 트러블슈팅 때 큰 도움을 준다. 발생한 현상을 자세히 조사할 수 있기 때문이다. 이 파일이 더 이상 필요 없을 때, 이를 생성하는 프로세스를 끈다. 로그 파일에 디버깅 정보를 남기거나, 공격자에게 유용한 정보가 포함된 로그 파일을 생성하지 않아야 한다.

베스트 프랙티스는 생성한 로그, 로그에 포함된 정보를 추적 기록하는 것이다.

 

 

실수 8. 비밀번호를 일반 텍스트 파일로 저장

 

기억해야 할 비밀번호가 너무 많다 보면 텍스트 파일에 기록을 하는 방법을 선택하기 쉽다. 이는 공격자가 여러 시스템에 액세스 할 수 있도록 도와주는 '선물'이 된다. 당연한 이야기이다. 그러나 주변에 중요한 비밀번호를 텍스트 파일에 보관하고 있는 사람 한 명씩은 알고 있을 것이다.

(애플리케이션의 데이터베이스 인증서 등) 중요한 비밀번호를 텍스트 파일에 저장할 경우, 파일 내용을 볼 수 있는 사람을 제한하는 승인 권한을 설정해야 한다. 또 데이터베이스 계정은 일반 권한을 가진 서비스 계정으로 만들어야 한다.

 

 

실수 9. 사용하지 않는 계정 방치

 

오래된, 사용하지 않는 계정이 문제를 초래할 수 있다. 소프트웨어를 평가할 목적에서 설치한 후 삭제했지만, 설치 과정에 추가한 계정이 시스템에 남아있을 수 있다. 이를 남겨둬서는 안 된다. 공격자가 이런 방치된 계정을 악용할 수 있다. 특히 기본 비밀번호를 획득하는 경우가 위험하다.

시스템에 남겨둬야 하지만 사용하지 않는 계정의 경우, 비밀번호 파일을 편집하고, 계정 비밀번호를 문자열로 대체해 계정을 사용할 수 없게 만든다. 누군가 퇴사를 할 경우, 그 즉시 사용한 계정을 사용할 수 없게 만들어야 한다.

 

 

실수 10. 패치 설치 미흡

 

'황금률'이다. 보안 업데이트가 배포되는 즉시 설치해야 한다(영향을 받는 시스템 먼저). 제로데이 취약점보다는 1년 전에 배포된 패치를 설치하지 않아 감염되는 서버가 너무나 많다.

중요한 서버라면 예정된 유지관리 일정에 따라 어느 정도 다운타임을 감수해야 한다. 공격자가 공격에 성공했을 때 초래될 시간 낭비보다 낫기 때문이다. 패치가 배포되는 즉시 패치를 테스트한다. 그리고 업데이트를 배포할 일정을 수립한다.

그 즉시 패치를 설치하지 못할 수도 있다. 패치가 리거시 앱에 문제를 초래할 때 이런 상황이 발생하곤 한다. 이 경우에도 포기해서는 안된다. 관계자에게 문제를 설명하고 해당 사안을 확장해야 한다. 위험을 최소화하기 위해 서버를 퇴역시키거나, 새 기술을 도입하거나, 리거시 제품에 대한 의존도를 줄이는 방법이 있을 것이다.

패치 작업이 '사내 정치'에 해당되는 문제가 될 수도 있다. 상사가 시스템 패치를 막을 경우, 모든 사람들에게 위험을 알려야 한다.

 

 

보안 기술에 투자를 아끼지 말라

 

보안 기술은 알려진 문제를 억제하고, 문제가 발생했을 때 그 이유를 밝히는데 도움을 준다. 특정 워크스테이션이나 서버에서 안티바이러스나 방화벽을 실행해서는 안될 이유가 있을 수 있다. 그러나 이런 상황은 아주 드물다.

현재 몇몇 DDoS 악성코드는 리눅스 웹 서버를 감염시키고 있다. 이를 억제할 도구가 없기 때문이다. 고위 관리진, 현장 직원, 시스템 관리자, 특수 권한 사용자 등 모든 사용자를 공격으로부터 보호하기 위해 모든 엔드포인트에 보안 기술을 배치해야 한다.

시스템을 가능한 '클린'한 상태로 유지하고, 사용하지 않는 애플리케이션을 없애야 한다. 머신에 계정이나 도구가 방치되는 문제를 예방하기 위해서이다. 공격 표면을 최소화하기 위해 시스템을 가능한 '클린'한 상태로 실행시키는데 목적이 있다. 단 한 번의 실수와 부주의가 문제를 초래할 수 있다.

보안 툴은 네트워크에서 발생하고 있는 일을 확인하는데 도움을 준다. Nmap를 이용, 트러블슈팅 동안 열어 둔 포트가 열린 상태로 남아있는지 검사한다. 또 패치가 누락된 시스템을 찾고, 패치 계획을 수립해야 한다.

공격자가 공격하기 전에 문제점을 찾아 바로잡을 기회를 제공하는 도구들이 있다. 그러나 시스템 관리자가 솔선수범을 해야 보안 기술이 제 기능을 발휘한다. 시스템 관리자도 다른 모든 사람들이 지키는 규칙을 따라야 한다.​

 

 

출처: 안랩 http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=4&seq=24325

 

 

댓글