HOSTS_OPTIONS(5)

명칭
hosts_options - 호스트 액세스 제어 언어의 확장

해설
이 문서는, hosts_access(5) 문서로 해설한 언어에 대한다 옵션 확장을 해설합니다. 이 확장은, 프로그램 구축시에 유효하게 됩니다. 예를 들면, Makefile 를 편집해, 컴파일시 옵션 PROCESS_OPTIONS 를 유효하게 합니다.

이 확장 가능한 언어는, 다음의 서식을 사용합니다.

daemon_list : client_list : option : option ...

최초의 2 개의 필드는, hosts_access(5) 메뉴얼 페이지로 해설하고 있습니다. 룰의 나머지는, 0 개 이상의 옵션입니다. 옵션중의 ":" 캐릭터는, backslash로 보호할 필요가 있습니다.

옵션의 형식은,"keyword" 또는 "keyword value" 입니다. 옵션은, 지정한 차례로 처리됩니다. 옵션에 따라서는,%<letter> 치환의 대상이 됩니다. 이전의 버젼과의 후방 호환성을 위해서(때문에), keyword 와 value 의 사이에 "=" 를 넣는 것이 허락되고 있습니다.

기록

severity mail.info

severity notice
    어느 중요도의 이벤트를 기록하는지를 변경합니다. 퍼실리티명 (mail 등)은 옵션입니다. 이것은, 낡은 syslog 의 실장의 시스템에서는, 서포트되어 있지 않을 것입니다. 고유의 이벤트를 강조하거나 무시하거나 하기 위해서, severity 옵션을 사용합니다.

액세스 제어

allow

deny
    서비스를 허가 (거부)합니다. 이러한 옵션은, 룰의 마지막에 등장할 필요가 있습니다.

allow 와 deny 의 키워드에 의해, 모든 액세스 제어 룰을 단일의 파일에, 예를 들면 hosts.allow 파일에, 두는 것이 가능해집니다.

특정의 호스트만으로부터의 액세스를 허가하려면 , 다음과 같이 합니다.

ALL: .friendly.domain: ALLOW
ALL: ALL: DENY

소수의 트러블 메이커 이외로부터의 액세스를 모두 허가하려면 , 다음과 같이 합니다.

ALL: .bad.domain: DENY
ALL: ALL: ALLOW

도메인명의 패턴의 전의 닷에 주의해 주세요.

다른 명령의 실행

spawn shell_command
    hosts_access(5) 메뉴얼 페이지로 해설되는 %<letter> 전개를 실시한 후, 지정한 쉘 명령을 child process로 실행합니다. 명령의 실행은 stdin, stdout, stderr 를 null 디바이스에 접속해 행해지기 때문에, 클라이언트 호스트와의 회화가 혼란할 것은 없습니다. 예를 들면,

    spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) &

    (은)는, %h 를 리모트 호스트의 이름 또는 주소에 치환한 후, 쉘 명령 "safe_finger -l @%h | mail root" 를, 백그라운드의 child process로 실행합니다.

    이 예에서는, 통상의 "finger" 명령이 아니고, "safe_finger" 명령을 사용하고 있습니다. 이것에 의해, finger 서버로부터 보내지는 데이터에 기인해 발생 할 수 있는 데미지를 한정합니다. "safe_finger" 명령은, demon 나팔 패키지의 일부입니다. 이것은, 통상의 finger 명령을 싸, 리모트 호스트로부터 보내지는 데이터를 필터 합니다.

twist shell_command
    hosts_access(5) 메뉴얼 페이지로 해설되는 %<letter> 전개를 실시한 후, 현재의 프로세스를, 지정한 쉘 명령로 옮겨놓습니다. stdin, stdout, stderr 는 클라이언트 프로세스에 접속됩니다. 이 옵션은, 룰의 마지막에 등장할 필요가 있습니다.

    실제로 ftp demon를 실행하는 대신에, 커스터마이즈 한 중계 (bounce) 메세지를 보내려면 , 다음과 같이 합니다:

    in.ftpd : ... : twist /bin/echo 421 Some bounce message

    클라이언트 프로세스라고 대화하는 다른 방법으로서는, 후술의 banners 옵션을 참조해 주세요.

    명령행 배열이나 프로세스의 환경을 오염하지 않고 , /some/other/in.telnetd 를 실행하려면 , 다음과 같이 합니다:

    in.telnetd : ... : twist PATH=/some/other; exec in.telnetd

    경고: UDP 서비스에서는, 표준 I/O 나 read(2) /write(2) routine를 사용해 클라이언트 프로세스와 통신하는 프로그램을, twist 의 대상으로 해 되지 않습니다. UDP 에서는, 다른 I/O 원시적을 필요로 하기 때문입니다.

