2011年6月21日 星期二
2011年1月11日 星期二
Secure Apache Web Server
1. Secure Apache Web Server
要保護 Apache Web Server ,除了可以使用一般的存取控制及適當設定Apache Web Server 的設定檔『/etc/httpd/conf/httpd.conf』中的安全相關設定外,還可以使用Firewall及SELinux 來增強 Apache Web Server 的安全性。
2. Firewall
先確認一下Firewall是否已開放 WWW(HTTP,port 80)及 Secure WWW(HTTPS,port 443)。
確認或開放WWW(HTTP,port 80)及Secure WWW(HTTPS,port 443) 的防火牆規 則設定。
也可以在TUI執行『iptables -L』命令檢視防火牆規則。
若security contexts 設定錯誤導致設定檔或網頁無法被存取時可以使用 『chcon』及『restorecon』進行修正。
7. 修正個人網頁存放目錄及個人網頁檔的security contexts 設定錯誤
a.修改 「/etc/httpd/conf/httpd.conf」的下列Directive,並重新啟動 httpd。
要保護 Apache Web Server ,除了可以使用一般的存取控制及適當設定Apache Web Server 的設定檔『/etc/httpd/conf/httpd.conf』中的安全相關設定外,還可以使用Firewall及SELinux 來增強 Apache Web Server 的安全性。
2. Firewall
先確認一下Firewall是否已開放 WWW(HTTP,port 80)及 Secure WWW(HTTPS,port 443)。
在GUI 執行[System]-->[Security Level and Firewall] 或在TUI執行『system-config-securitylevel』命令啟動『Security Level Configuration』。
確認或開放WWW(HTTP,port 80)及Secure WWW(HTTPS,port 443) 的防火牆規 則設定。
也可以在TUI執行『iptables -L』命令檢視防火牆規則。
[root@lab2 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
[root@lab2 ~]#
確認下列兩行防火牆規則已存在於防火牆規則清單中。
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
3. 確認SELinux 的現行模式
接著確認 SELinux的現行運作模式是否為『Enforcing』。
在GUI 執行[System]-->[Security Level and Firewall] 或在TUI執行
『system-config-securitylevel』命令啟動『Security Level Configuration』,檢視 SELinux 的現行模式。
確認SELinux 的模式為『Enforcing』。
或在 TUI 執行『getenforce』命令檢視SELinux 模式設定值。
[root@lab2 ~]# getenforce
Enforcing
使用『ls -dZ』檢視『/etc/httpd/』、『/etc/httpd/conf/』、
『 /etc/httpd/conf.d/』、『 /var/www/html/』等目錄的security contexts。
[root@lab2 ~]# ls -dZ /etc/httpd/ /etc/httpd/conf/ /etc/httpd/conf.d/ /var/www/html/
drwxr-xr-x root root system_u:object_r:httpd_config_t /etc/httpd/
drwxr-xr-x root root system_u:object_r:httpd_config_t /etc/httpd/conf/
drwxr-xr-x root root system_u:object_r:httpd_config_t /etc/httpd/conf.d/
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t /var/www/html/
整理如下表,
- DirectoryNameIdentifyRoleTypr/etc/httpdsystem_uobject_rhttpd_config_t/etc/httpd/confsystem_uobject_rhttpd_config_t/etc/httpd/conf.d/system_uobject_rhttpd_config_t/var/www/htmlsystem_uobject_rhttpd_sys_content_t
先在『/var/www/html』目錄中建立『index.html』。
[root@lab2 ~]# touch /var/www/html/index.html
使用『ls -lZ』檢視『/etc/httpd/conf/httpd.conf』、 『/var/www/html/index.html』等檔案的security contexts。
[root@lab2 ~]# ls -Z /etc/httpd/conf/httpd.conf /var/www/html/index.html
-rw-r--r-- root root system_u:object_r:httpd_config_t /etc/httpd/conf/httpd.conf
-rw-r--r-- root root user_u:object_r:httpd_sys_content_t /var/www/html/index.html
整理如下表,
- FileNameIdentifyRoleTypr/etc/httpd/conf/httpd.confsystem_uobject_rhttpd_config_t/var/www/html/index.htmlsystem_uobject_rhttpd_sys_content_t
5. security contexts 設定錯誤時如何修正
若security contexts 設定錯誤導致設定檔或網頁無法被存取時可以使用 『chcon』及『restorecon』進行修正。
7. 修正個人網頁存放目錄及個人網頁檔的security contexts 設定錯誤
a.修改 「/etc/httpd/conf/httpd.conf」的下列Directive,並重新啟動 httpd。
- <IfModule mod_userdir.c>## UserDir is disabled by default since it can confirm the presence# of a username on the system (depending on home directory# permissions).##UserDir disable↑ 加上井號## To enable requests to /~user/ to serve the user's public_html# directory, remove the "UserDir disable" line above, and uncomment# the following line instead:##UserDir public_htmlUserDir html↑ 去除井號,設定使用者個人網頁目錄名稱</IfModule>
b. 建立個人網頁放置目錄
[max@lab2 ~]$ mkdir html
c. 建立個人網頁
[max@lab2 ~]$ touch html/index.html
[max@lab2 ~]$ echo "Privat Test Page" >> html/index.html
d. 檢視個人網頁
出現無檢視權限的錯誤
e. 檢視個人網頁放置目錄權限設定
[max@lab2 ~]$ ls -ld html/
drwxrwxr-- 2 max max 4096 Jan 11 03:48 html/
[max@lab2 ~]$ ls -l html/index.html
-rw-rw-r-- 1 max max 17 Jan 11 03:49 html/index.html
個人網頁放置目錄的other 無『x』權限,所以無法存取個人網頁。
f. 在家目錄及個人網頁放置目錄增加other的『x』權限
[[max@lab2 ~]$ ls -ld ~/ ~/html
drwx------ 19 max max 4096 Jan 11 03:47 /home/max/
drwxrwxr-- 2 max max 4096 Jan 11 03:48 /home/max/html
[max@lab2 ~]$ chmod o+x ~/ ~/html
[max@lab2 ~]$ ls -ld ~/ ~/html
drwx-----x 19 max max 4096 Jan 11 03:47 /home/max/
drwxrwxr-x 2 max max 4096 Jan 11 03:48 /home/max/html
但仍是出現無存取權限的錯誤
g. 檢視個人網頁放置目錄及個人網頁的security contexts 設定
[max@lab2 ~]$ ls -dZ html/
drwxrwxr-x max max user_u:object_r:user_home_t html/
[max@lab2 ~]$ ls -Z html/index.html
-rw-rw-r-- max max user_u:object_r:user_home_t html/index.html
h. 修正個人網頁放置目錄及個人網頁的security contexts 設定
[max@lab2 ~]$ chcon -R --referenc=/var/www/html/ ~/html/
[max@lab2 ~]$ ls -dZ html/
drwxrwxr-x max max system_u:object_r:httpd_sys_content_t html/
[max@lab2 ~]$ ls -Z html/index.html
-rw-rw-r-- max max system_u:object_r:httpd_sys_content_t html/index.html
i. 這樣就看得到個人網頁了
2011年1月7日 星期五
bash 損毀或被意外刪除的修復
類別 : [TMLDP] [System Administrator] [Troubleshooting]
主題 : bash 損毀或被意外刪除的修復
適用發行版 : RedHat 系列發行版 ( RHEL、CentOS、Fedora...)
LAB 環境 : CentOS 5.4
/bin/bash 如果損毀或被意外刪除,就算利用開機光碟進入 Rescue 也沒有辦法 Chroot 到 /mnt/sysimage 進行 bash 的安裝,那該如何處理呢?
要解決這個問題你需要知道,
(1).如何使用開機光碟進入 Rescue Mode
(2).如何掛載 NFS 分享目錄
(3).如何安裝RPM 套件檔
主題 : bash 損毀或被意外刪除的修復
適用發行版 : RedHat 系列發行版 ( RHEL、CentOS、Fedora...)
LAB 環境 : CentOS 5.4
/bin/bash 如果損毀或被意外刪除,就算利用開機光碟進入 Rescue 也沒有辦法 Chroot 到 /mnt/sysimage 進行 bash 的安裝,那該如何處理呢?
要解決這個問題你需要知道,
(1).如何使用開機光碟進入 Rescue Mode
(2).如何掛載 NFS 分享目錄
(3).如何安裝RPM 套件檔
1. LAB環境說明
LAB環境如下圖所示,
其中lab1 扮演NFS Server 提供重新安裝 bash 的RPM 套件檔,lab2 為故障主機其/bin/bash 已模擬損毀。
2. LAB 操作步驟
a. 嘗試關閉 lab2
[root@lab2 ~]# shutdown -h now
由於/bin/bash 損毀,所以無法完成關機作業
b.強制關機重新啟動,但因為 /bin/bash 已損毀無法開機
c. 再次重啟後進入Rescue Mode
※ 由於透過網路取用 lab1 所分享的 bash RPM 套件檔,所以需啟動網路功能
d.因為 bash 已損毀,所以無法執行chroot /mnt/sysimage 進行後續作業,改採B計畫
e. 在 Rescue Mode 環境下,可以使用 http、ftp、nfs等協定透過網路環境取用資源,所以 先將 lab1 所分享的NFS 目錄掛載到 /mnt/source 以取得 bash RPM套件檔
f. 由於無法執行chroot /mnt/sysimage所以安裝 bash RPM 套件檔時需使用『 --root 』
選項指定套件檔安裝時的根目錄為『/mnt/sysimage』,如此就可以將bash RPM 套件檔安
裝到 lab2 的 /bin 目錄中。
另外,由於套件資料庫仍會紀錄 bash 為已安裝狀態,故需加上『--force』進行強制安裝
或強制升級。
g. 再次重啟系統,就可正常開機
訂閱:
文章 (Atom)