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)