港口建设网站,网站建设最安全的宽度,海珠哪家网站建设好,学校网站建设领导小组环境#xff1a;
一台 VPS#xff0c;之前文章推荐过 $1/月 OS: Ubuntu 内存#xff1a;961MB CPU: 1CORE 上面都是学习 Python 时写的应用#xff0c;这些应用在 CSDN 都有原码#xff0c;只是时间久了#xff0c;自用的有修复bugs#xff0c;还有些功能升级。 以前是…环境
一台 VPS之前文章推荐过 $1/月 OS: Ubuntu 内存961MB CPU: 1CORE 上面都是学习 Python 时写的应用这些应用在 CSDN 都有原码只是时间久了自用的有修复bugs还有些功能升级。 以前是运行在家里的 NAS 上现在移到了 Internet事儿就来了。 当前运行的应用
当收藏夹用的 Portal看正经与“正经”新闻的两个花钱订阅的报刊新闻组不能写名字不然文章发不出来一个名字里有“华尔街”另一个含“经济”人用浏览器修切图片的应用过滤几个电报X新闻组取出精华看财经新闻用的。 以上是 WEB 应用还有 nginx fail2ban ufw 另外两带V不能提名字你知道的。Claude Code, GeminiCLI 这上面都可以跑就是慢点用得很少。用了 GITHUB 项目可以从浏览器使用 Claude Code是那这台用的虽然没运行 Claude Code但 Nginx site 还在。解释6 中提到的 nginx 它来支持 web 访问与后面的应用连接这里用 nignx SSL Python/V 一起做“网站”。 现象
用 SSH 工具连接 VPS 等了十几秒以为主机挂V 工具反应很慢SSH 登录后敲字母比叫猫过来还慢。使用 top 命令 那个 v开头的进程CPU 使用率在60%-93% 解决过程
1 看 top 输出发呆
看着可用内存 60MB... 好在是有加 swap。下面是已经加入过滤运行超过半小时后的截屏 那时 CPU 内存占用已经降下来一些。
看了看 v 的日志 没有不正常使用的记录。 2 思考与瞎猜
个人认为那个 v 不是根源。回到文章开头在 “当前运行的应用” 中有提 v 前面是 NGINX。应该是它的原因。 按这个思路去找问题 3 过程
1停止不必须的服务
到 /var/log/nginx 扫了一眼日志一时想不起来 claude.后缀是干什么的 先删除 / 停止 claude后缀的 Nginx 网站 rm -fr /
rm -rf /etc/nginx/sites-enabled/claude.*
这几个还在用 2分析 nginx 可网站的日志
tail -f 看几个文件时就知道是 多个 IPs 后来查了一下来自不同国家的主机在扫这台主机。看来是组织的群体扫描如下图这样的。 从日志文件中找了几个 IP 中国 俄 北美的 南美的 运行之前写的 fail2ban 使用的脚本看看 fail2ban 运行正常没有关住的。
运行 ufw status 看看只有 SSH filter 抓了很nginx 没货。 下面是写的脚本输出 绝大部分是 ssh filter 抓到的。 3两种方式在 nginx 上过滤 在 fail2ban 加过滤
Nginx 设置过滤
缺点不能 Ban IP 小遗憾 下面是用来防止爬虫的设置不要全抄要依据自己的环境修改再用。 # Logging Settingsaccess_log /var/log/nginx/usc.daven.us.access.log combined buffer64k flush5m;error_log /var/log/nginx/usc.daven.us.error.log warn;# Block malicious User-Agents (updated to allow legitimate API clients)if ($http_user_agent ~* (sqlmap|nikto|masscan|nmap|gobuster|dirbuster|scanner)){return 403;}# Block malicious request methodsif ($request_method !~ ^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS)$ ) {return 405;}# Block common attack pathslocation ~ ^/(admin|phpinfo|phpmyadmin|wp-admin|wp-login|mysql|solr|geoserver|jasperserver|owncloud|partymgr|zabbix|aspera|telerik)(?:/.*)?$ {deny all;return 404;}# Block sensitive files and directorieslocation ~ /\.(env|git|docker|aws|svn|bzr|hg) {deny all;return 404;}location ~ \.(sql|log|ini|conf|bak|old|tmp|backup)$ {deny all;return 404;}# Block scanning of specific extensionslocation ~ \.(jsp|do|cgi|exp|asp|aspx|cfm|pl)$ {deny all;return 404;}# Block directory traversal attemptslocation ~ \.\./.*$ {deny all;return 404;}# Block V2Ray configuration files and sensitive pathslocation ~ ^/(config\.json|v2ray|vmess|trojan|shadowsocks|xray|vless)(?:/.*)?$ {deny all;return 404;}# Block direct port probinglocation ~ ^/:[0-9]/ {deny all;return 404;}# Block common RCE payloadslocation ~* (\x09hink|\x07pp|shell_exec|wget) {return 403;}# Block common malicious paths that arent already explicitly deniedlocation ~* \.(php|cgi|asp|aspx|jsp|do)$ {return 404;}# Block common scanner User-Agentsif ($http_user_agent ~* (sqlmap|nikto|masscan|nmap|gobuster|dirbuster|scanner|zgrab|nokia.com/genomecrawler)) {return 403;}# Forbid access to hidden fileslocation ~ /\. {deny all;access_log off;log_not_found off;} fail2ban 过滤
nginx-attack.conf:
[Definition]
allowipv6 auto
failregex ^HOST -.*GET .*(.env|.git|.well-known/security\.txt|\/phpmyadmin|\/wp-login\.php|\/wp-admin|\/cgi-bin|\/phpinfo|\.sql|\.log|\.ini|\.conf|\.bak).* HTTP.* (40[0-4]|444|499|500)^HOST -.*GET .*(?:\x09hink|\x09pp).*shell_exec.*wget.* 400.*
ignoreregex
nginx-web-attacks.conf
[Definition]
allowipv6 auto
failregex ^HOST -.*GET .*(?:\.env|\.git|\.well-known/security\.txt|\/phpmyadmin|\/wp-admin|\/cgi-bin|\/webui|\/geoserver|\/remote/login|onvif|PSIA|boaform|owa/auth/logon\.aspx|PROPFIND|\CSCOE\).*HTTP.* (40[0-4]|444|499|500)^HOST -.*GET .*(?:\x09hink|\x07pp).*shell_exec.*wget.* 400.*^HOST -.*POST .*cgi-bin/(\.\./).*bin/sh HTTP.* (400|404|301|302)^HOST -.*GET .*HTTP.* (40[0-4]|444|499).*(?:zgrab|CMS-Checker|libredtail-http|WanScannerBot|Odin|GenomeCrawlerd)
ignoreregex
添加到 jail.local 里让过滤器生效
[nginx-attack]
enabled true
port http,https
filter nginx-attack
logpath /var/log/nginx/access.log
maxretry 3
bantime -1
findtime 60
action ufw[namenginx-attacks, porthttp,https, protocoltcp][nginx-web-attacks]
enabled true
port http,https
filter nginx-web-attacks
logpath /var/log/nginx/*.daven.us.access.log
maxretry 12
bantime -1
findtime 600
action ufw[namenginx-web-attacks, porthttp,https, protocoltcp] 4) 等待
重启 fail2ban 加载新的 filter 重启 nginx 应用新的 filter 整个过程没有太时间停服务。
fail2ban 开始运行 ufw 一起工作是缓慢毕竟有些 I/O 堵在哪儿。
去吃了个饭看着系统内存 CPU 在释放 v从最忙到消失fail2ban ufw 是在头部是好事大概 2 个小时后 CPU 从90%使用率降到 10% 以下。 刚看到另一个日志文件中有记录加了新 fail2ban filter重启 fail2ban UFW 又转起来。 网上看 93 阅兵再次致敬二战中的中国军队。