centos7+apache/tomcat/nginx安装及安全配置

Apache Http Server&Tomcat&Nginx对比

Apache

Web服务器,基于C语言开发,用于处理静态内容、动态内容(PHP等),静态内容适用场景为传统网站、CMS(如WordPress),动态内容支持PHP、Perl、Python(通过模块)技术,适用于WordPress、Drupal等,支持反向代理(mod_proxy),负载算法为轮询、权重、IP哈希,性能表现为高扩展性,模块化

Tomcat

Java应用服务器,基于java语言开发,主要用于处理Java Servlet/JSP (动态Web应用),如Spring Boot、Jakarta EE应用,反向代理需配合Nginx/Apache,主要用于集群的负载,性能更适合Java EE应用

Nginx

Web服务器/反向代理,基于C语言开发,高并发静态内容、负载均衡、反向代理,处理静态内容性能极高,处理动态内容需反向代理(如FastCGI),需要搭配PHP-FPM或uWSGI,原生支持反向代理,负载算法为轮询、最少连接、IP哈希、一致性哈希,性能表现为高性能,低内存占用

性能对比

并发连接数

apache中等,主要使用进程/线程模型
Tomcat低,基于线程阻塞
Nginx极高,基于事件驱动

内存占用

apache较高
tomcat高,主要是存在JVM开销
Nginx极低

静态文件速度

apache中等,tomcat慢,nginx极快

动态文件速度

apache快,支持php等
tomcat快,支持Java
nginx需要代理(如FastCGI)才能支持

典型架构方案

纯静态网站,推荐Nginx

在这里插入图片描述

Java Web应用,推荐tomcat+nginx

在这里插入图片描述

PHP动态网站,推荐Nginx/Apache + PHP-FPM

在这里插入图片描述

高并发API服务,推荐Nginx(反向代理) + 多Tomcat实例

在这里插入图片描述

安全性对比

apache因其模块化历史安全漏洞较多,默认建议手动关闭危险模块(如mod_autoindex),对于DDos攻击,依赖于模块(如mod_evasive)
tomcat因Java安全更新频繁历史安全漏洞中等,默认建议禁用示例应用(如/examples),对于DDos攻击防护能力有限
nginx因编写过程中代码精简历史安全漏洞较少,默认较安全,针对配置文件做限制即可,对于DDos攻击原生支持防护,配置限速即可(limit_req)

配置文件

apache:.htaccess、httpd.conf
tomcat:server.xml、web.xml
nginx:nginx.conf

apache http server

安装

yum install httpd -y

启动服务

service httpd start

查看服务状态

systemctl status httpd

成功启动且默认关闭,开机不自动启动

配置开机自启

在这里插入图片描述

防火墙放行

永久允许公共区域访问80端口
firewall-cmd --permanent --zone=public --add-port=80/tcp

重新加载配置
firewal-cmd --reload 

安装完成

在这里插入图片描述

安全配置(修改httpd.conf文件)

禁止在没有index.html文件情况下,默认显示目录结构

在这里插入图片描述

配置低权限用户

在这里插入图片描述

配置目录权限限制,防止用户修改系统设置

AllowOverride None:阻止用户建立修改.htaccess文件,禁止当前目录及子目录使用.htaccess文件覆盖主配置
Options None:禁止所有目录选项
Require all granted:允许所有客户端访问该目录
在这里插入图片描述

隐藏apache版本信息

配置文件最后添加:
ServerTokens Prod
ServerSignature Off

在这里插入图片描述
重启服务
在这里插入图片描述
成功隐藏
在这里插入图片描述

自定义错误界面

在这里插入图片描述
路径相对于网站根目录/var/www/html/
在这里插入图片描述

删除默认文件

