在Linux中,賬戶root有着生殺予奪的絕對權力,所以必要隨便使用root賬戶。這也就是說我們不能用root賬戶來運行暴露在外網上的切可以增刪改文件的應用程序。所以我們開發的網站或者說像tomcat等WEB服務是不可直接通過root權限來運行的,因爲我們的網站服務都有記錄日誌、上傳文件等文件操作,一旦網站有漏洞,就有可能引起攻擊,甚至整個服務器都有可能被黑客控制。所以我們需要用非root賬戶,最好是nologin賬戶來運行tomcat等web服務。
但是爲了安全考慮,在Linux系統中1024以下的端口都歸root賬戶所有,其他用戶沒有使用這些端口的權限。所以最好的做法是用非root賬戶運行tomcat,端口當然要大於1024,可以是常用的8080,https端口爲8443.通過root賬戶運行 其它軟件(例如Apache、nginx),然後跳轉端口80到8080上,跳轉端口443到8443上。然後通過防火牆跳轉端口80到8080上,跳轉443端口到8443上。但是通過防火牆跳轉必須暴露原始端口8080和8443。
1、新建nologin賬戶tomcat命令如下:
useradd tomcat -M -d / -s /usr/sbin/nologin
其中參數-M不創建用戶主目錄 -d指定用戶主目錄 -s指定用戶shell
2、設置tomcat安裝目錄下所有文件的所有者和所屬組爲tomcat(由於tomcat是由root解壓的,所有文件所屬權爲root,如果不進行移權其他用戶將無法啓動tomcat服務):
chown -R tomcat:tomcat /usr/local/tomcat8.5
3、使用systemctl命令管理tomcat服務,首先在目錄/lib/systemd/system/下新建文件tomcat.service,內容如下:
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target remote-fs.target nss-lookup.target redis.service mysql.service
Requires=mysql.service redis.service
[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
[Install]
WantedBy=multi-user.target
4、新建立的服務,需要註冊到系統服務,命令如下:
systemctl enable tomcat.service
5、新建的或修改過的服務,需要使服務生效,命令如下
systemctl daemon-reload
6、啓動服務
#啓動服務
systemctl start tomcat.service
#關閉服務
systemctl stop tomcat.service
#重啓服務
systemctl restart tomcat.service
#查看服務狀態
systemctl status tomcat.service
7、開啓防火牆,並設置開放端口,以ubuntu爲例
#開啓防火牆
sudo ufw enable
#開放端口
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 8080
sudo ufw allow 8443
8、防火牆端口跳轉命令如下:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
參考文章:
https://blog.csdn.net/zhangjianying/article/details/6574438
https://www.cnblogs.com/qq931399960/p/9152201.html
https://blog.csdn.net/bigdata_mining/article/details/80699180