DNS в Ubuntu 20.04. Возвращаем контроль над /etc/resolv.conf

Уже достаточно давно в Ubuntu встроен локальный кеширующий DNS-сервер, который «ускоряет» работу, кешируя ответы на повторяющиеся DNS-запросы. Файлом resolv.conf управляют приложения и если внести туда изменения — жить они будут ровно до следующего ребута. Или что бывает еще чаще — resolv.conf это симлинк на /run/systemd/resolve/resolv.conf или /run/resolvconf/resolv.conf. Все эти надстройки над простой возможностью вбить echo «nameserver 8.8.8.8» >> /etc/resolv.conf не «напрягают», но когда вместе с обновлениями колличество DNS-серверов в системе увеличивается, хочется в этом навести порядок.

Все описанное в статье касается десктоп версии Ubuntu 20.04, для Ubuntu server алгоритм немного другой и тут я его касаться не буду. У меня стоит Mint уже достаточно давно и пережил серию апгрейдов с 18й до 20й Ubuntu. За это время на смену dnsmasq и resolvconf пакетам пришел systemd-resolved. При апгрейдах Ubuntu заботливо удалил resolvconf, но почему-то (потому что стоит libvirt KVM) оставил dnsmasq.

Если заглянуть в lsof -i :53 видно что у нас есть два сервера совместно слушающих 53 порт — dnsmasq и systemd-resolved. Но зачем нам столько? Меня в целом устраивает и команда из первого абзаца — решающая ровно ту же задачу. Правда остается вопрос с получением DNS через DHCP, поэтому я решил оставить управление файлом resolv.conf NetworkManager’у.

С вступлением закончили, перейдем к практической части.

Читать далее
[Голосов: 0 Средний бал: 0]

SWAP — файл подкачки в Linux

Порой при малом количестве оперативной памяти Linux система стает «колом» при отстутсвии свободной оперативной памяти. Система может «провисеть» не подавая признаков жизни около минуты пока подсистема OOM Killer (out of memory) не «прибъет» наименее важный процесс и не освободит память. Но не все мы любим «фризы» и избавиться от таких ситуаций при малом количестве оперативной памяти но «прожорливых» приложениях поможет swap-файл.

Уже достаточно давно в Linux не требуется отдельная файловая система под swap и его можно примонтировать файлом. Что достаточно удобно и всегда можно изменить размер swap. Давайте попробуем создать файл подкачки, это займет не больше минуты.

Проверяем что у нас со свопом на текущий момент, тут нам помогут команды free -h или swapon —show:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       8,0Gi       472Mi       1,7Gi       6,8Gi       5,3Gi
Swap:         975Mi       956Mi        19Mi

$ swapon --show
NAME      TYPE      SIZE   USED PRIO
/dev/dm-1 partition 976M 956,8M   -2

Видим что на текущий момент у нас есть раздел swap размером 1ГБ и и свободное место там скоро закончится. Chrome с большим количеством открытых вкладок штука прожорливая

Читать далее
[Голосов: 1 Средний бал: 5]

FastNetMon — notify_about_attack.sh — отправка уведомлений

Одной из подсистем действий в FastNetMon является подсистема отправки уведомлений Command Line Notify script путь к скрипту указывается в параметре конфигурации notify_script_path. Вместо почты я решил слать уведомления в telegram, поэтому давайте разбираться какую информацию может получить скрипт и для этого посмотрим в документацию:

Command Line Interface
С помощью параметра конфигурации notify_script_path Вы можете задать абсолютный путь до скрипта, которы будет вызван в следующих случаях:
• Блокировка узла после фиксации атаки «ban»
• Сбор отпечатка атаки «details»
• Разблокировка узла после окончания атаки «unban»
Рядом с каждым случаем дано его имя, которое передается как один из параметров заданного скрипта.
В случае вызова действий ban и details мы передаем множество полезной информации об атаке посредством передачи на stdin скрипту. Обращаю внимание, в связи с особенностями ОС семейства Linux, Вы обязаны принять эту информацию в скрипте, в противном случае вся программа завершится с ошибкой.
Впрочем, если эта информация не требуется, Вы можете отключить передачу дополнительных параметров атаки на stdin для «ban» действия с помощью параметра конфигурации notify_script_pass_details отключить это поведение.
Данному скрипту передаются следующие параметры командной строки:
• IP
• Направление атаки (incoming, outgoing)
• Мощность атаки в пакетах/секунду
• Действие (ban, unban, details)
Пример notify скрипта можно взять вот здесь

