前言-刚刚发布一个demo一直被一个叼毛攻击,不停的扫描端口,弄得接口一访问就是503错误
99元买了一个2核2g的服务器,1元钱买了一个服务器,有个人一直扫描我的端口
安装一个 nginx
dnf install nginx
安装完成后启动nginx服务
# 启动 systemctl start nginx # 设置开机自启动 systemctl enable nginx # 重启 systemctl restart nginx # 查看状态 systemctl status nginx # 停止服务 systemctl stop nginx
打开etc\nginx\nginx.conf文件
server { listen 80; server_name _; # 拒绝访问带有 .html 扩展名的文件 location ~* \.html$ { return 403; } # 将其他请求代理到本地的 5000 端口 location / { proxy_pass http://192.168.100.149:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
webapi程序program里面改一下
var app = builder.Build(); // Configure the HTTP request pipeline. //if (app.Environment.IsDevelopment()) //{ // app.UseSwagger(); // app.UseSwaggerUI(); //} app.UseAuthorization(); app.MapControllers(); app.Use(async (context, next) => { var requestedUrl = context.Request.Path.Value; if (!IsValidUrl(requestedUrl)) { if (requestedUrl.Contains(".html")) { logger.Debug($"{GetClientIp(context)}--{context.Request.Path}"); } context.Response.StatusCode = StatusCodes.Status400BadRequest; await context.Response.WriteAsync(" "); return; } await next(); }); app.Run(); bool IsValidUrl(string url) { // 这里可以实现你的URL验证逻辑 // 例如,只允许某些路径 var allowedUrls = new[] {"/home" }; return allowedUrls.Contains(url.ToLower()); } string GetClientIp(HttpContext context) { // 尝试从 X-Forwarded-For 头获取 IP 地址 string ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault(); if (string.IsNullOrEmpty(ip)) { // 如果 X-Forwarded-For 头为空,则获取直接连接的 IP 地址 ip = context.Connection.RemoteIpAddress.ToString(); } return ip; }
如果前面前面的nginx被功能0进入到这里,直接记录ip
然后在管理后台限制ip访问
把允许改成拒绝,把掉毛的ip加进去
如果还是大量攻击那就上高防服务器,那种服务器打不死
我的服务器99元买的为什么非要打我,日了狗
标签:webapi,centos,stream,ip,app,nginx,systemctl,proxy,context From: https://www.cnblogs.com/axyls/p/18287667