xinetd 슈퍼데몬 Telnet(비권장) 서비스 설정 - 이해하기

xinetd란?

  • 여러 네트워크 서비스를 “필요할 때만” 띄워주는 슈퍼데몬.

  • 각 서비스별 설정 파일: /etc/xinetd.d/<서비스명>
    (Telnet은 보통 /etc/xinetd.d/telnet)

  • 공통 기본값은 /etc/xinetd.conf에서 지정 가능.

Telnet 최소 예시

# /etc/xinetd.d/telnet
service telnet
{
    disable         = no
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = root
    server          = /usr/sbin/in.telnetd
    port            = 23
    log_on_success  = HOST PID
    log_on_failure  = HOST
    only_from       = 192.168.10.0/24
    no_access       = 0.0.0.0/0
    cps             = 50 10
    per_source      = 5
    access_times    = 08:00-20:00
}

적용/재시작: systemctl restart xinetd
점검: ss -lntp | grep :23 또는 telnet 127.0.0.1 23


항목별 정리 (자주 쓰는 것 위주)

아래는 서비스 블록 {...}에서 쓰는 디렉티브들. “권장/기본값 힌트”도 함께 적었어.

서비스 식별/기본

  • service <이름>

    • 서비스 식별자. 보통 telnet 로 씀.

  • disable = yes|no

    • 서비스 비활성/활성. 설치 시 yes가 많음. 사용하려면 no.

  • server = <실행파일 경로>

    • 실제 데몬 경로. 예: /usr/sbin/in.telnetd 또는 배포판에 따라 /usr/sbin/telnetd.

  • server_args = <인자>

    • 데몬에 넘길 옵션. (예: 로그인 프로그램 지정 등. 기본은 비워도 동작)

소켓/프로토콜

  • socket_type = stream|dgram|seqpacket

    • Telnet은 stream.

  • protocol = tcp|udp

    • Telnet은 tcp.

  • wait = yes|no

    • 동시에 여러 클라이언트를 처리하는지 여부. Telnet은 no(멀티처리).

  • port = <포트번호>

    • 기본 23. 보안상 옮기면 스캐닝 회피 정도는 가능하지만 근본 대책은 아님.

  • bind = <로컬IP>

    • 특정 인터페이스/관리망 IP에만 바인딩. 관리망 분리 시 유용.

실행 권한/자원

  • user = <계정>

    • 데몬 실행 계정. Telnet은 보통 root로 뜨고, 내부에서 로그인 처리를 위임.

  • groups = yes|no

    • 보조 그룹 적용 여부. 특별히 필요 없으면 기본.

  • nice = <-20~19>

    • 프로세스 우선순위 조정.

  • rlimit_cpu / rlimit_as / rlimit_data / rlimit_rss / rlimit_stack

    • 자원 제한. DoS 완화나 샌드박싱에 도움.

접근 제어(매우 중요)

  • only_from = <호스트/네트워크 목록>

    • 허용 목록(화이트리스트). 예: 127.0.0.1 192.168.10.0/24.

  • no_access = <호스트/네트워크 목록>

    • 차단 목록(블랙리스트). 둘 다 있으면 no_access가 우선.

  • access_times = HH:MM-HH:MM

    • 접속 허용 시간대. 예: 08:00-20:00.

  • instances = <동시 인스턴스 수>

    • 전체 동시 처리 수 제한.

  • per_source = <호스트당 동시 수>

    • 단일 IP 폭주 방지. 예: per_source = 5.

  • cps = <초당 접속수> <회복대기초>

    • 초당 연결 수가 임계 초과 시 잠시 차단. 예: cps = 50 10.

로깅/감사

  • log_type = SYSLOG daemon info | FILE <경로>

    • 로그 출력 대상. 기본은 syslog. 별도 파일 쓰려면 FILE.

  • log_on_success = PID HOST USERID EXIT DURATION

    • 성공 시 남길 항목. 보통 HOST PID 정도면 무난.

  • log_on_failure = HOST USERID ATTEMPT RECORD

    • 실패 시 로그 항목. 최소 HOST는 추천.

기타/편의

  • flags = REUSE IPv6 IPv4 NODELAY KEEPALIVE ...

    • 소켓 동작 관련 플래그. 혼합 스택/성능 튜닝 시 사용.

  • banner = <파일>

    • 접속 직후 경고 배너 전송. 보안 고지에 좋음.

  • env / passenv / umask

    • 환경변수/마스크 조정.

  • redirect = <포트>

    • 다른 호스트/포트로 프록시(리다이렉트).


보안 강화 예시 (학습 포인트)

service telnet
{
    disable         = no
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = root
    server          = /usr/sbin/in.telnetd
    bind            = 192.168.10.10      # 관리망 IP에만 바인딩
    only_from       = 192.168.10.0/24    # 내부망만 허용
    no_access       = 0.0.0.0/0          # 그 외 전부 거부(화이트→블랙 우선순위 주의)
    cps             = 30 5               # 폭주 방지
    per_source      = 3                  # IP당 동시 3개 제한
    instances       = 20                 # 전체 동시 20 제한
    access_times    = 09:00-18:00
    log_on_success  = HOST PID DURATION
    log_on_failure  = HOST ATTEMPT
    banner          = /etc/issue.net     # 경고 배너 파일
}

운영 점검 체크리스트

  • 서비스 활성화: disable = no 인가?

  • 방화벽: firewalld/iptables에서 TCP 23 허용? (실환경에선 가급적 허용하지 말 것)

  • SELinux: 정책에 따라 telnet 포트를 허용해야 할 수 있음(학습 환경에서 Enforcing면 boolean/포트 컨텍스트 조정 필요).

  • 로그 위치: /var/log/secure, /var/log/messages, 혹은 log_type에 지정한 파일.

  • 프로세스 확인: systemctl status xinetd, journalctl -u xinetd.


시험·실무 팁 요약 (한눈에)

  • 필수 키워드: disable, socket_type, protocol, wait, user, server, only_from, no_access, log_on_success, log_on_failure, cps, per_source, instances, access_times, bind, banner

  • Telnet 기본값 감: TCP/23, stream, wait=no, server는 in.telnetd, 보안상 비권장.

  • 접근제어 우선순위: no_accessonly_from보다 우선 적용.

  • DoS 완화: cps, per_source, instances 조합이 핵심.

  • 가시성: 성공/실패 로그를 꼭 남겨 추적성 확보.

다시 강조! Telnet은 평문(아이디/비밀번호 노출 위험) → 가능하면 SSH 사용, Telnet은 실습/레거시 장비 관리 시 임시로만 열기.


댓글 쓰기

새 댓글을 작성할 수 없습니다.*

다음 이전