Шукати в цьому блозі

середу, 23 серпня 2023 р.

Поговоримо трохи про whois

Список AS що входять в as-set:

ASSET=AS-UKRHUB; whois -r ${ASSET} | awk '$1~/^members:/ && $2~/^AS[0-9]+/ { print $2 }'

AS які супроводжує mnt-by:

MNTBY=YZ42-RIPE-MNT; whois -r -i mnt-by ${MNTBY} -T aut-num | awk '$1~/^aut-num:/ { print $2 }'

Які IPv4-мережі анонсує AS?

AS=AS12593; whois -K -r -i origin ${AS} | awk '$1~/^route:$/ { print $2 }'

Які IPv6-мережі анонсує AS?

AS=AS12593; whois -K -r -i origin ${AS} | awk '$1~/^route6:$/ { print $2 }'

Отримати інформацію по організації AS:

AS=AS12593; whois -r $( whois -r ${AS} | awk '$1~/^org:$/ { print $2 }' )

Список діапазонів мереж які супроводжує mnt-by:

MNTBY=YZ42-RIPE-MNT; whois -r -i mnt-by ${MNTBY} -T inetnum | awk '$1~/^inetnum:$/ { print }'

Список IPv4-мережі які супроводжує mnt-by:

MNTBY=YZ42-RIPE-MNT; whois -r -i mnt-by ${MNTBY} -T route | awk '$1~/^route:$/ { print $2 }'

Список IPv6-мережі які супроводжує mnt-by:

MNTBY=YZ42-RIPE-MNT; whois -r -i mnt-by ${MNTBY} -T route6 | awk '$1~/^route6:$/ { print $2 }'

Список as-set які супроводжує mnt-by:

MNTBY=YZ42-RIPE-MNT; whois -r -i mnt-by ${MNTBY} -T as-set | awk '$1~/^as-set:/ { print $2 }'

AS по org:

ORG=ORG-SE1-RIPE; whois -r -i org ${ORG} -T aut-num

вівторок, 22 серпня 2023 р.

Клієнт DNS over HTTPS (DoH)

DNS over HTTPS (DoH) — це протокол для виконання DNS-запитів через протокол HTTPS. Надає певні переваги в захисті DNS-запитів. Якщо звичайний запит по 53/udp доволі легко перехопити і проаналізувати через, наприклад, Wireshark то з запитом через HTTPS цей "фокус" стає не таким вже й тривіальним. Mikrotik дозволяє нам налаштувати DNS over HTTPS (DoH) з тими чи іншими службами, наприклад з Google або Cloudflare.
Завантажуємо та імпортуємо сертифікат:
/tool fetch url=https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
/certificate import file-name=DigiCertGlobalRootCA.crt.pem passphrase=""
Далі, в DHCP-клієнті вимикаємо отримання DNS-серверів, наприклад, від провайдера, а також видаляємо використання будь-яких користувацьких налаштувань щодо DNS-серверів:
/ip dns set servers=""
/ip dhcp-client set [ find ] use-peer-dns=no
Ну й налаштовуємо DNS over HTTPS (DoH) для Google:
/ip dns set use-doh-server=https://8.8.8.8/dns-query verify-doh-cert=yes
або Cloudflare:
/ip dns set use-doh-server=https://1.1.1.1/dns-query verify-doh-cert=yes
Після цього можна скинути наявний кеш і перевірити, що DNS over HTTPS (DoH) працює:
/ip dns cache flush
/ping meta.ua count=4
/ip dns cache print without-paging

ovpn-файл до статті "Налаштування OpenVPN-сервера на Mikrotik"

Вступ

Нещодавно в статті Налаштування OpenVPN-сервера на Mikrotik (метод 2) було наведено вміст ovpn-файла, для OpenVPN-клієнта Windows/Linux, в той самий час в статті Налаштування OpenVPN-сервера на Mikrotik було розглянуто лише налаштування OpenVPN-клієнта в RouterOS. Спробуємо виправити ситуацію.

Експорт сертифікатів

Нарешті ми налаштували OpenVPN-сервер на Mikrotik і тепер хочемо роздати нашим клієнтам ovpn-файл, щоб вони підключалися до сервера.

Експортуємо ca та клієнтський сертифікати. Тут все просто:
/certificate export-certificate ca file-name=ca-v1 type=pem 
/certificate export-certificate ovpn-muter file-name=ovpn-client-v1 type=pem export-passphrase="passphrase"
Створюємо ovpn-файл
client
dev tun
remote <ip address or dns name of the ovpn server> 1194 tcp
nobind
persist-key
persist-tun
remote-cert-tls server
data-ciphers AES-256-CBC
cipher AES-256-CBC
auth-user-pass
auth SHA1
redirect-gateway def1
verb 1
<ca>
-----BEGIN CERTIFICATE-----
вставляємо вміст з експортованого файла ca-v1.crt
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
вставляємо вміст з експортованого файла ovpn-client-v1.crt
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
вставляємо вміст з експортованого файла ovpn-client-v1.key
-----END ENCRYPTED PRIVATE KEY-----
</key>