删除默认的HTML文件: # apache网页根目录htdocs下的html文件
删除默认文件,删除后放网站主页文件,删除前建议备份
对于大多数 Linux 发行版
sudo rm -rf /var/www/html/*
对于某些特殊安装路径
sudo rm -rf /usr/local/apache2/htdocs/*
删除默认的icons文件: # apache安装目录下的icons文件夹及里面的文件
防止攻击者通过图标识别服务器版本
常见路径
sudo rm -rf /usr/share/apache2/icons/
sudo rm -rf /var/www/icons/
删除默认的的CGI脚本: # apache安装目录下的cgi-bin文件夹及里面的文件
默认cgi脚本可能存在安全漏洞,如cgi功能不必要,可完全禁用
cgi脚本:允许调用外部程序生成动态网页
常见路径
sudo rm -rf /usr/lib/cgi-bin/
sudo rm -rf /var/www/cgi-bin/
删除Apache说明文件: # apache安装目录下的manual文件夹及里面的文件以及安装目录下的其他介绍性文件
常见路径
sudo rm -rf /usr/share/doc/apache2-doc/
sudo rm -rf /var/www/manual/
sudo rm -rf /usr/local/apache2/manual/
查找并删除其他说明文件
sudo find / -name "*apache*" -type d $ -name "manual" -o -name "docs" $ -exec rm -rf {} +

apache tomcat

安装jdk

安装tomcat

参考:https://blog.csdn.net/weixin_49001740/article/details/131928396

防火墙放行

firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

安装完成

在这里插入图片描述

安全配置

具体配置参考:https://www.cnblogs.com/brishenzhou/p/6141357.html

非root权限运行tomcat

使用jsvc启动后会生成两个进程

其中root用户启动进程为监控进程,tomcat用户启动进程为工作进程
在这里插入图片描述
通过jsvc启动方式来使用低权限用户运行tomcat与直接使用低权限用户启动start.sh区别为:
低权限用户只能监听1024之后的端口,若直接使用低权限用户,部分日志无法

其他配置

删除默认文档

删除/usr/local/tomcat/webapps下的所有目录

禁止目录遍历
开启日志记录
定制报错界面

在web.xml文件配置完成后,在/usr/local/tomcat/apache-tomcat-11.0.6/webapps/ROOT目录下设计报错页面

配置目录权限

Nginx

安装

参考:https://blog.csdn.net/weixin_50083085/article/details/135508762

解压缩完成后,执行如下命令,安装依赖
sudo yum install pcre-devel zlib-devel openssl-devel
若出现openssl未使用情况

在这里插入图片描述

执行如下命令openssl模块,若不挂载,无法使用https访问
./configure --with-http_ssl_module

安全配置

基础安全配置

隐藏版本信息

防止攻击者利用特定版本漏洞

http {
    server_tokens off;  # 隐藏Nginx版本
}
限制http请求方法
server {
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 405;  # 返回"Method Not Allowed"
    }
}
禁用目录列表
server {
    autoindex off;  # 禁止自动索引目录
}
防止劫持
server {
    add_header X-Frame-Options "SAMEORIGIN";
}
#只允许iframe加载相同域名的页面,禁止加载外部网站页面

SSL/TLS安全配置

强制使用https访问,将所有http请求永久重定向到https

注:前提为nginx已进行https配置

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;  # 301永久重定向
}
使用强加密套件
server {
    listen 443 ssl;
    ssl_protocols TLSv1.2 TLSv1.3;  # 仅允许TLS 1.2和1.3
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
    ssl_prefer_server_ciphers on;
}
启用HSTS(HTTP Strict Transport Security)
#强制始终使用https
server {
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
}

防止常见web攻击

配置CSP

只允许使用https访问同源或内联资源,其余均不允许

配置CSP(Content-Security-Policy),可参考:
server {
    # 防止 MIME 类型嗅探
    add_header X-Content-Type-Options "nosniff";

    # 移除 X-XSS-Protection(依赖 CSP 防护)
    # add_header X-XSS-Protection "1; mode=block";  # 已废弃

    # 更严格的 CSP 策略
    add_header Content-Security-Policy "
        default-src 'self';
        script-src 'self' https://cdn.trusted.com;
        style-src 'self' 'unsafe-inline';    # 内联 CSS 较常见
        img-src 'self' data: https:;
        connect-src 'self' https://api.example.com;
        frame-ancestors 'none';               # 禁止被嵌入 iframe
        block-all-mixed-content;              # 禁止混合内容(HTTP+HTTPS)
        upgrade-insecure-requests;            # 自动升级 HTTP 请求到 HTTPS
    ";
}
防止缓冲区溢出攻击
#限制请求头与缓冲区大小
http {
    client_header_buffer_size 1k;
    large_client_header_buffers 4 8k;
    client_body_buffer_size 16k;
    client_max_body_size 1M;  # 限制上传文件大小
}
防止DDOS攻击
#限制连接速率
http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    limit_conn_zone $binary_remote_addr zone=addr:10m;
}
server {
    limit_req zone=one burst=5;
    limit_conn addr 10;  # 每个IP最多10个连接
}

访问控制

限制IP访问
server {
    location /admin {
        allow 192.168.1.100;  # 允许的IP
        deny all;  # 拒绝其他所有IP
    }
}
禁止敏感文件访问
server {
    location ~ /\.(git|env|htaccess) {
        deny all;
    }
}
防止暴力猜解
#限制对 /login的访问频率,瞬时只允许存在10+3个请求,其余阻断
location /login {
    limit_req zone=one burst=3 nodelay;
}

日志监控

#记录访问
http {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值