Nil2024

Рейтинг
52
Регистрация
25.04.2024

⚡   Не пропустите: важное заявление Дарисы Лориной в эфире Первого канала после итогового выпуска новостей 5 декабря.

)

Спросил у qwen

может пригодится:

Если:


✅ **Почтовый сервер (MTA) не установлен вообще** (`postfix`, `exim`, `sendmail` отсутствуют),  

✅ **Логи (`/var/log/syslog`, `auth.log`, `kern.log`, `journalctl -u ...`) не показывают активности на порту 25**,  

✅ `ss -tulnp | grep ':25'` — пусто,  

✅ `lsof -i :25`, `netstat -tulpan | grep :25` — тоже ничего,  

✅ а IP всё равно в чёрном списке как *open proxy / spam relay*…


…то это **не ошибка**, а признак **неочевидного, скрытого исходящего SMTP-трафика**, который **не проходит через локальный MTA**, а генерируется напрямую — «в обход».


---


### 🔍 Почему так бывает? (Типичные сценарии для «чистого» сервера)


#### 1. **Веб-приложение отправляет почту через `socket`, а не через `sendmail`**

- PHP, Python, Node.js и другие языки могут открывать **TCP-соединение напрямую к внешним SMTP-серверам** (gmail.com:587, mail.ru:465, даже `127.0.0.1:25` — если в скрипте жёстко прописано).

- Примеры:

  ```php

  // PHP: чистый socket-отправщик (без логирования MTA!)

  $sock = fsockopen('mx1.example.com', 25); // ← порт 25 напрямую!

  fwrite($sock, "HELO victim-server.com\r\n");

  fwrite($sock, "MAIL FROM:<spam@victim.com>\r\n");

  ```

  → Такой код **не оставляет следов в `/var/log/mail.log`**, потому что MTA не участвует.


#### 2. **Уязвимость в веб-приложении → RCE → спам-бот**

- Например: LFI/RFI → `php://input` → `eval($_POST['cmd'])` → загрузка `spammer.php`.

- Или: уязвимость в загрузчике изображений → загрузка `.php` под видом `.jpg` → запуск через `curl` извне.

- Бот работает **в памяти** или во временных файлах (`/tmp`, `/dev/shm`), удаляет следы после отправки.


#### 3. **Злоумышленник использует ваш сервер как SOCKS/HTTP-прокси**

- Пример: запущен `3proxy`, `microsocks`, `gost`, `squid` (даже в single-thread режиме), и он **перенаправляет SMTP-трафик**.

- Или: веб-шелл с функцией `proxy()` — принимает соединение и проксирует его наружу.

- Такой прокси **не логирует по умолчанию** — особенно если запущен в `screen`/`tmux` или как `systemd --user`-юнит.


#### 4. **Контейнер / chroot / jail "на стороне"**

- Docker-контейнер с `--network=host` может слушать порт 25 незаметно для `lsof` на хосте (если не использовать `nsenter`).

- LXC/LXD, systemd-nspawn, `firejail` — тоже могут «скрывать» соединения.

- Проверьте:

  ```bash

  docker ps -a

  lxc list

  systemd-cgls  # смотрим дерево контрольных групп

  ```


#### 5. **SMTP через IPv6**

- Многие администраторы забывают проверять IPv6.

- Выполните:

  ```bash

  ss -tuln | grep ':25'

  ss -tuln -6 | grep ':25'   # ← IPv6!

  ip6tables -L -n -v

  ```


---


### 🛠️ Как **доказать/опровергнуть** наличие скрытого SMTP?


#### ▶ 1. **Поймать "в моменте"**

Запустите мониторинг **всех исходящих SMTP-соединений в реальном времени**, даже если локально порт 25 не слушается:


```bash

sudo tcpdump -i any -nn -w /tmp/smtp.pcap port 25 or port 465 or port 587 &

# или (более читаемо):

sudo tshark -i any -f "tcp port 25 or tcp port 465 or tcp port 587" \

  -Y "smtp or tls" -T fields -e frame.time -e ip.src -e ip.dst -e tcp.dstport -e smtp.req.command

```


Оставьте на 10–30 минут. Если сервер "звонит" — вы увидите:

```

Nov 30, 2025 13:55:00.123456 → **.**.**.*** → 94.100.180.25:25 → EHLO ****.com

```


