常用服务的搭建、配置及优化

一、设置FTP服务,利用本地用户访问FTP

1、在线安装ftp服务

yum install vsftpd -y

2、设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录)

vim /etc/vsftpd/vsftpd.conf

local_enable=Yes #启用本地用户

anonymous_enable=NO #关闭匿名用户访问

write_enable=YES #开放服务器的写权限(若要上传,必须开启)

anon_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)

chroot_local_user=YES #将访问禁锢在用户的宿主目录中

allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限

3、systemctl restart vsftpd #重启服务 4、新建用户

useradd ftpuser # 新建名为 ftpuser 的用户,并自动建立/home/ftpuser 目录

passwd ftpuser # 设置该用户的密码

5、修改匿名用户、本地用户登录的默认根目录

anon_root=/var/www/html #anon_root 针对匿名用户

local_root=/var/www/html #local_root 针对系统用户

6、使用user_list用户列表文件和设置白名单和黑名单

vim /etc/vsftp/user_list

//末尾加上用户

ftpuser

7、vim /etc/vsftpd/vsftpd.conf

userlist_enable=YES #启用user_list用户列表文件

userlist_deny=NO #设置白名单,仅允许user_list用户列表文件的用户访问。默认为YES,为黑名单,禁用

8、systemctl restart vsftpd #重启服务

9、测试是否成功

 

二、Tomcat的安装配置优化

目录:
(一)、Tomcat概述
(二)、Tomcat 8.5 安装
(三)、目录结构
(四)、Tomcat管理端管理
(五)、服务部署
(六)、JVM
(七)、Tomcat 优化
(八)、Tomcat安全优化
(九)、如何部署应用程序

 

(一)、Tomcat概述

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

在维护版本有tomcat 7,8,9,10,目前线上常用的有7,8。

 

(二)、Tomcat 8.5 安装

tomcat 各软件版本下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/

jdk开发软件下载链接:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

1、下载相关软件到指定目录内

[root@web01 ~]# ll /server/tools/
total 220604
-rw-r--r-- 1 root root 10492067 Mar 11 09:58 apache-tomcat-8.5.61.tar.gz
-rw-r--r-- 1 root root 143722924 Mar 10 16:05 jdk-8u281-linux-x64.tar.gz
-rw-r--r-- 1 root root 71677863 Mar 11 12:05 jpress-v3.3.0.war

2、解压下载好的 jdk、tomcat软件包

tar zxf apache-tomcat-8.5.61.tar.gz -C /app/
tar zxf jdk-8u281-linux-x64.tar.gz -C /app/

## 添加软件链接
ln -s /app/apache-tomcat-8.5.61/ /app/tomcat
ln -s /app/jdk1.8.0_281/ /app/jdk

3、配置环境变量

## 添加环境变量到profile文件
cat >>/etc/profile<<'EOF'
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/app/tomcat
EOF

## 查看是否添加成功
tail -n 10 /etc/profile

## 重新加载profile文件
source /etc/profile

4、查看版本信息

## 查看java安装信息
[root@web01 ~]# java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)

## 查看tomcat安装信息
[root@web01 ~]# /app/tomcat/bin/version.sh
Using CATALINA_BASE:   /app/tomcat
Using CATALINA_HOME:   /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME:       /app/jdk
Using CLASSPATH:       /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:  
Server version: Apache Tomcat/8.5.61
Server built:   Dec 3 2020 14:03:28 UTC
Server number: 8.5.61.0
OS Name:       Linux
OS Version:     3.10.0-1160.el7.x86_64
Architecture:   amd64
JVM Version:   1.8.0_281-b09
JVM Vendor:     Oracle Corporation

5、启动停止服务

## 启动服务
/app/tomcat/bin/startup.sh
## 停止服务
/app/tomcat/bin/shutdown.sh

6、通过浏览器访问

 

(三)、目录结构

conf/ #tomcat配置文件目录

conf/server.xml #主配置文件

conf/web.xml #额外补充功能

conf/tomcat-user.xml #tomcat管理端配置文件,配置用户名密码

 

logs/ #日志目录

logs/catalina.out #最全日志

logs/catalina.2020-03-02.log #catalina.out的切割日志

logs/localhost_access_log.2020-03-02.txt #访问日志

 

webapps #站点目录

 

(四)、Tomcat管理端管理

搭建测试服务的时候,可以开启管理端,但在生产环境中一定要关闭。

管理端的用户,需要在 tomcat/conf/tomcat-users.xml 中进行配置。

vim /app/tomcat/conf/tomcat-users.xml #将文件原内容清空,加入以下内容,设置用户密码均为tomcat

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
            version="1.0">
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users>

 

tomcat 从 8.5 版本以后添加了管理端的限制,只允许本地登录管理端,解决办法看下边

1、找到 tomcat 目录中包含 ‘127’ 的文件

2、修改 127 为 \d+ 或者 *

3、重启tomcat进程

4、登录tomcat网页,点击”Server Status"

5、提示输入账号密码

6、可以看到服务器状态了

 

(五)、服务部署

如果开发给的是war包,则把war包放入webapps目录里边即可,tomcat可以自动解压,自动部署

如果开发给的是jar包,相当于把tomcat放到到jar中,利用java命令处理,例:java -jar xxx.jvar

 

(六)、JVM

1、使用 Server JRE 替代JDK。

服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作。

理由:一旦服务器被控制,可以防止在其服务器上编译其他恶意代码并植入到你的程序中。

2、 JAVA_OPTS

export JAVA_OPTS="-server -Xms512m -Xmx4096m  -XX:PermSize=64M -XX:MaxPermSize=512m"

-Xms 指定初始化时化的栈内存

