init系統服務管理&&xinetd&&tcp_wrapper

System Resources Managed by init
使用init管理系統資源

init
    需要結合/etc/inittab配置文件來完成
        其中指定init進程會加載一個腳本--> /etc/rc.d/rc.sysinit (系統初始化)

例如:實現讓用戶可以通過串行口連接
co:23:respawn:/sbin/agetty -f /etc/issue.serial 19200 ttyS1
標識符:運行級別2和3:指定動作(重新發起連接):啓動終端命令  讀取歡迎語 連接速率 從哪個控制檯啓動 建議這種串行控制檯不要啓動過多
#man inittab

實現系統初始化管理:
系統初始化 inittab將系統啓動級別告知rc.sysinit並啓動之 rc.sysinit會進入到執行級別下 如果要啓動某種級別 就執行此級別下所有以S開頭的腳本 如果要退出這種級別 就執行以K開頭的腳本

    UNIX
    ->System v -->HPunix
    ->BSD -->sun
    系統啓動腳本 兩種:
        -->System V 風格 繁多,功能多,易用,用鏈接管理(Redhat)
        -->BSD 風格 簡潔 不易用 關閉服務kill
System 風格:
/etc/init.d    --> /etc/rc.d/init.d/ 可以接受多個參數 啓動數個進程
    鏈接到/etc/rc.d/rcN (N爲啓動級別)
BSD 風格:
直接就是個腳本 並且只能用來啓動服務 而且幾乎不接受什麼參數 需要停止服務時 只能kill

redhat使用chkconfig命令管理這些system風格的啓動腳本 並自動爲它們在相應級別加入鏈接
#chkconfig --list servicename
#chkconfig --level [0-6] servicename on|off 如果不加level 默認爲3 5
#chkconfig --add mysqld 添加新腳本(必須是system v風格的)
#chkconfig --del mysqld 移除某個腳本
服務的啓動|停止|狀態
#service startup_script start|stop|status    redhat風格管理方式
#/etc/init.d/startup_scripts start|stop|status     通用方式管理服務

chkconfig /etc/init.d/
/etc/sysconfig/下 有對應於每個服務的同名的配置文件 此配置文件可以在啓動某個服務時 向其傳遞一些額外的參數 來決定其運行狀態的 服務的額外配置文件 功能擴展 細化
例如:    dhcpd文件 -->可以定義dhcp服務只監聽某個網卡
    firstboot -->RUN_FIRSTBOOT=NO 是否在開機時提示用戶重新配置系統參數
    desktop    配置桌面環境
    vncservers

獨立守護進程 (隨時在內存中運行 等待訪問) (響應速度快)
    -->超級守護進程xinetd(屬於獨立守護進程)
        -->非獨立守護進程 (由超級守護進程管理,當需要被訪問時,由超級守護進程喚醒,加載入內存,接受訪問請求) (節省資源)

xinetd的配置文件 和配置文件格式:
/etc/xinetd.conf 超級守護進程自己的配置文件 定義了每個服務的默認參數
    -->includedir /etc/xinetd.d 將這個目錄下的文件包含進來
/etc/xinetd.d/定義了非獨立守護進程的啓動方式等信息 服務的詳細參數 控制信息

xinetd.conf 和xinetd.d/目錄下 配置文件的格式解釋:
接受=(直接等於) +=(在默認選項中增加) -=(在默認選項中去除) 方式的賦值
默認選項都在xinetd.conf裏
id
    用來唯一的標識一個服務
type   
    服務類型 rpc|internal|TCPNUX|TCPNUXPLUS|UNLISTED(不包含以上幾個的)
flags   
    標誌 nodelay(無延遲,立即將用戶請求轉交給服務,不參與隊列)|ipv4|
disable   
    接受yes|no yes表示禁用 no表示啓用 disable優先級高於enabled
enabled
    接受yes|no 與disable相反
instances
    實例 一個啓動了的進程佔用了套接字並可以提供服務 叫做一個實例
    例如一個系統中運行了兩個SqlServer 相互獨立 就叫做兩個實例
    在此決定了某個服務允許的最大訪問量 即併發連接數 如果value爲UNLIMITED
    則爲無限制
per_source
    允許一個客戶端能夠同時發起多少個連接
v6only
    是否只接受ipv6 一般爲no
log_type
    SYSLOG 產生的任何信息發送給syslog 由syslog記錄日誌
        daemon,auth,authpriv等等
            emerg,alert,crit,err,warning,notice,info,debug八個級別
    FILE 指定相應文件
        日誌文件大小的 (軟限制) (硬限制)
        如 =FILE /var/log/telnet 生效前要保證文件存在
log_on_failure
    當服務啓動失敗的時候記錄哪些信息
    HOST 遠程主機地址
    USERID
    ATTEMPT 登錄嘗試所有的信息
