AS-Stats — инструмент для создания графиков трафика для каждой AS из записей NetFlow / sFlow

Вы когда-нибудь задавались вопросом что интересно людям в Интернете, какие AS генерируют трафик в вашей сети, а также как это посчитать / визуализировать? Один из вариантов сбора статистики это AS-Stats

Скрипты анализируют sFlow / NetFlow потоки, по результатам строят графики и выбирают топ. Вот как это выглядит:

Читать далее

IPFW — настраиваем файрвол на FreeBSD

По умолчанию в дистрибутиве предустановлено сразу 3 firewall’a: IPFILTER, IPFW и PF. Какой использовать — выбирает пользователь. Мы же попробуем рассмотреть нормально закрытую конфигурацию IPFW.

Вводные данные: Имеется сервер с TrueNAS’ом и запущенными на нем сервисами, например FTP, необходимо разрешить доступ к FTP для всех сетей организации, а управление и мониторинг сервера выделить в отдельные менеджмент сети.

Создадим два файлика:
где firewall.conf — файл конфигурации файрвола, а allowed_nets.ipfw — сети с которых есть доступ к сервисам на сервере. Каждая сеть в файлике allowed_nets указывается с новой строки

touch /etc/firewall.conf 
touch /etc/allowed_nets.ipfw
# Пример файла с разрешенными сетями
root@truenas[~]# cat /etc/allowed_nets.ipfw
10.10.5.0/24
10.10.6.0/25
10.20.7.0/26
192.168.0.0/27
172.17.10.0/23
Читать далее

GRE туннель. FreeBSD

FreeBSD из «коробки» полность поддерживает GRE и автоматически добавит его в ядро, но если хочется перестраховаться можно всегда добавить ниже указанную строку в /boot/loader.conf

if_gre_load="YES"
# или
echo 'if_gre_load="YES"' >> /boot/loader.conf

Из консоли туннель подымается следующими командами:

ifconfig gre0 create 
ifconfig gre0 10.1.10.1 10.1.10.2 netmask 255.255.255.252 
ifconfig gre0 tunnel 100.0.2.1 100.0.1.1
# где 10.1.10.0/30 IP внутри туннеля
# 100.0.0.0 адреса серверов для пиринга

Для автозапуска туннеля нужно добавить в /etc/rc.conf следующие строчки:

cloned_interfaces="gre0" 
ifconfig_gre0="inet 10.1.10.1 10.1.10.2 netmask 255.255.255.252 tunnel 100.0.2.1 100.0.1.1"

Как обычно туннель при отсутствии активности падает, потому для поддержания туннеля в поднятом состоянии добавляем в крон:

*/1  *  *  *  *  root  ping -c 10 10.1.10.2

FreeBSD в отличии от Ubuntu равнодушно относится к отсутствию пустых строк в конце cron файла, поэтому оставлять пустую строку или нет — ваше личное дело

GRE туннель. Ubuntu netplan

Примеры конфигурации netplan внятно описаны на страничке проекта https://netplan.io/examples/

Конфигурация лежит в /etc/netplan/*.yaml
Применяется — netplan try и если ничего не отпало — Enter
Или для уверенных в себе — netplan apply

network:
    ethernets:
        ens18:
            addresses:
            - 10.10.10.10/25
            gateway4: 10.10.10.1
            nameservers:
                addresses:
                - 8.8.8.8
                - 1.1.1.1
    tunnels:
        gre-ap120-tr:
            mode: gre
            local: 10.10.10.10
            remote: 192.168.0.10
            mtu: 1400
            addresses:
                - 10.2.2.2/30
            routes:
                - to: 192.168.88.0/24
                  via: 10.2.2.1
                - to: 10.90.91.0/24
                  via: 10.2.2.1
    version: 2

Так как линуксы не любят то что не прописано в стандартах и не поддерживают keepalive, из-за чего при отсутствии сетевой активности тоннель падает, в cron добавляем:

*/1 * * * * ping 10.2.2.1 -c 10

# помним о том что cron всегда должен заканчиваться  
# пустой строкой

Weathermap-History — отображение GIF-файлов на основе выбранной даты

Weathermap-History — это HTML-страница которая позволяет просмотреть анимированные GIF-файлы на основе выбранной даты. Данная страница является дополнением к переработанному Weathermap плагину для LibreNMS, но может использоваться и для обычного везермап.

За основу взял готовое решение и изменил чтобы гифки генерились для всех карт, а также для удобства добавил линк на карты в подменю Weathermap плагина в LibreNMS. Измененный код с мануалом доступен по ссылке

Читать далее

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
Читать далее