6.5. 안전하게 설정하고 안전한 디폴트를 사용해라

설정은 현재 보안 문제를 야기하는 가장 중요한 원인으로 고려되고 있다. 따라서 처음 설치를 보안적으로 하여 시스템을 보안적으로 유지한채 재설정이 쉽게 되도록 노력해야 한다.

절대로 설치 루틴이 ``default" 패스워드를 설치하도록 하지 마라. 새로운 "users"를 설치할 필요가 있다면 좋다 - 관리자에게 패스워드를 설정할 시간을 주고 (패스워드가 설정되기 전에 시스템이 보안적으로 유지하면서) 그저 불가능한 패스워드를 갖고 이들을 설치해라. 관리자는 아마도 수백개의 패키지를 설치하고 거의 확실히 패스워드 설정을 잊어버릴 것이다 - 디폴트 패스워드를 생성한다면 관리자는 이를 설정하는 것을 알려고 하지도 않을 것 이다.

프로그램은 관리자가 접근 정책을 설정할 기회를 갖을 때까지 가장 제한적인 접근 정책을 가져야 한다. 시작 설정으로 ``sample" 과 같이 실제 쓸 수 있는 사용자 또는 ``모든 것에 접근을 허용하는" 설정을 생성하지 말기 바란다: 많은 사용자는 그저 ``모든 것을 설치하며" (모든 사용할 수 있는 서비스를 설치하며) 많은 서비스를 설정할 시간은 절대로 내지 않는다. 어떤 경우에는 프로그램이 기존 인증 시스템에 의존함으로써 더욱 관대한 정책이 바람직하다라고 결정할 수 있을 지도 모르는데 예를 들어 ftp 서버는 사용자의 디렉토리로 로그인할 수 있는 사용자는 자신의 파일에 접근할 수 있어야 한다고 결정할 수 있다. 그러나 이러한 가정에 주의해라.

설치 스크립트가 가능한 안전하게 프로그램을 설치하도록 해라. 디폴트로 루트 또는 어떤 다른 시스템 사용자에 의해 소유되는 모든 파일들을 설치하고 이들을 others 에게는 쓸 수없게 만들어라; 이는 루트 아닌 사용자가 바이러스를 설치하는 것을 예방한다. 정말로 이 파일들을 신뢰된 사용자외에는 어느 누구도 읽을 수 없게 만드는 것이 최선이다. 또한 루트 권한이 없는 사용자와 설치자를 완전히 믿지 못하는 관리자가 여전히 프로그램을 사용할 수 있도록 루트 아닌 설치를 허용해라.

설치할 때 반드시 보안에 필요한 모든 가정이 옳은지 검사해라. 몇몇 라이브러리 루틴들은 어떤 플랫폼에서는 안전하지 않다; 이에 대한 논의는 7.1절 를 보라. 애플리케이션이 실행될 플랫폼들을 알고 있다면 플랫폼들의 특정적인 특징을 검사할 필요는 없지만 이러한 경우 반드시 프로그램이 이러한 플랫폼들중의 하나에만 설치되는지를 검사해라. 그렇지 않다면 설치 결과가 보안적인지 아닌지 모르기 때문에 수작업으로 프로그램을 설치해야 한다.

설치후의 설정을 포함하여 가능한 설정이 쉽고 명백하도록 만들어라. 가능한 ``보안적인" 접근 방법을 사용해라 그렇지 않다면 많은 사용자가 위험을 이해함이 없이 비보안적인 접근 방법을 사용할 것이다. 리눅스에서는 사용자가 기존 인프라를 사용하여 그들의 시스템을 쉽게 설정할 수 있도록 linuxconf 와 같은 도구를 이용해라.

설정 언어가 있다면 디폴트는 사용자가 명확하게 접근을 허용할 때까지 이를 거절해야 한다. 관리자가 설정이 무엇을 하는 지를 이해할 수 있도록 예제 설정 파일에 많은 명확한 주석을 포함해라 (있다면).