当前位置:首页 > 云谷精选

Web服务容器如Tomcat与Nginx的安全加固

admin2026年03月19日云谷精选22.23万
摘要:# 别让黑客在你家Tomcat和Nginx里“开派对” 我前两天帮朋友看一个线上问题,登录服务器一看,好家伙,Tomcat用的还是8.0.30,Nginx配置里一堆`default_server`,日志目录权限777。朋友还一脸无辜:“这不跑得好好的吗?…

别让黑客在你家Tomcat和Nginx里“开派对”

我前两天帮朋友看一个线上问题,登录服务器一看,好家伙,Tomcat用的还是8.0.30,Nginx配置里一堆default_server,日志目录权限777。朋友还一脸无辜:“这不跑得好好的吗?”

说白了,这种配置就像把家门钥匙插在锁上,还贴了张纸条写着“欢迎光临”。

很多团队搞安全,总盯着防火墙、WAF这些“大门”,却忘了自家应用容器——Tomcat、Nginx这些每天直接处理流量的“客厅”——才是黑客最爱摸进来的地方。今天咱就捞点干的,不说那些“加强安全意识”的片儿汤话,直接告诉你几个我亲自踩过坑、也帮别人填过坑的加固实操。

Tomcat:别让它“裸奔”在公网上

我见过最离谱的部署,是把Tomcat直接绑在公网IP的8080端口,管理后台密码还是admin/admin。这种站点,用Shodan一搜一个准,黑客都不用费劲渗透,直接“推门就进”。

第一个大实话:能不用Tomcat当对外服务,就别用。

如果业务必须,这几件事你今晚就得做:

1. 管理后台?藏起来,或者干脆废了。 Tomcat默认的/manager/html/host-manager是著名的靶子。生产环境我建议你直接禁掉:在conf/tomcat-users.xml里,把相关role注释掉。如果某些自动化部署工具非得用,那就用Nginx做个反向代理,加IP白名单,只允许内网特定IP访问。别信什么“改个复杂密码就行”,爆破工具可不管密码多复杂。

2. 版本号?给我抹掉。conf/server.xml里,找到Connector配置,加上这两个参数:

server=" " 
xpoweredby="false"

这能防止黑客直接通过报错信息判断你的Tomcat版本,然后去搜对应的漏洞。(对,我知道这算“安全通过隐匿”,但有用,为啥不做?)

3. 那些用不着的默认功能,关! conf/web.xml里默认有一堆默认Servlet,比如defaultjsp。如果你用不到JSP,直接把org.apache.jasper.servlet.JspServlet映射注释掉。用不到的HTTP方法(比如PUT、DELETE),也可以用security-constraint限制。

我自己的经验是,给Tomcat做次“瘦身手术”,把webapps目录下自带的docsexamplesROOT(除非你需要)全删了,能砍掉一大半被利用的风险。

Nginx:你的第一道“真”防线

很多人把Nginx当个简单的转发工具,配置写得跟大学实验报告似的。其实它要是配好了,能帮你挡掉不少脏东西。

1. 错误信息,别给得太“实在”。 默认的Nginx错误页,会告诉你404 Not Found,甚至有些配置会泄露后端服务器信息。改它:

server {
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    # 关键在这句:关闭server_tokens
    server_tokens off;
}

server_tokens off; 这行能让Nginx在响应头里隐藏版本号。你想想,黑客看到“Nginx/1.18.0”,下一秒就去查这个版本的CVE了,这跟自报家门有啥区别?

2. 限流,防的就是CC攻击。 那种慢速的、低频的CC攻击,专门消耗你的连接资源。在Nginx里配个限流,成本几乎为零,但效果立竿见影:

http {
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn perip 10; # 单个IP同时最多10个连接
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    server {
        location / {
            limit_req zone=one burst=20 nodelay;
        }
    }
}

这个配置的意思是,单个IP每秒超过10个请求,我就开始延迟处理;超过20个(burst),就直接返回503。对于很多中小网站,这配置能扛住大部分野路子CC攻击了。

3. 屏蔽那些“不正常”的访问。server块里加上这些:

# 屏蔽非法的HTTP方法
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444;
}
# 屏蔽一些常见的恶意扫描User-Agent(这里只是个例子,你得根据自己日志更新)
if ($http_user_agent ~* (nmap|sqlmap|wget|curl|harvest) ) {
    return 444;
}
# 防止目录遍历
location ~* \.(env|log|htaccess|htpasswd|git|svn) {
    deny all;
}

注意,用if要小心,在Nginx里它算“邪恶的”,但用在server上下文的简单判断上,问题不大。return 444;是Nginx特有的,直接关闭连接,不给任何响应,让扫描器摸不着头脑。

组合拳:Tomcat + Nginx的最佳安全姿势

