Netflow-искания Часть 1 (сенсоры и коллекторы)

Я думаю, что все согласятся с тем, что мониторинг сетевой активности является одной из приоритетных задач в процессе эксплуатации корпоративных сетей.
Все легко и просто, пока вы администрируете сеть небольшого офиса в городе N. Но что если ваша фирма пошла в гору и стала расширяться? Открытие нового филиала скорей всего повлечет начало отношений с провайдерами, организацию каналов связи и более сложные (назовем это так) манипуляции с сетью.
Нет желания описывать такие вещи, как маршрутизацию, ее необходимость и проблемы с ней связанные. Допустим вы непосредственно маршрутизацию победили. Но это не значит, что все у вас будет хорошо.

Читать дальше →

Простая "обёртка" для LVMSync

  • BASH
Написал незамысловатый фронтэнд для замечательной утилиты lvmsync, написанной Matt Shed. Спасибо тебе, Шэд, ты единственный человек, который удосужился разумным (т.е. читай: вменяемым) способом решить вопрос синхронизации блочных устройств. Да, только для LVM-томов. Но причина тому банальна до безобразия: LVM-тома — это пока единственный широко распространённый тип блочных устройств, изменения на которых можно отслеживать при посредстве самого механизма записи, а не выявлять каким-то хитрым образом уже пост-фактум, считывая произвольные куски, скурпулёзно высчитывая контрольные суммы и вообще занимаясь какой-то хиромантией. Есть конечно ddsnap от Zumastor'а, и он нашёл своё широкое применение на хранилищах свалок истории, предлагая патчить ядро Linux для решения «в общем виде» той задачи, которая в принципе такого решения иметь не должна.

Читать дальше →

Установка Openmeetings 1.9.1 на FreeBSD 9, шаг за шагом.

  • FreeBSD
Возникла необходимость организации видеоконференций, причем основным условием было отсутствие на стороне клиента необходимости установки дополнительного ПО. После коротких поисков в сети было найдено приемлемое решение Openmeetings.
На данный момент актуальная версия openmeetings_1_9_1_r4707, её и будем ставить.

Читать дальше →

Permission denied при чтении конфигурационной директории OpenLDAP

  • LDAP
Столкнулся с такой загадочной проблемой: при попытке считать свою конфигурационную директорию, а именно файл cn=config.ldif, LDAP-сервер из штатной поставки Ubuntu 11.10 Oneiric страшно ругается Permission denied и спешно завершается.
Никаких объективных предпосылок для этого нет, права на чтение/запись пользователю openldap даны, sudo -u openldap cat <config_path>/cn=config.ldif отрабатывает правильно. И уж совсем странно, что будучи запущенным под рутом без опций -u и -g, slapd точно также не может получить доступ к своей конфигурации. Запустил его с strace'ом: на привилегированный порт 389 биндится, effective user id не меняет, к счастью, никаких chroot'ов без спроса не делает, но… но в итоге slapd всё равно благополучно валится:

open("/etc/openldap/domains/DOMAIN/conf/cn=config.ldif", O_RDONLY) = -1 EACCES (Permission denied)

Проблема решилась очень просто: взял исходники с openldap.org и собрал из исходников, получив совершенно адекватную рабочую версию сервера.
Ещё попробую изучить вопрос, но в любом случае предупреждаю, что в Ubuntu со штатной сборкой slapd явно что-то не так.

Увеличиваем размер диска виртуальной машины в ESXi

  • VMWare
Почти по рекламе: «Случилось страшное....» В общем у вас возникла такая ситуация: есть сервер виртуализации ESXi (бесплатное чудо от VMWare), у вас на ней крутиться несколько виртуальных машин, вроде бы все нормально и вдруг бац — у одной машины начинает катастрофически не хватать дискового пространства. Места на дисковой подсистеме vmfs море, так что перед вами 2 пути или ставить и настраивать с нуля новую машину или что-то делать с существующей.
Читать дальше →

FreeBSD + AESNI + OpenSSL + OpenVPN

  • FreeBSD
Тема апгрейда домашнего файл-сервера назрела давно, все ждал когда появятся в нашем маленьком городке процессоры на архитектуре Sandy Bridge. И вот, дождался!

После не долгих раздумий выбор пал на Intel Core i5-2400. Купил материнскую плату на новом сокете (1155), новую оперативку и вставил туда новый процессор.

Система загрузилась без каких либо проблем. Процессор опознался так:
CPU: Intel® Core(TM) i5-2400 CPU @ 3.10GHz (3092.99-MHz K8-class CPU)
Origin = "GenuineIntel"  Id = 0x206a7  Family = 6  Model = 2a  Stepping = 7
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PB
Features2=0x17bae3ff<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,<b24>,AESNI,XSA
AMD Features=0x28100800<SYSCALL,NX,RDTSCP,LM>
AMD Features2=0x1<LAHF>


И сразу захотелось попробовать AESNI. Вкратце, это набор инструкций процессора, облегчающий работу алгоритма симметричного шифрования AES.

