cPanel & WHM Лог Файлове: Пълното Техническо Ръководство за Сървърни Администратори
cPanel & WHM поддържа цялостна, многопластова архитектура за логване, която записва всяко значимо събитие в уеб услугите, доставката на поща, удостоверяването, базите данни и системните операции. Всеки лог файл има отделно местоположение, формат и диагностична цел — знанието кой лог да се провери и как да се анализира ефективно е разликата между поправка за пет минути и разследване на прекъсване, продължаващо часове.
Това ръководство обхваща всеки критичен лог файл в производствена среда на cPanel & WHM, включително пътища до файловете, формати на логовете, реални диагностични случаи на употреба и техники за командния ред, които опитните системни администратори действително използват.
Защо лог файловете на cPanel & WHM изискват вашето внимание
Лог файловете не са просто одитна следа — те са основният диагностичен инструмент за всеки хостинг стек, базиран на Linux. В среда на cPanel конкретно, повърхността за логване обхваща Apache/LiteSpeed, Exim, MySQL/MariaDB, PHP-FPM, ProFTPd, Pure-FTPd, cPHulk и самия приложен слой на cPanel/WHM.
Администраторите, които третират логовете реактивно — проверявайки ги само след повреда — последователно пропускат ранни предупредителни сигнали: постепенно изчерпване на паметта, нарастващи кампании за груба сила, натрупване на бавни заявки и неуспехи при доставка, свързани със сертификати. Проактивният анализ на логовете улавя тези модели, преди да се превърнат в инциденти.
Три основни оперативни цели движат анализа на логовете в среди на cPanel:
- Диагностика на първопричината: Корелиране на времеви отпечатъци в логовете на Apache, PHP и MySQL за точно определяне на точката на повреда в верига от заявки.
- Базово измерване на производителността: Идентифициране на бавни заявки, HTTP отговори с висока латентност и процеси, изразходващи много ресурси, преди да наситят капацитета на сървъра.
- Криминалистика на сигурността: Реконструиране на времеви линии на атаки от SSH лог за удостоверяване, записи на cPHulk и лог за отхвърляния на Exim за определяне на обхвата и стъпките за отстраняване.
Лог файлове на Apache
Apache е уеб сървърът по подразбиране в среди на cPanel, въпреки че LiteSpeed все по-често се използва като директна замяна. И двата записват логове в съвместими формати на едни и същи конвенционални пътища.
Лог за грешки на Apache
Местоположение: /usr/local/apache/logs/error_log
Това е единственият най-консултиран лог при всяка сесия за отстраняване на проблеми в cPanel. Той улавя всяка грешка, генерирана от Apache: фатални грешки на PHP (когато PHP работи като модул), неуспехи в синтаксиса на .htaccess, несъответствия на правила в mod_rewrite, откази за разрешения, неуспехи при SSL ръкостискане и грешки на upstream прокси.
Критичен детайл, който много ръководства пропускат: лог за грешки за всеки домейн също съществува и често е по-непосредствено полезен от глобалния лог за грешки. Те се намират на:
/home/username/logs/domain.com-ssl_error_log
/home/username/logs/domain.com-error_logТези логове за всеки VirtualHost изолират грешките до един акаунт, драматично намалявайки шума, когато диагностицирате един конкретен сайт на споделен сървър.
Общ диагностичен модел — цикъл на пренасочване .htaccess:
grep "RewriteRule" /usr/local/apache/logs/error_log | tail -50Общ диагностичен модел — фатални грешки на PHP по домейн:
grep "PHP Fatal" /home/username/logs/domain.com-error_log | tail -30Лог за достъп на Apache
Местоположение: /usr/local/apache/logs/access_log
Глобалният лог за достъп записва всяка HTTP/HTTPS заявка в Combined Log Format по подразбиране:
IP - username [timestamp] "METHOD /path HTTP/version" status_code bytes_sent "referer" "user_agent"Логовете за достъп за всеки домейн се съхраняват на /home/username/logs/domain.com-access_log и са правилният източник за анализ на трафика на отделни акаунти.
Практически случаи на употреба:
- Идентифициране на DDoS или кампания за скрейпинг по честота на IP:
awk '{print $1}' /usr/local/apache/logs/access_log | sort | uniq -c | sort -rn | head -20- Намиране на всички грешки от серия 500 през последния час (изисква времевите отпечатъци на лога да са скорошни):
grep " 5[0-9][0-9] " /usr/local/apache/logs/access_log | tail -200- Откриване на скенери за уязвимости по низ на потребителски агент:
grep -i "sqlmap|nikto|masscan|nmap" /usr/local/apache/logs/access_logКраен случай: На сървъри с активиран piped logging в WHM, логът за достъп може да е празен или минимален, защото логовете се пренасочват директно към демон за обработка на логове. Проверете WHM > Apache Configuration > Global Configuration за директивата CustomLog, ако намерите неочаквано празен лог за достъп.
Лог за SSL/TLS на Apache
Местоположение: /usr/local/apache/logs/ssl_error_log
Този лог улавя неуспехи при TLS договаряне, грешки при валидиране на сертификати и несъответствия на шифрови пакети. Той е от съществено значение при отстраняване на проблеми с HTTPS свързаност, които не се появяват в основния лог за грешки. Проверете тук първо, когато потребителите съобщават за SSL предупреждения в браузъра или когато автоматичното подновяване на сертификати чрез AutoSSL се проваля безшумно.
Лог файлове на приложенията cPanel и WHM
Лог за достъп до cPanel
Местоположение: /usr/local/cpanel/logs/access_log
Записва всяка HTTP заявка, направена към интерфейса на cPanel (порт 2082/2083). Всеки запис включва удостовереното потребителско име, извършеното действие и изходящия IP. Този лог е основният източник за одитиране на това, което конкретен потребител е направил в своя акаунт в cPanel.
Намиране на всички действия, извършени от конкретен потребител:
grep "username" /usr/local/cpanel/logs/access_log | grep -v "GET /favicon"Лог за грешки на cPanel
Местоположение: /usr/local/cpanel/logs/error_log
Улавя вътрешни грешки от приложния слой на cPanel — неуспешни API извиквания, счупени плъгини на cPanel, грешки на Perl скриптове в бекенда на cPanel и неуспехи при рендиране на шаблони. Ако интерфейсът на cPanel генерира грешки 500 или конкретни функции са счупени, това е първият лог за проверка.
Лог за влизания в WHM
Местоположение: /usr/local/cpanel/logs/login_log
Записва всички събития за удостоверяване в WHM — успешни влизания, неуспешни опити, предизвикателства за двуфакторно удостоверяване и използване на API токени. Този лог е критичен за откриване на неоторизиран административен достъп.
Намиране на всички неуспешни опити за влизане в WHM:
grep "FAILED" /usr/local/cpanel/logs/login_log | awk '{print $NF}' | sort | uniq -c | sort -rnЛог за защита от груба сила на cPHulk
Местоположение: /usr/local/cpanel/logs/cphulkd.log
Това е лог, който повечето ръководства напълно пропускат, но е един от най-оперативно важните. cPHulk е вграденият демон за защита от груба сила на cPanel. Той наблюдава опитите за влизане в SSH, FTP, cPanel и WHM и автоматично блокира IP адреси, надхвърлящи праговите ограничения.
Когато легитимен администратор е заключен от WHM или SSH, отговорът почти винаги е в този лог. Можете също да правите заявки директно към базата данни на cPHulk:
mysql -u root cphulkd -e "SELECT ip, user, type, timestamp FROM brutes ORDER BY timestamp DESC LIMIT 20;"За деблокиране на конкретен IP от командния ред:
/usr/local/cpanel/bin/cphulk_pam_ctl --unblock=192.168.1.1Лог за актуализации и инсталации на cPanel
Местоположение: /var/cpanel/updatelogs/
Всяко изпълнение на актуализация на cPanel генерира лог файл с времеви отпечатък в тази директория. Когато надграждане на cPanel счупи услуга или функция изчезне след актуализация, тази директория съдържа пълния изход от процеса на актуализация, включително всички грешки, възникнали по време на инсталиране на пакети или миграция на конфигурация.
ls -lt /var/cpanel/updatelogs/ | head -5Лог файлове за имейл
Имейлът е последователно най-сложната подсистема за отстраняване на проблеми в cPanel. Exim, MTA по подразбиране на cPanel, генерира три отделни потока от логове, всеки от които служи за отделна диагностична цел.
Основен лог на Exim
Местоположение: /var/log/exim_mainlog
Това е основният лог за имейл транзакции. Всяко съобщение, обработено от Exim — входящо или изходящо — генерира записи тук, обхващащи приемане, решения за маршрутизиране, опити за доставка и окончателно разпореждане (доставено, отложено или върнато).
Анатомия на запис в лога:
2024-01-15 14:23:01 1rPqXY-0003aB-Kc <= sender@example.com H=mail.example.com [203.0.113.10] P=esmtps S=4821 id=<abc123@example.com>
2024-01-15 14:23:02 1rPqXY-0003aB-Kc => recipient@domain.com R=virtual_user_delivery T=virtual_userdelivery_pipe
2024-01-15 14:23:02 1rPqXY-0003aB-Kc CompletedID на съобщението (1rPqXY-0003aB-Kc) е ключът за проследяване на едно съобщение в целия лог:
grep "1rPqXY-0003aB-Kc" /var/log/exim_mainlogПроследяване на цялата изходяща поща от конкретен акаунт (критично за разследване на спам):
grep "U=username" /var/log/exim_mainlog | grep "<=" | awk '{print $7}' | sort | uniq -c | sort -rn | head -20Реален краен случай: Когато компрометирана инсталация на WordPress изпраща спам, основният лог на Exim ще показва изпращащия потребител като nobody (потребителят на процеса Apache), а не потребителско име на акаунт в cPanel. Филтрирайте конкретно за това:
grep "U=nobody" /var/log/exim_mainlog | grep "<=" | tail -50Лог за отхвърляния на Exim
Местоположение: /var/log/exim_rejectlog
Записва всички съобщения, които Exim е отказал да приеме на етапа на SMTP връзка — преди дори да са поставени в опашка. Отхвърлянията се случват поради попадания в черния списък на RBL, неуспехи на SPF/DKIM/DMARC, невалидни HELO низове, отказ за релей или ограничаване на скоростта.
Този лог е от съществено значение за два сценария: диагностициране защо легитимна входяща поща се отхвърля и одитиране на ефективността на вашите правила за филтриране на спам.
Намиране на най-честите причини за отхвърляне:
grep "rejected" /var/log/exim_rejectlog | grep -oP "(?<=: ).*" | sort | uniq -c | sort -rn | head -10Лог за паника на Exim
Местоположение: /var/log/exim_paniclog
Логът за паника улавя фатални грешки на Exim — неуспехи при анализиране на конфигурационен файл, невъзможност за свързване към порт 25, неуспехи при свързване с база данни и грешки на TLS библиотека. Ако този файл не е празен, Exim е претърпял критична повреда. В много случаи непразен лог за паника означава, че опашката за поща е спряла да се обработва изцяло.
# Check if the panic log has content — a non-zero exit means there are critical errors
[ -s /var/log/exim_paniclog ] && echo "CRITICAL: Exim panic log has entries" && tail -20 /var/log/exim_paniclogЛог на Dovecot
Местоположение: /var/log/dovecot.log (и /var/log/dovecot-info.log за информационни събития)
Dovecot обработва IMAP и POP3 връзки в среди на cPanel. Неуспехи при удостоверяване, ограничения на връзките, проблеми с блокиране на пощенска кутия и събития за прилагане на квоти се появяват тук. Когато потребителите не могат да се свържат с имейл клиента си, логът на Dovecot е правилното място за проверка — не Exim.
grep "auth failed" /var/log/dovecot.log | awk '{print $NF}' | sort | uniq -c | sort -rn | head -10Лог файлове на базата данни
Лог за грешки на MySQL/MariaDB
Местоположение: /var/lib/mysql/$(hostname).err
Този лог записва събития за стартиране и спиране на MySQL/MariaDB, операции за възстановяване на InnoDB, грешки при репликация, предупреждения за повреда на таблици и всяка заявка, причиняваща грешка на ниво сървър. Той е окончателният източник за диагностициране на сривове на базата данни и неочаквани рестартирания.
Динамично извличане на действителния път:
mysql -u root -e "SHOW VARIABLES LIKE 'log_error';"Проверка за повреда на InnoDB или събития за аварийно възстановяване:
grep -i "crash|corrupt|recovery|innodb" /var/lib/mysql/$(hostname).err | tail -30Лог за бавни заявки на MySQL
Местоположение: /var/lib/mysql/slowquery.log (когато е активиран)
Логът за бавни заявки е деактивиран по подразбиране в повечето инсталации на cPanel. Активирането му е едно от действията за настройка на производителността с най-висока стойност, които можете да предприемете на сървър с интензивна работа с бази данни.
Активиране на лога за бавни заявки по време на изпълнение (без необходимост от рестартиране):
mysql -u root -e "SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 1; SET GLOBAL slow_query_log_file = '/var/lib/mysql/slowquery.log';"След активиране, използвайте mysqldumpslow за агрегиране и класиране на най-лошите нарушители:
mysqldumpslow -s t -t 10 /var/lib/mysql/slowquery.logТова извежда топ 10 заявки по общо време за изпълнение — най-приложимата отправна точка за оптимизиране на заявки.
Критичен нюанс: long_query_time от 1 секунда е разумен начален праг за повечето приложения, но сайтовете с висок трафик трябва да обмислят 0,5 секунди или дори 0,25 секунди, за да уловят заявки, които са индивидуално бързи, но кумулативно скъпи при натоварване.
Лог за общи заявки на MySQL
Местоположение: Конфигурируемо, обикновено /var/lib/mysql/general.log
Логът за общи заявки записва всеки SQL израз, изпратен до сървъра. Не активирайте това в производство без конкретна, ограничена по време диагностична причина. На натоварен сървър този лог може да расте с гигабайти на час и сам по себе си ще причини деградация на производителността. Активирайте го за кратко, възпроизведете проблема, след което незабавно го деактивирайте.
mysql -u root -e "SET GLOBAL general_log = 'ON'; SET GLOBAL general_log_file = '/var/lib/mysql/general.log';"
# ... reproduce the issue ...
mysql -u root -e "SET GLOBAL general_log = 'OFF';"Системни лог файлове
Лог за системни съобщения
Местоположение: /var/log/messages
Логът за съобщения на ядрото и системния демон. Хардуерни грешки (неуспехи при дисков I/O, грешки в паметта ECC), събития на убиеца OOM (Out of Memory), промени в състоянието на мрежовия интерфейс и събития за зареждане на модули на ядрото се появяват тук. Това е първият лог за проверка, когато сървърът стане неотзивчив или се рестартира неочаквано.
Проверка за събития на убиеца OOM (сървър, безшумно убиващ процеси поради изчерпване на паметта):
grep -i "oom|killed process|out of memory" /var/log/messages | tail -20Проверка за грешки при дисков I/O, които могат да показват повреда на устройството:
grep -i "I/O error|blk_update_request|ata.*error" /var/log/messages | tail -20Лог за сигурно удостоверяване
Местоположение: /var/log/secure
Записва всички събития за удостоверяване, базирани на PAM: SSH влизания (успешни и неуспешни), изпълнение на команди sudo, опити su и удостоверяване, инициирано от cron. Това е основният лог за криминалистика на SSH сигурността.
Идентифициране на топ атакуващи IP адреси по брой неуспешни SSH влизания:
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20Одитиране на всички команди sudo, изпълнени на сървъра:
grep "sudo:" /var/log/secure | grep "COMMAND" | tail -50Реален краен случай: На сървъри с UseDNS yes в sshd_config, записите за неуспешно влизане могат да показват имена на хостове вместо IP адреси, което нарушава модела awk за извличане на IP по-горе. Проверете настройката си sshd_config и коригирайте индекса на полето съответно.
Буфер на пръстена на ядрото
Местоположение: Само по време на изпълнение — достъпен чрез dmesg
Буферът на пръстена на ядрото не е постоянен файл, но е от съществено значение за диагностициране на хардуерни събития, настъпващи при или малко след зареждане, преди syslog да се инициализира. На системи, базирани на systemd (CentOS 7+, CloudLinux 7+), постоянните логове на ядрото са достъпни чрез:
journalctl -k --since "1 hour ago"Лог файлове за FTP
Лог на ProFTPd
Местоположение: /var/log/proftpd/proftpd.log
ProFTPd е FTP демонът по подразбиране в среди на cPanel. Този лог записва всички FTP сесийни събития: опити за удостоверяване, обхождане на директории, качване на файлове, изтегляния и прекъсвания на връзката.
Намиране на всички неуспешни опити за FTP влизане:
grep "USER|PASS" /var/log/proftpd/proftpd.log | grep -i "failed|incorrect" | tail -30Идентифициране на качвания на големи файлове (потенциално стадиране на зловреден софтуер):
grep "STOR" /var/log/proftpd/proftpd.log | awk '{print $NF, $0}' | sort -rn | head -20Лог на Pure-FTPd
Местоположение: /var/log/pureftpd.log
Логовете на Pure-FTPd се записват в syslog по подразбиране при някои конфигурации, което означава, че записите могат да се появят в /var/log/messages вместо в специален файл. Проверете активната дестинация за логване:
grep "VerboseLog|AltLog" /etc/pure-ftpd.confPHP и лог файлове на ниво приложение
Лог за грешки на PHP
Грешките на PHP в среди на cPanel могат да се логват на множество места в зависимост от използвания PHP манипулатор:
| PHP манипулатор | Местоположение на лога за грешки |
|---|
| — | — |
|---|
| DSO (mod_php) | Лог за грешки на Apache (`/usr/local/apache/logs/error_log`) |
|---|
| CGI / suPHP | Лог за грешки за всеки акаунт (`/home/user/logs/`) |
|---|
| PHP-FPM | `/opt/cpanel/ea-phpXX/root/usr/var/log/php-fpm/error.log` |
|---|
| LSAPI | Лог за грешки за всеки домейн в директорията `logs/` на акаунта |
|---|
Пътят на лога на PHP-FPM пула включва номера на версията на PHP. За PHP 8.2, управляван от EasyApache 4:
tail -f /opt/cpanel/ea-php82/root/usr/var/log/php-fpm/error.logЛогването на грешки на PHP за всеки акаунт може да се активира чрез добавяне на следното към php.ini или .htaccess на акаунта:
log_errors = On
error_log = /home/username/logs/php_errors.logЛогове за услуги и сигурност, специфични за cPanel
Лог на мениджъра на услуги на cPanel
Местоположение: /usr/local/cpanel/logs/safeapacherestart_log
Записва всяко събитие за рестартиране на Apache, задействано от мениджъра на услуги на cPanel, включително причината за рестартирането и дали е успяло. Полезен за корелиране на престоя на Apache с промени в конфигурацията.
Лог за архивиране на cPanel
Местоположение: /usr/local/cpanel/logs/cpbackup/
Всяко изпълнение на архивиране генерира лог файл за всеки акаунт в тази директория. Когато архивирането се проваля безшумно, тази директория съдържа конкретната грешка — дали е бил проблем с дисковото пространство, неуспех при дъмп на базата данни или проблем с разрешенията.
ls -lt /usr/local/cpanel/logs/cpbackup/ | head -10
grep -i "error|fail" /usr/local/cpanel/logs/cpbackup/username.logЛог за AutoSSL на cPanel
Местоположение: /var/cpanel/logs/autossl/
AutoSSL е автоматизираната система за предоставяне на сертификати Let’s Encrypt / Sectigo на cPanel. Когато подновяването на SSL сертификат се провали, подробната причина — неуспех на DCV, ограничаване на скоростта, несъответствие при валидиране на домейн — се записва тук. Този лог е критичен за диагностициране на проблеми с изтичане на HTTPS сертификати, преди да причинят предупреждения в браузъра.
ls -lt /var/cpanel/logs/autossl/ | head -5
tail -100 /var/cpanel/logs/autossl/$(ls -t /var/cpanel/logs/autossl/ | head -1)Ако управлявате SSL сертификати в множество домейни или се нуждаете от сертификати извън това, което AutoSSL предоставя, SSL сертификати от специализиран доставчик предлагат разширено валидиране и wildcard опции, които Let’s Encrypt не предоставя.
Справочник за сравнение на лог файлове
| Лог файл | Път | Услуга | Основен случай на употреба |
|---|
| — | — | — | — |
|---|
| Лог за грешки на Apache | `/usr/local/apache/logs/error_log` | Apache/LiteSpeed | PHP грешки, неуспехи на `.htaccess`, грешки 500 |
|---|
| Лог за достъп на Apache | `/usr/local/apache/logs/access_log` | Apache/LiteSpeed | Анализ на трафика, DDoS откриване, одит на 4xx/5xx |
|---|
| Лог за достъп до cPanel | `/usr/local/cpanel/logs/access_log` | cPanel UI | Одитиране на действия на потребителите, неоторизиран достъп |
|---|
| Лог за влизания в WHM | `/usr/local/cpanel/logs/login_log` | WHM | Административни събития за удостоверяване, използване на API токени |
|---|
| Лог на cPHulk | `/usr/local/cpanel/logs/cphulkd.log` | cPHulk | Откриване на груба сила, одит на блокирани IP адреси |
|---|
| Основен лог на Exim | `/var/log/exim_mainlog` | Exim MTA | Проследяване на доставка на имейл, разследване на спам |
|---|
| Лог за отхвърляния на Exim | `/var/log/exim_rejectlog` | Exim MTA | Анализ на входящи отхвърляния, неуспехи на SPF/DKIM |
|---|
| Лог за паника на Exim | `/var/log/exim_paniclog` | Exim MTA | Критични повреди на MTA, спирания на опашката |
|---|
| Лог на Dovecot | `/var/log/dovecot.log` | Dovecot | Неуспехи при IMAP/POP3 удостоверяване, проблеми с пощенска кутия |
|---|
| Лог за грешки на MySQL | `/var/lib/mysql/hostname.err` | MySQL/MariaDB | Сривове на БД, възстановяване на InnoDB, повреда |
|---|
| Лог за бавни заявки на MySQL | `/var/lib/mysql/slowquery.log` | MySQL/MariaDB | Производителност на заявките, идентифициране на тесни места |
|---|
| Системни съобщения | `/var/log/messages` | Ядро/syslog | OOM събития, хардуерни грешки, сривове на услуги |
|---|
| Лог за сигурно удостоверяване | `/var/log/secure` | PAM/SSH | SSH груба сила, одит на sudo, криминалистика на удостоверяване |
|---|
| Лог на ProFTPd | `/var/log/proftpd/proftpd.log` | ProFTPd | Одит на FTP сесии, неоторизиран достъп |
|---|
| Лог за AutoSSL | `/var/cpanel/logs/autossl/` | AutoSSL | Неуспехи при подновяване на сертификати, DCV грешки |
|---|
| Лог на PHP-FPM | `/opt/cpanel/ea-phpXX/root/usr/var/log/php-fpm/error.log` | PHP-FPM | Грешки на мениджъра на PHP процеси, неуспехи на пула |
|---|
Техники за анализ на логове от командния ред
Основни команди за анализ в реално време и исторически анализ
Следване на лог в реално време (най-честият работен процес на системния администратор):
tail -f /var/log/exim_mainlogЕдновременно следване на множество логове с multitail (инсталирайте чрез yum install multitail):
multitail /usr/local/apache/logs/error_log /var/log/exim_mainlogИзвличане и броене на уникални стойности от конкретно поле:
awk '{print $1}' /usr/local/apache/logs/access_log | sort | uniq -c | sort -rn | head -20Търсене в компресирани архиви на ротирани логове:
zgrep "keyword" /var/log/exim_mainlog.*.gzФилтриране на записи в лога в рамките на конкретен времеви прозорец:
awk '/15/Jan/2024:14:00/,/15/Jan/2024:15:00/' /usr/local/apache/logs/access_logБроене на разпределението на HTTP статус кодове:
awk '{print $9}' /usr/local/apache/logs/access_log | sort | uniq -c | sort -rnРотация на логове в cPanel
cPanel използва logrotate за управление на размерите на лог файловете. Конфигурацията за ротация на управляваните от cPanel логове е в /etc/logrotate.d/. Логовете на Apache се ротират от собствения механизъм splitlogs на cPanel, който също разделя глобалния лог за достъп на файлове за всеки домейн.
Проверка на текущата конфигурация на logrotate за конкретна услуга:
cat /etc/logrotate.d/syslogРъчно задействане на ротация на логове за тестване:
logrotate -f /etc/logrotate.d/syslogКритичен капан: Ако ротацията на логовете е неправилно конфигурирана или дисковото пространство е изчерпано, лог файловете могат да нараснат до запълване на целия дял, причинявайки едновременен срив на всички услуги. Наблюдавайте използването на диска на дяла, съдържащ /var/log и /usr/local/apache/logs, като стандартна оперативна практика.
Централизирано управление на логове и сигнализиране
За производствени среди — особено на VPS хостинг или Dedicated сървър — разчитането на ръчна проверка на логове е недостатъчно в мащаб. Приложете един от следните подходи:
Агрегиране на логове с препращане rsyslog: Конфигурирайте /etc/rsyslog.conf да препраща логове към централизиран syslog сървър или SIEM платформа. Това запазва логовете дори ако самият сървър е компрометиран.
ELK стек (Elasticsearch, Logstash, Kibana): Поглъщайте логовете на cPanel чрез агенти Filebeat, анализирайте ги с конвейери на Logstash и визуализирайте модели в Kibana. Този подход позволява пълнотекстово търсене в месеци история на логовете за секунди.
Интеграция с Fail2ban: Fail2ban чете /var/log/secure и /var/log/exim_mainlog и автоматично създава правила iptables за блокиране на атакуващи IP адреси. Той работи независимо от cPHulk и осигурява допълнителен защитен слой.
GoAccess за анализ на логове на Apache: GoAccess е анализатор на логове в реално време, базиран на терминал, който генерира HTML отчети от логовете за достъп на Apache без необходимост от пълно внедряване на ELK:
goaccess /usr/local/apache/logs/access_log --log-format=COMBINED -o /var/www/html/report.htmlАдминистраторите, управляващи множество акаунти в cPanel или настройки за препродавачи на VPS с cPanel, се възползват значително от централизирана видимост на логовете, тъй като логовете на отделните акаунти иначе са изолирани под всяка домашна директория.
Корелация на логове за имейл инфраструктура
Една от най-подценяваните диагностични техники в среди на cPanel е кръстосаното препращане на логовете на Exim с логовете на Dovecot и системния лог за удостоверяване за проследяване на пълния жизнен цикъл на инцидент с имейл сигурност.
Сценарий: Потребител съобщава, че акаунтът му изпраща спам, който не е написал.
Стъпка 1 — Идентифициране на ID на съобщенията на Exim, свързани с акаунта:
grep "U=username|from=<.*@userdomain.com>" /var/log/exim_mainlog | grep "<=" | head -20Стъпка 2 — Проверка дали изпращането е произлязло от уеб приложение (PHP mail()) или удостоверен SMTP:
grep "1rPqXY-0003aB-Kc" /var/log/exim_mainlog | grep -E "P=esmtpa|P=local"P=esmtpa показва удостоверено SMTP подаване. P=local или P=pipe показва локален скрипт (вероятно компрометирано уеб приложение).
Стъпка 3 — Ако P=esmtpa, намерете изходящия IP от лога за удостоверяване на Dovecot или Exim:
grep "username" /var/log/dovecot.log | grep "Login" | tail -20Стъпка 4 — Кръстосано препращане на този IP срещу /var/log/secure за SSH активност и срещу лога за достъп до cPanel за влизания в контролния панел.
Тази четиристъпкова техника за корелация дава окончателен отговор дали компрометирането е кражба на идентификационни данни, уязвимо уеб приложение или SMTP акаунт, атакуван с груба сила — и това разграничение изцяло определя пътя за отстраняване.
За организации, управляващи собствена имейл инфраструктура, правилно конфигурирана среда за имейл хостинг с специализирано наблюдение на логове осигурява необходимата изолация за предотвратяване на щети върху репутацията на пощата между акаунти.
Съображения за логове, свързани с домейни и DNS
Неуспехите при DNS резолюция често се проявяват като грешки в логовете на приложенията, а не в специален DNS лог. Named (BIND), който cPanel използва за DNS, логва в /var/log/messages по подразбиране.
Проверка за грешки на BIND:
grep "named" /var/log/messages | grep -i "error|failed|refused" | tail -20Когато проблемите с разпространението на DNS засягат новорегистрирани или прехвърлени домейни, корелирането на лога на BIND с конфигурацията на домейна в cPanel помага да се изолира дали проблемът е грешка в зонов файл или забавяне на разпространение на ниво регистратор. Ако управлявате регистрацията на домейни и DNS чрез една и съща платформа, регистрацията на домейни с интегрирано управление на DNS опростява тази диагностична верига.
Практическа матрица за решения: Кой лог да проверите първо
| Симптом | Първи лог за проверка | Вторичен лог |
|---|
| — | — | — |
|---|
| Уебсайтът връща грешки 500 | `/home/user/logs/domain.com-error_log` | `/usr/local/apache/logs/error_log` |
|---|
| Имейлът не се доставя изходящо | `/var/log/exim_mainlog` | `/var/log/exim_paniclog` |
|---|
| Входящият имейл се отхвърля | `/var/log/exim_rejectlog` | `/var/log/messages` (DNS/BIND) |
|---|
| Потребителите не могат да се свържат чрез IMAP/POP3 | `/var/log/dovecot.log` | `/var/log/secure` |
|---|
| Бавни заявки към базата данни | `/var/lib/mysql/slowquery.log` | `/var/lib/mysql/hostname.err` |
|---|
| Сървърът се рестартира неочаквано | `/var/log/messages` | `journalctl -k` |
|---|
| SSH влизането е блокирано / заключване | `/usr/local/cpanel/logs/cphulkd.log` | `/var/log/secure` |
|---|
| WHM влизането се проваля | `/usr/local/cpanel/logs/login_log` | `/usr/local/cpanel/logs/cphulkd.log` |
|---|
| FTP качванията се провалят | `/var/log/proftpd/proftpd.log` | `/var/log/secure` |
|---|
| SSL сертификатът не се подновява | `/var/cpanel/logs/autossl/` | `/usr/local/apache/logs/ssl_error_log` |
|---|
| Подозиран спам, произхождащ от сървъра | `/var/log/exim_mainlog` (филтър `U=nobody`) | `/usr/local/apache/logs/error_log` |
|---|
| Функция на cPanel е счупена или генерира грешки | `/usr/local/cpanel/logs/error_log` | `/usr/local/cpanel/logs/access_log` |
|---|
Ключови технически изводи
- Винаги проверявайте първо логовете за всеки домейн (
/home/username/logs/) преди глобалните логове на Apache — те съдържат същите данни с драматично по-малко шум. - Непразен
/var/log/exim_paniclogе инцидент от ниво P1 — Exim може да е спрял да обработва опашката за поща изцяло. - Логът на cPHulk на
/usr/local/cpanel/logs/cphulkd.logе правилната първа спирка при всеки сценарий на заключване, а не/var/log/secure. - Активирайте лога за бавни заявки на MySQL (
long_query_time = 1) на всеки производствен сървър с бази данни — разузнаването за производителността, което предоставя, си заслужава минималните разходи. - Кръстосано корелирайте полето
P=на Exim с логовете за удостоверяване на Dovecot, за да определите окончателно дали инцидент със спам е произлязъл от кражба на идентификационни данни или компрометирано уеб приложение. - Неправилната конфигурация на ротацията на логовете е безшумен режим на повреда — пълен дял
/var/logще срине всички услуги едновременно без предупреждение. zgrepработи на ротирани архиви.gz— историческият анализ на логовете не изисква ръчно декомпресиране на файлове.- Централизираното препращане на логове чрез
rsyslogе минималната жизнеспособна позиция за сигурност за всеки сървър, обработващ чувствителни данни — локалните логове могат да бъдат изтрити от атакуващ, получил root достъп.
Често задавани въпроси
Къде се намират лог файловете за грешки на cPanel?
Основният лог за грешки на приложението cPanel е на /usr/local/cpanel/logs/error_log. Грешките на уеб сървъра Apache са на /usr/local/apache/logs/error_log, а PHP грешките за всеки акаунт са в /home/username/logs/domain.com-error_log. Всяка услуга поддържа собствен лог файл на отделен път.
Как да проследя конкретно имейл съобщение в логовете на Exim?
Всяко съобщение, обработено от Exim, получава уникален ID на съобщение, видим в /var/log/exim_mainlog. Изпълнете grep "MESSAGE_ID" /var/log/exim_mainlog, за да извлечете всеки запис в лога, свързан с това съобщение, от приемането до окончателната доставка или връщане.
Защо логът за паника на Exim не е празен и какво трябва да направя?
Непразен /var/log/exim_paniclog показва, че Exim е срещнал фатална грешка — обикновено неуспех при анализиране на конфигурация, проблем с TLS библиотека или невъзможност за свързване към порт 25. Прочетете записите в лога за паника, след което проверете синтаксиса на конфигурацията на Exim с exim -bV и проверете дали порт 25 не е блокиран от друг процес с ss -tlnp | grep :25.
Как да намеря кой PHP скрипт изпраща спам чрез Apache?
Филтрирайте основния лог на Exim за съобщения, изпратени от потребителя на Apache: grep "U=nobody" /var/log/exim_mainlog. След това кръстосано препратете времевите отпечатъци с записите в лога за достъп на Apache, за да идентифицирате URL адреса, задействал функцията за поща. Заглавката X-PHP-Originating-Script (ако е активирана в php.ini) също ще идентифицира точния скрипт файл.
Какъв е най-бързият начин да проверя дали сървърът е под SSH атака с груба сила?
Изпълнете grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10, за да видите топ атакуващите IP адреси по брой опити. След това проверете дали cPHulk вече ги е блокирал, като проверите /usr/local/cpanel/logs/cphulkd.log или правите заявки директно към базата данни на cPHulk.
