четверг, 13 декабря 2012 г.

Дистрибутив с XEN и DRBD из каробки

На ЛОРе всплыла новость об отечественном дистрибутиве для создания "кластера высокой надёжности" для виртульных машин на базе Debian, XEN и DRBD. Про грабли конструкции ничего сказать не могу, ибо ещё не пробовал, но судя по описанию для старта выглядит неплохо. Сюда добавил дабы не забыть. Ссылочки:

среда, 28 ноября 2012 г.

Простой метод отправки TCP или UDP пакетов из bash

Чтобы из баша отправить UDP- или TCP-сообщение достаточно выполнить одну из команд:
 $ echo “hello” > /dev/tcp/192.168.2.101/58549
 $ echo “hello” > /dev/udp/192.168.2.101/58549

Где udp/tcp - тип протокола, 192.168.2.101 - ip-адрес получателя, 58549 - порт.

Если требуется что-то посерьёзней - можно воспользоваться утилитой sendip

Временное отключение логгирования bash

Через переменную окружения отправляем bash (и остальные оболочки) писать хистори в /dev/null:
$ export HISTFILE=/dev/null

понедельник, 19 ноября 2012 г.

pcap без привелегий root

 Чтобы для работы tcpdump (или wireshark, да и вообще любой утилиты, использующей libpcap) не требовалось привилегий рута нужно задать для утилиты соответствующие привилегии с помощью setcap:
$ sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' <application>  
Пример для tcpdump:
$ sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/tcpdump
Посмотреть разрешения для программы можно с помощью getcap, например:
 $ getcap /usr/sbin/tcpdump  
 /usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip  
В Debian утилита setcap предоставляется пакетом libcap2-bin

Sniffing USB с помощью tcpdump

Ололо, оказывается с помощью tcpdump можно ловить USB-пакеты. Для реверсинжиниринга драйверов нужно запустить виртуалку с виндой, пробросить туда usb-устройство, поставить виндовые драйвера для этого устройства и можно начинать анализировать. Как оказалось, для упрощения анализа можно использовать wireshark.




Пока немного ссылок по теме, попзжа (если не забуду...) постараюсь раскрыть тему:
http://omappedia.org/wiki/USB_Sniffing_with_tcpdump
http://www.opennet.ru/tips/2479_usb_pcap_tcpdump_monitoring_sniffer.shtml

вторник, 13 ноября 2012 г.

tcpdump с параметром -z и Permission denied в Ubuntu

Потребовалось мне тут запустить tcpdump с параметром "-z" для того чтобы передать очередную порцию накопленных данных в свой скриптик, да не тут-то было:
 compress_savefile:execlp(myscript.sh, dump-2012-11-13-1148): Permission denied  
Что с этим делать? И ни в какую не работает, даже из-под рута... Ответ нашёлся в рассылке wireshark: проблема специфична для Ubuntu из-за соответствующего правила (профиля) AppArmor.

Посмотрим что есть в AppArmor для tcpdump:
 sudo grep tcpdump /sys/kernel/security/apparmor/profiles  
 /usr/sbin/tcpdump (enforce)  

Ок, изменяем профиль на complain:
 sudo aa-complain /usr/sbin/tcpdump  
Вуаля! Усё работает!

среда, 31 октября 2012 г.

ACL клиентов к сервису с помощью iptables

Задача следующая: есть некий сервис на, допустим, 9000-м порту, доступ к которому разрешен только с определённых ip-адресов. Дабы не городить acl в самом сервисе будем фильтровать тупо iptables:
 # добавляем новую цепочку  
 iptables -N my-filter  
   
 # добавляем в цепочку разрешения на указанных адресов  
 iptables -A my-filer --src 123.230.123.100 -j ACCEPT  
 iptables -A my-filer --src 123.230.123.101 -j ACCEPT  
 iptables -A my-filer --src 123.230.123.103 -j ACCEPT  
   
 # в конце запрещаем доступ для всех остальных  
 iptables -A my-filter -j DROP  
   
 # для указанного tcp-порта (5000-й) направляем пакеты в ранее созданную цепочку  
 iptables -I INPUT -m tcp -p tcp --dport 9000 -j my-filter  

вторник, 9 октября 2012 г.

Тестирование производительности NS-сервера (DNS)

