Search Google

Sunday, October 19, 2008

天殺的SELINUX

雖然SELINUX已經存在各Linux disto中很久了,但是以前在使用Debian/Ubuntu時從來沒有用過它,應該說從來沒有裝過它!因此對它的實際功能不是很了解,只約略知道它是加強安全性的一個核心套件而已。雖然大部分的distro把他列為optional套件,但Red Hat系列中卻將SELINUX設定為預設安裝並執行的套件之一。

最近因為某些原因於是在vmware下裝起Red Hat系列的Fedora(別了Debian/Ubuntu),等安裝好Tomcat之後要測試的時候發現連到localhost時完全正常,但是從host machine要連過去的時候就是不work,總是在firefox的分頁中看到連線錯誤的訊息。

接下來做了很多嘗試與微調,其中最讓我不解的是為什麼我用Putty連SSH連得好好的,web server卻連不上?在vmware下執行netstat -an時明明看到web server與Tomcat的port處於listen狀態,後來終於在姑且一試的心態下從host machine對vmware展開port scan,發現只有SSH的port 22是開的?!心想"我明明沒有裝firewall套件阿,為什麼外部只看得到port 22?"

上google求救之後終於發現原來是SELINUX在搞鬼,因為SELINUX會設定一些iptables規則導致於最後只有port 22是預設對外開放的port。在disable SELINUX並停止iptables service後一切總算在隨著重新開機回歸正常,從host machine也終於能夠順利連到vmware的web server中。

disable SELINUX的方法:
將/etc/selinux/config其中的SELINUX=enforcing改為SELINUX=disabled

停止iptbales service的指令:
/sbin/service iptables stop

Update @ 20081021
昨天發現跟SELINUX沒關係,只要修改iptables規則就可以,但是由於懶得修改,所以還是直接把iptables service停掉了。
這麼說來標題似乎下錯了!

1 comment:

Anonymous said...

自從經過兩次被駭客入侵,破壞了主機系統,我悔悟到不能因懶或貪方便而把 SeLinux 關掉,假如你的主機還安裝了 wordpress 及 osCommerce 等連上數據庫,風險便更。要替 apache、postfix、samba、ftp 等訂好 Selinux policy 是要有點耐心,但並不難。知識黑積了自然可輕鬆設定,最重要還是安全至上。