Первая помощь при проблемах с сайтом |
Добавил(а) microsin |
Здесь разместил памятку по командам Linux/Debian, которые могут понадобиться при диагностике и устранении проблем с сайтом, и полезные ссылки. Команды следует вводить под суперпользователем (root) или от его имени через sudo. [Логи Apache2] Логи лежат в следующих папках: /var/www/httpd-logs/ (старый вариант установки) либо: /var/www/имя_пользователя/data/logs/ Здесь имя имя_пользователя, на котором работает apache2/nginx. Имя файла для доступа обычно состоит из окончания backend.access.log и backend.access.log.1, и содержит имя домена, например: /var/www/имя_пользователя/data/logs/домен.ru-backend.access.log [tail] Просмотр последних 20 строк лога: tail -20 имя_файла_лога То же самое, только отфильтровать по IP: tail -20 /var/www/httpd-logs/мойдомен.ru.access.log | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" [Просмотр отфильтрованного лога] Создание сортированного списка из лога [количество подключений] [IP]: cat имя_файла_лога | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | sort | uniq -c | sort -n >/var/tmp/sorted-list01.txt Создание сортированного списка по количеству подключений: cat имя_файла_лога | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | sort | uniq -c | sort -n >/var/tmp/sorted-list02.txt Слежение за логом: tail -f имя_файла_лога [Остановка, запуск сервера] Apache, старый вариант: /etc/init.d/apache2 stop|start Apache2, новый вариант: service apache2 start|stop|restart MySQL, старый вариант: /etc/init.d/mysql stop|start MySQL, новый вариант: service mysqld start|stop|restart Сначала надо остановить Apache, потом сервер mySQL. Запускать надо в обратном порядке. Автозапуск. Автозапуск сервисов в ОС Debian 6 реализован путём создания мягких ссылок (symlink) в директории /etc/rc3.d/ на файлы сервисов из директории /etc/init.d/. Если необходимо отключить запуск apache2 и mysql, то необходимо воспользоваться утилитой update-rc.d. [Ограничение доступа через iptables] Этот инструмент используется как быстрое лекарство для починки сервера, когда происходит атака, и надо временно ограничить к нему доступ, чтобы спокойно проанализировать логи. Новые правила необходимо добавлять в цепочку перед запрещающим правилом. Достигается следующей последовательностью действий: удаление запрещающего правила, добавление нового правила, добавление запрещающего правила в конец [15]. iptables -D INPUT -j DROP Посмотреть правила: iptables -S Посмотреть правила с номерами: iptables -L -n --line-numbers Для разрешения доступа только с определённого IP-адреса a.b.c.d. Добавлять правила нужно именно в таком порядке: iptables -I INPUT -s a.b.c.d -j ACCEPT Удалить правила: iptables -D INPUT -p tcp --dport 80 -j DROP Удалить правило по номеру. Будет удалено первое в списке правило: iptables -D INPUT 1 Добавить правило в 1 позицию списка (если так сделать, то web-сервер перестанет отвечать на порт 80): iptables -I INPUT 1 -p tcp --dport 80 -j DROP Также можно добавлять правила с использованием маски подсети: iptables -I INPUT -s 95.31.169.0/24 -j ACCEPT Сброс правил iptables: iptables -F Как сделать текущие правила iptables перманентными: iptables-save > /var/lib/iptables/rules Правила в файле /var/lib/iptables/rules будут автоматически восстанавливаться автозапуском скрипта /etc/network/if-up.d/iptables. [Просмотр процессов] Количество процессов php, apache2: ps aux | grep -c php [Количество подключений] Количество подключений на 80, 443 порт (если у вас используется SSL-сертификат, то вместо “80” необходимо указывать “443”, оптимально использовать оба варианта): netstat -na | grep -c ':80 ' [Перезагрузка сервера] shutdown -r now [Скрипты автозапуска] Посмотреть содержимое каталога /etc/network/if-up.d, там находятся скрипты автозапуска: ls /etc/network/if-up.d [Списки IP-адресов] Список опасных доменов https://www.cloudflare.com/ips-v4 [Конфигурация Apache, nginx] Конфигурация Apache: /etc/apache2 Конфигурация nginx: /etc/nginx [Операции с учетными записями] Добавить пользователя: adduser username Далее надо указать пароль, на дурацкие вопросы ответить Enter. Чтобы отключить требование "Current Kerberos password:" нужно выполнить команду pam-auth-update, пробелом запретить Kerberos authentification [11]. Ошибка "is not in the sudoers file": открыть файл /etc/sudoers, в конец добавить строчку: username ALL = (ALL) ALL
Как удалить пользователя: deluser username Если вы хотите удалить пользователя, его домашний каталог и почтовый ящик, используйте флаг --remove-home : deluser --remove-home username Как запретить пользователю вход, без удаления: passwd -l username [zip] Архивирование /etc: zip /var/www/username/data/www/мойдомен.ru/tmp/файлархива.zip -r /etc/ [Поиск файла по имени] Найти файл, который начинается на fail2ban: find / -name 'fail2ban*' [musql] 1. Команда /etc/init.d/mysql stop не срабатывает. Как прибить процессы mysql? Команда top или ps aux | grep mysql позволит узнать имена процессов. Далее используйте команды: killall -9 mysqld 2. Сервер mysql запускается с ошибкой: # /etc/init.d/mysql start Выполните друг за другом команды: mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p Для ввода этой команды понадобится пароль root для MySQL (не путайте пароль root MySQL с паролем root системы). 3. Database Error: Unable to connect to the database:Could not connect to MySQL Что надо сделать: (a) Остановить Apache. /etc/init.d/apache2 stop (b) Остановить mysql, убедиться что он не работает командой top. /etc/init.d/mysql stop (c) Проверить, что не забита папка /tmp. du -sm * | sort -n Если забита, то очистить её от файлов с расширениями MYD и MYI. rm /tmp/*.MYD (d) Восстановить целостность таблиц. mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p (e) Запустить Apache. /etc/init.d/apache2 start 4. Каталог /tmp забит файлами с расширениями *.MYD и *.MYI. Что это значит? Пример вывода команды ls: user:/tmp# ls Это временные файлы, которые образуются от запросов к базе MySQL. Необычно большое количество этих файлов говорит о том, что на сайт ведется атака. После корректной остановки сервера MySQL эти файлы автоматически удаляются. [Файловая система] 1. Как узнать, на что расходуется место на диске? du -sm * | sort -n См. также [13]. 2. Как безопасно очистить файл лога? На примере очистки файла лога ispmgr.log: truncate -s0 ispmgr.log или: > ispmgr.log [IP-адреса] 1. Чтобы рассортировать список IP-адресов в текстовом файле file.txt, нужно ввести команду: sort -t . -k 1,1n -k2,2n -k 3,3n -k 4,4n file.txt Здесь опция -t задает разделитель полей строк (.), а четыре опции -k задают сортировать по 1, 2, 3 и 4 полю, n определяет, что поля числовые. 2. Чтобы удалить из списка file.txt дубликаты IP-адресов, используйте команду uniq: uniq file.txt Если для uniq указать опцию -u, то будут удалены все дубликаты, т. е. не останется ни одной строки, для которой был дубликат. [Ссылки] 1. Краткое руководство по борьбе с DDOS-атаками на веб-сервер site:firstvds.ru. |