iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
Modern Web

來架個網站吧系列 第 23

來架個網站吧-23.網站環境建置-建立AP

  • 分享至 

  • xImage
  •  
tags: 來架個網站吧 tomcat

我是目錄


Grails 在生產環境中,最佳的拍檔就是 tomcat 啦~簡單,可以快速部屬的 Servlet容器。

然而tomcat受歡迎的背後,卻也背負不少的CVE認證,所以這邊我會先說明一下如何建立安全?的tomcat 服務。以下是濃縮版本,當然也歡迎在留言區補充~

建立安全的tomcat?

在可怕的網路世界?能隱藏訊息就隱藏,能多做一點預防措施就多做一點吧。以下是我後來在部屬tomcat服務會做的一些事項:

  • 移除 tomcat 版本號
  • 禁止自動部屬
  • 關閉遠端關閉服務port
  • 刪除 webapps 內所有服務

移除 tomcat 版本號

刪除版本號最主要目的是為了防止對外洩漏tomcat 版本資訊,比較簡單的作法是直接在 conf/server.xml 指定 server name,如下:

<Connector server="application server" />

但是這樣的作法在 404 頁面 時仍然會出現 tomcat 版本資訊。為了解決這個狀況,目前現行可靠的作法是把 catalina.jar 打開之後,修改 ServerInfo.properties 裡面的資訊。

一行指令版本

export tomcatHome="/opt/apache-tomcat" &&\
export tomcatVersion="7.0.109" &&\
export javaHome="/usr/local/jvm/jdk17_latest" &&\
mkdir -p ${tomcatHome}/catalina_jar-${tomcatVersion} &&\
cp ${tomcatHome}/apache-tomcat-${tomcatVersion}/lib/catalina.jar ${tomcatHome}/catalina_jar-${tomcatVersion} &&\
cp ${tomcatHome}/apache-tomcat-${tomcatVersion}/lib/catalina.jar ${tomcatHome}/catalina_jar-${tomcatVersion}/catalina.jar.bk &&\
unzip -q ${tomcatHome}/catalina_jar-${tomcatVersion}/catalina.jar -d ${tomcatHome}/catalina_jar-${tomcatVersion}/ &&\
sed -i '/^server.number=.*/c server.number=0' ${tomcatHome}/catalina_jar-${tomcatVersion}/org/apache/catalina/util/ServerInfo.properties &&\
sed -i '/^server.info=.*/c server.info=Apache Tomcat' ${tomcatHome}/catalina_jar-${tomcatVersion}/org/apache/catalina/util/ServerInfo.properties &&\
cd ${tomcatHome}/catalina_jar-${tomcatVersion} &&\
${javaHome}/bin/jar uvf ${tomcatHome}/catalina_jar-${tomcatVersion}/catalina.jar org/apache/catalina/util/ServerInfo.properties &&\
rm -f ${tomcatHome}/apache-tomcat-${tomcatVersion}/lib/catalina.jar &&\
cp ${tomcatHome}/catalina_jar-${tomcatVersion}/catalina.jar ${tomcatHome}/apache-tomcat-${tomcatVersion}/lib/catalina.jar

還原

sudo su tomcat -c "rm /home/tomcat/apache-tomcat-${tomcatVersion}/lib/catalina.jar"
sudo su tomcat -c "cp /home/tomcat/catalina_jar/catalina.jar.bk /home/tomcat/apache-tomcat-${tomcatVersion}/lib/catalina.jar"

禁止自動部屬

在這方面我有遇過正式環境中,出現不明的服務。後來發現在 webapps 目錄中,出現隱藏檔案目錄,如 webapps/.test。後來是直接把 unpackWARsautoDeployreloadable 全部關掉。

unpackWARs="false" autoDeploy="false" reloadable="false"
  • conf/server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="-1" shutdown="SHUTDOWN">
<!--部份省略-->
  <Engine name="Catalina" defaultHost="localhost">
<!--部份省略-->

      <Host name="localhost"  appBase="/wezoomtek/webapps/w1"
            unpackWARs="false" autoDeploy="false" reloadable="false"
        >
<!--部份省略-->
    </Engine>

  </Service>

</Server>

關閉遠端關閉服務port

在生產環境中最怕服務突然無預警關閉,更何況還預留 port 好心給別人呢!所以記得關閉!

  • conf/server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="-1" shutdown="SHUTDOWN">
  <!--部份省略-->
</Server>

刪除 webapps 內所有服務

最後,如果 tomcat 是從官方網站下載的,記得把原有在 webapps 裡的服務通通都刪除,我相信絕大多時候都不會用到。


上一篇
來架個網站吧-22.網站環境建置-安裝資料庫
下一篇
來架個網站吧-24.網站環境建置-編譯nginx
系列文
來架個網站吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言