Рекомендую к ознакомлению: http://www.fluentd.org/
Tuesday, 17 June 2014
Monday, 16 June 2014
PF_RING: pfring_open Operation not supported errno: 95
Это очень странная баго-фича. Суть в том, что даже при успешном открытии сокета pfring_open возвращает errno = 95, который обозначает: Operation not supported. Это ломает в частности gopacket/pfring и приводит к тому, что он нифига не работает.
Бага исправлена по моему репорту в коммите 7775 и доступна в svn версии PF_RING. Скорее всего фикс будет включен в релиз 6.0.2, в 6.0.1 баг все еще присутствует.
Бага исправлена по моему репорту в коммите 7775 и доступна в svn версии PF_RING. Скорее всего фикс будет включен в релиз 6.0.2, в 6.0.1 баг все еще присутствует.
Интересный продукт - APS Anti Abuse - защита Ваших VPS от жалоб
Вот наткнулся на такой продукт: http://vpsantiabuse.com/
Сам не пробовал, никакого резюме дать не могу. Все под Вашу личную ответственность.
Сам не пробовал, никакого резюме дать не могу. Все под Вашу личную ответственность.
Thursday, 12 June 2014
Can't install Go binding for PF_RING
Что делать? Открываем:go get "code.google.com/p/gopacket/pfring" # code.google.com/p/gopacket/pfring /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libpfring.so: undefined reference to `numa_node_of_cpu' /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libpfring.so: undefined reference to `clock_gettime' /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libpfring.so: undefined reference to `numa_bind' /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libpfring.so: undefined reference to `numa_parse_nodestring' /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libpfring.so: undefined reference to `numa_available'
/usr/share/go/src/pkg/code.google.com/p/gopacket/pfring/pfring.go
И далее на строке #cgo корректируем следующее:
#cgo LDFLAGS: -lpfring -lpcap -lnuma -lrt
После этого повторяем сборку и все будет ок :) Багрепорт уже создан мной.
Установка PF_RING на Debian 7 Wheezy
Стягиваем код:
Собираем модуль ядра:
После этого смотрим в dmesg и убеждаемся, что модуль подгрузился.
Собираем библиотеки:
После этого собираем примеры, чтобы посмотреть каков PF_RING в действии:
Смотрим PF_RING в бою:
cd /usr/src
wget 'http://downloads.sourceforge.net/project/ntop/PF_RING/PF_RING-6.0.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fntop%2Ffiles%2FPF_RING%2F&ts=1402307916&use_mirror=cznic' -OPF_RING-6.0.1.tar.gz
tar -xf PF_RING-6.0.1.tar.gz
cd PF_RING-6.0.1
apt-get install build-essential bison flex linux-headers-$(uname -r) libnuma-dev
Собираем модуль ядра:
cd kernel
make
make install
modprobe pf_ring
После этого смотрим в dmesg и убеждаемся, что модуль подгрузился.
Собираем библиотеки:
cd /usr/src/PF_RING-6.0.1/userland/lib
./configure --disable-bpf --prefix=/opt/pf_ring
make install
После этого собираем примеры, чтобы посмотреть каков PF_RING в действии:
cd /usr/src/PF_RING-6.0.1/userland
make
cd examples
Смотрим PF_RING в бою:
./pfcount -i eth3И все это при нулевой нагрузке на процессор :)
Using PF_RING v.6.0.1
Capturing from eth3 [90:E2:BA:49:92:4D][ifIndex: 4]
# Device RX channels: 8
# Polling threads: 1
Dumping statistics on /proc/net/pf_ring/stats/14988-eth3.5
=========================
Absolute Stats: [147170 pkts rcvd][147170 pkts filtered][0 pkts dropped]
Total Pkts=147170/Dropped=0.0 %
147'170 pkts - 113'915'190 bytes
=========================
=========================
Absolute Stats: [300663 pkts rcvd][300663 pkts filtered][0 pkts dropped]
Total Pkts=300663/Dropped=0.0 %
300'663 pkts - 229'629'649 bytes [300'647.06 pkt/sec - 1'836.93 Mbit/sec]
=========================
Actual Stats: 153493 pkts [1'000.05 ms][153'484.86 pps/0.93 Gbps]
Wednesday, 11 June 2014
rdiff: sorry, compression is not really implemented yet
Да, вот такая блин фича :)
rdiff: ERROR: (rdiff_options) sorry, compression is not really implemented yetНо я думаю можно заменить путь до дельты на - и сделать | pigz.
Tuesday, 10 June 2014
Как построить диаграмму по размерам пакетов в Linux?
Вот так:
После запуска ждете требуемое время и зажимаете CTRL+C. Из зависимостей: tshark и gsl-bin на Debian.
В итоге вы увидите красивую таблицу распределения:
tshark -i eth0 -n -eframe.len -T fields > traffic.dat; cat traffic.dat | gsl-histogram 0 1500 30
После запуска ждете требуемое время и зажимаете CTRL+C. Из зависимостей: tshark и gsl-bin на Debian.
В итоге вы увидите красивую таблицу распределения:
0 50 0
50 100 130328
100 150 12102
150 200 3012
200 250 1595
250 300 3114
300 350 1738
350 400 1363
400 450 1361
450 500 1924
500 550 1530
550 600 2052
600 650 1164
650 700 908
700 750 638
750 800 622
800 850 683
850 900 557
900 950 452
950 1000 421
1000 1050 507
1050 1100 442
1100 1150 547
1150 1200 657
1200 1250 365
1250 1300 1666
1300 1350 367
1350 1400 1618
1400 1450 13008
1450 1500 25497
Monday, 9 June 2014
FastNetMon - решение для высокоскоростного анализа трафика и блокировки узлов, на которые идет DDoS атака
Данная задача крайне часто встает в моей практике и, к сожалению, не имеет ни красивых ни удобных, ни вообще каких-либо решений.
Что мы делаем? Мы работаем через PF_RING и на очень высокой скорости извлекаем транзитные либо входящие пакеты идущие на нашу машину либо крупную сеть. Приложение написано на С++ и может работать до очень и очень серьезных нагрузок, 10-15 Gbps или 2-5 Mpps - это нормально. Как только на один из узлов pps превышает заданный порог, то запускается скрипт, который банит клиента либо передает сообщение группе администраторов.
Аналогичные решения существуют только для NetFlow, который сам по себе не создан для оперативной реакции и уведомления об атаке, а в моем решении уведомление об атаке будет через 3-5 секунд после превышение порога.
Также решение умеет работать на OpenVZ нодах и фиксировать атаки на VPS, нагрузка на CPU и сеть от решения минимальная.
Прошу: FastNetMon.com
Friday, 6 June 2014
Миграция Puppet Master сервера с WebRick на Passenger + httpd на CentOS
Итак, мы имеем работающий Puppet сервер со скоростью работы не удовлетворяющей нас совершенно. Что делать? Ускорять методом переключения на Апача с модулем Passanger.
Устанавливаем зависимости:
Устанавливаем модули rack и passanger:
Далее создаем конфиг
Со следующим содержимым: https://gist.github.com/pavel-odintsov/7813f50ee2f8dc1ef467
Перегружаем Апача, чтобы активировать модуль:
Создаем конфигурацию для запуска Puppet Master как Passanger приложения:
После этого повторно перезапускаем апача и деактивируем старый pupept master сервер:
Гайд, по которому велась конфигурация: http://docs.puppetlabs.com/guides/passenger.html
Устанавливаем зависимости:
install httpd httpd-devel mod_ssl ruby-devel rubygems gcc zlib-devel openssl-devel curl-devel gcc-c++
Устанавливаем модули rack и passanger:
gem install rack passengerКомпилируем модуль Passanger для Апача:
passenger-install-apache2-moduleЕсли он спросит какой язык нам требуется, выбираем Ruby.
Далее создаем конфиг
vim /etc/httpd/conf.d/passenger.conf
Со следующим содержимым: https://gist.github.com/pavel-odintsov/7813f50ee2f8dc1ef467
Перегружаем Апача, чтобы активировать модуль:
/etc/init.d/httpd restartУбеждаемся, что все зацепилось корректно:
apachectl -M 2>&1|grep pass
passenger_module (shared)
Создаем конфигурацию для запуска Puppet Master как Passanger приложения:
mkdir -p /usr/share/puppet/rack/puppetmasterdСоздаем конфигурацию сайта:
mkdir /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp
cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/
chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru
vim /etc/httpd/conf.d/puppetmaster.confВот содержимое: https://gist.github.com/pavel-odintsov/386956e25f886ba214fe
После этого повторно перезапускаем апача и деактивируем старый pupept master сервер:
chkconfig puppetmaster offПосле этого пробуем провести синхронизацию с какого-либо клиента :) Думаю, все будет ок!
/etc/init.d/puppetmaster stop
/etc/init.d/httpd restart
Гайд, по которому велась конфигурация: http://docs.puppetlabs.com/guides/passenger.html
Thursday, 5 June 2014
Wednesday, 4 June 2014
Эффективность работы ZFS дедупликации и сжатия на Open Indiana при хранении бэкапов ploop образов VPS
Вот такие цифры:
zpool listСжатие примерно двухкратное:
NAME SIZE ALLOC FREE EXPANDSZ CAP DEDUP HEALTH ALTROOT
array 43,5T 9,30T 34,2T - 21% 5.16x ONLINE -
rpool 29G 10,0G 19,0G - 34% 1.00x ONLINE -
zfs get compressratio arrayТо есть, относительно исходного сырого объема мы получаем следующее соотношение - для хранения где-то десятка бэкапов по 10 гб нам требуется 10 гб. Так как они сжимаются 1 к 5 дедупликацией и потом вдвое за счет сжатия.
NAME PROPERTY VALUE SOURCE
array compressratio 2.03x -
Tuesday, 3 June 2014
Использование собственных параметров в конфиге OpenVZ контейнера
Очень часто требуется добавить какие-то свои параметры в конфиг OpenVZ контейнера, например, идентификатор услуги в биллинге или еще что-то.
Городить отдельные конфиги крайне не хочется и есть отличный способ! Можно просто добавить их в конфиг контейнера /etc/vz/conf/XXX.conf в виде по аналогии с родными параметрами vzctl:
Городить отдельные конфиги крайне не хочется и есть отличный способ! Можно просто добавить их в конфиг контейнера /etc/vz/conf/XXX.conf в виде по аналогии с родными параметрами vzctl:
NETWORK_UPLOAD_SPEED="10mbps"Никаких проблем/ошибок это не вызовет, vzctl примет их как родных. Единственным неудобством в данном случае является то, что требуется делать обертку для правки/чтения данных параметров, так как vzctl/vzlist ничего о них не знаю и не могут их править/отображать.
Monday, 2 June 2014
Ускорение работы DNS в ISPManager 4 при добавлении доменов
Суть проблемы в том, что ISPManager перезапускает Bind при добавлении каждого домена.
Чтобы избежать этого делаем следующее.
Открываем конфиг ISPManager:
Там корректируем либо добавляем строку (если не было):
После этого перезапускаем ISPManager по killall -9 ispmgr и тестируем скорость добавления доменов.
Чтобы избежать этого делаем следующее.
Открываем конфиг ISPManager:
vi /usr/local/ispmgr/etc/ispmgr.conf
Там корректируем либо добавляем строку (если не было):
path ndc /usr/sbin/rndcfastА там кладем вот такой скриптик: https://gist.github.com/pavel-odintsov/e4a3cd655f51fa7f99b8
После этого перезапускаем ISPManager по killall -9 ispmgr и тестируем скорость добавления доменов.
Subscribe to:
Posts
(
Atom
)
