close

現場(環境):CentOS 6.9   套件:tomcatnetfilter

 


 

原因:

 

依先前部落格介紹內容設定tomcat偽裝,

 

只有一定限度的防護方式,

 

這次想要再加上限制tomcat不使用root權限開啟。

 


 

處理方式:

 

這邊的重點在於因為root權限以外的使用者,

 

無法開啟1024以下的服務埠,

 

所以如果用一般使用者帳號會無法開啟80443等服務。

 

此時只好將他開啟1024以上服務,

 

再透過iptablesport

 

 

1. 先依tomcat偽裝內容做好所有前置作業。

 

這邊需要另外補充一點,如果要修改的比較好看些。

 

我們可以用touch 修改檔案時間,

 

因為touch一個已經存在的檔案時,他就只會更改時間。

 

#touch -m -d "2008-01-29" catalina.jar

 

(檔案時間配合其他檔案的時間設定)

 

 

2. 創建開啟服務的帳號

 

$CATALINA_HOME --> 表示為Tomcat的預設家目錄

 

#groupadd tomcat

 

#useradd -g tomcat tomcatuser

 

#chgrp -R tomcat $CATALINA_HOME

 

這邊也不用給他什麼其他的可以使用sudo的權限。

 

 

3.更改tomcat家目錄權限

 

#chmod 775 -R $CATALINA_HOME

 

這部份也可以依tomcat版本的差異,選擇想要賦予權限的路徑。

 

EXbincommonconflogsserverwebappswork

 

 

4. 關鍵在iptables的設定。

 

這邊我要幫他做一個導port的動作。

 

啟動forward功能。

 

#echo "1" > /proc/sys/net/ipv4/ip_forward

 

#sysctl -p

 

前面有說到非root帳號沒辦法開啟1024以下的port

 

所以我這邊讓tomcat 開啟 8000 4430 兩個服務。

 

接著用port forward 轉到 80 443

 

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000

 

#iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 4430

 

一般來說,如果單純只是要讓外面的主機可以進行連線的portfoward,這一行就夠了。

 

#iptables -t nat -A OUTPUT -p tcp -d localhost --dport 80 -j REDIRECT --to-ports 8000

 

#iptables -t nat -A OUTPUT -p tcp -d localhost --dport 443 -j REDIRECT --to-ports 4430

 

本機自己連結自己的話,因為不會經過prerouting,所以要加上-A OUTPUT的規則才能讓本機認得。

 

可以寫一個簡單的shell script讓他開機時可以自動執行,

 

或者寫在/etc/sysconfig/iptables當中。

記得,要轉的兩個PORT都要開可以連線。

#vim /etc/sysconfig/iptables

=================================

*nat

:PREROUTING ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

[0:0] -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000

[0:0] -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 4430

[0:0] -A OUTPUT -p tcp -d localhost --dport 80 -j REDIRECT --to-ports 8000

[0:0] -A OUTPUT -p tcp -d localhost --dport 443 -j REDIRECT --to-ports 4430

COMMIT

 

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp --dport 22 -j ACCEPT

-A INPUT -p tcp --dport 80 -j ACCEPT

-A INPUT -p tcp --dport 8000 -j ACCEPT

-A INPUT -p tcp --dport 443 -j ACCEPT

-A INPUT -p tcp --dport 4430 -j ACCEPT

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j DROP

-A INPUT -j DROP

COMMIT

=!============================================================

 

或者自己都設定好後,

 

使用指令存進/etc/sysconfig/iptables也可以

 

#iptables-save > /etc/sysconfig/iptables

 

這邊都設定完成後就可以使用使用者帳號去進行服務啟用測試了。

 

(本篇完)

 

 

 

arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()