Категорії
Misc, staff, other WWW

[nginx] ssl multidomain сертифікат

В деяких випадках хочеться обійтися однією конфігурацією nginx для багатьох сайтів. Але у випадку з SSL це не завжди можливо. Починаючи з 1.15.9 можна використовувати змінні для задання сертифікатів.

map $ssl_server_name $domain {
 default $ssl_server_name;
 ~(([^\.]+)\.([^\.]+))$ $1;
}

server {
 listen 443 ssl http2 default_server;
 listen [::]:443 ssl http2 default_server;
 server_name _;

 add_header Content-Type text/html;
 return 200 "domain: $domain, document_root: $document_root, request_uri: $request_uri";

 ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem; 
 ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem; 
}

Дана конструкція буде працювати, якщо у вас один і той же SSL issuer, SSL chain. Так, в документації nginx сказано

Only OpenSSL 1.0.2 or higher supports separate certificate chains for different certificates. With older versions, only one certificate chain can be used.

але по факту не працює.

Категорії
Linux Routers, GW, Internet

PPTP и передача маршрутів windows кліенту

Як відомо, pptp не вміє базово передавати маршрути при підключенні до VPN серверу. Але, можна піти хитріше і спробувати деякі опції з DHCP протоколу, а саме

option ms-classless-routes code 249 = array of unsigned integer 8; 
option rfc3442-classless-routes code 121 = array of unsigned integer 8; 

Чому треба передавати обидві опції? Бо microsoft заміть 121 (яка і була для цього зроблена згідно RFC) використовувала (до Windows XP/2003 включно; всі новіші вже розуміють 121, але перевагу віддають 249) свою, власну – 249.

Категорії
FreeBSD Linux Misc, staff, other Solaris

[ZFS] Import broken pool

Маємо наступну ситуацію:

root@solaris:~# zpool import -f -N -F 9663859789121603598 sata_pool
cannot import 'rpool' as 'sata_pool': one or more devices is currently unavailable
root@solaris:~# zpool import -f -N -F -o readonly=on 9663859789121603598 sata_pool
cannot import 'rpool' as 'sata_pool': one or more devices is currently unavailable
root@solaris:~# zpool import
    pool: rpool
      id: 9663859789121603598
   state: UNAVAIL
  status: One or more devices are missing.  There are insufficient
        replicas for the pool to continue functioning.
  action: The pool cannot be imported. Connect the missing
        device(s) and try again.
     see: http://support.oracle.com/msg/ZFS-8000-6X
    scan: resilvered 33.2G in 9m23s with 0 errors on Fri Oct  3 10:17:14 2025
  config:
 
        NAME        STATE
        root        UNAVAIL
          mirror-0  DEGRADED
            c1t1d0  ONLINE
            c1t0d0  UNAVAIL

Категорії
FreeBSD Misc, staff, other

[FreeBSD] Швидко збираємо ядро

В даній статті розкажу про деякі методи швидкого збирання чи перезбирання ядра.

Типове збирання ядра виконується командою

$ make buildkernel

Ця команда не лише збирає ядро, а і ще перезбирає всі модулі, які входять у GENERIC (або у custom kernel, якщо вказана опція KERNCONF=MYKERNEL).

Категорії
Misc, staff, other Security Windows

Неочевидна проблема з SSL сертифікатом

Є сервер під windows і є центр сертифікації у них в організації і треба було просто перевипустити сертифікат для одного із сервісів. Нічого складного, але щось пішло не так і браузери постійно скаржилися на SSL-зʼєднання.
В першу чергу перевірив чи новий сертифікат підписаний саме тим CA, який у них:

openssl verify -verbose -CAfile ca_ad.crt newcrt.crt 

client

            X509v3 Authority Key Identifier: 
                5A:E5:8A:6D:B0:93:BF:58:8C:88:06:B4:28:99:05:13:4F:1A:B6:9F

