使用非root账户运行tomcat

        在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
 

你可能感兴趣的:(运维)