#### ▶ 2. **Логировать ВСЕ исходящие соединения на 25/465/587**

Через `iptables` + `ulogd` или просто:

```bash

sudo iptables -I OUTPUT -p tcp --dport 25 -j LOG --log-prefix "[SMTP-OUT] "

sudo iptables -I OUTPUT -p tcp --dport 465 -j LOG --log-prefix "[SMTPS-OUT] "

sudo iptables -I OUTPUT -p tcp --dport 587 -j LOG --log-prefix "[SUBMISSION-OUT] "

```

→ Проверяйте `dmesg -T | grep SMTP-OUT` или `/var/log/kern.log`.


#### ▶ 3. **Проверить процессы, использующие сокеты (даже без привязки к порту)**

```bash

# Все процессы, открывшие сокеты (даже временные)

sudo lsof -iTCP -sTCP:ESTABLISHED | grep -E ':(25|465|587)'

sudo ss -tupen  # покажет UID, PID, inode сокета

```


#### ▶ 4. **Проверить /tmp и /dev/shm на наличие подозрительного кода**

```bash

find /tmp /dev/shm -type f \( -name "*.php" -o -name "*.pl" -o -name "*.py" -o -name "*.sh" \) -exec ls -la {} \;

grep -r "fsockopen\|stream_socket_client\|socket_create\|HELO\|EHLO" /tmp /dev/shm 2>/dev/null

```


Особенно ищите:

- `base64_decode(` + `eval(`;

- `gzinflate(` + `base64_decode(`;

- строки вроде `"25"`, `"mail from:"`, `"rcpt to:"`.


---


### 🧩 Ваш кейс — высокая вероятность: **веб-приложение + уязвимость загрузки**

Учитывая, что вы:

- разрабатываете сайт с загрузкой изображений (batch processing, thumbnails, WebP),

- есть `/admin` с multi-upload и AJAX,

- используете PHP (для QR-кодов, BBCode и т.д.),


…самая частая дыра — **некорректная валидация расширений при загрузке**.


Например:

- `image.jpg.php` → если сервер проверяет только `exif_imagetype()`, но не расширение в URL;

- `.htaccess` позволяет исполнять PHP в `/uploads`;

- или — через **файл с EXIF-комментарием**, содержащим PHP-код (если используется `exif_read_data` без экранирования).


→ Злоумышленник загружает «фото», а на самом деле — шелл-скрипт, который раз в сутки отправляет 100 писем через `fsockopen` — и чистит следы.


---


### ✅ Что делать — пошагово (для "чистого" сервера)


| Шаг | Действие |

|-----|----------|

| 1️⃣ | Заблокируйте исходящий порт 25 **на уровне ядра**: `iptables -A OUTPUT -p tcp --dport 25 -j DROP` |

| 2️⃣ | Запустите `tcpdump`/`tshark` на 10–60 мин — подтвердите/опровергните трафик |

| 3️⃣ | Проверьте `/tmp`, `/dev/shm`, `/var/tmp`, `/run/user/*` — временные файлы |

| 4️⃣ | Протестируйте веб-часть: загрузите файл с именем `test.jpg.php`, откройте его в браузере — исполняется ли как PHP? |

| 5️⃣ | Проверьте права на `/uploads`: должны быть `755` на папки, `644` на файлы; **никаких `777`** |

| 6️⃣ | Убедитесь, что в `nginx`/`apache` для `/uploads` запрещено выполнение скриптов:  

```nginx

location ~* ^/uploads/.*\.(php|pl|py|cgi|sh)$ {

    deny all;

}

``` |

| 7️⃣ | Включите `auditd` на критические файлы:  

```bash

sudo auditctl -w /var/www/ -p wa -k web_files

sudo ausearch -k web_files --start today

``` |


---


### 💡 Профилактика "на будущее"

- Используйте **отдельный пользователь** для веб-приложения (не `www-data`! например, `appuser`), без shell (`/usr/sbin/nologin`).

- Ограничьте его возможности через `systemd`:

  ```ini

  # /etc/systemd/system/app.service

  [Service]

  User=appuser

  NoNewPrivileges=yes

  RestrictSUIDSGID=yes

  PrivateTmp=yes

  ProtectSystem=strict

  ProtectHome=yes

  RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX

  IPAddressDeny=any

  IPAddressAllow=91.108.56.0/22    # Telegram API (если нужно)

  IPAddressAllow=149.154.160.0/20  # Telegram API

  # ... и т.д.

  ```