https://fastnetmon.com/wp-content/uploads/2016/08/FastNetMon_Reference_Russian.pdf

И естественно есть смысл поглядеть на сам скрипт. Весь скрипт я тут приводить не буду он доступен на гитхабе по ссылке выше. Приведу интересные фрагменты:

Читать далее
[Голосов: 0 Средний бал: 0]

LACP и VLAN. Ubuntu netplan

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

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

network:
    version: 2
    ethernets:                            # секция параметров сетевых интерфейсов
        eno1:                             # описываем параметры первого интерфейса
          match:
            macaddress: a0:a2:3a:3a:f7:76 # MAC
          set-name: eno1                  # имя
          mtu: 9000                       # MTU
        eno2:                             # идентично для второго
          match:
            macaddress: a0:a2:3a:3a:f7:77
          set-name: eno2
          mtu: 9000

    bonds:                                # параметры агрегации
      bond0:                              # имя
        interfaces:                       # интерфейсы добавленные в бонд
        - eno1
        - eno2
        parameters:                       # описание типа агрегации
          mode: 802.3ad                   # используем LACP
          lacp-rate: slow                 # периодичность проверки живости
                                          # slow - раз в 30 сек, fast - ежесекундно
          transmit-hash-policy: layer2+3  # тип LACP

    vlans:                                # описание влан
      bond0.2501:                         # имя
        id: 2501                          # ID VLAN
        link: bond0                       # интерфейс с vlan`ом
        addresses:                        # и секция настроек IP
        - 10.10.0.156/24
        gateway4: 10.10.0.1
        nameservers:
          addresses:
          - 8.8.8.8
          - 1.1.1.1

Параметры настройки GRE-туннеля — тут

[Голосов: 0 Средний бал: 0]

Easy-RSA 3 и OpenVPN. Создаем сертификаты.

OpenVPN — популярный сервер для создания VPN-туннелей использующих аутентификацию и шифрование на основе протокола SSL/TLS. Туннели очень часто с одной стороны заканчиваются Mikrotik’ом и логичнее пожалуй генерировать сертификаты «не отходя от кассы», но в случае если туннелей и микротов много, считаю что лучше воспользоваться общим центром сертификации. В этом случае на помощь приходит Easy-RSA. На текущий момент версия 3. Скачать последний релиз можно на Github-странице проекта или установить из репозиториев Ubuntu (18 и выше) и Debian (10 и выше). Я предпочитаю гитхаб.

Создаем центр сертификации

Скачиваем и распаковываем последнию версию пакета. Изменяем рабочую папку на папку приложения и… С дефолтными настройками Easy-RSA готов к работе, но если вы хотете добавить чуть больше подробностей в сертификат необходимо внести правки в файл конфига vars

cp vars.example vars

Откроем файл vars на редактирование и найдем опцию EASYRSA_DN, она предусматривает два режима: упрощенный cn_only, при котором сертификат содержит только CN (имя того, кому выдан сертификат) и стандартный org, при котором заполняются все реквизиты организации. Для OpenVPN можно использовать любой режим. Я выбираю org, после чего убираем # со следующих строк и вносим свои данные:

set_var EASYRSA_DN  "org"
# если вы выбрали cn_only, то редактировать 
# нижеуказанные переменные нет смысла
set_var EASYRSA_REQ_COUNTRY	"UA"
set_var EASYRSA_REQ_PROVINCE	"21"
set_var EASYRSA_REQ_CITY	"Kharkiv"
set_var EASYRSA_REQ_ORG		"MY.ORG.UA"
set_var EASYRSA_REQ_EMAIL	"me@example.net"
set_var EASYRSA_REQ_OU		"peer-network"

