網頁

2013年3月18日 星期一

XINETD--啟動內建的TCP服務;XINETD的設定說明:


  • XINETD是為了安全性而取代原有的INETD的一項產品,事實上不只是安全性,還包括了許多超越inetd的功能設定。底下將其特微做些說明:
    • 權限的控管
      • 它可以限制些ip address可以建立連線,哪些不行。
    • 對於DOS(Denial of Service)的防範
      • 它可以針對特定的電腦限制連線的速率,以及建立連線的數目。如果有某台電腦試圖建立很多連線,使用特定的服務,我們就可以限制某電腦同時的連線數。
    • 記錄檔的延伸性
      • 可以利用syslog去紀錄不同的服務,讀者也可以把特定的服務紀錄在特定的檔案內。
    • 服務的重新導向
      • 可以將連線重新導向到另一個特定IP Address的特定port,這裡的ip address不一定是外部的ip。如果你的電腦是nat server,當然可以導向到內部的ip。比如說a電腦是有一個外部ip及內部ip(是一個nat);b電腦是smtp服務用的電腦;c電腦是http服務器。當外部連線到a電腦,提出smtp服務時,將自動轉到b電腦,提出http服務,當就是轉到c電腦啦。
    • IPv6的支援
      • 在版本2.1.8.8之後,就有支援IPv6了。
  • XINETD所包含的服務
    • 有telnet,ftp,pop0,daytime,echo,finger...etc.它的預設的目錄在/etc/xinetd.d之下。當然,這是預設的部分,你當然可以新增自訂服務或是將既有的(非xinet所提供的服務)透過xinetd啟動(如sendmail)。此外,亦可單純的做重新導向的工作。
  • 範例:
    • 開啟telnet服務
      • vi /etc/xinetd.d/telnet
        • disable = no
        • service telnet
        • {
        •       flags = REUSE
        •       socket_type=stream
        •       wait=no
        •       user=root
        •       server=/usr/sbin/in.telnetd
        •       log_on_failure +=USERID
        •       disable=no
        • }
      • 重新啟動xinetd服務
        • /sbin/service xinetd restart
        • /etc/init.d/xinetd reload 指令重新載入說設定檔,將立即啟用telnet服務,另外說明一下有關telnet預設是不可以用root登入的哦。
      • 在使用telnet連接時可以出現中文亂碼,你可以使用telnet -8 bbs.ncku.edu.tw來啟動telnet;加上"-8"的選項便可正常輸入中文了,小弟我是沒有試過啦^ ^
      • 如果你真的要讓root帳戶可以使用telnet的話…你可這樣做(但不建意)
        • 更改/etc/securetty檔案內容
          • /etc/securetty檔案內的設定值,是用來限定root帳號可從哪一個終端機登入。在Linux中遠端登入是使用pts/0,pts/1...等終端機。而實際上使用者登入時,到底是採用第幾號pts終端機,則視您是目前系統中第幾個遠端登入的使用者而異,例如,系統目前已有2個使用者,此時您登入時,系統就會自動指定pts/2給你也就是3號終端機。所以如果要讓root帳號能遠端登入,只要利vim修改/etc/securetty檔的設定值即可,以讓root帳號能遠端登入。如果覺得麻煩也可以把/etc/securetty更名或刪除也可…但不意見哦!!!
    • 開啟pop3服務
      • vi /etc/xinetd.d/ipop3
        • disable = no
        • service telnet
        • {
        •       socket_type=stream
        •       wait=no
        •       user=root
        •       server=/usr/sbin/ipop3d
        •       log_on_success += HOST DURATION
        •       log_on_failure +=HOST
        •       disable = no
        • }
      • 重新啟動xinetd服務
        • /sbin/service xinetd restart
    • 開啟另一個telnet服務走1234port
      • 複制原/etc/xinetd.d/telnet 到 telnet2
      • vi /etc/xinetd.d/telnet2
        • disable = no
        • service telnet2
        • {
        •       flags = REUSE
        •       socket_type=stream
        •       wait=no
        •       user=root
        •       server=/usr/sbin/in.telnetd
        •       log_on_failure +=USERID
        •       disable=no
        • }
      • vi /etc/services並在telnet 23/tcp,udp下加入一行
      • telnet2 1234/tcp
      • telnet2 1234/udp
      • 重新啟動xinetd服務
        • /sbin/service xinetd restart
    • 接著我們要限制服務的ip範圍
      • vi /etc/xinetd.d/telnet2
        • 新增一行
          • only_from = 10.1.1.0/24 192.168.10.1
            • 10.1.1.1~10.1.1.255
            • 192.168.10.1
    • 接著我們要限制使用的系統資源
      • 限制記憶使用量
        • rlimit_as=16M
      • 限制CPU用量
        • rlimit_cp=20
      • 限制服務時間
        • access_times=03:00-6:00 9:00-15:00
      • 限制telnet服務的總數為5
        • 新增
          • instances=5
          • cps= 15 10
            • 以上2行的功能。instances代表的是提供服務的總數,而cps後面代的2個數值,cps代表的是每秒只提供15個client同時連線,超過的話則ftp會暫停服務,過10秒後才會再度提供服務
      • 新增一個port為10000的http服務並重新導向到http://www.yahoo.com.tw
        • 在/etc/xinetd.d/下新增一個檔案uuu,內容如下:
          • service uuu
          • {
          •     flag=REUSE
          •     socket_type=stream
          •     wait=no
          •     user=root
          •     server=/usr/sbin/in.telnetd
          •     port=10000
          •     redirect=www.yahoo.com.tw 80
          •     log_on_failure+=USERID
          •     disable=no    
          • }
    • XINETD設定檔說明
      • /etc/xinetd.conf
        • defaults
        • {
        •     instances=60
        •     log_type=SYSLOG authpriv
        •     log_on_success=HOST PID
        •     log_on_failure=HOST
        •     cps= 25 30
        • }
          • 說明:
            • instances:表示一項服務同時提供的連線數目
            • log_type:表示紀錄的方式,在這邊syslog表示會記錄到系統紀錄中,再根據/etc/syslog.conf紀錄到特定的檔案,由於authpriv在syslog.conf是紀錄到/var/log/secure,所以預設值就會紀錄到/var/log/serure中
            • log_on_success:是表示連線成功所紀錄的檔案
            • log_on_failure:是log_on_success的反之
            • cps:代表的是每秒只提供25個client同時連線,超過的話則ftp會暫停服務,過30秒後才會再度提供服務
            • includedir:表示其他的設定檔放在/etc/xinetd.d之中,如果沒特別指定,則所有的設定檔均會套用上述的設定。
  • /etc/xineted.d的通用格式如下:
    • service <service_name>{
      • <A> <B> <參數><參數>…
    • 其中的<B>為指派的運算符號,有3種=,+=,-=
    • <A>為屬性,列出一些較常用的
      • id:用來確認服務的唯一性,特別是相同名稱的服務,但卻使用不甸的通訊協定
      • type:包含下列三種
        • RPC:Remote Procedure Call,遠端程序呼叫
        • INTERNAL:本身包含在xinetd中的服務
        • UNLISTED:此項服務未包含在/etc/services中
      • disable:
        • yes表停止服務;no表正常運作
      • socket_type:
        • 包含下列3種
          • stream:stream-based的服務,也就是TCP Service。
          • dgram:datagram-based的服務,也就是UDP Service。
          • raw:需要直接使用IP的服務
      • wait:yes表single-thread,僅提供單一連線,no表示multi-thread,表示持續提供服務。
      • user:使用特定的人員來執行這個應用程式,但若是這個使用者沒有特殊使用者的權限可以會無執行
      • group:使用特定的郡組來執行這個應用程式,但若是這個群組沒有特殊使用者的權限,可能會無法執行
      • instance:同時間連線的數目;UNLIMITED表示不限制
      • server:決定這個服務所使用的應用程式
      • server_args:這個服務所需的應用程式後面所需要加的參數
      • only_from:限制某些特定來源IP Address,才提供連線服務,其他的圾不得建立連線
      • no_access:限制某些特定來源ip address不提供服務
      • access_time:可提供服務的時間
      • log_type:紀錄檔的格式 SYSLOG syslog_facility [level]:
        • 透過syslog.conf的設定紀錄到特定的檔案,syslog_facility有daemon,auth,authpriv,user等,你可以在syslog.conf中定義這樣的紀錄要寫而哪個檔案中。那麼[level]包含emerg,alert,crit,err,warning,notice,info,debug.
        • FILE file:將紀錄到特定的 檔案,file為檔案名稱,後面可加參數。
      • log_on_success:連線成功時所要紀錄的資訊
      • log_on_failure:連線失敗時所要紀錄的資訊。
      • banner:成功連線時歐出現的標題,可以是某個檔案的內容
      • cps:後面接著M,N是表示每秒僅能建立M個連線,超過的話,服務會暫時停止,等N秒後再度提供服務
      • rlimit_as:限制記憶體的資源,如rlimit_as=16M表示只能使用16M Bytes的記憶體,UNLIMITED表示不限。
      • rlimit_cpu:限制子程序最多能使用的CPU seconds,UNLIMITED表示不限
      • port:指定這項服務所使用的port number.

沒有留言:

張貼留言