ca
            X509v3 Subject Key Identifier: 
                5A:E5:8A:6D:B0:93:BF:58:8C:88:06:B4:28:99:05:13:4F:1A:B6:9F

Все збігається, йдемо далі. Перевіримо, що скаже curl, якщо йому примусово підсунути ще наш CA:

> curl.exe -I --cacert root-ca-chain.pem https://zabbix.domain.local
curl: (60) SSL: no alternative certificate subject name matches target hostname 'zabbix.domain.local'

І тут все стало на свої місця: домен був лише в Subject Common Name (CN) і не було в Subject Alternative Name (SAN) , а оскільки зараз майже ніхто не “дивиться” в CN, то маємо проблему. Доречі, саме це і збило з пантелику системного адміністратора, оскільки він бачив домен в CN, але не очікував, що треба, щоб домен був саме в SAN полі. Після правильної генерації сертифіката все запрацювало, як треба.

Тобто, резюмуючи, якщо генеруєте SSL-сертифікат то обовʼязково вказуйте все в SAN, навіть те, що ВЖЕ вказали в CN.

Категорії
Linux Mikrotik Misc, staff, other Routers, GW, Internet

TTL shift для файерволів

Це потрібно для того, що приховати наявність хопа/роутера від таких команд, як traceroute. Але, це доступно не у всіх файерволах, а тільки в деяких.

iptables

iptables -t mangle -А PREROUTING -i eth0 -J TTL --ttl-inc 1

mikrotik

[admin@MikroTik] /ip/firewall/mangle> add chain=prerouting action=change-ttl new-ttl=incrernent:1 passthrough=yes in-interface=\ log=no log-prefix=""
Категорії
Misc, staff, other

socket dump

Як же дивитися трафік, якщо зʼєднання йде через unix socket? Нижче ми розглянемо деякі методи вирішення цього питання.

socat

Тут ідея проста: дублюємо весь трафік на tcp socket і далі вже через tcpdump дивимося:

socat -v UNIX-LISTEN:/path/to/some.sock,fork TCP-CONNECT:127.0.0.1:8090

Категорії
FreeBSD Misc, staff, other

[FreeBSD] Перезапуск xhci

Якщо у вас відпав xhci і немає можливості перезавантажити сервер, то є 2 варіанти, як це зробити (не мої, знайшов у мережі інтернет)

Варіант 1

# grep xhci /var/run/dmesg.boot | grep pci
xhci0: <Intel Lynx Point USB 3.0 controller> mem 0xf7d00000-0xf7d0ffff irq 21 at device 20.0 on pci0
xhci0: <Intel Lynx Point USB 3.0 controller> mem 0xf7d00000-0xf7d0ffff irq 21 at device 20.0 on pci0
# devctl suspend pci0
# devctl reset pci0
# devctl resume pci0

Варіант 2

# pciconf -lv | grep -B 2 xhci
    class      = display
    subclass   = VGA
xhci0@pci0:0:20:0:      class=0x0c0330 rev=0x05 hdr=0x00 vendor=0x8086 device=0x8c31 subvendor=0x1043 subdevice=0x8534
# pciconf -f -r 0:20:0

Категорії
Mikrotik

[Mikrotik] OpenVPN + TLS

Нарешті! В mikrotik в OpenVPN можна використовувати TLS auth. Це можливо лише починаючи з версії 7.17rc3.

Щоб це спрацювало, треба імпортувати конфіг openvpn як один файл, всередині якого будуть і ключі і сертифікати. А також, є один нюанс, про який не пишуть в документації – треба в самому початку конфігу вказувати, що це client, інакше буде помилка:

Категорії
Misc, staff, other

Оновлюємо graphite

Я буду оновлювати звʼязку з версії 0.9.15 (python-2.7) на 1.1.10 (python-3.11). Нову версію буду піднімати у python venv, щоб потім було легше переносити.

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP