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_access가 only_from보다 우선 적용. -
DoS 완화:
cps,per_source,instances조합이 핵심. -
가시성: 성공/실패 로그를 꼭 남겨 추적성 확보.
다시 강조! Telnet은 평문(아이디/비밀번호 노출 위험) → 가능하면 SSH 사용, Telnet은 실습/레거시 장비 관리 시 임시로만 열기.