log_on_success
    登錄成功時 記錄哪些信息
    PID server process id 進程ID
    HOST 從哪裏登錄
    USERID
    EXIT 如何退出的
    DURATION 整個服務期間持續記錄 登錄持續時間
    TRAFFIC 記錄流量
cps
    限制入站鏈接的速率 接受兩個參數 (限制每秒最大處理連接數) (如果超過此限制服務將暫停多少時間)
    主要做ddos***限制        50                10
banner
    歡迎信息 相當於/etc/issue的作用
    接受一個文件路徑作爲值 當用戶訪問此服務時 顯示 定義的文件中的內容
banner_success
banner_fail
socket_type
    套接字類型 stream(tcp的套接字) |dgram (udp)|raw(繞過tcp直接到第三次)
wait   
    如果服務爲單線程/多線程的 由xinetd管理還是由自己管理 yes服務爲單線程
    xinetd將啓動服務並代替管理此進程
    no多線程 xinetd繼續保持爲之處理每一個連接請求
user   
    指定用誰的身份運行此進程 linux上小於1023的端口只有root才能訪問
log_on_failure
    關於日誌
only_from
    基於主機的訪問控制 僅允許
    可接受類似 192.168.0.0/24 或者192.168.1.0或者192.168.0.1的地址方式
    網絡名(如NIS域) 或者hostname或者domain   
no_access
    基於主機的訪問控制 禁止訪問
    接受值同上 如果兩者同時定義 將結合使用 如果都沒定義 則服務開放
    如only_from=192.168.0.0/24
        no_access=192.168.0.1 只接受noly_from的內容但除了192.168.0.1之外
per_source
    接受一個int整數值 代表允許同一個地址同時使用服務的個數
access_times
    允許連接服務的時間段 接受如12:00-18:00的值
bind
    如果主機上有多塊網卡 多個IP 則使用bind綁定網卡或者IP地址
interface
    synonym for bind 與bind相同

#ldd 顯示二進制文件運行時對庫文件的依賴關係
#which xinetd
#ldd `which xinetd` 顯示xinetd運行時依賴的庫

tcp_wrapper (tcp包裝器,在tcp層對網絡服務的控制管理)(可以基於主機實現安全訪問控制功能)
    tcp_wrapper是一個提供過濾功能的庫文件
    2個配置文件:    /etc/hosts.allow    /etc/hosts.deny
    兩個文件的優先級取決於檢查順序 如果所有條目都沒有匹配 默認允許

    默認檢查順序: 先檢查allow如果匹配則允許 就不再檢查deny文件
        如果allow沒有定義 則檢查deny文件如果匹配則deny 類似防火牆acl
    配置文件中的條目設置格式:
    daemon_list:client_list [:options]
    daemon1,daemon2:client1,client2 同時定義多個進程
    daemon_list@host:client    定義只控制哪個IP地址

    如telnet 進程名爲in.telnetd
    只允許192.168.1.0網段訪問 則
        host.allow+>in.telnetd: 192.168.1.0/255.255.255.0
        host.deny+>in.telnetd: ALL
        可接受多種方式:如IP(192.168.0.1或者10.0.0.) 主機名域名(www.redhat.com,.example.com)
        需要服務器的反向解析支持 不建議使用 bynetmask(192.168.0.0/255.255.255.0)不支持/24無類            域間路由這種寫法 不帶後綴
    tcp_wrapper的宏定義:
        LOCAL代表本地主機
        ALL代表所有主機
        UNKNOWN
        KNOWN
        PARANOID無法解析或者正反向解析    不匹配的
        EXCEPT (EXCEPT可以被嵌套)
    例如:    host.allow+>sshd: 192.168.0.    EXCEPT 192.168.0.253
        host.deny+>sshd: ALL
    [:options]
        %a|c|d|h|n|p|s|u
        %%
        例如:
    host.allow+>in.telnetd: 192.168.0.0/255.255.255.0 : spawn echo "`date` %u from %h attempt %d@%H" | mail -s warning root
    host.allow+>in.telnetd: 192.168.0.0/255.255.255.0 : spawn echo "`date` %u from %h attempt %d@%H" >> /var/log/telnet2.log  (telnet2.log這個文件需要首先創建的)
    也可以將in.telnetd換成sshd 則可以實現對ssh操作的訪問控制

查看某個服務是否支持tcp_wrappers控制:
#ldd `which xinetd`    如果某個服務鏈接到tcp_wrappers庫文件 則表示它接受tcp_wrappers的管理
    例如:
    [root@station179 xinetd.d]# ldd `which xinetd`
        linux-gate.so.1 =>  (0x00760000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00679000)
        libwrap.so.0 => /lib/libwrap.so.0 (0x00abc000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00110000)
        libm.so.6 => /lib/libm.so.6 (0x0064a000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00e9e000)
        libc.so.6 => /lib/libc.so.6 (0x00202000)
        libdl.so.2 => /lib/libdl.so.2 (0x00c65000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00127000)
        /lib/ld-linux.so.2 (0x001e6000)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章