다음 이전 차례

4. 지역 보안

다음으로 주목해야 할 것은 지역 사용자(local user)들의 공격에 대한 보안이다. 필자가 방금 지역 사용자들이라고 말했다는데 주목하기 바란다.

지역 사용자의 사용권을 얻는 것이야말로 시스템에 침입하고자 하는 사람들이 가장 먼저 시도하는 것 가운데 하나다. 지역 사용자들에 대한 보안이 느슨하면, 침입자가 -- 여러 가지 버그들과 시스템이 제공하는 서비스 허점을 이용해서 -- 그들이 도둑질한 일반 사용자 계정의 사용권을 관리자 (root) 사용권으로 "업그레이드" 해낼 수 있다. 그러므로 지역 사용자들에 대한 보안을 철저히 하면 침입자들이 뛰어넘어야 할 또 하나의 장애물을 만들에 주게 되는 셈이다.

설령 가짜 사용자가 아니라 해도 (특히 진짜 사용자인 경우에도) 지역 사용자들은 여러분의 시스템을 쑥밭으로 만들 수 있다. 여러분과 안면이 없거나 연락 방법을 모르는 사람에게 계정을 주는 것은 매우 좋지 않은 생각이다.

4.1 새로운 계정 만들기

사용자에게 계정을 줄 때에는 작업을 위한 최소한의 권한만을 부여하도록 해야 한다. 열 살 난 아들에게 계정을 준다면, 워드 프로세서와 그림 풀그림 엑세스 정도를 주어야 하며, 그의 것이 아닌 데이타를 지울 수 없도록 권한을 제한해야 한다.

다른 사람들에게 적절한 엑세스 권한을 제공하려 할 때, 염두에 두면 좋을 경험적인 법칙들이 있다.

여러 달이나 여러 해 이상 사용되지 않고 있는 지역 사용자 계정은 종종 침입의 도구로 사용된다. 아무도 사용하고 있지 않기 때문에 이런 계정들은 최상의 공격 도구가 된다. [37. 휴면 계정]

4.2 루트 보안

컴퓨터에서 가장 추구되는 계정은 루트 (수퍼유저 Superuser) 계정이다. 이 계정은 컴퓨터 전체에 대한 권한이 있으며, 네트워크에 있는 다른 컴퓨터에도 권한을 가질 수 있도록 만들어져 있기도 하다. 루트 계정을 사용할 때에는 가능한 짧은 시간 안에 특별한 작업만을 하기 위한 경우에만 써야 하며, 관리자 여러분 자신도 평상시에는 일반 사용자용 계정을 써서 사용하는 것이 좋다는 것을 명심해야 한다. 루트로 로그인해서 저지르는 실수가 아무리 작은 것이라고 할 지라도 이 것은 큰 문제를 일으키게 된다. 루트 권한을 갖는 시간이 짧으면 짧을수록 안전한 것이다. 항상 루트로 작업을 하는 것은 매우, 정말로, 진짜로 나쁜 생각이다.

루트로 작업하다가 자신의 컴퓨터를 뒤죽박죽으로 만드는 것을 피하기 위한 몇 가지 비결이 있다.

(믿을 만한) 누군가에게 수퍼유저 자격으로 접속할 권한을 허용해 주어야 할 절대 명확한 경우가 있을 때 도움이 되는 몇 가지 있다. sudo는 사용자가 자신의 패스워드를 써서 루트 권한으로 몇 가지 제한된 명령을 내릴 수 있도록 해준다. 예컨대 리눅스 시스템의 어떤 사용자가 sudo를 이용해서 -- 루트로서의 별다른 특권을 갖는 일없이 -- 시디롬이나 디스켓을 언마운트하거나 마운트하는 것이 가능하도록 할 수가 있다. sudo를 쓰면 -- 누가 어떤 명령을, 무엇을 하기 위해 사용했는지 추적할 수 있는 -- sudo 사용 시도와 성공에 대한 기록 등이 ( 일지 문서에) 적히게 된다. 그렇기 때문에 루트 접근권을 여러 사람들이 가지는 시스템에서는 변경 사항을 추적할 수 있으므로 sudo를 쓰도록 하는 것이 좋다.

비록 sudo가 특정 사용자에게 특정 작업을 할 수 있는 제한된 특권을 주지만, 이 또한 몇 가지 단점이 있다. 그렇기 때문에 이것은 -- 서버를 리스타트하거나 새 사용자를 등록하는 등의 -- 극히 제한된 작업을 하는 것에만 사용 되도록 구성되어야 한다. 예를 들면 침입자가 쉘 에스케이프 기회를 주는 풀그림들을 통해서 sudo를 사용함으로서 루트 권한을 침탈할 수가 있다. 대부분의 에디터가 이러한 종류의 풀그림들에 포함된다. 또한, /bin/cat 등의 보잘것없는 풀그림을 써서도 -- 파일을 겹쳐 쓰는 방법으로 -- 루트를 침탈할 수 있다. sudo는 책임성을 밝히는 수단 정도로 생각하도록 하고, 루트 사용자를 보호하는 역할로는 기대하지 않도록 하자.


다음 이전 차례