네트워크 옵션

keepalive
    서버가 클라이언트에 대해서 정기적으로 메세지를 보내도록(듯이) 합니다. 클라이언트가 응답하지 않을 때, 접속이 끊어진 것으로 간주해집니다. 유저가, 서버에 접속한 채로 머신의 전원을 떨어뜨리는 경우에, keepalive 옵션이 유용합니다. keepalive 옵션은, 데이터 그램 (UDP) 서비스에는 사용할 수 없습니다.

linger number_of_seconds
    서버 프로세스가 접속을 닫은 후의 얼마나의 기간, 미배송의 데이터를 커널이 배송하려고 하는지를 지정합니다.

유저명 검색

rfc931 [ timeout_in_seconds ]
    RFC 931 (TAP, IDENT, RFC 1413)을 사용해, 클라이언트의 유저명을 검색합니다. 서비스가 TCP 이외의 배송을 베이스로 하고 있는 경우에는, 이 옵션은 특별히 거절해 없게 무시됩니다. 이 옵션을 지정하는 것으로써, 클라이언트 시스템이 RFC 931 (IDENT 등) 준거의 demon를 실행하는 것을 필요로 해, 비 UNIX 클라이언트로부터의 접속에 대해서는 큰 지연을 일으키게 한 얻습니다. 타임 아웃 기간의 지정은, 생략 가능합니다. 타임 아웃치를 지정하지 않으면 컴파일시에 정의된 기본값이 사용됩니다.

그 외

banners /some/directory
    `/some/directory' 안에서, demon 프로세스와 같은 이름의 파일을 찾아 (예를 들면 telnet 서비스에서는 in.telnetd 입니다), 그 내용을 클라이언트에 대해서 카피합니다. 개행 캐릭터는 복개와 개행에 치환되어 %<letter> 순차 순서는 전개됩니다 (hosts_access(5) 메뉴얼 페이지를 참조해 주세요).

    tcp 나팔의 원시 코드 배포에서는, banners 의 관리에 유용한 샘플 makefile (Banners.Makefile)를 제공하고 있습니다.

    경고: banners 는, 커낵션 지향 (TCP) 네트워크 서비스만으로 서포트됩니다.

nice [ number ]
    프로세스의 nice 치 (디폴트는 10 입니다)를 변경합니다. 다른 프로세스에 의해 많은 CPU 자원을 사용하려면 , 정의 값을 지정해 주세요.

setenv name value
    (name, value)의 페어를, 프로세스의 환경에 삽입합니다. value 는 %<letter> 전개의 대상이 되어, 공백 캐릭터를 포함해도 괜찮습니다 (선두와 말미의 공백은 제거됩니다).

    경고: 많은 네트워크 demon는, login 나 쉘 프로세스를 생성하기 전에, 자기의 환경을 리셋트 합니다.

umask 022
    쉘 편입의 umask 명령을 닮아 있습니다. 022 라고 하는 umask 는, 그룹 및 전세계의 기입 권한을 가지는 파일의 생성을 막습니다. umask 인수는 8 진수일 필요가 있습니다.

user nobody

user nobody.kmem
    "nobody" 의 유저 id (또는 유저 "nobody" 로 그룹 "kmem") 의 권한을 프로세스로 설정합니다. 최초의 형식은, 전서비스를 root 권한으로 실행하는 inetd 의 실장에 대해 유용합니다. 2 번째의 형식은, 특수한 그룹 권한만을 필요로 하는 서비스에 유용합니다.

진단
액세스 제어 룰에 문법 에러가 있을 때, 에러는 syslog demon에게 보고됩니다. 이 때, 그 후의 옵션은 무시되어 서비스는 거부됩니다.

관련 항목
hosts_access(5), 디폴트의 액세스 제어 언어

저자
Wietse Venema (wietse@wzv.win.tue.nl)
Department of Mathematics and Computing Science
Eindhoven University of Technology
Den Dolech 2, P.O.  Box 513,
5600 MB Eindhoven, The Netherlands