FastNetMon — добавляем ExaBGP в контейнер и настраиваем автобан.

В прошлой статье мы подготовили docker-контейнер для FastNetMon’a и настроили мониторинг в Grafana. Тестирование показало что трафик мониторится коректно, нагруженные и служебные подсети были перенесы в отдельные группы. Пришло время расширить функционал контейнера и добавить ExaBGP.

ExaBGP это инструмент для внедрения произвольных маршрутов в сеть, включая IPv6 и FlowSpec. Вместе с FastNetMon позволяет позволяет автоматически детектить и блокировать DDoS-атаки. Варианты использования инструмента описаны на страничке проекта. В моем случае оборудованиие не поддерживает FlowSpec, поэтому все настраивается под анонсы в blackhole-community.

Читать далее

FastNetMon — мониторинг DDoS атак. Docker-контейнер на базе Alpine

FastNetMon — один из сервисов который позволяет найти и предотвратить атаку на сеть. На сайте проекта описаны различные варианты установки и настройки мониторинга, также есть хорошая документация на русском. Мне нужен вариант с анализатором sflow-пакетов, и так как источников с которого летят сии пакеты более одного, решил остановиться на docker-контейнере.

Единственное что не устраивало в официальной реализации контейнера, то что собран он на базе ubuntu. Потому поискал любительские сборки на базе Alpine  и наткнулся на докерфайл Сборка делалась достаточно давно и код FastNetMon’a уже изрядно поменялся, плюс компиляция крашилась из-за неявно указаных модулей в коде. Поэтому пришлось подправить напильником. В результате контейнер собрался и работает. Правда в последствии я в него добавил еще curl для отправки нотификаций в telegram. Файлик доступен по ссылке

Читать далее

UFW для ленивых. Упрощаем и стандартизируем настройку файрвола.

Как правило сервер должен светить в мир или локальную сеть ограниченным списком портов и доступ к серверу необходим ограниченному списку сетей. Также включать и настраивать файрвол как правило лень и это часто откладывается на потом. Решил упростить себе жизнь и сделал простой скрипт который открывает доступ к определенным портам для определенных сетей. Для других сетей сервер будет не доступен. Можно изменить скрипт чтобы некоторые порты были доступны для всех, но на текущий момент мне такое не требуется.

Cкрипт сбрасывает в дефолт текущие настройки файрвола и создает правила для списка IP и портов, которые указаны в переменных ALLOW_IP и ALLOW_PORT. Сам скрипт ниже:

#!/usr/bin/env bash

    n=$(tput sgr0);
    bold=$(tput bold);
    red='\033[0;31m'

if [ "$1" != "yes" ]
then
echo -e ${red}${bold}"This script reconfigure your firewall. Please, before running check variables ALLOW_IP and ALLOW_PORT"
echo "Also script must be run from root user"
echo "For running script enter in terminal ./en-ufw-firewall.sh yes"${n}
exit
fi
ALLOW_IP='10.111.60.0/24 10.111.63.252 192.168.200.165 10.27.0.0/24 10.1.0.0/16'

ALLOW_PORT='22 443 8080 10050'

ufw reset

#load default settings
sudo ufw default deny incoming
sudo ufw default allow outgoing

#
# create rules for IPs
#

for IP in $ALLOW_IP; do

#
# add allowed ports to allowed IPs
#

for PORT in $ALLOW_PORT; do

ufw allow from $IP to any port $PORT

done

done

ufw enable
ufw status numbered

Запуск старых java-апплетов в Ubuntu

При работе со старыми IPMI-консолями серверов, периодически возникает проблема с невозможностью запуска старых версий джава-апплетов на последней версии openjdk. Самый простой путь решения проблемы — установить дополнительно старую версию java.

1. Установим Java

# основное ставим из официальных репозиториев 
apt install -y icedtea-8-plugin icedtea-netx icedtea-plugin openjdk-8-jdk 
# старенькую джаву скачиваем по ссылке: 
# http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 
# (требуется регистрация) 
# И распаковываем архив 
tar xvzf jdk-7u80-linux-x64.tar.gz 
# переносим к остальным джава-машинам 
mv jdk1.7.0_80 /usr/lib/jvm/ 
# и добавляем старую версию java в альтернативы 
update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.7.0_80/bin/javaws 1 
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 1
Читать далее

Samplicator — клонируем и форвардим UDP (sflow) потоки

Время от времени возникает ситуация когда необходимо распараллелить приём sflow потоков на несколько анализаторов, для последующей обработки оных. Дабы реализовать возникшую потребность воспользуемся утилитой Samplicator.

Эта маленькая программа слушает заданный порт и форвардит приходящий поток на требуемые адреса назначения. Более полное описание возможностей можно прочесть на странице проекта.

Устанавливаем программу:

cd /opt
git clone https://github.com/sleinen/samplicator.git
cd samplicator
./autogen.sh
# PS Для запуска скрипта требуются automake и autoconf, если 
# скрипт завершиться с ошибкой установите их и перезапустите оный
./configure
make
make install
Читать далее

Увеличение скорости rebuild’a software RAID в Linux

Перестроение большого software RAID в Linux может занимать длительное время. Скорость синхронизации mdraid зависит от заданных параметров в proc-переменных /proc/sys/dev/raid/speed_limit_max и /proc/sys/dev/raid/speed_limit_min, задающих максимальную и минимальную пропускную способность синхронизации данных.

По умолчанию значения этих переменных выставлены в 200000 и 1000 (Кб). Манипулируя данными параметрами можно существенно увеличить скорость перестроения RAID-массива. Подобрать оптимальные значения можно в зависимости от производительности текущей дисковой системы, чем выше скорость синхронизации, чем меньше ресурсов остается для обработки текущих дисковых операций.