Переменная EASYRSA_KEY_SIZE указывает размер ключа, на текущий момент стандартным считается размер начиная с 2048, если нам нужна безопасность — можем увеличить его до 3072 или 4096, но нагрузка на процессор возрастет, а пропускная способность будет ниже. Если же криптографическая стойкость не играет роли, а туннель будет использован для передачи не критичных данных, а также возможно использование слабых устройств, то стоит уменьшить размер до 1024. Осталяю по умолчанию

Переменные EASYRSA_CA_EXPIRE и EASYRSA_CERT_EXPIRE задают срок действия корневого сертификата CA и сертификатов пользователей (сервера и клиентов), устанавливаются в днях, по умолчанию это 3650 (10 лет) и 1080 (5 лет) дней, переменная EASYRSA_CERT_RENEW задает количество дней до истечения сертификата, когда становится доступным его продление, по умолчанию это 30 дней, устанавливаю в 60 и сохраняю файл/

Пришло время инициализировать центр сертификации. Данное действо выполняется один раз и при повторном вводе команды существующий CA будет перевыпущен и прийдется перевыпускать все ключи и сертификаты.

./easyrsa init-pki
Читать далее
[Голосов: 0 Средний бал: 0]

Что такое MAC или физический адрес и стандарты MAC-48, EUI-48 и EUI-64

Все, кто хоть немного разбирается в сетях слышал о MAC-адресе и знает что это физический адрес сетевой карты «зашитый» в неё производителем. Естественно, многие знают что MAC можно почти всегда поменять в настройках сетевой карты в Windows и всегда в Linux. С появлением IPv6 возможно кто-то слышал про стандарт EUI-64. Но что это такое, откуда берется и для чего он нужен — знают не многие. Кроме этого еще существуют стандарты MAC-48 и EUI-48. Что это такое и для чего они нужны? Давайте разбираться.

  • MAC-address или MAC-48

МАС адрес (media access control address или MAC-48) – уникальный идентификатор, назначенный сетевому адаптеру, применяется в сетях стандартов IEEE 802, в основном Ethernet, Wi-Fi и Bluetooth. Появился при проектировании стандарта Ethernet. Используется для идентификации отправителя и получателя фрейма. Предполагается, что при появлении в сети нового компьютера (или другого устройства, способного работать в сети) пользователю не придётся настраивать этому компьютеру MAC-адрес вручную. Адрес имеет длину в 48 бит, т.е. 6 байт. Канонического формата записи нет или точнее их три. Записывается как шесть шестнадцатиричных чисел:

00-AB-CD-01-02-03 (Windows)
00:AB:CD:01:02:03 (Unix)
00AB.CD01.0203 (Cisco)
Читать далее
[Голосов: 0 Средний бал: 0]

Unbound — запускаем рекурсивный кеширующий DNS резолвер

Для чего нужен DNS резолвер думаю знают все, он обеспечивает преобразование запрашиваемого клиентом символьного имени домена в IP-адрес обслуживающего эту доменную зону сервера. Различные DNS-сервера провайдеров как правило являются кеширующим рекурсивным днс-сервером. Где, под кеширующим мы понимаем что сервер какое-то время данные о запрашиваемых сайтах хранит в кеше и возвращает ответы из памяти не обращаясь к корневым серверам. Допустимое время кэширования содержится в поле TTL ресурсной записи. А из понятия рекурсивный следует то что сервер, принявший запрос, опрашивает все узлы в порядке убывания уровня зон (от корневых зон), пока не получит положительный ответ или информацию о том, что запрашиваемый домен не существует. Но давайте оставим теорию и настроим свой рекурсор.

Читать далее
[Голосов: 0 Средний бал: 0]

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

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

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

Читать далее
[Голосов: 0 Средний бал: 0]

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
Читать далее
[Голосов: 0 Средний бал: 0]

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 файла, поэтому оставлять пустую строку или нет — ваше личное дело

[Голосов: 0 Средний бал: 0]