이 장에서는 Trusted Solaris 환경의 네트워킹을 설명합니다. SunOS CMW 네트워킹 하위 시스템은 Solaris 2.5.1 TCP/IP 네트워크의 확장된 버전입니다. 이 확장 버전을 통해 네트워크의 워크스테이션 간에 트러스트 방식으로 통신이 가능하게 되었습니다. 네트워크 하위 시스템은 시스템 보안 정책(예: MAC, 정보 레이블 부동)이 분산 응용프로그램에서도 확실히 보존되도록 도와줍니다. 네트워크에 필요한 관리 및 보호의 정도는 네트워크가 동종인지 또는 이종인지에 따라 결정됩니다.
기본 구성에서 보안 관리자 역할은 네트워크 보안의 책임을 갖습니다.
이 절에서는 다음과 같은 네트워킹 내용을 설명합니다.
동종 네트워크
이종 네트워크
호스트 종류
네트워크 구성 데이터베이스
관련 하위 시스템
데이터 전송 방법
관리 및 보호하기에는 동종 네트워크 구성이 가장 쉬운 방법입니다. 동종 네트워크 구성에서는 모든 워크스테이션이 Trusted Solaris 2.5 운영 환경을 실행하며 같은 보안 속성 집합(민감도 레이블, 정보 레이블 등)과 함께 동일한 NIS+ 마스터 서버를 사용합니다. NIS+ 마스터가 사용하는 일반적인 동종 네트워크는 아래 그림과 같습니다. 동종 네트워크의 호스트는 동일한 보안 도메인에 위치한다고 할 수 있습니다.
워크스테이션은 네트워크 인터페이스라는 물리적 커넥터에 의해 네트워크에 연결됩니다. 각 네트워크 인터페이스에는 상한 경계를 설정하는 최대 민감도 레이블과 하한 경계를 설정하는 최소 민감도 레이블로 구성된 인가 범위가 있습니다. 인가 범위는 인터페이스를 통해 전송하거나 수신할 수 있는 정보 민감도를 제어합니다.
Trusted Solaris 네트워크는 또한 상이한 네트워크 프로토콜을 실행하는 호스트를 수용할 수 있습니다. 이종 구성에는 동종 배열보다 더 많은 보호가 필요하므로 다양한 프로토콜을 가진 호스트 데이터를 보안 정책에 관련하여 어떻게 처리할 것인지 명시해야 합니다. 다음 그림은 일반적인 이종 네트워크 및 Trusted Solaris 네트워크와 통신할 수 있는 몇몇 상이한 프로토콜을 보여줍니다.
다른 데이터 프로토콜을 이용하는 또 다른 Trusted Solaris 워크스테이션이나 호스트의 데이터를 Trusted Solaris 워크스테이션이 수용하는 방식을 이해하려면 표준 Solaris 데이터 패킷 형식(그림 5-3 (a) 참조)과 Trusted Solaris 형식(그림 5-3 (b) 참조)을 비교해 보는 것이 도움이 됩니다.
표준 형식에는 헤더 3개, 데이터 형식 및 트레일러가 있는데, 이것은 Trusted Solaris 형식에도 있습니다. Trusted Solaris 형식이 표준 형식과 다른 점은 다음과 같습니다.
Trusted Solaris 형식은 RIPSO(Revised Internet Protocol Security Option)나 CIPSO(Common Internet Protocol Security Option) 레이블을 보유하기 위해 IP 옵션 필드를 사용합니다. CIPSO 호스트를 위한 태그 형식 1과 MSIX 호스트를 위한 태그 형식 3이 CIPSO 옵션으로 지원됩니다.
Trusted Solaris 형식에는 세션 관리 프로토콜과 버전을 식별하는 SAMP(Security Attribute Modulation Protocol) 헤더가 포함됩니다.
Trusted Solaris 형식에는 속성 형식이 이진 형태로 전송되었는지 토큰 형태로 전송되었는지 식별하는 속성 헤더가 포함됩니다. Trusted Solaris는 이진 표현만 사용하지만 토큰을 사용하는 프로토콜의 데이터를 수용할 수 있습니다.
Trusted Solaris는 데이터를 정확히 전달할 수 있도록 호스트 종류를 네트워크 프로토콜에 따라 다음과 같이 분류합니다.
sun_tsol - Trusted Solaris 2.5를 실행하는 워크스테이션을 의미합니다. 이 종류는 프로토콜의 보안을 위해 이진 표현을 사용합니다. Trusted Solaris 호스트는 RIPSO 또는 CIPSO IP 옵션으로 데이터를 전달하거나 받을 수 있습니다.
tsix - TSIX (RE) 1.1(Trusted Systems Information eXchange for Restricted Environments standard)를 지원하는 호스트를 의미합니다. 이 종류는 이진 데이터가 아닌 토큰(임의의 32비트 숫자)을 사용하여 보안 속성을 나타낸다는 사실을 제외하고는 Trusted Solaris 호스트(그림 5-3 참조)와 같은 형식을 사용합니다. 토큰은 SATMP(보안 속성 토큰 매핑 프로토콜)를 사용합니다.
msix - MSIX 1.0 표준을 지원하는 호스트를 의미하며 Trusted Solaris 1.x 네트워크에서 사용됩니다.
cipso - CIPSO를 준수하는 호스트를 의미합니다. CIPSO에서 지원되는 유일한 보안 속성은 CIPSO DOI(Domain of Interpretation)입니다.
ripso - IETF RFC 1108에 설명되었듯이, RIPSO를 준수하는 호스트를 의미합니다. SunOS CMW는 특정 호스트로 전송된 네트워크 패킷에 적용되도록 관리적으로 설정한 고정 RIPSO 레이블을 지원합니다. 이 기능은 RFC 사양을 완전히 충족하지 않지만 RIPSO 레이블이 필요한 경우 충분한 기능을 제공합니다.
tsix, msix, cipso 및 ripso 호스트 종류는 다른 트러스트 운영 환경을 실행하는 호스트 범주에 속합니다. unlabeled 호스트 종류는 표준 네트워크 프로토콜을 사용하지만 보안 속성은 사용하지 않는 호스트를 위한 것입니다.
사이트에 맞는 네트워크 구성 데이터베이스를 구성할 때 네트워크의 워크스테이션이 통신할 수 있는 모든 호스트를 지정하고 위의 호스트 종류에 따라 분류된 기본 보안 속성값으로 템플리트를 설정합니다. 다음 절에서 자세한 내용을 설명합니다.
외부와 통신하려면 호스트가 포함된 데이터베이스, 네트워크 인터페이스 및 기본 보안 속성 정보를 설정해야 합니다. 이를 위해 다음과 같은 세 가지 네트워크 구성 데이터베이스를 사용할 수 있습니다.
tnrhdb
tnrhtp
tnidb
이들 데이터베이스는 커널로 읽어들여지며, 한 호스트에서 다른 호스트로 데이터가 전송할 때 인가 확인에 사용됩니다. 데이터베이스 관리자를 사용하여 이들 데이터베이스를 유지 관리합니다. Trusted Solaris는 tnrhdb와 tnrhtp 데이터베이스의 중앙 관리를 위해 NIS+를 사용하며, tnidb 데이터베이스는 각 호스트에서 개별적으로 유지됩니다. 보안 관리자 또는 가능한 경우 루트에서만 네트워크 데이터베이스를 관리할 수 있습니다. 데이터베이스 관리자에 액세스하려면 프론트 패널에서 CDE 응용프로그램 관리자 아이콘을 누릅니다. 응용프로그램 관리자의 Solstice_Apps 폴더 아이콘에서 데이터베이스 관리자 아이콘을 액세스할 수 있습니다. 데이터베이스 관리자 아이콘을 누르면 데이터베이스 관리자가 화면에 표시됩니다. 데이터베이스 관리자 아이콘을 누르면 데이터베이스 관리자: 읽어들이기 대화 상자가 나타나고, 이 대화 상자에는 사용자가 선택할 수 있는 데이터베이스 이동 목록이 있습니다.
tnrhdb(4) 데이터베이스에는 네트워크 상의 워크스테이션과 통신을 할 수 있도록 허용된 모든 호스트의 IP 주소와 tnrhtp 파일에서 이 호스트에 할당된 템플리트가 들어 있습니다. 기본값도 폴백 메커니즘의 일부분으로 이 데이터베이스에 포함될 수 있습니다(다음 그림 참조). IP 주소의 맨 오른쪽 바이트를 0으로 바꾸면 기본값의 0이 아닌 부분과 IP 주소가 일치하는 나머지 호스트의 와일드카드로 사용됩니다. 단, 서브넷 마스크에는 폴백 메커니즘이 적용되지 않습니다.
데이터베이스 관리자에서 tnrhdb 데이터베이스를 선택하여 읽어 들이면 tnrhdb 데이터베이스의 내용이 데이터베이스 관리자 주 윈도우에 표시되어, 원격 호스트 및 특정 호트스와의 통신에 적용된 템플리트를 나타내는 IP 주소를 보여줍니다. tnrhdb 데이터베이스를 편집하려면 추가(Add)를 선택하거나 IP 주소를 선택한 다음 편집(Edit) 메뉴에서 수정(Modify)을 선택합니다. 해당 대화 상자가 표시됩니다. 다음 페이지의 그림은 데이터베이스 관리자: 읽어들이기(Database Manager: Load) 윈도우, tnrhdb 데이터베이스가 있는 주 윈도우 및 편집(Edit) 메뉴에서 사용할 수 있는 대화 상자 두 개를 보여줍니다.
tnrhtp(4) 데이터베이스에는 소스 호스트에 할당될 보안 속성값을 포함하는 템플리트가 있습니다. 동종 네트워크에서는 하나의 템플리트만 있으면 됩니다. 이종 네트워크에서는 각 호스트 종류에 대하여 서로 다른 템플리트가 있어야 합니다. 이 속성들은 수신 데이터에서 빠진 속성에 대한 기본값으로 사용되며, 전송 데이터에 대한 대상 정보를 제공하고 수신 패킷에 대한 인가 확인에도 사용됩니다. 사용되는 보안 속성은 템플리트에 지정된 호스트 종류에 따라 다릅니다. tnrhtp에 저장될 수 있는 보안 속성은 다음과 같습니다.
강제 특권
RIPSO 레이블
RIPSO 오류 - ICMP 오류 메시지에 RIPSO 레이블이 포함된 경우 사용되는 보호 허가 플래그
CIPSO DOI - CIPSO 레이블 패킷에서 호스트의 Domain of Interpretation(DOI)을 식별합니다.
감사 마스크
감사 터미널 ID
감사 세션 ID
템플리트의 ip_label 필드가 cipso로 설정되거나 원격 호스트 종류가 cipso인 경우 태그 종류 1이 사용됩니다. 태그 종류 3은 원격 호스트 종류가 MSIX일 때 사용됩니다. 그러나 각 종류의 속성은 특정 호스트 종류에만 적합합니다. 표 5-1은 각 호스트 종류에 허용되는 보안 속성을 설명합니다.
표 5-1 호스트 종류별 보안 속성
호스트 종류 |
보안 속성 |
---|---|
unlabeled |
민감도 레이블, 정보 레이블, 클리어런스, UID, GID, 강제 특권, 감사 UID, 감사 마스크, 감사 터미널 ID, 감사 세션 ID, (게이트웨이 호스트에 대한 최소 SL과 최대 SL) |
sun_tsol |
허용 특권, 최소 SL과 최대 SL, IP 레이블, RIPSO 레이블, RIPSO 오류, CIPSO DOI, 감사 UID, 감사 마스크, 감사 터미널 ID, 감사 세션 ID |
ripso |
민감도 레이블, 정보 레이블, 클리어런스, UID, GID, 강제 특권, RIPSO 레이블, RIPSO 오류, 감사 UID, 감사 마스크, 감사 터미널 ID, 감사 세션 ID, (게이트웨이 호스트에 대한 최소 SL과 최대 SL) |
cipso |
클리어런스, 정보 레이블, UID, GID, 강제 특권, 최소 SL과 최대 SL, CIPSO DOI, 감사 UID, 감사 마스크, 감사 터미널 ID, 감사 세션 ID |
tsix |
민감도 레이블, 정보 레이블, 클리어런스, UID, GID, 허용 특권, 강제 특권, 최소 SL과 최대 SL, IP 레이블, RIPSO 레이블, RIPSO 오류, CIPSO DOI, 감사 UID, 감사 마스크, 감사 터미널 ID, 감사 세션 ID |
msix |
민감도 레이블, 정보 레이블, 클리어런스, UID, GID, 최소 SL과 최대 SL, 감사 UID, 감사 마스크, 감사 터미널 ID, 감사 세션 ID |
데이터베이스 관리자에서 tnrhtp 데이터베이스를 선택하여 읽어 들이면 tnrhtp 데이터베이스의 내용이 데이터베이스 관리자 주 윈도우에 표시되어, 각 원격 호스트 템플리트 이름 및 이 이름과 관련된 기본값을 보여줍니다. tnrhdb 데이터베이스를 편집하려면 추가(Add)를 선택하거나 템플리트를 선택한 다음 편집(Edit) 메뉴에서 수정(Modify)을 선택합니다. 다음 페이지의 그림 id와 같은 대화 상자가 표시됩니다.
대화 상자는 다음과 같은 네 부분으로 구분됩니다.
템플리트 이름(Template Name)과 호스트 종류(Host Type) - 템플리트를 식별할 수 있습니다. 호스트 종류(Host Type) 메뉴를 사용하여 템플리트에 대한 호스트 종류를 선택할 수 있습니다.
인가 범위(Accreditation Range) - 최소 SL(Minimum Sl)과 최대 SL(Maximum SL) 필드를 사용하여 템플리트에 대한 인가 범위를 설정할 수 있습니다. 이들 필드는 민감도 레이블, 정보 레이블 또는 클리어런스를 포함하는 다른 필드와 마찬가지로 레이블 작성기 대화 상자를 표시하는 버튼을 제공합니다.
받는 정보에 대한 속성(Attributes for Incoming Information) - 받는 정보에 적용되는 사용자 ID, 민감도 레이블, 정보 레이블, 클리어런스, 강제 특권 및 허용 특권의 값을 설정할 수 있습니다. 강제 특권(Forced Privileges) 및 허용 특권(Allowed Privileges) 버튼을 선택하면 특권 선택(Privilege Selection) 대화 상자가 표시됩니다.
보내는 정보에 대한 속성(Attributes on Outgoing Information) - 보내는 정보에 적용되는 IP 레이블 형식(IP Label Type), RIPSO 보내기 클래스(RIPSO Send Class), RIPSO 보내기 PAF(RIPSO Send PAF), RIPSO 반환 PAF(RIPSO Return PAF) 및 CIPSO 도메인(CIPSO Domain)을 설정할 수 있습니다. IP 레이블 유형(IP Label Type) 필드에는 없음(None), RIPSO 또는 CIPSO를 선택할 수 있는 옵션 메뉴가 있습니다. 이 필드를 CIPSO로 설정하거나 호스트 종류가 CIPSO인 경우 CIPSO 태그 종류 1이 데이터 패킷 내의 IP 옵션 필드에 사용됩니다. 호스트 종류가 MSIX이면 CIPSO 태그 종류 2가 사용됩니다. RIPSO 보내기 클래스(RIPSO Send Class) 필드 옵션 메뉴를 사용하면 보낼 RIPSO 레이블의 분류 등급 부분을 없음(None), Top Secret, Secret, Confidential, Unclassified 또는 Hex 중에서 선택할 수 있습니다. Hex를 선택하면 16진수 값을 직접 입력할 수 있는 대화 상자가 표시됩니다. RIPSO 보내기 PAF(RIPSO Send PAF) 필드를 사용하면 보낼 RIPSO 레이블의 보호 허가 플래그 부분을 없음(None), GENSER, SIOP_ESI, SCI, NSA, DOE 또는 Hex 중 하나로 입력할 수 있습니다. RIPSO 반환 PAF(RIPSO Return PAF) 필드를 사용하면 옵션 메뉴로부터 오류 플래그를 없음(None), GENSER, SIOP_ESI, SCI, NSA, DOE 및 He챦첼}lPARA>에서 선택할 수 있습니다.
tnidb(4) 데이터베이스는 각 호스트에 로컬로 사용됩니다. 이 데이터베이스에는 민감도 레이블, 클리어런스, 유효 UIDs/GIDs, 강제 특권 등에 대한 기본값과 인가 범위가 있는 호스트의 네트워크 인터페이스가 들어 있습니다. tnrhtp에 있는 기본값이 tnidb의 값에 우선합니다.
데이터베이스 관리자에서 tnidb 데이터베이스를 선택하여 로드하면 tnidb 네트워크 인터페이스, 인터페이스에 대한 인가 범위, 네트워크와 관련된 기본 보안 속성 같은 데이터베이스의 내용이 데이터베이스 관리자 주 윈도우에 표시됩니다. tnidb 데이터베이스를 편집하려면 추가를 선택하거나 네트워크 인터페이스를 선택한 다음 편집 메뉴에서 수정을 선택해서 해당 대화 상자를 엽니다. 다음 그림은 tnidb 데이터베이스에 대한 추가 대화 상자가 있는 기본 윈도우를 보여줍니다. 최소 SL 및 최대 SL 버튼은 인가 범위를 정의합니다. 이 버튼을 누르면 레이블 작성기 대화 상자가 표시됩니다. 또는 민감도 레이블과 클리어런스 버튼을 눌러도 레이블 작성기 대화 상자가 표시됩니다. 강제 특권 버튼을 누르면 특권 선택 대화 상자가 표시됩니다. 사용자 ID와 그룹 ID 필드에서는 네트워크 인터페이스에 대한 기본 ID를 지정할 수 있습니다.
Trusted Solaris 2.5의 트러스트 NFS 기능은 Trusted Solaris 호스트와 기타 호스트 종류 사이의 마운팅을 허용합니다. MAC와 DAC는 전송된 데이터를 보호합니다. tnrhtp와 tnidb 데이터베이스는 없어진 보안 속성을 제공합니다. "수정된 Solaris 네트워크 명령"을 참조하십시오.
Trusted Solaris 운영 환경에서 서로 다른 네트워크의 호스트 간의 경로는 각 전송 단계마다 보안이 유지되어야 합니다.
Trusted Solaris 호스트는 부트할 때 데이터를 전송할 수 있도록 라우팅 정보를 읽어 들입니다. 관리자가 수동으로 유지하는 /etc/tsolgateways 파일이 있으면 이 파일의 게이트웨이가 호스트 기본값으로 사용됩니다. /etc/tsolgateways가 없으면 호스트는 관리자가 수동으로 유지하는 /etc/defaultrouter의 기본 경로를 사용합니다. 두 파일 중 어느 하나라도 있으면 호스트는 정적 라우팅을 사용합니다.
/etc/tsolgateways 파일과 /etc/defaultrouter 파일이 모두 없으면 호스트가 동적 라우팅을 사용해서 가능한 경우 in.rdisc(1M)(네트워크 라우터 검색 대몬)을, in.rdisc를 사용할 수 없으면 in.routed(1M)(네트워크 라우팅 대몬) 같은 특별 대몬을 실행해야 합니다. 호스트가 둘 이상의 네트워크에 연결되는 호스트인 게이트웨이로도 사용될 경우에는 in.rdisc와 in.routed가 모두 시작됩ㄹ니다.
부트할 때 호스트가 NIS+ 마스터와 통신할 수 있도록 tnrhdb와 tnrhtp 파일(/etc/security/tsol/boot 디렉토리에 상주하고 있는)을 커널로 읽어 들입니다. 이들 기본값은 트러스트 네트워크 대몬(tnd(1M))이 시작될 때 교체됩니다. 기본적으로 /etc/security/tsol/boot/tnrhdb는 0.0.0.0:tsol 항목을 포함하여 네트워크가 Trusted Solaris 네트워크임을 나타냅니다.
Trusted Solaris 환경에서 라우팅의 주 목적은 두 호스트 사이의 가장 안전한 단거리 경로를 찾는 것입니다. Trusted Solaris 라우팅 테이블은 확장 메트릭(emetrics라고 함)을 기본으로 합니다. emetric은 경로 설정 메트릭과 보안 측정을 위한 Security Routing Information(SRI)의 조합입니다. SRI는 다음과 같은 보안 속성을 통합할 수 있습니다.
최소 SL
최대 SL
DOI
RIPSO 레이블
RIPSO 오류
CIPSO만
RIPSO만
MSIX만
이 정보는 동적 라우팅이 사용될 경우 Trusted Solaris 확장 Routing Information Protocol을 사용하는 라우팅 대몬 in.routed에 의해, 정적 라우팅이 사용될 경우 route 명령을 사용한 직접 입력 또는 /etc/tsolgateways나 /etc/defaultrouter 파일을 통해 전파됩니다. 특정 경로에 대한 emetric은 해당 경로가 고려하는 동안 인가 확인에 사용됩니다.
라우팅 테이블에 모든 경로에 emetric이 있는 것은 아닙니다. 경로가 emetric이 없는 경우 최초 홉 게이트웨이의 원격 호스트 템플리트가 인가 확인에 대신 사용됩니다.
보안에 관한 경로의 적합성을 결정하기 위해 Trusted Solaris는 원본 호스트, 대상 호스트 및 경로의 emetrics에서 인가 확인이라는 테스트를 실행합니다. 특정 경로에 대한 emetric이 손실된 경우 경로의 최초 홉 게이트웨이를 위한 보안 속성이 확인됩니다. 호스트의 보안 속성은 tnrhdb, tnrhtp 및 tnidb 파일의 정보에서 파생됩니다. 예를 들어 테스트는 데이터 패킷의 민감도 레이블이 경로의 각 호스트 범위 안에 있는지 확인합니다. 또 다른 예로, Trusted Solaris 호스트와 어떤 IP 옵션도 사용하지 않는 TSIX 호스트 사이에 전송된 데이터는 경로가 CIPSO, RIPSO 또는 MSIX 호스트를 사용하는 경우 허용되지 않습니다 .
원본 호스트에서 관리되는 인가 확인은 다음과 같습니다.
보내는 데이터의 민감도 레이블은 대상 호스트의 인가 범위 내에 있어야 합니다.
데이터의 민감도 레이블은 경로에 대한 emetric의 인가 범위 내에 있어야 합니다. emetric을 사용할 수 없는 경우 최초 홉 게이트웨이 보안 속성의 인가 범위 내에 있어야 합니다.
데이터의 민감도 레이블은 원본 호스트 네트워크 인터페이스의 인가 범위 내에 있어야 합니다.
보내는 패킷에 CIPSO 레이블이 있는 경우 그 패킷의 DOI는 대상의 DOI 및 경로의 emetric(또는 최초 홉 게이트웨이)과 일치해야 합니다.
마찬가지로 보내는 패킷의 RIPSO 레이블은 대상의 RIPSO 레이블 및 경로의 emetric(또는 최초 홉 게이트웨이)과 일치해야 합니다. 대안으로는 RIPSO 오류가 대상의 RIPSO 오류, 경로의 emetric 또는 최초 홉 게이트웨이의 RIPSO 오류와 일치할 수 있습니다.
대상이 MSIX 시스템인 경우 경로의 emetric이나 최초 홉 게이트웨이 또한 MSIX(또는 Trusted Solaris) 시스템이어야 합니다.
Trusted Solaris 게이트웨이 호스트에서 진행되는 인가 확인은 다음과 같습니다.
다음 홉이 unlabeled 호스트인 경우 패킷의 기본 레이블은 대상 호스트의 기본 레이블과 일치해야 합니다.
패킷에 CIPSO 옵션이 있는 경우 전달을 위한 아래 조건이 충족되어야 합니다.
경로의 emetric(또는 다음 홉 게이트웨이)은 CIPSO 프로토콜에서 데이터를 수용할 수 있어야 합니다.
경로의 emetric(또는 다음 홉 게이트웨이)은 데이터 패킷의 DOI에 위치해야 합니다.
보내는 인터페이스를 위한 DOI(tnrhtp 데이터베이스의)는 데이터 패킷의 DOI와 같아야 합니다.
패킷에 RIPSO 옵션이 있는 경우 전달을 위한 아래 조건이 충족되어야 합니다.
경로의 emetric(또는 다음 홉 게이트웨이)은 RIPSO 프로토콜에서 데이터를 수용할 수 있어야 합니다.
경로의 emetric(또는 다음 홉 게이트웨이)에는 데이터 패킷의 RIPSO 레이블(또는 RIPSO 오류)과 동일한 RIPSO 레이블(또는 RIPSO 오류)이 있어야 합니다.
Trusted Solaris 시스템이 데이터를 수신할 때 트러스트 네트워크 소프트웨어는 다음 항목을 확인합니다.
데이터의 민감도 레이블은 원본 시스템과 데이터를 수신하는 네트워크 인터페이스 모두의 인가 범위 내에 있어야 합니다.
패킷에 CIPSO 레이블이 있는 경우 패킷의 DOI는 대상을 위한 원격 호스트 템플리트에 있는 DOI와 동일해야 합니다.
패킷에 RIPSO 레이블(또는 RIPSO 오류)이 있는 경우 패킷의 RIPSO 레이블(또는 RIPSO 오류)은 대상을 위한 원격 호스트 템플리트의 RIPSO 레이블(또는 RIPSO 오류)과 동일해야 합니다.
데이터가 위의 인가 확인을 통과하면 시스템은 필요한 보안 속성이 모두 있는지 확인합니다. 누락된 속성이 있는 경우 소프트웨어는 그 호스트에 할당된 네트워크 보안 템플리트 이름을 보기 위해 tnrhdb 데이터베이스에서 원본 호스트(각 IP 주소 또는 대상 표현에 의해)를 찾습니다. 그런 다음 소프트웨어는 tnrhtp 데이터베이스로부터 템플리트의 보안 속성을 검색합니다. 여전히 누락된 보안 속성이 있는 경우 소프트웨어는 tnidb 데이터베이스에서 네트워크 인터페이스를 찾아 기본 보안 속성을 검색합니다. 우선 순위에 따라 tnrhtp의 기본 속성은 tnidb의 속성보다 우선합니다.
다음 페이지의 그림은 Trusted Solaris 환경에서 경로를 설정하는 예제를 보여줍니다. 그림 5-8 (a)는 라우팅 다이어그램을 나타내고, 그림 5-8 (b)는 라우팅 테이블을 나타냅니다. Host 1과 Host 2 사이에는 다음과 같은 3가지의 잠재 경로가 있습니다.
Route #1은 RIP(Routing Information Protocol) 메트릭이 3인 최단 경로입니다. Route #1을 사용하는 데이터그램은 CONFIDENTIAL (C)에서 SECRET (S)까지의 민감도 레이블 범위로 제한됩니다.
Route #2에는 ADMIN_LOW에서 ADMIN_HIGH까지의 넓은 민감도 레이블 범위가 있습니다. Route #2를 사용하는 데이터그램에는 CIPSO로 설정된 IP 옵션이 있어야 합니다.
Route #3에는 세 경로 중 RIP가 6인 최장 거리가 있습니다. Route #3의 Security Routing Information은 알 수 없으므로 Gateway #5에 대한 tnrhtp의 템플리트에서 보안 속성이 파생되어야 합니다.
라우팅 테이블의 내용을 표시하려면 -R 옵션이 있는 netstat 명령을 사용해야 합니다. 라우팅 테이블을 수동으로 변경하려면 add나 delete 옵션이 있는 route 명령을 사용합니다. 예를 들면 다음과 같습니다.
% route add net 129.150.115.0 129.150.118.39 -m metric=2,min_sl=c,max_sl=ts,ripso_label="top_secret sci",ripso_error="genser;sci"add net 129.150.115.0: gateway 129.150.118.39
명령은 라우팅 테이블에 129.150.115.0 및 129.150.118.39에 있는 호스트와 distance metric 2, C에서 TS까지의 SL범위, RIPSO 레이블 = top_secret sci 및 RIPSO 오류 = genser;sci와 함께 루프를 추가합니다. 추가된 루프의 결과를 보려면 다음과 같이 입력합니다.
% netstat -Rn ... 129.150.115.0 129.150.118.39 UG 0 0 metric=2,min_sl=C,max_sl=TS,ripso_label=0x3d 0x20000000 (top_secret sci) ,ripso_error=0xa0000000 (genser;sci) ...
새 경로는 위의 내용과 같습니다. 다른 경로는 생략 부호(...)로 대체됩니다. 두 개의 새 emetric으로 경로를 추가하고 새 라우팅 테이블을 보여주는 두 번째 예제는 다음과 같습니다:
% route add net 129.150.114.0 129.150.118.39 -m metric=3,min_sl=admin_low,max_sl=s,doi=3 -m metric=4,min_sl=c,max_sl=admin_high,doi=4,ripso_label="top_secret sci",ripso_error="genser;sci" add net 129.150.114.0: gateway 129.150.118.39 % netstat -Rn ... 129.150.115.0 129.150.118.39 UG 0 0 metric=2,min_sl=C,max_sl=TS,ripso_label=0x3d 0x20000000 (top_secret sci) ,ripso_error=0xa0000000 (genser;sci) 129.150.114.0 129.150.118.39 UG 0 0 metric=4,min_sl=C,max_sl=ADMIN_HIGH,doi=4,ripso_label=0x3d 0x20000000 (t op_secret sci),ripso_error=0xa0000000 (genser;sci) metric=3,min_sl=ADMIN_LOW,max_sl=S,doi=3 ...
비 Trusted Solaris 게이트웨이가 있는 클러스터를 통해 보안 데이터 경로를 라우팅할 수 있습니다. 이러한 프로시저를 터널링이라고 합니다. 이를 위해 클러스터는 Trusted Solaris 호스트와 게이트웨이 전용 또는 비 Trusted Solaris 호스트와 게이트웨이 전용의 연속 집합입니다. 에지 게이트웨이는 클러스터 하나를 반대 종류의 클러스터에 연결하는 게이트웨이(Trusted Solaris 또는 비 Trusted Solaris)입니다.
다음 그림은 터널링 예제를 보여줍니다. 음영 처리된 직사각형은 비 Trusted Solaris 게이트웨이를 나타내며 굵은 선의 루프는 클러스터를 나타냅니다. 클러스터 #1은 비 Trusted Solaris 클러스터이며 클러스터 #2는 Trusted Solaris 클러스터입니다.
데이터를 호스트 #1에서 호스트 #2로 전송하려면 비 Trusted Solaris 클러스터인 클러스터 #1과 Trusted Solaris 클러스터인 클러스터 #2를 통과하는 경로가 필요합니다. 다음 두 조건에서만 허용됩니다.
비 Trusted Solaris 클러스터의 모든 게이트웨이(예제에서는 게이트웨이 #1, #2, #3)에는 동일한 보안 속성이 있어야 합니다. 시작할 때 각 게이트웨이에는 연결 가능한 대상 호스트의 주소를 포함하는 /etc/security/tsol/tunnel라는 로컬 파일이 있어야 합니다.
경로가 두 개 이상 있으며, 그 경로가 동일한 에지 게이트웨이를 통해 비 Trusted Solaris 클러스터로 들어간 다음 서로 다른 에지 게이트웨이를 통해 그 클러스터에서 종료되는 경우 이들 경로를 위한 emetric은 동일해야 합니다. 예를 들어 게이트웨이 #4에 CONFIDENTIAL에서 SECRET까지의 SL 범위가 있으며 게이트웨이 #5에 ADMIN_LOW부터 ADMIN_HIGH까지의 넓은 범위를 가지고 있다고 가정해 봅니다. 게이트웨이 #1은 비 Trusted Solaris 호스트이므로 보안 속성 없이 표준 라우팅 테이블을 사용하며 게이트웨이 #4를 통한 경로와 게이트웨이 #5를 통한 경로를 구분하지 못할 것입니다.
이 절에서 소개하는 네트워크 명령은 Solaris 기본 버전의 명령을 Trusted Solaris 환경에서 동작하도록 수정한 것입니다.
arp
ifconfig
netstat
route
snoop
spray
ndd
rdate
arp(1M) 명령을 사용하면 주소 확인 프로토콜에 사용되는 인터넷 대 이더넷 변환 표를 표시하고 수정할 수 있습니다. arp 명령의 Trusted Solaris 버전을 -d, -s, -f 등의 옵션과 함께 실행하려면 sys_net_config 특권을 상속해야 합니다. -a 옵션은 유효 UID 0을 사용해서 ADMIN_HIGH로 실행되어야 합니다. file_mac_read 특권과 file_dac_read 특권은 이 제한에 우선합니다.
ifconfig(1M) 명령을 사용하면 네트워크 매개변수를 구성하고 네트워크 인터페이스에 주소를 할당할 수 있습니다. ifconfig 명령의 Trusted Solaris 버전을 사용하려면 sys_net_config 특권이 필요합니다. ether, auto-revarp, plumb 등의 옵션으로 루트만이 읽을 수 있는 ADMIN_HIGH 네트워크 장치를 열어야 합니다. 이 옵션들은 유효 사용자 ID 0을 사용해서 ADMIN_HIGH로 호출될 수 있고, file_dac_read 특권과 file_mac_read 특권을 사용해서 이 옵션에 대한 제한을 무시할 수 있습니다.
드라이버 매개변수를 설정하기 위해서는 ndd(1M) 명령에 대한 -set 옵션은 sys_net_config 특권을 상속해야 합니다.
netstat(1M) 명령을 사용하면 소켓, 라우팅 테이블 및 기타 구조를 포함하여 네트워크 관련 데이터 구조의 내용이 여러 가지 형식으로 표시됩니다. 다른 네트워크에 있는 호스트와 통신을 할 때 netstat -rn 명령을 사용하면 게이트웨이가 구성되었는지 확인할 수 있습니다. netstat 명령의 Trusted Solaris 버전을 사용하려면 ADMIN_HIGH 민감도 레이블을 사용해야 커널 및 네트워크 구성 정보에 액세스할 수 있습니다. file_mac_read 특권을 사용하면 이 제한을 무시할 수 있습니다.
-R 옵션을 사용하여 동적 라우팅 테이블에서 각 경로의 메트릭 정보는 물론 보안 정보를 얻을 수 있습니다. -R 옵션에는 net_rawaccess 특권이 추가로 필요합니다. 예제는 "라우팅 명령 사용"을 참조하십시오.
rdate(1M) 명령이 제대로 실행되려면 sys_config 특권이 필요합니다.
route(1M) 명령을 사용하면 emetrics(보안 정보)의 추가 및 삭제를 포함하여 네트워크 라우팅 테이블에 대한 관리 작업을 수행할 수 있습니다. route 명령의 Trusted Solaris 버전이 제대로 실행되려면 sys_net_config 특권을 상속해야 합니다. Trusted Solaris 환경에서는 다음과 같은 세 가지 추가 옵션이 있습니다.
-m - 확장 메트릭 정보를 명령줄에 지정합니다.
-e - 확장 메트릭 정보를 포함하는 파일을 지정합니다.
-t - 추가할 경로(단순 또는 확장 메트릭 포함)를 포함하는 파일을 지정합니다.
경로를 추가하거나 삭제하기 위해 IP 장치를 열려면 이 프로그램이 sys_net_config 특권을 상속받아 ADMIN_HIGH의 민감도 레이블과 유효 사용자 ID 0 또는 sys 그룹에서 실행되어야 합니다. file_mac_read 특권은 ADMIN_HIGH MAC 정책을 무시할 수 있습니다. file_dac_read 특권은 UID 0 또는 sys 그룹 DAC 요구 사항을 무시할 수 있습니다. "Trusted Solaris에서의 라우팅"을 참조하십시오.
snoop(1M) 명령을 사용하면 네트워크로부터 패킷을 포착해서 그 내용을 표시할 수 있습니다. 네트워크 장치를 열 때 snoop 명령의 Trusted Solaris 버전은 민감도 레이블 ADMIN_HIGH와 유효 UID 0을 사용하여 실행되어야 합니다. 단, 프로세스에 file_mac_read 특권과 file_dac_read 특권이 있는 경우 이들 두 가지 요건이 필요 없습니다. snoop 명령을 사용하려면 sys_net_config 특권을 상속해야 합니다. -i 옵션을 사용하면 네트워크 장치를 열지 않고 파일을 열기 때문에 요건이 위와 동일하지는 않습니다.
snoop 명령은 패킷의 SAMP 보안 속성과 IP 옵션을 표시할 수 있습니다.
spray(1M) 명령은 RPC를 사용하는 지정된 호스트로 단방향 패킷 흐름을 전송하고 수신된 패킷 수를 전송 속도와 함께 보고합니다. 호스트가 브로드캐스트 주소인 경우 이 프로그램이 제대로 실행되려면 net_broadcast 특권을 상속해야 합니다.
이 절에서 소개하는 네트워크 명령은 Trusted Solaris에만 있습니다.
tnchkdb
tnctl
tnd
tninfo
tokmapd
tokmapctl
tnd와 tokmapd 명령은 트러스트 네트워크 대몬과 토큰 매핑 대몬을 시작합니다. 토큰 매핑은 네트워크가 TSIX 호스트 종류와 통신할 때 사용됩니다. tnctl 명령은 네트워크 정보를 커널 캐시로 읽어 들입니다. tninfo 명령을 사용하여 이 정보를 확인할 수 있습니다. tnchkdb는 문제 발생시 네트워크 구성 데이터베이스를 조사합니다. tokmapctl 명령을 사용하면 네트워크 구성 데이터베이스를 조사하여 문제가 있는지 확인할 수 있습니다. 이 명령을 사용하여 TSIX 토큰 매핑 문제를 해결할 수 있습니다.
tnchkdb(1M) 명령은 tnrhdb, tnrhtp, tnidb 등의 데이터베이스 형식에서 오류를 검사합니다. 이 명령은 데이터베이스가 수정되거나 작성될 때마다 실행해야 합니다.
tntcl(1) 명령을 사용하면 디버깅, 커널 인터페이스 캐시 갱신, 커널 원격 호스트 캐시 갱신 및 커널 템플리트 캐시 갱신을 위해 Trusted Solaris 네트워크 대몬 제어 매개변수를 구성할 수 있습니다.
tnctl 명령은 트러스트 경로 메뉴에서 시작해야 하며 커널 캐시 갱신을 위해 sys_net_config 특권을 상속받아야 합니다.
tnd(1M)(트러스트 네트워크 대몬) 명령은 트러스트 네트워크 데이터베이스를 사용해서 커널을 초기화하고, 요구가 있을 시 데이터베이스를 다시 읽어들이는 역할을 수행합니다. 트러스트 네트워크 대몬은 부트 프로세스를 시작할 때 시작되는데, 이 명령은 tnrhdb, tnrhtp, tnidb 등의 데이터베이스를 커널로 읽어들입니다.
tnd 명령은 트러스트 경로에서 시작하여 net_privaddr, net_mac_read, sys_net_config 특권을 상속받아야 합니다. 이 명령은 rc 스크립트에서 시작하여 ADMIN_LOW 민감도 레이블에서 실행되어야 합니다.
-d 옵션을 사용하면 tnd를 위한 디버깅을 시작하고 그 정보를 로그 파일에 기록할 수 있습니다. /var/tsol/tndlog 파일은 네트워크 디버깅을 위한 기본 로그 파일이며 디버그 메시지와 시간을 포함하는 각 디버깅 메시지를 위한 레코드를 수록합니다.
기본적으로 tndlog는 디버깅이 활성화되지 않은 한 존재하지 않습니다. tndlog 파일은 tnd의 -d 옵션 이외에 tnctl을 사용하여 작성할 수 있습니다.
tninfo(1M) 명령을 사용하면 호스트 정보 (-h), 템플리트 정보(-t), 커널 수준 네트워크 정보 및 통계(-k) 등을 출력할 수 있습니다. 커널이 캐시하는 정보가 정확한지 확인하려면 tninfo를 사용하면 됩니다. 이 명령은 ADMIN_HIGH와 유효 사용자 ID 0으로 실행됩니다. file_mac_read, sys_trans_label, file_dac_read 등의 특권은 이 제한을 무시합니다. tninfo 실행 파일은 허용 비트 555, 소유자, 루트 및 그룹 sys와 함께 민감도 레이블 ADMIN_LOW로 유지되어야 합니다.
# tninfo ================== kernel statistics ================== fails host accreditation: 1496 fails interface accreditation: 0 number of seccom structures allocated: 29020 deallocated but memory not yet reclaimed: 28885 memory reclaimed: 28885
tokmapd(1M)(토큰 매핑 대몬) 명령은 트러스트 네트워크를 통해 전송되는 정보의 레이블을 지원하기 위하여 SATMP 토큰 매핑 프로토콜을 구현합니다. 이 정보는 속성 값을 나타내는 토큰을 사용하여 레이블됩니다. tokmapd는 토큰을 속성 값에 매핑하고 반대로 속성 값에 토큰을 매핑하는 기능을 합니다. tokmapd는 커널 또는 다른 호스트에 있는 토큰 매핑 서버로부터 토큰 매핑 요청을 받습니다. tokmapd 명령에는 여러 가지 디버깅 옵션도 제공되어 있습니다.
tokmapd 명령은 트러스트 경로에서 시작해야 하며 net_privaddr, proc_setclr, proc_setsl 특권을 상속받아 민감도 레이블 ADMIN_HIGH에서 실행되어야 합니다.
tokmapctl(1M) 명령은 tokmapd 프로세스에 제어 및 구성 요청을 전송하는 인터페이스를 제공합니다. 이 명령은 트러스트 경로에서 시작되어야 하고 net_privaddr 특권과 net_mac_read 특권을 상속해야 합니다. tokmapctl 명령은 민감도 레이블 ADMIN_HIGH로 실행되어야 합니다.
이 절에서 설명하는 Trusted Solaris 도구와 명령을 사용하여 네트워크 문제를 쉽게 디버깅할 수 있습니다. 명령에 대한 자세한 설명은 해당 온라인 참조 페이지를 참고하십시오. 또한 Trusted Solaris Administrator's Procedures 설명서의 제3장 "Managing Hosts and Networks"를 참조하십시오. snoop(1M), ipcs(1), netstat(1M) 같은 표준 네트워크 디버깅 명령들도 Trusted Solaris 환경에서 사용할 수 있습니다.
전송할 때 tninfo(1M)을 사용하면 원본, 대상 및 게이트웨이 호스트에 대한 보안 정보를 얻을 수 있으며, 커널이 캐시하는 정보가 정확한지 확인할 수도 있습니다. 이 명령은 ADMIN_HIGH와 유효 사용자 ID 0으로 실행하도록 되어 있습니다. file_mac_read, sys_trans_label 및 file_dac_read 특권은 이 제한을 무시합니다. tninfo 실행 파일은 허용 비트 555, 소유자, 루트 및 그룹 sys와 함께 민감도 레이블 ADMIN_LOW로 유지되어야 합니다. tninfo는 다음과 같이 사용됩니다.
tninfo -h [<호스트 이름>] 전체 호스트 또는 특정 호스트의 IP 주소, 포트, 템플리트를 표시합니다.
tninfo -t <템플리트 이름> 전체 템플리트 또는 특정 템플리트에 관한 다음과 같은 정보를 표시합니다. 호스트 종류, 최소 민감도 레이블(레이블과 16진법 형식으로), 최대 민감도 레이블(레이블과 16진법 형식으로), 허용 특권 및 IP 레이블 종류(RIPSO, CIPSO 또는 없음).
tninfo -k 다음과 같은 커널 통계를 표시합니다. 호스트 인가 확인 실패 횟수, 네트워크 인가 확인 실패 횟수, 메모리 할당 통계.
네트워크 보안 정보를 변경하거나 확인하려면 데이터베이스 관리자를 사용하여 tnrhtp, tnrhdb, tnidb 파일에 액세스합니다. NIS+ 테이블을 사용하지 않는 경우 파일을 저장한 즉시 변경됩니다. NIS+ 테이블을 사용하는 경우 네트워크 대몬이 데이터베이스를 다음에 폴링하거나 시스템이 재부팅될 때 변경됩니다. 신속하게 변경이 수행되게 하려면 갱신된 정보가 필요한 호스트에 -p 옵션의 type="V-ONLY">tnd(1M)를 사용하여 폴링 간격을 줄이면 됩니다. 단, 변경된 후 폴링 간격을 재설정해야 합니다.
네트워크 대몬으로부터 디버깅 정보를 수집하려면 네트워크를 시작할 때 -d 옵션을 사용해서 tnd(1M) 명령을 실행합니다. 디버깅 데이터는 기본적으로 /var/tsol/tndlog 파일에 기록됩니다. 이 로그 파일을 사용하여 실패와 기타 문제점을 찾을 수 있습니다.
네트워크가 이미 실행되고 있을 경우에 네트워크 대몬으로부터 디버깅 정보를 수집하려면 -d 옵션을 사용해서 tnctl(1M) 명령을 실행합니다. 디버깅 데이터는 기본적으로 /var/tsol/tndlog 파일에 기록됩니다. 이 로그 파일을 사용하여 실패와 기타 문제점을 찾을 수 있습니다.
CIPSO 전송을 확인하려면 tninfo -h와 -t를 사용하여 DOI가 원본, 대상 및 게이트웨이에 대해 동일하고, 다른 모든 보안 속성이 순서대로 있는지 확인합니다.
RIPSO 전송을 확인하려면 tninfo -h와 -t를 사용하여 RIPSO 레이블이 원본, 대상, 게이트웨이에 대해 동일하고, 다른 모든 보안 속성이 순서대로 있는지 확인합니다.
TSIX 전송을 확인하려면 tokmapd를 -d 옵션 또는 tokmapctl -d를 사용하여 로그를 작성하고 해당 디버깅 수준을 선택합니다. 디버깅 데이터는 기본적으로 /var/tsol/tokmapdlog 파일에 기록됩니다. snoop(1M)을 사용하여 원본과 대상 모두 토큰을 전송할 수 있는지 확인합니다.
MSIX 전송을 확인하려면 /etc/group에 "wheel"이라는 특수한 그룹이 있는지 확인합니다. tokmapd를 -d 옵션 또는 tokmapctl -d를 사용하여 로그를 작성하고 해당 디버깅 수준을 선택합니다. 디버깅 데이터는 기본적으로 /var/tsol/tokmapdlog 파일에 기록됩니다. snoop(1M)을 사용하여 원본과 대상 모두 토큰을 전송할 수 있는지 확인합니다.