Читать дальше →

ZImbra: нетривиальная маршрутизация почты - часть 2

  • LDAP
Первая часть тут

Положим, поставила перед вами нелёгкая судьбина следующую задачу: добавить в Zimbr'у alias, он же псевдоним. Но псевдоним тот не простой, а виртуальный, указывающий не на пользователя в локальном домене, обслуживаемом Zimbra, а на некий «внешний» почтовый адрес.
Как законопослушный гражданин, вы наверняка первым делом загрузите интерфейс администрирования Zimbra и в меню Создать выберете «Псевдоним». После совершения указанной манипуляции пред ваши очи предстанет такое вот окно:

Читать дальше →

ZImbra: нетривиальная маршрутизация почты - часть 1

  • LDAP
Zimbra — замечательный Collaboration Suite, но с точки зрения тонкой настройки собственно почтового сервиса MTA (в качестве которого, как мы все знаем, используется Postfix) её веб-интерфейс сильно хромает, а местами так и просто обескураживает.
Например, есть у меня Zimbra на внутреннем почтовике, она полностью закрыта от внешнего доступа и всю исходящую корреспонденцию шлёт внешнему серверу-шлюзу, от него же и принимает оную. Плюс настроен Split-Domain (как именно — см. Split Domain: Configuring Zimbra as the Secondary System), потому что пока на внешнем шлюзе есть нехилый кусок нашего корпоративного домена. Ну да это не суть важно, а важно то, что в моём случае Zimbra по дефолту не может отправлять любую почту, кроме адресованной локальным получателям, куда-либо, кроме того самого внешнего шлюза.
И всё было бы хорошо, если бы в дополнение к собственному домену Zimbra, назовём его domain.com, не появился ещё один внутренний домен с именем lists.domain.com, хостящийся буквально по соседству (VLAN/подсетка совпадают, так что не требуется дополнительная маршрутизация). И вот тут дефолтная конфигурация уже перестала меня устраивать: ведь в этот «соседний» домен тоже нужно каким-то образом отправлять почту, но если оставить всё как есть, то получится абсурдная ситуация: сначала Zimbra будет отправлять сообщение в lists.domain.com через интернет-шлюз на почтовый шлюз, а затем последний уже отправит это письмо обратно через интернет-шлюз… почти туда же, откуда оно и ушло. Таким образом, мы получили бы маршрутизацию почты в lists.domain.com аля «путешествие Афанасия Никитина за три моря» и массу потенциального геморроя.

Читать дальше →

Перенаправления в bash

  • BASH
Перенаправление в bash даёт нам инструмент для тонкой манипуляции потоками ввода/вывода, создания каналов между командами и т.д. Каждый начинающий unix'ойд может сказать, что делает command > file. Однако, допустим, { { ls -l; } 2>&1 >&3 | cat > file; } 3>&1 поставит в ступор, иной раз, даже бывалого. Конечно, эта команда избыточна и представляет собой всего лишь ls -l 2>file, но сколько смысла заложено в этой строчке. Естественно, памяти доверять такой большой багаж знаний нельзя, поэтому я долго искал в рунете полный мануал по перенаправлениям, но… видимо плохо искал… И написал свой, с блэкджеком и шлюхами. Я не претендую на полноту изложения и широту охвата, и не берусь утверждать, что после прочтения можно будет слёту понимать что-то вроде:

{
  {
    cmd1 3>&- |
      cmd2 2>&3 3>&-
  } 2>&1 >&4 4>&- |
    cmd3 3>&- 4>&-

} 3>&2 4>&1


Читать дальше →

BASH Tips&Tricks #000B: Hello ли world? О встроенном в BASH "Эффекте бабочки".

  • BASH
Изучение многих языков программирования начинается с написания с простейшего кусочка кода, выводящего на экран радостно-интернациональное Hello, world!
Теперь давайте представим себе, что мы только начинаем изучать BASH и решили написать нашу первую приветствующую мир программку:

#!/bin/bash
echo "Hello, world!"

Я думаю, вы догадались уже, в чём подвох.
А именно: этот элементарный код не работает…

Читать дальше →

Как вывести конфигурацию микротика в текстовый файл или на консоль

  • Mikrotik
Вот так:
Показать конфиг в терминале
/export compact

Сохранить конфигурацию в файл
/export compact file=myconfig

При этом конфигурация микротика сохраняется в понятном текстовом виде, вроде
/interface bridge
add name=bridge1
/interface ethernet
set 0 comment=To-ADSL-Modem mtu=1480 name=WAN
set 1 comment=To-LAN-Switch name=LAN
set 2 master-port=LAN
set 3 master-port=LAN
set 4 master-port=LAN
и т.д.

Авторизация в Openmeetings с учетной записью Active Directory

  • FreeBSD
Так как Openmeetings напрямую к AD не прикручивается, действовать будем через OpenLDAP.
Итак. Ставим из портов OpenLDAP Server версии не ниже 2.3, так как более младшие версии не могут прозрачно передавать неизвестную схему.

