5.3. NIS 보안 강화

NISNetwork Information Service의 줄임말입니다. NIS는 ypserv라고 불리우는 RPC 서비스로서 portmap 및 다른 관련 서비스들과 함께 사용되어 동일한 도메인에 위치한 컴퓨터에 사용자명, 암호와 다른 기밀 정보를 배포하는 기능을 합니다.

NIS 서버는 다음과 같은 여러가지 응용 프로그램으로 구성되어 있습니다:

NIS는 오늘날 보안 기준으로 판단시 안전하지 않습니다. 호스트 인증 메커니즘이 없으며 암호 해시를 포함한 모든 정보를 네트워크 상에서 암호화되지 않은 채로 전달합니다. 결과적으로 NIS를 사용하는 네트워크를 설정시 각별한 주의가 요구됩니다. 또한 NIS의 기본 설정은 본래부터 안전하지 못하기 때문에 문제가 더욱 복잡해질 수 있습니다.

NIS 서버를 구현하려고 계획하시는 분들은 우선 5.2 절에서 설명된 것처럼 portmap 서비스를 보안 강화하신 후 다음 문제를 차례로 해결하시기 바랍니다.

5.3.1. 네트워크를 신중하게 설정하기

NIS는 네트워크 상에서 기밀 정보를 암호화되지 않은 상태에서 전달하기 때문에 서비스를 분할되고 안전한 네트워크 상에서 방화벽을 사용한 상태에서 서비스를 실행해야 합니다. 비보안 네트워크 상에서 NIS 정보가 전달될 때마다 누군가 정보를 가로챌 위험이 있습니다. 이러한 의미에서 네트워크를 신중히 설정함으로서 심각한 보안 침입 위협을 방지할 수 있습니다.

5.3.2. 암호와 같이 추측하기 힘든 NIS 도메인 이름과 호스트명 사용하기

NIS 도메인 내에 위치한 컴퓨터에서 사용자가 NIS 서버의 DNS 호스트명과 NIS 도메인 이름만 알고 있다면 인증을 거치지 않고 서버에서 정보를 유출하는 것이 가능합니다.

예를 들어 만일 누군가 네트워크에 랩탑 컴퓨터를 연결하거나 외부에서 네트워크에 침입하여 내부 IP 주소를 위장할 수 있다면 다음 명령을 사용하여 /etc/passwd 파일의 내용을 보는 것이 가능합니다:

ypcat -d <NIS_domain> -h <DNS_hostname> passwd

만일 이 침입자가 루트 사용자 권한을 가지고 있다면 다음과 같은 명령을 입력하여 /etc/shadow 파일의 내용을 볼 수 있습니다:

ypcat -d <NIS_domain> -h <DNS_hostname> shadow

알림알림
 

커베로스가 사용된 경우 /etc/shadow 파일은 NIS map에 저장되지 않습니다.

침입자가 NIS map에 액세스하는 것을 보다 힘들게 하기 위하여 DNS 호스트명을 o7hfawtgmhwg.domain.com와 같은 임의 문자열로 생성하시는 것이 좋습니다. 유사한 방법으로 NIS 도메인 이름도 임의 문자열로 생성하시되 호스트명과 다른 이름을 생성하십시오. 이렇게 하시면 침입자가 NIS 서버에 액세스하는 것이 더욱 힘들어 집니다.

5.3.3. /var/yp/securenets 파일을 수정하기

/var/yp/securenets 파일이 공백으로 비어있거나 (기본 설치를 수행한 후) 파일이 존재하지 않는 경우 NIS는 모든 네트워크를 청취합니다. 이러한 경우 가장 먼저 하실 것은 ypserv가 적절한 네트워크에서 들어오는 요청만 응답하도록 이 파일에 넷마스크/네트워크 쌍을 입력하셔야 합니다.

다음은 /var/yp/securenets 파일 예제입니다:

255.255.255.0     192.168.0.0

경고경고
 

/var/yp/securenets 파일을 생성하지 않은 상태에서 NIS 서버를 처음으로 시작하시면 안됩니다.

이 기술은 IP 스푸핑 공격에 대한 보호를 제공하지는 못하지만 최소한 NIS 서비스가 청취할 네트워크를 제한해줍니다.

5.3.4. 정적 포트를 할당하고 IPTables 규칙 사용하기

NIS와 관련된 모든 서버에 특정 포트를 할당하는 것이 가능하지만 사용자가 로그인 암호를 변경할 수 있게 해주는 데몬인 rpc.yppasswdd는 예외입니다. 다른 두 개의 NIS 서버 데몬인 rpc.ypxfrdypserv에 포트를 할당함으로서 방화벽 규칙을 생성하여 침입자가 NIS 서버 데몬에 침입하지 못하도록 보안을 강화할 수 있습니다.

이러한 설정을 위해 /etc/sysconfig/network 파일에 다음과 같은 줄을 삽입하시기 바랍니다:

YPSERV_ARGS="-p 834"
YPXFRD_ARGS="-p 835"

다음 IPTables 규칙을 입력하여 이 포트에서 서버가 청취할 네트워크를 제한 설정하실 수 있습니다:

iptables -A INPUT -p ALL -s! 192.168.0.0/24  --dport 834 -j DROP
iptables -A INPUT -p ALL -s! 192.168.0.0/24  --dport 835 -j DROP

힌트힌트
 

IPTables 명령과 함께 방화벽 규칙을 구현하는 방법에 대한 보다 자세한 정보를 원하신다면 7 장을 참조하시기 바랍니다.

5.3.5. 커베로스 인증 사용하기

NIS 인증이 사용될 경우 가장 심각한 결점은 사용자가 시스템에 로그인할 때마다 /etc/shadow 파일의 암호 해시가 네트워크 상에서 전달되는 것입니다. 만일 침입자가 NIS 도메인에 침입하여 네트워크 트래픽을 훔쳐보고 있다면 사용자명과 암호 해시를 모르게 수집할 수 있습니다. 충분한 시간이 주어진다면 암호 크래킹 프로그램을 사용하여 추측하기 쉬운 암호를 알아낸 후 침입자는 유효한 계정을 사용하여 네트워크에 액세스 가능합니다.

커베로스는 비밀키 암호 기법을 사용하기 때문에 네트워크 상에서 암호 해시를 전달하지 않습니다. 따라서 시스템 보안이 한층 강화됩니다. 커베로스와 관련된 보다 자세한 정보를 보시려면 Red Hat Enterprise Linux 참조 가이드에서 커베로스 (Kerberos) 장을 참조하시기 바랍니다.