Установим минимальную скорость в 20 Мб/сек, а максимальную в 300 Мб/cек:

echo 20000 > /proc/sys/dev/raid/speed_limit_min
echo 300000 > /proc/sys/dev/raid/speed_limit_max

Посмотреть текущую скорость ресинхронизации можно в выводе команды:

cat /proc/mdstat

Проверим на системе:

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
          resync=DELAYED
      bitmap: 1/1 pages [4KB], 65536KB chunk
md1 : active raid1 sdb3[1] sda3[0]
      967191552 blocks super 1.2 [2/2] [UU]
      [=======>.............]  resync = 37.5% (363386240/967191552) finish=923.4min speed=10896K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk
unused devices: <none>
 
[root@localhost ~]# cat /proc/sys/dev/raid/speed_limit_min
1000
 
[root@localhost ~]# echo "20000" > /proc/sys/dev/raid/speed_limit_min 
 
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
          resync=DELAYED
      bitmap: 1/1 pages [4KB], 65536KB chunk
md1 : active raid1 sdb3[1] sda3[0]
      967191552 blocks super 1.2 [2/2] [UU]
      [=======>.............]  resync = 37.7% (365001088/967191552) finish=472.3min speed=21248K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk
unused devices: <none>

Оптические делители

Если длина волны1310 нм:
— погонное затухание — 0,36 дБ/км;
— соединение волокна сваркой — 0,05 дБ;
— механическое соединение (коннектор — адаптер — коннектор) — 0,4 дБ.

Затухание в реальных оптических делителях

Соотношение деления, % Максимальные вносимые потери, Дб
Однооконный Двухоконный
50 / 50 3,4 / 3,4 3,6 / 3,6
45 / 55 3,8 / 2,9 4,1 / 3,1
40 / 60 4,4 / 2,5 4,7 / 2,7
35 / 65 5,0 / 2,2 5,3 / 2,4
30 / 70 5,6 / 1,8 6,0 / 1,9
25 / 75 6,3 / 1,5 6,9 / 1,6
20 / 80 7,4 / 1,2 7,9 / 1,3
15 / 85 8,8 / 0,9 10,0 / 0,9
10 / 90 10,8 / 0,6 11,3 / 0,6
5 / 95 13,8 / 0,4 15,2 / 0,45

Читать далее

Изменение размера диска на виртуальной машине (Fix GPT and resize LVM)

Данный вариант не прентендует на правильность, возможно куда более правильно просто добавить в ВМ еще один диск.
В примере исправим GPT и увеличим размер LVM.

Если вам по какой либо причине понадобилось изменить размер системного диска на сервере, перед разбивкой и дальнейшей разметкой необходимо исправить таблицу GPT чтобы операционная система увидела дополнительное место.

После загрузки ОС проверяем информацию о диске:
fdisk -l или gdisk -l /dev/sda

fdisk -l

GPT PMBR size mismatch (146800639 != 2097151999) will be corrected by w(rite).
Disk /dev/sda: 1000 GiB, 1073741824000 bytes, 2097152000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 47A7D05D-BC6C-486A-853B-5388B9732ECD

Device       Start       End   Sectors Size Type
/dev/sda1     2048      4095      2048   1M BIOS boot
/dev/sda2     4096   2101247   2097152   1G Linux filesystem
/dev/sda3  2101248 146798591 144697344  69G Linux filesystem

=============================================================

gdisk -l /dev/sda

GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 2097152000 sectors, 1000.0 GiB
Model: QEMU HARDDISK   
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 47A7D05D-BC6C-486A-853B-5388B9732ECD
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 146800606
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  
   2            4096         2101247   1024.0 MiB  8300  
   3         2101248       146798591   69.0 GiB    8300  

Из примера выше видно что система видит 2097152000 секторов, но использовать может только 146800606
Исправим раздел GPT:
parted -l

Читать далее

NfSen — Сбор и анализ трафика

Предисловие

Основная польза для сетевого инженера от анализатора трафика, это пожалуй поиск флуда и DDoS-атак. Если к вам летит какая-то гадость из интернетов, канал к узлу агрегации стал в «полку», свитчи пингуются с потерями и вы не знаете как искать виновника «гирлянды» в пингере — загляните в NfSen

Хороший и понятный мануал к программе лежит на сайте проекта http://nfsen.sourceforge.net/ и если после прочтения написанного ниже у вас возникнет желание копнуть глубже, появятся вопросы, а возможно вам больше нравится сразу обращаться к первоисточнику за информацией… вы знаете что делать 😉

1. Интерфейс


Домашняя страница — графическая статистика по количеству потоков, пакетов и трафику на одной странице. В нашем случае из-за нагромождения источников flow на графиках, практически не несет смысловой нагрузки. При крепком DDoSe можно заметить всплеск, но информативности мало.

Читать далее

FreeNAS. Установка Zabbix агента

Включаем SSH для root’а

Для удобства включаем SSH на сервере. Для этого переходим по цепочке ниже:

Web-interface => Services => SSH => Enable SSH => Edit => Enable «Log in as root with password»

Скачиваем и распаковываем Zabbix agent

Скачиваем агента отсюда https://www.zabbix.com/download_agents Я выбрал агента для LTS версии 

mkdir /root/zabbix
cd /root/zabbix
# Download Zabbix agent from https://www.zabbix.com/download_agents
wget https://www.zabbix.com/downloads/4.0.19/zabbix_agent-4.0.19-freebsd-11.2-amd64.tar.gz
tar xvf zabbix_agent-4.0.19-freebsd-11.2-amd64.tar.gz
Читать далее