Читать дальше →

BASH Tips&Tricks #0008: Голову с плеч!

  • BASH
Да-да, забудьте наконец об этой странной утилите, которая ещё и работает «как-то иначе» в некоторых менее популярных, чем Linux, реализациях *nix!
Почему даже одна head вам ни к чему, не говоря уже о двух и более?
Да потому что у нас есть sed, который умеет всё или почти всё, но остаётся при этом простым и чрезвычайно быстрым, что позволяет ему заменять целую тучу атомарных nix'овых утилит.
Ну вот, например…
Хотите первое поле 2-й строки CSV-файла, где разделителем служит (сюрприз!) — запятая?
Да нет ничего проще, чем сделать это одной командой, безо всяких глупых head'ов и медлительных awk, — вот:

sed -n '2{ s/,.*$//; p; q }' FILE

Да, и никогда не забывайте про жадный разбор регулярных выражений и фигурные скобки — данный пример наглядно показывает, чем бывает полезно и то, и другое.

Пожалуй, совсем не очевидным выглядит решение с помощью sed такой элементарной задачи, как «получить первые 5 строк файла»:

sed -n '1,5p; 6q' FILE

— с этим куда лучше справится head -5

Но, например, чуть менее элементарную задачу «вывести строки файла с 3-й по 10-ю, исключая 7-ю», sed решает куда нагляднее и элегантнее, нежели связка из доисторического локомотива head и «прицепного вагона» sed вместе:

sed -n '7b; 3,10p; 11q'


sed не умеет вести «обратный отсчёт» от конца файла, поэтому ему сложно соревноваться с tail в скорости и удобстве, но вот head он заменяет весьма успешно!
Поэтому в следующий раз, когда вы подумаете использовать sed на вагонной сцепке c head, подумайте ещё раз и сделайте «состав» немного короче…

Реквием по OS\2

Было это во времена BBS, 486-ых компов и первых пентиумов…

крупная гос. организация, на одном из компьютеров в серверной BBS-станция для связи с клиентами, обновлением файлов и т. п.

BBS включена круглосуточно 7 дней в неделю, стояла в углу спокойненько, своё дело делала, да и вопросов к ней не было.

Так прошло 5 лет. Ни разу BBS не выключали, и вообще про этот компьютер забывать начали — забот и без него хватало, т. к. BBS к тому времени уже вышло из моды. Уборщица рядом пустые коробки складировала, затерялся он там в пыли, но был всё ещё подключен… В серверной более 50 компов — забыли про него.

И вот при очередной смене власти в организации, взяли новых админов. Эти молодые энтузиасты при наведении порядка обнаружили, что телефонная линия BBS всё еще работает и всё еще ждет звонков! Но не могли найти в серверной комп, который ее обслуживает! Наконец среди горы пустых бутылок и запчастей откопали этот агрегат, подключили монитор — и всем отделом офигели:
Читать дальше →

BASH Tips&Tricks #0006: Как делать точно не следует

  • BASH
Наверное, это будет самый короткий пост в серии Tips&Tricks, потому что…

a="t*"
b="/etc/fs*"
c=/proc/1*

— да, вот именно так делать и не следует.
А именно: астериск (символ "*") в двойных кавычках и в присваивании переменной интерпретируется BASH не так, как вам хочется и даже не так, как хочется разработчикам BASH. Попробуйте и убедитесь сами.
Но лучше сразу экранируйте его, а для получения списка файлов пользуйтесь ls.

Всё!

Защита от Apache от DDOS-атак

  • Linux
Пару недель назад позвонил один знакомый и пожаловался, что плохо работает сайт и канал поменяли на FTTX с xDSL и тариф выбрали со скоростью повыше, но помогло мало — пользователи жалуются на HTTP/1.1 403 Forbidden. Сервер настраивал им не я, благо что установлена Ubuntu 10.04 LTS — люблю продукты семейства long time support — очень уж они хорошо. Получив доступ начал ковырять систему — первое что бросилось в глаза — практически пустой фаейр — десятка 2 правил на вход-выход ЛВС и сайта в мир. Набрав в консоли команду
netstat -n --tcp | grep SYN_RECV
— несколько секунд наблюдал строчки вида:
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:1084    SYN_RECV   
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:1228    SYN_RECV   
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:2652    SYN_RECV   
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:3446    SYN_RECV
Сразу стало понятно — что сайт завален большим количеством syn-пакетов, потому так плохо и работает.
Читать дальше →

Динамические списки внутри не "списочных" объектов

  • LDAP
Положим, у вас уже есть объект с описанием отдела фирмы, содержащим массу полезных атрибутов, включая фотографию начальника в костюме деда мороза и ряженных в зайчиков подчинённых с последнего корпоратива. И вот возникла задача собрать ещё и список сотрудников внутри объекта отдела и формировать его, разумеется, не вручную, а, как и положено в лучших домах Лондона и Парижа, динамически.
Читать дальше →