-Xmx 指定最大栈内存

提示 Java 8 以后 -XX:PermSize 与 -XX:MaxPermSize 两个配置项被废弃

3、java.security 优化

打开$JAVA_HOME/jre/lib/security/java.security文件,找到下面的内容:

securerandom.source=file:/dev/urandom
替换成  
securerandom.source=file:/dev/./urandom

 

(七)、Tomcat 优化

1、maxThreads 连接数限制

maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法。

即,在一个服务器上启动多个tomcat然后做负载均衡处理。

<Connector port="8080" address="localhost"
maxThreads="2048" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8181" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

提示 很多做过php运维的朋友在这里会犯一个大错误,php优化服务器通常怎做法是安装cpu以及内存的情况配置连接数,连接数过万都很正常,但java不同jvm配置要非常小心,稍有差错就会崩溃。

maxThreads 配置要结合 JVM -Xmx 参数调整,也就是要考虑内存开销。

maxThreads          客户请求最大线程数
minSpareThreads   初始化时创建的 socket 线程数
maxSpareThreads   连接器的最大空闲 socket 线程数

 

2、虚拟主机

不要使用Tomcat的虚拟主机,每个站点一个实例。即,启动多个tomcat.

这也是PHP运维在这里常犯的错误,PHP的做法是一个Web下面放置多个虚拟主机,而不是每个主机启动一个web服务器。Tomcat 是多线程,共享内存,任何一个虚拟主机中的应用出现崩溃,会影响到所有应用程序。采用多个实例方式虽然开销比较大,但保证了应用程序隔离与安全。

 

3、压缩传输

通常所说的gzip压缩,Tomcat通过在server.xml配置设置压缩的选项。

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
              compression="on"
              compressionMinSize1="2048"
              noCompressionUserAgents="gozilla, traviata"
              compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,,application/octet-stream"/>

提示 压缩会增加Tomcat负担,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,压缩交由Nginx/Apache 去做。

compression             打开压缩功能   
compressionMinSize   启用压缩的输出内容大小,这里面默认为2KB
compressableMimeType 压缩类型

 

(八)、Tomcat安全优化

1、关闭端口保护

[root@web01 tomcat]# netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 127.0.0.1:8005 :::* LISTEN 6180/java tcp6 0 0 :::8080 :::* LISTEN 6180/java

启动tomcat服务会启动一个关闭端口,可以通过指定命令,访问这个接口,关闭tomcat

更改这个接口,以及关闭指令

[root@web01 tomcat]# vim /app/tomcat/conf/server.xml

<Server port="8527" shutdown="GUANBI">

 

2、ajp连接端口保护

如果不和apache一起使用,可以把这个连接端口关闭

<!--
<Connector protocol="AJP/1.3"
          address="::1"
          port="8009"
          redirectPort="8443" />
-->

 

3、禁用管理端

管理端主要应用在tomcat测试环境中

a.删除默认的conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件

b.删除webapps下默认的所有目录和文件

c.将tomcat应用根目录配置为tomcat安装目录以外的目录

 

4、降权启动(监牢模式)

a.添加用户 tomcat

b.修改 tomcat 所有者

c.通过普通用户管理 tomcat

 

5、文件列表访问控制

nginx默认会展示站点目录下所有的内容,tomcat默认是关闭的,配置内容如下:

vim /app/tomcat/conf/web.xml

    <init-param>
      <param-name>listings</param-name>
      <param-value>false</param-value>
  </init-param>

 

6、版本信息隐藏

不同版本会有不同的漏洞,防止被有心人利用,最好对外隐藏版本信息

当出现 404 页面时可能看到Tomcat的版本信息 HTTP Status 404 - /sdf type Status report message /sdf description The requested resource is not available. Apache Tomcat/8.0.32 隐藏Tomcat 404页面版本信息的方法如下 mkdir -p apache-tomcat-8.0.33/lib/org/apache/catalina/util cat >> apache-tomcat-8.0.33/lib/org/apache/catalina/util/ServerInfo.properties <<EOF server.info=Apache server.number= server.built= EOF 测试 HTTP Status 404 - /sdf type Status report message /sdf description The requested resource is not available. Apache

 

7、server header重写

vim $CATALINA_HOME/conf/server.xml

  <Connector port="80" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
maxThreads="8192"
minSpareThreads="64"
maxSpareThreads="128"
acceptCount="128"
enableLookups="false"
              server="Neo App Srv 1.0"/>
               
# curl -I http://localhost:8080/
HTTP/1.1 400 Bad Request
Transfer-Encoding: chunked
Date: Thu, 20 Oct 2011 09:51:55 GMT
Connection: close
Server: Neo App Srv 1.0

 

8、 应用程序安全

关闭war自动部署 unpackWARs="false" autoDeploy="false"。防止被植入木马等恶意程序

关闭 reloadable="false" 也用于防止被植入木马

 

(九)、如何部署应用程序

应用程序部署与tomcat启动,不能使用同一个用户。

我的tomcat 安装在 /srv目录下,Tomcat启动用户为daemon; 应用程序放在/www目录下www所有者是www用户。这样的目的是一旦tomcat被植入web shell程序,它将不能创建或编辑/www目录下面的任何内容。

adduser --home /www -c "Web Application" www

我的Tomcat安装在/srv目录下,但应用程序放在/www目录下,一般是这样的结构。

/www/example.com/www.example.com

每次升级将压错包解压到 /www/http://example.com/目录下,http://www.example.com 是符号连接,连接到刚刚解压的目录。

这个可以实现通过符号连接在多个版本之间快速切换。

 

 

posted @ 2021-03-12 13:19  jianchen013  阅读(320)  评论(0编辑  收藏  举报