Здесь разместил памятку по командам Linux/Debian, которые могут понадобиться при диагностике и устранении проблем с сайтом, и полезные ссылки. Команды следует вводить под суперпользователем (root) или от его имени через sudo.
[Логи Apache2]
Логи лежат в следующих папках:
/var/www/httpd-logs/ (старый вариант установки)
либо:
/var/www/имя_пользователя/data/logs/
Здесь имя имя_пользователя, на котором работает apache2/nginx.
Имя файла для доступа обычно состоит из окончания backend.access.log и backend.access.log.1, и содержит имя домена, например:
Сначала надо остановить Apache, потом сервер mySQL. Запускать надо в обратном порядке.
Автозапуск. Автозапуск сервисов в ОС Debian 6 реализован путём создания мягких ссылок (symlink) в директории /etc/rc3.d/ на файлы сервисов из директории /etc/init.d/. Если необходимо отключить запуск apache2 и mysql, то необходимо воспользоваться утилитой update-rc.d.
[Ограничение доступа через iptables]
Этот инструмент используется как быстрое лекарство для починки сервера, когда происходит атака, и надо временно ограничить к нему доступ, чтобы спокойно проанализировать логи.
Новые правила необходимо добавлять в цепочку перед запрещающим правилом. Достигается следующей последовательностью действий: удаление запрещающего правила, добавление нового правила, добавление запрещающего правила в конец [15].
iptables -D INPUT -j DROP iptables -A INPUT мое_новое_правило iptables -A 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 -A 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 -A INPUT -p tcp --dport 80 -j DROP
Сброс правил 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 ps aux | grep -c apache2
[Количество подключений]
Количество подключений на 80, 443 порт (если у вас используется SSL-сертификат, то вместо “80” необходимо указывать “443”, оптимально использовать оба варианта):
Это временные файлы, которые образуются от запросов к базе 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, то будут удалены все дубликаты, т. е. не останется ни одной строки, для которой был дубликат.