zoukankan      html  css  js  c++  java
  • 常用服务的搭建、配置及优化

    一、设置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 是符号连接,连接到刚刚解压的目录。

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

     

     

  • 相关阅读:
    将数据挂载到 docker 容器中的3种方式:volume、bind mount、tmpfs
    kubectl 常用命令
    Kubernetes 知识点
    spring boot 学习资料
    docker 常见系统镜像
    docker 的前台模式和后台模式
    Docker容器里的进程为什么要前台运行?相同的问题:docker运行apache为什么带FOREGROUND参数?docker运行nginx为什么带`daemon off`参数?
    spring cloud 各核心组件作用
    nginx 镜像使用说明
    optimization.splitChunks 中,chunks 的3个值:all、async、initial 的含义
  • 原文地址:https://www.cnblogs.com/jianchen013/p/14523304.html
Copyright © 2011-2022 走看看