Налаштування OpenVPN-сервера на Mikrotik (метод 2)

Вступ

Вже був розповідав як налаштувати OpenVPN-сервер на Mikrotik (назвемо його - метод 1). В тому методі ми налаштували сервер де організували з кожним клієнтом point-to-point канал і маршрутизували трафік. Але подекуди нам зустрічаються локальні мережі в яких працює специфічний софт, який "не любить" маршрутизацію і чи зовсім не працює з нею, чи працює лише після танців з бубном. В таких випадках нам зможе допомогти другий метод налаштування OpenVPN-сервера, коли клієнт входить безпосередньо в бродкаст домен (bridge-інтерфейс) локальної мережі.

Сертифікати

В цьому другому методі нам теж треба згенерувати сертифікати, але з іншими правами. Якщо генерувати сертифікати в тими правами, що були у попередньому методі, нічого не буде працювати. Це важливо.

Генеруємо корневий сертифікат нашого "сертифікаційного центру":

/certificate add name=ca-v2 country="UA" state="KY" locality="Locality" organization="Organization" unit="Unit" common-name="ca-v2" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,crl-sign
/certificate sign ca-v2

Створюємо сертифікат та закритий ключ для OpenVPN-сервера:

/certificate add name=ovpn-server-v2 country="UA" state="KY" locality="Locality" organization="Organization" unit="OpenVPN-server-v2" common-name="ovpn-server-v2" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,data-encipherment,key-cert-sign,tls-server
/certificate sign ovpn-server-v2 ca=ca-v2

Генеруємо клієнтський сертифікат:

/certificate add name=ovpn-client-v2 country="UA" state="KY" locality="Locality" organization="Organization" unit="OpenVPN-client-v2" common-name="ovpn-client-v2" key-size=2048 days-valid=3650 key-usage=tls-client
/certificate sign ovpn-client-v2 ca=ca-v2

Сервер

З сертифікатами поки закінчили, тепер налаштуємо сам OpenVPN-сервер.

/ppp profile add bridge=bridge bridge-learning=yes local-address=192.168.0.1 name=profile-ovpn remote-address=default-dhcp use-ipv6=no
/interface ovpn-server server set auth=sha1 certificate=OVPN-server cipher=aes256 default-profile=profile-ovpn enabled=yes mode=ethernet require-client-certificate=yes

Тут важливо розуміти що на відміну від метода 1 тут ми вводимо клієнтів безпосередньо в бродкаст домен (bridge-інтерфейс) локальної мережі, відповідно для сервера вказуємо mode=ethernet, а в профілі використовуємо наявний для локальної мережі dhcp-діапазон адрес і локальним адресом вказуємо адресу на bridge-інтерфейсі.

Далі додаємо користувачів
/ppp secret add name=USERNAME password=PASSWORD profile=ovpn service=ovpn
та не забуваємо відкрити OpenVPN-сервер для доступу:
/ip firewall filter add action=accept chain=input dst-port=1194 protocol=tcp

Клієнт

Тепер давайте створимо ovpn-файл для OpenVPN-клієнта. Спочатку експортуємо ca та клієнтський сертифікати. Тут все просто:
/certificate export-certificate ca-v2 file-name=ca-v2 type=pem 
/certificate export-certificate ovpn-client-v2 file-name=ovpn-client-v2 type=pem export-passphrase="passphrase"
Важливо! Для клієнтського сертифіката необхіжно вказати бодай якусь passphrase, інакше не буде експортовано закритий ключ, а він нам необхідний.

Сам вміст ovpn-файла може бути приблизно таким.

client.ovpn:

client
dev tap
proto tcp
remote <ip address or dns name of the ovpn server> 1194
nobind
persist-key
persist-tun
remote-cert-tls server
data-ciphers AES-256-CBC
cipher AES-256-CBC
auth-user-pass
keepalive 10 120
verb 1
auth SHA1
<ca>
-----BEGIN CERTIFICATE-----
вставляємо вміст з експортованого файла ca-v2.crt
-----END CERTIFICATE-----
</ca>
-----BEGIN CERTIFICATE-----
вставляємо вміст з експортованого файла ovpn-client-v2.crt
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
вставляємо вміст з експортованого файла ovpn-client-v2.key
-----END ENCRYPTED PRIVATE KEY-----
</key>
Якщо OpenVPN-клієнт для Windows дозволяє запам'ятати введену passphrase та ім'я та пароль користувача то для Linux такої можливості немає, але в сам ovpn-файл можна додати опції:
auth-user-pass auth.cfg
askpass store.pass
а в самих файлах розмістити, відповідно, ім'я користувача з паролем та passphrase.

auth.cfg:

USERNAME
PASSWORD

store.pass:

passphrase
Ось і все, щодо метода 2.