|
|
| Sun ONE Directory Server 5.2 설치 및 조정 설명서 |
기본 시스템과 네트워크 설정은 고성능 디렉토리 서비스에 적합하지 않습니다. Directory Server의 성능 최적화를 위해 시스템을 조정하려면 최소한 최신 권장 패치가 시스템에 설치되어 있어야 하며 기본 보안 조치를 강화하고 일부 시스템 및 네트워크 설정을 변경해야 합니다. 이 장에서는 이러한 조정 작업에 대해 설명합니다.
제품과 함께 제공된 idsktune 유틸리티(Solaris 패키지 버전의 /usr/sbin/directoryserver idsktune)를 사용하면 기본 시스템 구성의 단점을 쉽게 진단할 수 있습니다. 이 유틸리티는 고성능 디렉토리 서비스 지원에 권장되는 시스템 조정 작업을 소개할 뿐 실제로 시스템을 조정하지는 않습니다. 권장되는 조정 작업은 해당 시스템 관리자가 구현해야 합니다.
플랫폼 지원 확인
표 1-1에는 이번 릴리스에서 지원되는 플랫폼 및 관련된 하드웨어 구조가 명시되어 있습니다. 업데이트된 지원 플랫폼 목록은 제품 릴리스 노트를 참조하십시오.
Windows 시스템을 설치하는 경우, 네트워크 보안 서비스에 대한 의존도를 줄이기 위해 컴퓨터를 기존 도메인이나 작업 그룹의 구성원이 아니라 독립 실행형 서버로 지정하십시오.
시스템 패치 설치
전체적인 시스템 보안을 유지하고 Sun ONE Directory Server 5.2를 적절하게 설치하여 작동하려면 권장되는 최신 시스템 패치, 서비스 팩 또는 수정 프로그램을 설치합니다. 표 5-1에는 필요한 패치를 다운로드할 수 있는 URL이 나와 있습니다.
표 5-1    플랫폼별 패치 다운로드 사이트
플랫폼
다운로드 사이트
Sun Solaris™ Operating Environment
Hewlett Packard HP-UX
IBM AIX
Microsoft Windows
Red Hat Linux
기본 보안 강화
이 절의 권장되는 모든 작업을 수행한다고 해서 위험이 완전히 제거되는 것은 아닙니다. 이러한 작업은 몇 가지 명백한 보안 위험을 줄일 수 있도록 도와주는 간략한 검사 목록일 뿐입니다.
시스템 격리
가능하면 네트워크 방화벽을 사용하여 Directory Server를 실행하는 시스템을 공용 인터넷과 격리하십시오. IP 기반 공격을 차단해야 하는 Windows 플랫폼에서 Directory Server를 실행하는 경우 시스템 격리가 특히 중요합니다.
이중 부트 금지
Directory Server를 실행하는 시스템에서는 이중 부트를 구성하거나 다른 운영 체제를 실행하지 마십시오. 다른 시스템이 제한된 파일에 대한 액세스를 허용할 수 있습니다.
강력한 암호
문장 부호나 알파벳 이외의 문자가 포함된 8자 이상의 수퍼유저 또는 관리자 암호를 사용합니다. Windows 플랫폼에서 Directory Server를 실행하는 경우 강력한 암호의 사용이 특히 중요합니다.
보다 긴 운영 체제 암호를 사용하려면 시스템의 암호 처리 방법을 새로 구성해야 할 수도 있습니다. 자세한 내용은 운영 체제 설명서를 참조하십시오.
(Windows) 로컬 보안 정책
잘못된 로그온 시도가 있을 경우 사용자를 차단하는 로컬 보안 정책을 Windows 서버에 구현합니다. 배포에 적합한 크기의 로그를 관리하는 이벤트 로깅을 활성화하여 구성하고 로그온 시도에 대한 감사 로깅도 활성화합니다. 추측하기 어렵도록 관리자 계정의 이름을 바꾸는 것이 좋습니다.
자세한 내용은 Windows 도움말을 참조하십시오.
(UNIX 플랫폼) 사용자 및 그룹
보안상 수퍼유저 권한을 사용하여 Directory Server 또는 관리 서버를 실행하는 것은 바람직하지 않습니다. 예를 들어, 로그인 권한이 없는 사용자 및 그룹을 작성한 다음 이 사용자 및 그룹으로 서버를 설치하여 실행할 수 있습니다. 로컬 파일에 사용자 및 그룹을 추가하는 경우 /etc/passwd 항목은 다음과 같이 표시될 수 있습니다.
server:x:61001:Server User:/dev/null:/dev/null
해당 /etc/group 항목은 다음과 같이 표시될 수 있습니다.
servers::61001:
디버깅하기 쉽도록 Solaris 시스템에서는 coreadm(1M)과 같은 유틸리티를 사용하여 이 사용자 및 그룹 ID로 실행되는 프로세스가 코어를 덤프할 수 있도록 선택할 수 있습니다.
특정 배포 시 메시징 서버와 같은 다른 서버와 Directory Server 파일을 공유해야 하는 경우 같은 사용자 및 그룹으로 해당 서버를 실행하십시오.
수퍼유저로 관리 서버를 실행해야 하면 서비스를 사용하지 않을 때는 중지하는 것이 좋습니다.
불필요한 서비스 비활성화
최상의 성능을 내고 위험을 줄이려면 시스템을 Directory Server 전용으로 사용합니다. 다른 서비스, 특히 네트워크 서비스를 실행하면 서버 성능과 확장성이 저하되고 보안 위험이 증가할 수 있습니다.
최대한 많은 네트워크 서비스를 비활성화하십시오. Directory Server는 TCP/IP만 사용하므로 파일 공유와 기타 서비스를 필요로 하지 않습니다. IP 라우팅, 우편, NetBIOS, NFS, RAS, 웹 게시, Windows 네트워크 클라이언트 서비스 등을 비활성화합니다. 특히 Windows에서는 이벤트 로그, 플러그 앤 플레이, 개인 데이터 보호, 보안 계정 관리자, Sun ONE 관리 서버, Sun ONE Directory Server, 원격 프로시저 호출(RPC), SNMP를 제외한 모든 서비스를 중지하고 비활성화하십시오. telnet과 ftp도 비활성화하는 것이 좋습니다.
대부분의 네트워크 서비스와 마찬가지로 telnet과 ftp도 보안상 위험을 초래할 수 있습니다. 두 서비스는 네트워크를 통해 암호화되지 않은 사용자 암호를 전송한다는 점에서 특히 위험합니다. telnet과 ftp 대신 보안 셸(ssh)이나 보안 FTP(sftp)와 같은 클라이언트를 사용할 수 있습니다.
Directory Server 인스턴스가 네트워크에 이름 지정 서비스를 제공하지 않으면 시스템의 이름 지정 서비스를 사용하십시오. Sun ONE 서버 콘솔과 같은 원격 관리 도구는 IP 주소와 호스트 이름 간의 변환 등 일부 작업을 수행할 때 이름 지정 서비스를 이용합니다.
네트워크 서비스 비활성화에 대한 자세한 내용은 운영 체제 설명서를 참조하십시오.
정확한 시간 유지
시스템 간에 로그 파일의 날짜 및 타임스탬프를 보다 쉽게 복제하고 상관 관계를 설정하려면 시스템 간에 시스템 클럭을 동기화해야 합니다. 예를 들어, 특히 Windows 시스템에서 정확한 시스템 시간을 설정하려면 NTP(Network Time Protocol) 클라이언트를 사용합니다.
시스템 장애 후 다시 시작
가능하면 Sun ONE Directory Server 관리 설명서에 설명된 것처럼 Directory Server를 중지하십시오. Directory Server가 올바로 종료되지 않고 시스템 종료 중에 갑자기 중지되면 데이터베이스가 손상되어 시작 속도가 느려질 수 있습니다. 이 경우 데이터베이스를 복구할 시간이 필요합니다.
(Solaris 패키지) 설치 및 구성 프로세스의 일부로 해당 스크립트가 부트 시 소프트웨어를 다시 시작합니다.
(Windows) 시스템 장애 후 자동으로 소프트웨어를 다시 시작하도록 Windows를 구성합니다. 자세한 내용은 Windows 도움말을 참조하십시오.
기타 플랫폼에서 부트 시 서비스를 시작하는 방법은 해당 운영 체제 설명서를 참조하십시오.
권장되는 기본 조정 작업 생성
Windows 이외의 플랫폼에서 권장되는 기본 조정 작업을 생성하려면 Solaris 패키지인 경우 /usr/sbin/directoryserver idsktune에 있는 idsktune 유틸리티, 기타 버전인 경우 제품 이진이 포함된 디렉토리에 있는 idsktune 유틸리티를 사용합니다.
수퍼유저로 이 유틸리티를 실행하면 유틸리티에서 시스템 정보를 수집하고 권장되는 수정 작업에 대해 알림, 경고 및 오류를 표시합니다. 예를 들어, 이 유틸리티는 다음과 같은 사항을 확인합니다.
- 운영 체제와 커널 버전이 이번 릴리스에서 지원되는지 여부
- 사용 가능한 메모리 및 디스크 공간이 일반 용도의 최소 요구 사항을 충족시키는지 여부
- 시스템 자원 제한이 일반 용도의 최소 요구 사항을 충족시키는지 여부
- 필요한 패치 또는 서비스 팩이 설치되어 있는지 여부
주 생산용으로 사용할 시스템에 Directory Server를 설치하는 경우 먼저 모든 ERROR 조건을 수정해야 합니다.
특정 배포의 요구 사항은 최소 요구 사항을 초과할 수 있으므로 idsktune 유틸리티에서 최소 시스템 요구 사항으로 확인된 것보다 많은 자원을 제공할 수 있습니다.
유틸리티에 관한 자세한 내용은 Sun ONE Directory Server Resource Kit 설명서를 참조하십시오. Sun ONE Directory Server Resource Kit는 "Directory Server 도구 다운로드"에 설명된 방법으로 구할 수 있습니다.
시스템 설정 조정
현재 시스템 설정을 읽고 변경 사항을 권장하는 idsktune 도구를 사용할 수 있습니다. 일반적으로 권장되는 작업을 구현하면 Directory Server를 실행하는 전용 시스템과 추가 응용 프로그램을 실행하는 시스템의 성능이 모두 최적화됩니다.
권장되는 특정 작업을 구현하기 전에 로컬 네트워크 조건과 기타 응용 프로그램을 고려합니다. 추가 네트워크 조정 팁은 운영 체제 설명서를 참조하십시오.
(Windows) 지연된 프로시저 호출(DPC)
다중 프로세서 시스템에서 들어오는 네트워크 트래픽을 처리하기 위해 지연된 인터럽트 요청을 처리하는 Windows 기본 DPC는 성능을 저하시킬 수 있습니다. 실제로 DPC가 되는 지연된 인터럽트는 한 프로세서에서 다른 프로세서로 다시 예약되어 상당한 오버헤드를 발생시킵니다. 이러한 DPC 오버헤드 문제를 방지하려면 아래 레지스트리 키의 ProcessorAffinityMask 값을 0으로 설정하십시오.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NDIS\Parameters
파일 설명자
Directory Server는 파일 설명자를 사용하여 동시 클라이언트 연결을 처리합니다. 따라서 시스템이나 프로세스에서 사용할 수 있는 최대 파일 설명자 수가 작으면 동시 연결 수가 제한될 수 있습니다. 파일 설명자 수에 관해 권장되는 작업은 시스템에서 Directory Server가 처리할 수 있는 동시 연결 수와 관련이 있습니다.
Solaris 시스템에서 사용할 수 있는 파일 설명자 수는 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 rlim_fd_max 매개 변수를 통해 구성됩니다. 사용할 수 있는 파일 설명자 수를 수정하는 방법은 운영 체제 설명서를 참조하십시오.
시스템에서 사용할 수 있는 최대 파일 설명자 수를 수정한 후 Directory Server에서 이 파일 설명자를 사용하도록 구성하는 방법은 표 9-2를 참조하십시오.
(HP-UX) 큰 파일 지원
일부 HP-UX 시스템에서는 기본적으로 큰 파일은 지원하지 않습니다. Directory Server를 설치하려는 파일 시스템에서 큰 파일을 지원하도록 설정하는 방법은 HP-UX 제품 설명서를 참조하십시오. idsktune 유틸리티의 출력에도 지침이 나와 있습니다.
(HP-UX) 스레드 보류 시간 제한
idsktune 유틸리티에 표시된 것처럼 일부 HP-UX 시스템에서 최대 스레드 보류 시간 제한 수가 잘못 설정되었을 수 있습니다. 최대 스레드 보류 시간 제한 수를 증가시키는 방법은 HP-UX 설명서를 참조하십시오. idsktune 유틸리티의 출력에도 지침이 나와 있습니다.
(HP-UX) 프로세스 당 스레드
idsktune 유틸리티에 표시된 것처럼 일부 HP-UX 시스템에서 프로세스 당 최대 스레드 수가 너무 낮게 설정되었을 수 있습니다. 프로세스 당 최대 스레드 수를 증가시키는 방법은 HP-UX 설명서를 참조하십시오. idsktune 유틸리티의 출력에도 지침이 나와 있습니다.
TCP(Transmission Control Protocol) 설정
특정 네트워크 설정은 플랫폼에 따라 달라집니다. 일부 시스템에서는 TCP 설정을 수정하여 Directory Server 성능을 향상시킬 수 있습니다. 이 절에서는 TCP 설정에 관해 idsktune 유틸리티가 권장하는 작업의 추론 과정을 설명합니다.
TIME-WAIT 상태로 닫힌 연결
일부 시스템에서는 종료된 TCP 연결을 커널 테이블에 보관하는 기간을 구성할 수 있습니다. 보관되어 있는 연결은 신속하게 다시 열 수 있습니다. 이 기간을 너무 길게 설정하면 시스템이 오랜 기간 동안 커널 테이블에서 다수의 연결을 추적하므로 Directory Server에서 사용할 수 있는 연결 수가 줄어듭니다. 이 매개 변수 값을 30초(30,000밀리초)로 설정하면 대부분의 배포 시 Directory Server에 대해 더 많은 동시 연결을 제공할 수 있습니다.
Solaris 시스템에서 이 기간은 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_time_wait_interval 매개 변수를 통해 구성됩니다.
허용되는 보류 연결
일부 시스템에서는 Directory Server와 같은 TCP Listener에서 허용되는 TCP 보류 연결 수를 구성할 수 있습니다. 이 개수를 너무 작게 설정하면 Directory Server에서 허용할 수 있는 보류 연결 수가 제한됩니다. 이 매개 변수 값을 1024 이상으로 설정하면 대부분의 배포 시 Directory Server가 더 많은 동시 연결 요청을 처리할 수 있습니다.
Solaris 시스템에서 허용되는 보류 연결 수는 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_conn_req_max_q 매개 변수를 통해 구성됩니다. tcp_conn_req_max_q0을 2048로 늘리는 것이 좋습니다.
지연 승인
일부 시스템에서는 직접 시스템에 연결되어 있지 않은 호스트에 대해 TCP 승인이 지연되는 기간을 구성할 수 있습니다. 직접 지연 시간을 구성하는 대신 표 9-2에 설명된 것처럼 cn=config의 nsslapd-nagle를 off로 설정합니다.
비활성 연결
일부 시스템에서는 연결 유지 패킷의 전송 간격을 구성할 수 있습니다. 이 설정은 비활성화되어 잠재적으로 연결이 끊어진 TCP 연결을 유지하는 기간을 결정할 수 있습니다. 이 기간을 너무 길게 설정하면 연결 유지 간격으로 인해 시스템이 이미 연결이 끊어진 클라이언트의 연결을 유지하느라 불필요한 자원을 사용할 수 있습니다. 이 매개 변수 값을 600초(600,000밀리초, 10분)로 설정하면 대부분의 배포 시 Directory Server에 대해 더 많은 동시 연결을 제공할 수 있습니다.
Solaris 시스템에서 이 기간은 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_keepalive_interval 매개 변수를 통해 구성됩니다.
들어오는 연결
일부 시스템에서는 승인을 보내지 않고 들어오는 연결을 기다리는 기간을 구성할 수 있습니다. 이 기간을 너무 길게 설정하면 연결 실패 검색이 지연될 수 있습니다. 빠르고 믿을 수 있는 네트워크상의 인트라넷 배포 시 이 매개 변수 값을 600초(600,000밀리초, 10분)로 설정하면 성능이 향상됩니다.
Solaris 시스템에서 이 기간은 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_ip_abort_interval 매개 변수를 통해 구성됩니다.
나가는 연결
일부 시스템에서는 나가는 연결이 만들어질 때까지 기다리는 기간을 구성할 수 있습니다. 이 기간을 너무 길게 설정하면 나가는 연결을 만들려는 복제본 등의 대상 서버가 신속하게 응답하지 않을 경우 오랜 지연이 발생할 수 있습니다. 빠르고 믿을 수 있는 네트워크상의 인트라넷 배포 시 이 매개 변수 값을 10초로 설정하면 성능이 향상됩니다.
Solaris 시스템에서 이 기간은 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_ip_abort_cinterval 매개 변수를 통해 구성됩니다.
재전송 시간 제한
일부 시스템에서는 패킷의 초기 재전송 간격을 구성할 수 있습니다. 이 설정은 승인되지 않은 패킷을 재전송하기 전의 대기 시간에 영향을 줍니다. 이 기간을 너무 길게 설정하면 손실된 패킷에 대한 클라이언트 대기 시간이 길어질 수 있습니다. 빠르고 믿을 수 있는 네트워크상의 인트라넷 배포 시 이 매개 변수 값을 500밀리초로 설정하면 성능이 향상됩니다.
Solaris 시스템에서 이 기간은 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_rexmit_interval_initial 매개 변수를 통해 구성됩니다.
Windows는 Van Jacobson TCP 고속 재전송 및 복구 알고리즘을 구현하여 재전송 타이머의 만료를 기다릴 필요 없이 ACK를 수신하면 즉시 누락된 세그먼트를 재전송할 수 있습니다. Van Jacobson 알고리즘을 구현하려면 아래 레지스트리 키를 수정합니다.
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
REG_DWORD 종류의 TcpMaxDupAcks를 추가하고 값을 ACK 개수로 설정합니다. 값의 범위는 1-3이고 기본값은 2입니다.
시퀀스 번호
일부 시스템에서는 초기 시퀀스 번호를 생성하는 방법을 구성할 수 있습니다. 엑스트라넷 및 인터넷 배포 시에는 RFC 1948에 따라 초기 시퀀스 번호를 생성하여 시퀀스 번호 공격을 방지할 수 있도록 이 매개 변수를 설정합니다.
Solaris 시스템에서 이 동작은 /usr/sbin/directoryserver idsktune(패키지 버전) 또는 idsktune(패키지 없음)의 출력에 설명된 것처럼 tcp_strong_iss 매개 변수를 통해 구성됩니다.