最理想的架构是:用户 -> Nginx (80/443) -> 内网反代/负载均衡 -> Tomcat (内网端口)。

  • Tomcat只监听内网地址,比如127.0.0.1:8080192.168.x.x:8080。别让它出现在公网网卡上。
  • Nginx做SSL终结,证书、加解密这些耗CPU的活儿都交给它,Tomcat专心处理业务。
  • 在Nginx和Tomcat之间,可以再加一层应用层WAF(比如ModSecurity),或者简单的IP白名单(只允许Nginx服务器IP访问Tomcat管理端口)。

还有个小细节:文件权限。 别用root用户跑Tomcat!新建个低权限用户,比如tomcat,把整个Tomcat目录的属主改成它。webapps目录的权限收紧,别让上传的文件有执行权限(比如通过chmod -R 755设置)。

最后说点扎心的

安全加固这活儿,没有“一劳永逸”的银弹。你今天按这篇文章配好了,下个月可能出新漏洞。所以:

  1. 关注CVE。订阅一下Tomcat和Nginx的安全邮件列表,或者用软件资产管理系统扫一下。
  2. 看日志。Nginx的access.logerror.log,Tomcat的localhost_access_log,定期看看有没有奇怪的请求。很多攻击前期都有扫描试探。
  3. 别瞎升级,但也别太老。我知道生产环境求稳,但用着官方都不再维护的版本(比如Tomcat 7系列),那不是稳,是赌。选一个长期支持(LTS)的稳定版本,做好测试再更新。

安全就是个持续的过程,跟家里打扫卫生一样,不可能扫一次就永远干净。但这些基础的、不花钱的加固措施,能帮你把90%的“脚本小子”和自动化扫描挡在门外。

行了,别光收藏了,趁现在,去服务器上看看你的server.xmlnginx.conf吧。

扫描二维码推送至手机访问。

版权声明:本文由www.ysyg.cn发布,如需转载请注明出处。

本文链接:http://www.ysyg.cn:80/?id=816

“Web服务容器如Tomcat与Nginx的安全加固” 的相关文章

分析高防服务器内核中的SYN Cookie算法对半连接队列的保护

# 高防服务器里那个不起眼的“小饼干”,真能抗住洪水猛兽? 说实话,第一次听到“SYN Cookie”这名字的时候,我差点笑出来。这玩意儿听起来就像个临时凑合的小零食,跟“DDoS防护”、“流量清洗”这些听起来就高大上的词儿比起来,简直太没排面了。 但…

基于一致性哈希算法的高防节点负载均衡与缓存命中率优化

## 高防节点怎么“排兵布阵”?一致性哈希算法,不只是个技术名词 前两天,一个做电商的朋友半夜给我打电话,语气里全是火急火燎:“哥,我们上了高防CDN,怎么大促一来,感觉该慢还是慢,该崩还是崩?钱没少花,PPT上说的‘智能调度’、‘毫秒级响应’,感觉都是…

解析Anycast路由寻址算法在高防CDN近源清洗中的技术实现

# 当黑客的流量涌来,高防CDN靠什么“就近拦截”? 先说个我见过的真实场景。 去年帮一个做跨境电商的朋友处理过一次DDoS攻击,攻击流量不大,也就几十个G,但特别恶心——全是针对他们登录API的CC攻击。他们当时用的是一家知名云厂商的“基础版”高防,…

解析高防引擎中的慢速连接检测算法:识别并断开异常占用

# 当你的服务器被“慢刀子割肉”:聊聊高防引擎里那个揪出“磨洋工”连接的算法 你肯定见过这种场面:网站前台看着一切正常,没崩也没卡,但后台CPU和内存占用率莫名其妙就飙上去了,数据库连接池一会儿就满,重启一下能好几分钟,然后又开始不对劲。 像不像有谁在…

深度解析令牌桶与漏桶算法在CDN边缘节点限速中的应用差异

# 令牌桶和漏桶,CDN限速的“油门”和“刹车”到底怎么选? 前两天跟一个做电商的朋友聊天,他愁眉苦脸地说:“促销那会儿,CDN流量费用直接爆了,后台一看,全是爬虫在那儿疯狂薅商品详情页,跟不要钱似的。” 我问他:“你没做限速吗?” 他一脸无奈:“做…

分析高防 CDN 对特定业务逻辑(如抢购、秒杀)的防御加固方案

# 高防CDN,真能扛住“双十一”级别的抢购秒杀吗? 先说个我亲眼见过的场面吧。 去年帮一个做潮牌的朋友看他们家的“突袭发售”活动。服务器配置不低,还上了云厂商自带的基础防护。结果开售前五分钟,官网直接卡成PPT,页面死活刷不出来。你以为是被“羊毛党”…