1. 데몬이란?
• 시스템에 관련된 작업을 하는 후위 프로세스 (Background process)
• 데몬의 예: telnet, ftp, http, sendmail,...
• 대부분의 데몬들은 시스템에 관련된 작업을 하며, 서비스 요청이 없을 때에는 후위 프로세스로써 유휴 (idle) 상태에 들어가게 되며, 시스템의 CPU를 차지하진 않지만, 메모리와 기타 자원을 차지하게 된다.
• 윈도우의 service와 유사함
2. 슈퍼데몬 (inet or xinet) 또는 인터넷 슈퍼 데몬 (internet super Daemon)
다른 데몬들과 달리 슈퍼 데몬들은 1) 리눅스 서버에서 서비스되는 여러가지 데몬들을 제어 및 2) 각각의 서비스를 연결을 담당한다.
3. 데몬의 두 가지 실행모드
standalone | xinet |
• 독립적으로 실행되고 항상 메모리에 상주하여 서비스 요청이 있을 때에 언제든지 바로 응답한다. • 빠른 응답속도를 요구하는 경우 해당 모드를 사용 • 슈퍼 데몬 역시 standalone 모드로 실행됨 • 실행위치: /etc/init.d • standalone으로 실행되는 데몬의 예 sesndmail, apache, mysqld,.... • 단점: 항상 메모리에 상주해 있으므로, 메모리 점유로 인한 서비스 부하를 줌 |
• 슈퍼 데몬이라고 불리며, 다른 데몬들의 상위에 존재 • 필요한 경우에만 메모리에 적재되기 때문에 빠른 응답을 요구하지 않는 경우에 이용된다 • 응답속도가 standalone 모드보다 느리지만 서버 부하를 상대적으로 줄일 수 있다. • 실행 위치: /etc/xinetd.d • xinet의 예: telnet, ftp, login, auth, tcpd,... • 설치 명령어: $sudo apt-get install xinetd ※ 커널 2.2까지는 inetd 데몬이 서비스를 관리하였지만, 커널 2.4 이후부터는 xinetd 데몬이 역활을 수행함 |
4. /etc/inetd.conf
- 해당 파일의 예시
$vim /etc/inetd.conf
#service socket_type protocol wait_flag login_name server argument
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -i -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnet
- 설정 파일의 서비스 내용
속성 | 의미/값 |
service | • 서비스 이름 • /etc/services에 등록이 되어있어야 함 |
socket_type | • tcp일 경우, stream이며, UDP일 경우 dgram이라고 명시해야 함 |
protocol | • tcp 혹은 udp 프로토콜을 명시해야 하며, /etc/protocols에 등록 되어 있다. • /etc/services 파일에서 설정한 프로토콜과 일치해야 함 |
wait_flag | • inet가 서비스 요청을 받은 경우, 이후 즉시 또 다른 요청을 처리할 것인지 아닌지의 여부에 따라 nowait 혹은 wait로 구분한다. - 1) stream (tcp) 인 경우: nowait으로 설정 - 2) udp (dgram) 인 경우: wait으로 설정 |
login_name | • 어떤 사용자의 권한으로 프로그램을 실행시켜줄 것인지르 명시 |
- 일반적으로 우분투에서는 기본적으로 inetd가 설치되어있지 않으므로 다음과 같은 명령어로 설치한다.
• 설치 명령어: $sudo apt-get install openbsd-inetd
• inetd 재시작: $sudo /etc/init.d/openbsd-inetd restart
5. xinetd와 관련된 파일들
파일들 | 파일 내용 |
/etc/xinetd | • xinetd 데몬 • xinetdd 모드에서 실행되는 서비스들은 거의 대부분 tcpd라는 TCP_WRAPPER란 데몬에 의해 접속 제어를 받게 된다 • tcpd (TCP_WRAPPER)의 역활 (a) 특정 IP나 도메인으로부터 서버의 telnet, ftp, pop, 등의 접속을 차단할 수 있음 (b) 접속 기록이나, 접속 시도 기록을 특정 파일 (/var/log/secure)에 로그를 기록한다. |
/etc/xinetd.d | • /etc/xinted.d 내의 파일들은 xinetd로 서비스될 파일들이 존재하는 디렉토리이다 |
/etc/services | • 서비스 포트 설정 파일 • 리눅스 서버에서 사용하는 모든 포트들에 대한 정의가 설정되어 있음 : 대부분의 해킹 등의 공격시도들이 대부분 알려져 있는 (default) 포트들을 통해 이루어진다. 따라서 보안을 위해서 이 파일을 적절히 조절하면, 기본 사용 포트를 변경하여 사용할 수 있으므로, 보안성을 높일 수 있다. • /etc/services의 예* |
/etc/protocols | • 프로토콜 설정 파일 • /etc/services 파일에서 사용되는 프로토콜의 정의가 들어있는 파일 • 해당 파일에서의 서비스 명은 /etc/services 파일 내의 service_name 필드와 일치해야 한다. |
/etc/syslog.conf | • 시스템로그 설정 파일 |
/usr/sbin/tcpd | • tcpd 데몬 |
/etc/hosts.allow | • 서비스별 허용목록 파일 (tcpd) • /etc/hosts.allow의 예** |
/etc/hosts.deny | • 서비스별 거부 목록 파일 (tcpd) |
/var/log/secure | • tcpd 로그 파일 (접근 기록 파일) • tcpd에 의해 접근된 로그와 접근이 허용되지 않은 로그들이 기록된 파일 |
/etc/rc.d/init.d/xinet.d | • xinetd 시작/종료 스크립트 파일 |
*/etc/services의 예
$vim /etc/services
#service_name port/types of protocol alias
ftp 21/tcp
fsp 21/udp
** /etc/hosts.allow의 예
$vim /etc/hosts.allow
# service #IP or host serviced by daemon
in.telnetd: xxx.xxx.xxx.xxx
in.ftpd: xxx.xxx.xxx.xxx
6. /etc/xinetd.conf
default 설정으로 /etc/xinetd/ 디렉토리 내에 존재하는 inetd 서비스 파일들에 공통적으로 적용하는 설정 내용이 저장
1) /etc/xinetd.conf 예시
# /etc/xinetd.conf
# pop3의 xinetd 설정파일 예시
service pop3
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success+= USERID
log_on_failure+= USERID
}
2) 옵션 설명
속성 | 의미/값 |
service | • 서비스 이름 • /etc/services 파일에 등록된 이름과 동일해야함 |
disable | • xinetd의 제어를 받을 것인지 결정 - yes: xinetd의 제어를 받음 - no: xinetd의 제어를 받지 않음 |
socket_type | • 사용하는 tcp/ip 소켓 - stream(tcp), dgram(udp), raw, seqpack 중 선택 |
protocol | 서비스가 이용하는 protocol 지정 |
server | 서비스가 실행될 때, 어떤 위치의 프로그램을 불러와 연결할 것인지 결정 ※ 반드시 절대경로로 지정되어야 함 |
port | 서비스하는 포트번호. ※ 반드시 /etc/services에 있는 내용과 일치할 것 |
7. xinetd의 시작과 종료
xinetd를 구동하거나 종료 및 실행상황을 점검할 수 있는 스크립트 파일은 /etc/rc.d/init.d/xinetd이다. 해당 스크립트는 서버 부팅과 함께 자동으로 실행된다.
명령어 | 명령어 내용 |
/etc/rc.d/init.d/[서비스 이름] start | [서비스 이름] 시작 |
/etc/rc.d/init.d/[서비스 이름] stop | [서비스 이름] 종료 |
/etc/rc.d/init.d/[서비스 이름] restart | [서비스 이름] 재시작 |
/etc/rc.d/init.d/[서비스 이름] status | [서비스 이름] 상황정검 |
8. 관련 명령어
• 데몬관리도구: chkconfig
- 각 데몬의 실행 설정 목록을 보거나 실행할 데몬을 추가하거나 삭제할 수 있음
- 명령어 1: --list : 실행단계별로 데몬의 실행 여부를 확인하는 옵션
- 형식: $chkconfig <--level> <name> <on/off/reset>
• 그래픽 화면(GUI)의 데몬 관리 도구: --system-config-service
• xinetd 재시작: sudo /etc/init.d/xinetd restart
Reference:
[1] https://nextline.tistory.com/55
[2] https://durumul.tistory.com/82
'컴퓨터 & IT (Computer & IT) > Linux' 카테고리의 다른 글
[Linux] /etc/fstab (0) | 2020.11.15 |
---|---|
[Linux] /etc/exports (0) | 2020.11.14 |
[Linux] PXE (Preboot Execution Environment) (0) | 2020.11.13 |
[Linux] BOOTP (Bootstrap Protocol) (0) | 2020.07.11 |
[Linux] 프롬프트의 경로 위치 변경 (0) | 2020.07.09 |
댓글