티스토리 뷰

  데몬(demon)


    # 데몬이란 시스템에 관련된 작업을 하는 후위 프로세서를 말한다. 즉, 이벤트를 기다리거나 주기적으로 주어진 작업을 수행하기 

       위하여 대기하고 있는 프로세스를 의미한다.대부분의 데모들은 시스템이 부팅되면서 시작되고 데몬들에는 우리가 자주 접하는

       telnet, http, sendmail 등이 있다. 대부분의 데몬은 시스템에 관려된 작업을 하게 되는데, 서비스 요청이 없을때 후위 프로세스로써

       유휴 상태에 들어가 있게 되어 시스템의 CPU를 차지하지 않지만 메모리와 기타 자원을 상당수 차지하게 되다.



    # 메일 서버를 예를 들면 우리가 저자메일을 받기 위해서는 전자 메일 계정을 가지고 있는 서버가 언제 어느 때에도 다른 메일 

       서버가 보내는 전자메일을 받아 둘 수 있어야 한다. 이렇게 메일 서버에 메일서버 프로그램에 데몬 형태로 항상 실행되고 있다.



     # 일반적으로 데몬 프로세스는 이름 끝에 'd'자가 붙는다. 기본적으로 리눅스에는 여러 기능과 서비스를 제공하기 위한 다양한

        데몬 프로세스들이 시스템에서 돌아가고 있다.









  데몬의 실행 방식


      # 데몬의 실행 방식은 크게 stand_alone방식과 xinetd방식이 있다.



      Stand_alone


      → 이 방식의 데몬들은 데모이 시작되며 말 그대로 자기 스스로 시스템에서 상주하며 클라이어트 요청에 응답을 보내주는 방식으로

          보통 아파치 데몬처럼 클라이언트의 요청이 잦은 데몬들이 이런 방식으로 실행된다. Stand_alone형의 데몬은 네트워크 서비스를

          하면 클라이어트의 요청이 언제 들어올지 모르는 상태에서 항상 서비스가 가능하다점과 다르 메커니즘 없이 바로 네트워크 

          서비스 데몬이 클라이어트의 요청을 처리할 수 있다는 점 등의 장점을 가지고 있다.

    

          반면에 항상 메모리에 상주해 있어야 한다는 이유 때문에 리눅스 서버의 메모리를 많이 잡아먹다는점, 클라이언트의 요청이 

          들어올 때 마다 그 처리를 위해서 새로운 메모리를  늘려야 한다는 점 등의 문제점이 있다. 이는 곧 시스템 자원 낭비로 이어 진다.




      inetd방식


      → Stand_alone처럼 스스로 독립적으로 시스템에 실행되는게 아니라 xinetd라는 슈퍼데몬이 실스템에 대기하고 있다가

          클라이언트 요청이 들어오면 xinted데몬에 의해 해당 서비스를 제공해줄 데몬을 실행시키는 방식이다. telent이나, ftp같이

          비교적 클라이언트 요청의 빈도가 낮은 서비스들은 아주 가끔 사용하는 데몬이기 때문에 이같은 서비스 요청이 있다면 

          슈퍼데몬이 해당 데몬을 불러오는 역활을 한다.  xinetd데몬이 시스템 활용측면에서는 유리하다.


          tcp wrapper를 써서 보안을 손쉽게 설정할 수 있는 것도 장점이다. 그러나 아파치 데몬같이 클라이언트의 자잘한 요청이 

          많은 서비스에 대해서는 도리어 효율을 떨어드리게 된다.그래도 빠른 응답 속도를 요하지 않는 경우에 이모드를 이용한다.


          대부분의 경우 xinted를 사용하는 것이 자원 관리 면에서 이득이 있지만(서버 부하↓),클라이언트의 요청에 대해 빠르 

          네트워크 서비스를 제공하기 위해서는 Stand_alone방식을 선호한다.


            




  xinetd 서비스 관련 파일들

    

    # /usr/sbin/xinetd : xinetd 데몬 파일

    # /etc/rc.d/init.d/xinetd : xinetd 시작/종료 스크립트 파일

    # /etc/xinetd.conf : xinetd 서비스에 공통적으로 적용되는 설정 파일

    # /etc/xinetd.d/ 파일들 : xinetd 기반 서비스들의 개별 설정 파일들

    # /usr/sbin/tcpd : tcp_wrapper 데몬파일(클라이어트가 xinetd데몬 기반 서비스들에게 접글할 때 허가, 거부 담당)

    # /etc/host.allow : tcp_wrapper 데몬의 설정 파일 ( 서비스별 허가 리스트 작성 )

    # /etc/host.deny : tcp_wrapper 데몬의 설정파일( 서비스별 거부 리스트 작성 )

    # /var/log/secure : tcp_wrapper 로그파일 ( 접그 기록 파일 )



  xinetd 구동확인




 ↑ xinetd서비스 구동확인 



  /etc/xinetd.d 파일들 ( 서비스 개별 설정 파일 ) (ex). telnet)




 


          



  xinetd 서비스의 접근담당 tcp_wapper

      

      # tcpd는 /etc/host.allow(허가파일)와 /etc/hosts.deny(거부 설정파일)을 참조하여 특정 아이피나 도메인으로부터

         telnet, ftp, pop등을 허가하거나 차단하고, 접근기록이나 접속시도 기록을 로그에 기록한다.

         주의 해야할 접근을 허가하거나 차단할 때 xinetd의 하위 데몬뿐만 아니라, 독립실행하 데몬들도 접그제어를 할 수 있다.



      inetd방식

      → 콜론( : )의 왼쪽은 제어할 서비스 명을 기록하고, 오른쪽은 접근제어 대상( 호스트, IP, 네트워크 주소 )등을 기록한다.

      → hosts.allow 내의 설정과 host.deny  내의 설정이 중복 되었을 경우에는 hosts.allow의 설정 내용이 우선 적용 된다.

      → 각 대상 리스트의 나욜은 스페이스나 콤마로 구분한다.


   




 ↑ /etc/host.deny




 ↑ /etc/host.allow