Tech support ADM
Материал из lulzette's wiki
Тут будут полезные штучки из моей работы будучи системным инженером.
Python
Дебаг питона при падении
Достаточно запустить скрипт с PYTHONINSPECT=1
или python -i
, чтобы при смерти скрипта (естественной или сбое) вывалился шелл со всеми переменными.
Bash
dotglob
http://xgu.ru/wiki/shopt#dotglob
dotglob это опция bash'а, которая меняет поведение регулярки "*" - под "*" будут подразумеваться все файлы и папки, в т.ч. скрытые.
[losted@x240 ~]$ shopt -s dotglob
[losted@x240 ~]$ du -hs *
4,0K .bash_history
4,0K .bash_logout
4,0K .bash_profile
4,0K .bashrc
695M books
3,6G .cache
1,5G .config
...
Пробрасываем ssh ключ
Хотим подключиться с host1 к host2 с нашим ключем на localhost. Делаем:
ssh-agent bash
ssh-add ~/.ssh/id_rsa
ssh -A host1
host1 ~: ssh host2
host2 ~:
Преобразование даты из epoch в человекочитаемую
date -d @123456789
MySQL
Юзеры
- Ищем юзеров
select User,Host from mysql.user where User like "ca66833%";
- Создаем юзера с правами
CREATE USER 'ca66833_test'@'localhost' IDENTIFIED BY '123456789';
GRANT ALL PRIVILEGES ON ca66833_test.* TO 'ca66833_test'@'localhost';
flush privileges;
Таблицы
- Создадим простую InnoDB таблицу
create database twosa_innodb;
use twosa_innodb;
CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A)) ENGINE = InnoDB;
etc
- Восстанавливаем рутовый доступ
# В конфиге указываем:
skip-grant-tables
# делаем рестарт mysql и выполняем:
UPDATE mysql.user SET `authentication_string` = PASSWORD('123456789') WHERE `User` = 'root';
# Убираем опцию и снова перезапускаем MySQL
DDoS
Отражение nginx'ом
Рекомендую в блокирующих правилах указывать return 444;
, так как в таком случае nginx не будет ничего отдавать клиенту, а будет сразу закрывать соединение при получении нехорошего запроса.
Отражение через iptables
iptables -I INPUT -p tcp --dport 80 -m string --string "ca66833.tmweb.ru" --algo kmp -j DROP
iptables -I INPUT -p tcp --dport 443 -m string --string "ca66833.tmweb.ru" --algo kmp -j DROP
ip6tables -I INPUT -p tcp --dport 80 -m string --string "ca66833.tmweb.ru" --algo kmp -j DROP
ip6tables -I INPUT -p tcp --dport 443 -m string --string "ca66833.tmweb.ru" --algo kmp -j DROP
Скорее всего не сработает для 443 (https), поэтому надо дополнительно блокировать через nginx, если атака идет по https, но обычно атакуют именно http.
Почта
Проблемы с IMAP (courier-imap)
В папке с файлами писем удаляем все что только можно:
rm courierimapsubscribed courierimapuiddb courierpop3dsizelist courierimapuiddb.lock
Предварительно создав резервную копию этих файлов. Иногда еще надо удалить папку "courierimaphieracl"
libvirt
Запретить сон и гибернацию
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
Проверить диск и запустить виртуалку
virsh domblklist 123456 | grep qcow2 | awk '{print $2}' | xargs -L1 qemu-img check -r all ; virsh start 123456