Потребовалось мне протестировать NS-серверы на произоводительность при включенном сборе статистике по запросам. Гуглением выяснилось что существует утилита dnsperf (по аналогии с iperf), но в репозиториях убунты и дебиана она отсутствует (точнее есть в ppa, но датирована 2008 годом) и придётся собирать её ручками из исходников.

четверг, 4 октября 2012 г.

Какой процесс отправляет UDP-пакеты?

Используем незаменимый инструмент netstat + tcpdump. Сначала tcpdump'ом смотрим номер порта отправления, а затем с помощью netstat'а с правильными аргументами смотрим кто использует этот порт
 $ sudo tcpdump
 $ sudo netstat -aun --program  
Спасибо superuser.com

Ещё обнаружил достаточно интересную утилиту для исследования/мониторинга сокетов - ss. Подробности на русском на guruadmin.ru

вторник, 2 октября 2012 г.

Установка и настройка londiste 3.1 (skytools) в debian squeeze из исходников

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

четверг, 20 сентября 2012 г.

Установка Postgresql 9.2 в Debian Squeeze 6

UPDATE!
Репозиторий переехал на другое доменное имя: apt.postgresql.org
Теперь делаем так:
$ sudo -i  
# wget -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -  
# echo "deb http://apt.postgresql.org/pub/repos/apt/ squeeze-pgdg main" > /etc/apt/sources.list.d/apt.postgresql.org.list  
# echo -e "Package: *\nPin: release o=apt.postgresql.org\nPin-Priority: 500" > /etc/apt/preferences.d/pgdg.pref  
# apt-get update  
# apt-get install pgdg-keyring -y
# apt-get install postgresql-9.2 -y
Подробнее о репозитрии на wiki.

Старый способ:
Для экспериментов с powerdns решил попробовать заодно поиграться с postgresql 9.2. Собирать из исходников не хотелось, подключать репозиторий sid'а тоже. Лёгким гуглением обнаружил репозиторий pgapt.debian.net из которого и установил нужные мне пакеты:
 $ sudo -i  
 # echo "deb http://pgapt.debian.net/ squeeze-pgdg main" > /etc/apt/sources.list.d/pgapt.debian.net.list  
 # wget -q http://pgapt.debian.net/ACCC4CF8.asc -O- | apt-key add -  
 # apt-get update  
 # apt-get install -t squeeze-pgdg postgresql-9.2  

вторник, 24 июля 2012 г.

Список шар на NFS-сервер

Всё просто:
showmount -e server

среда, 11 июля 2012 г.

Openstack. Автодополнение команд.

Нашёл на гитхабе репозиторий с готовыми скриптами для автодополнения параметров утилит из состава openstack :
https://github.com/asdil12/openstack-autocomplete

среда, 4 июля 2012 г.

Ubuntu, gnome-terminal и кнопка F10

Отличное руководство как избавиться от перехвата кнопки F10 в gnome-terminal (и не только):
http://askubuntu.com/questions/37313/how-do-i-deactivate-f1-and-f10-keybindings

Возможно попозже переведу на русский, главное не забыть =)

понедельник, 4 июня 2012 г.

Несколько ssh-ключей одного хоста

Собственно проблема: имеется несколько серверов, управляемых pacemaker'ом. Если мастер-сервер вышел из строя его IP-адрес подхватывает другой, но в этом случае его ssh-ключ (ключ хоста) изменяется и при попытке подключиться по этому публичному адресу мы получаем примерно следующее сообщение:
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
 @  WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!   @  
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!  
 Someone could be eavesdropping on you right now (man-in-the-middle attack)!  
 It is also possible that a host key has just been changed.  
 The fingerprint for the RSA key sent by the remote host is  
 [...].  
 Please contact your system administrator.  
 Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.  
 Offending RSA key in /home/user/.ssh/known_hosts:86  
 RSA host key for [...] has changed and you have requested strict checking.  
 Host key verification failed.  
Имеется 2 варианта решения:
  1. Отказаться от уникального ключа на каждом сервере, сделать один и раскидать по серверам. Имхо, это не очень правильно.
  2. Объяснить ssh-клиенту что у одного хоста может быть несколько ключей
