다음으로 주목해야 할 것은 지역 사용자(local user)들의 공격에 대한 보안이다. 필자가 방금 지역 사용자들이라고 말했다는데 주목하기 바란다.
지역 사용자의 사용권을 얻는 것이야말로 시스템에 침입하고자 하는 사람들이 가장 먼저 시도하는 것 가운데 하나다. 지역 사용자들에 대한 보안이 느슨하면, 침입자가 -- 여러 가지 버그들과 시스템이 제공하는 서비스 허점을 이용해서 -- 그들이 도둑질한 일반 사용자 계정의 사용권을 관리자 (root) 사용권으로 "업그레이드" 해낼 수 있다. 그러므로 지역 사용자들에 대한 보안을 철저히 하면 침입자들이 뛰어넘어야 할 또 하나의 장애물을 만들에 주게 되는 셈이다.
설령 가짜 사용자가 아니라 해도 (특히 진짜 사용자인 경우에도) 지역 사용자들은 여러분의 시스템을 쑥밭으로 만들 수 있다. 여러분과 안면이 없거나 연락 방법을 모르는 사람에게 계정을 주는 것은 매우 좋지 않은 생각이다.
사용자에게 계정을 줄 때에는 작업을 위한 최소한의 권한만을 부여하도록 해야 한다. 열 살 난 아들에게 계정을 준다면, 워드 프로세서와 그림 풀그림 엑세스 정도를 주어야 하며, 그의 것이 아닌 데이타를 지울 수 없도록 권한을 제한해야 한다.
다른 사람들에게 적절한 엑세스 권한을 제공하려 할 때, 염두에 두면 좋을 경험적인 법칙들이 있다.
여러 달이나 여러 해 이상 사용되지 않고 있는 지역 사용자 계정은 종종 침입의 도구로 사용된다. 아무도 사용하고 있지 않기 때문에 이런 계정들은 최상의 공격 도구가 된다. [37. 휴면 계정]
컴퓨터에서 가장 추구되는 계정은 루트 (수퍼유저 Superuser) 계정이다. 이 계정은 컴퓨터 전체에 대한 권한이 있으며, 네트워크에 있는 다른 컴퓨터에도 권한을 가질 수 있도록 만들어져 있기도 하다. 루트 계정을 사용할 때에는 가능한 짧은 시간 안에 특별한 작업만을 하기 위한 경우에만 써야 하며, 관리자 여러분 자신도 평상시에는 일반 사용자용 계정을 써서 사용하는 것이 좋다는 것을 명심해야 한다. 루트로 로그인해서 저지르는 실수가 아무리 작은 것이라고 할 지라도 이 것은 큰 문제를 일으키게 된다. 루트 권한을 갖는 시간이 짧으면 짧을수록 안전한 것이다. 항상 루트로 작업을 하는 것은 매우, 정말로, 진짜로 나쁜 생각이다.
루트로 작업하다가 자신의 컴퓨터를 뒤죽박죽으로 만드는 것을 피하기 위한 몇 가지 비결이 있다.
"rm foo*.bak"
을 실행하기 전에 먼저
"ls foo*.bak"
을 써서 여러분이 지우려고 생각하는 파일들만을 지우게 되는지 확인해야
한다. 파괴적인 명령 대신 에코를 쓰는 것도 때로는 좋은 방법이다.rm
명령어를 쓰면 컴퓨터가 문서 삭제 여부를 재확인 질문하도록,
여러분이 에일리어스 (alias)를 꾸며 주도록 하자.
[9. Alias]rlogin / rsh / rexec
종류의 도구들을 사용하면 안된다. 이것들은 다수의 "공격과 침탈" 방법의 도구
대상이며, 루트가 쓰기에는 절대적으로 위험한 도구들이다. 절대로 루트용 .rhosts
파일을 만들지 말아야 한다./etc/security
문서에는 루트가 접속할 수 있는 터미널들이 적혀 있다. (레드 햇
리눅스에는) 지역 가상 콘솔 (local virtual consoles: vtys) 만이 기본값으로 적혀져 있다. 다른
것들을 적지 않도록 조심해야 한다. 필요하다면 원격 콘솔에서 일반 사용자 계정으로 접속한
후에 (가능하다면
[ssh]나 다른 암호화된 채널을 사용해서)
su
를 실행 해 들어올 수 있으므로, 루트로 직접 접속할 필요는 전혀 없다.(믿을 만한) 누군가에게 수퍼유저 자격으로 접속할 권한을 허용해 주어야 할 절대 명확한 경우가
있을 때 도움이 되는 몇 가지 있다. sudo
는 사용자가 자신의 패스워드를 써서
루트 권한으로 몇 가지 제한된 명령을 내릴 수 있도록 해준다. 예컨대 리눅스 시스템의 어떤
사용자가 sudo
를 이용해서 -- 루트로서의 별다른 특권을 갖는 일없이 -- 시디롬이나
디스켓을 언마운트하거나 마운트하는 것이 가능하도록 할 수가 있다. sudo
를 쓰면 --
누가 어떤 명령을, 무엇을 하기 위해 사용했는지 추적할 수 있는 -- sudo
사용 시도와
성공에 대한 기록 등이 (
일지 문서에) 적히게 된다. 그렇기 때문에
루트 접근권을 여러 사람들이 가지는 시스템에서는 변경 사항을 추적할 수 있으므로
sudo
를 쓰도록 하는 것이 좋다.
비록 sudo
가 특정 사용자에게 특정 작업을 할 수 있는 제한된 특권을 주지만, 이 또한
몇 가지 단점이 있다. 그렇기 때문에 이것은 -- 서버를 리스타트하거나 새 사용자를 등록하는
등의 -- 극히 제한된 작업을 하는 것에만 사용 되도록 구성되어야 한다. 예를 들면 침입자가 쉘
에스케이프 기회를 주는 풀그림들을 통해서 sudo
를 사용함으로서 루트 권한을 침탈할
수가 있다. 대부분의 에디터가 이러한 종류의 풀그림들에 포함된다. 또한, /bin/cat
등의
보잘것없는 풀그림을 써서도 -- 파일을 겹쳐 쓰는 방법으로 -- 루트를 침탈할 수 있다.
sudo
는 책임성을 밝히는 수단 정도로 생각하도록 하고, 루트 사용자를 보호하는
역할로는 기대하지 않도록 하자.