- Отключите `allow_url_fopen`, `allow_url_include` в `php.ini`.

- Для отправки уведомлений — используйте API (SendGrid, Mailgun), **не raw SMTP**.


---


Если после всех проверок трафик не найден — возможно, **ваш IP был скомпрометирован ранее**, и блокировка ещё не снята, или это **ошибка репутационной системы** (редко, но бывает при CGNAT у провайдера).


Но учитывая дату в логе — `2025-11-30` (это **в будущем**, относительно сегодня, 6 декабря 2025), — стоит также проверить:

- **корректность системного времени** (`timedatectl`),  

- не подменён ли `TZ` в скриптах,  

- не фейковое ли это уведомление (фишинг под "security alert").



Теперь пойду его успокою, что дело не в моем сервере, а то переживает.

Вы пробовали перевести письмо с английского? Судя по нему, мне показалось, там далеко не факт, что дело в вашем сервере.  

EdwardEdit #:
каким-то очень странным образом обвалился весь сайт в Яндексе на 90%

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

Надо узнать, как стать подписантом Меморандума)

Видимо, это окончательный ответ:

1 ноября 2018 года крупнейшие компании рунета подписали Меморандум о борьбе с пиратством. В соответствии с Меморандумом подписавшие его операторы поисковых систем и владельцы видеохостингов во внесудебном порядке исключают из результатов поиска в России ссылки на размещённые без разрешения правообладателей копии аудиовизуальных произведений.

Основанием для исключения является внесение ссылки в реестр, сформированный по заявлениям правообладателей, подписавших Меморандум. Проверку заявлений и установление правомерности внесения ссылок в реестр осуществляет держатель реестра.

Контактные данные держателя реестра (...)

Типа, если вы размещали на своём сайте встроенные ролики с ютуба: будь готов - всегда готов.

Понятно. Значит, скорее всего, ничего аномального и подозрительного. Содержимое сайта в принципе допускает повторные визиты. Но резкий рост на 10 пунктов насторожил. А других сайтов с трафиком у меня сейчас нет, сравнивать было не с чем. Спасибо!
LEOnidUKG #:

Всегда есть смысл писать в техподдержку. Напишите, что не понятно какие-то конкретно страницы заблочены и что фирма уже не существует.

Написал)
Юлия #:

А Долину, между тем, "отменяют". Все новости эти словом пестрят. Не понравилось людям произошедшая ситуация. Видимо, многие почувствовали себя незащищёнными, и людей понять можно. Сама теперь сижу и думаю, насколько то, что я покапаю за свои деньги, моё. Раньше сомнений не было. Теперь они появились. Что в этом хорошего?

О, это вы ещё не задумывались, насколько сами ваши деньги принадлежат вам) В наше время есть над чем подумать тоже)

Так и не дождался от отменяльщиков ответа на вопрос, как сами поступили бы, если бы сами похожим образом прощелкали квартиру. Или ваша бабушка промотала ваше наследство - пригласили бабушку жить к себе (главное чтобы покупатели не обиделись) или пытались вернуть квартиру? 

Ладно пожилые люди, можно списать на возрастные изменения или неприспособленность к современному миру, но было столько историй где на разводку попались люди на таких должностях в таких организациях, что вообще непонятно. Иногда впечатление, что выдуманные истории. Но нет. 

Sly32 #:
Поддержу. Большинство местных "айтишников" таковыми не являются в принципе. Как я писал - случайные люди, которые решили что это легкий способ срубить бабла. А это одна из самых высокотехнологичных сфер, требующих серьезных знаний. Которые, кстати, не получишь самостоятельно никогда. Это именно коллективная сфера. 
Ну это форум связанный с вебом, а не разработкой квантовых компьютеров или чем вы там занимаетесь истинные айтишники) А вебмастер таки в категории IT.  Поэтому в контексте
Анти БОТ #:
кидала

Не кидала. Умысла не было. 

Вообще здесь разбор судебного решения, почитайте  https://zakon.ru/blog/2025/11/08/delo_dolinoj_polnyj_tekst_resheniya_suda_pokazyvaet_pochemu_reshenie_zakonno_i_zadaet_neudobnye_vopr

Всего: 626