Собственно реализация второго варианта
  • Получаем ключ сервера:
    $ ssh-keyscan server_ip
    # server_ip SSH-2.0-OpenSSH_5.9p1
    server_ip ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDir2790....
    
  • Полученную строчку добавляем в наш ~/.ssh/know_hosts
Теперь при подключении к одному и тому же адресу, но уже к другому серверу, ssh-клиент ругаться не будет, а сделает то что от него хотели. Эффект достигнут.

пятница, 1 июня 2012 г.

Reload ACLs (allow-from) в PowerDNS

Чтобы изменить настройки acl в конфиге PowerDNS Recursor'е, раньше приходилось делать рестарт всего сервиса. С версии 3.1.7.1 (в debian squeeze - 3.2) обновить acl можно не перезагружая сервис с помощью утилиты rec_control:
rec_control reload-acls
Непосредственно параметры отвечающие за acl:
  • allow-from-file - когда список сетей хранятся в отдельном файле, по одной сети на строчку
  • allow-from - список сетей через запятую

Жесткая перезагрузка из консоли без reboot/shutdown.

Иногда требуется проверить поведение систем/кластера при жёстких перезагрузках, которые могут быть вызваны прекращением электропитания ДЦ, выходом из строя блока питания, случайное нажатие ресета (бывает и такое!). Самый простой вариант имитации это воспользоваться MagicKeys (alt+sysrq+key), но далеко не всегда есть возможность работать с сервером на прямую. Однако sysrq можно послать ядру программно.
Для перезагрузки:
 echo 1 > /proc/sys/kernel/sysrq   
 echo b > /proc/sysrq-trigger  
Для выключения, правда в этом случае нужно будет включать сервер через IPMI или дежурного инженера ДЦ:
 echo 1 > /proc/sys/kernel/sysrq  
 echo o > /proc/sysrq-trigger  
Однако не стоит забывать о том что кеши не будут сброшены и вы можете получить на диске неконсистентные данные, однако именно этого я и добивался :)

среда, 30 мая 2012 г.

Загрузка IMG-образов в VirtualBox

Захотелось мне посмотреть на свежую сборочку ChromeOS дабы быть в курсе текущих метаморфоз сия поделия. Скачал образ, но так как флешки под рукой не оказалось, решил запустить его в VirtualBox'е. Начал подключать RAW-образ (для заливания на флешку c помощью dd), да оказалось что VBox не понимает его ни как CD/DVD-образ, ни как образ жёсткого диска.

Как оказалось запустить RAW-образ можно, но в это будет уже не RAW, а VDI (или любой другой понятный VirtualBox'у формат). Да, всё верно, нужно конвертировать образ, для чего потребуется дополнительное место на жёстком диске:
 VBoxManage convertfromraw -format VDI [filename].img [filename].vdi  
Далее полученный образ подключаем как жёсткий диск к виртуальной машине и загружаемся с него.  Если у виртуальной машины несколько жёстких дисков (как в моём случае), то во время загрузки жмакаем F12 и выбираем загрузочный диск.

ЗЫ В итоге ChromeOS в виртуальной машине вела себя очень странно, надо будет найти флешку и поглядеть вживую.

суббота, 28 января 2012 г.

Ubuntu, pulseaudio и акустика 5.1

Поключил таки к домашнему компьютеру звук 5.1 и телевизор 40-дюймовый, в кинотеатр теперь ходить не надо ))

При просмотре фильма со звуковой дорожкой 5.1 сабвуфер бабахает очень даже прилично, но вот если начать воспроизводить любой стерео (т.е. двхканальный) поток, то pulseaudio отлично раскладывает его на 5 каналов (2 фронтальных, 2 тыловых и центральный), а про сабвуфер забывает... В итоге техно слушать по умолчанию убунта нам предлагает без хорошего баса.

Чтобы исправить это безобразие достаточно исправить в /etc/pulse/daemon.conf параметр enable-lfe-remixing с no на yes:
$ gksu gedit /etc/pulse/daemon.conf  
Найти соответствующий параметр, раскомментирвать его и изменить значение:
 enable-lfe-remixing = yes  
Далее надобно перезагрузить pulseaudio:
 killall pulseaudio  
Если в момент перезагрузки был запущен браузер, то его желаетльно перезагрузить дабы флэш перезагрузился и начал использовать новый инстанс pulseaudio