Есть ли способ настроить сервер OpenVPN так, чтобы он ограничивал клиентов, которые подключаются к нему, операционной системой?
В настоящее время мы используем сервер OpenVPN для подключения наших ноутбуков к нашим серверам на AWS (работающем в VPC). Один из наших клиентов попросил нас запретить доступ к VPN с мобильных устройств, поэтому мы хотим заблокировать клиентов Android, iOS и Windows Phone.
Используйте информацию об узле IV_PLAT и сценарий подключения (на сервере), чтобы отклонять подключения, если они используют неправильную ОС (выход с ненулевым значением)
Скопируйте / вставьте сюда для будущих поколений.
Добавьте следующие строки в файл конфигурации сервера basic-udp-server.conf:
script-security 2
client-connect /etc/openvpn/cookbook/example9-11.sh
Затем создайте сценарий подключения: /etc/openvpn/cookbook/example9-11.sh
#!/bin/bash
# Redirect the default gateway for all Android clients
if [ "x_${IV_PLAT}" = "x_android" ] then
echo "push "redirect-gateway def1" >> $1
fi
Вы можете изменить команду «echo» на «exit 99» или аналогичную, которая должна отключать клиента. (Я не пробовал.) И, очевидно, используйте разные имена для файла conf и скрипта!
OpenVPN делает передать информацию о клиенте на сервер через --push-peer-info
... клиентская ОС входит в число тех элементов, которые выдвигаются и теоретически могут использоваться для проверки соединения на основе ожидаемой / заблокированной клиентской ОС.
Пример журнала сервера:
Tue Dec 19 13:21:42 2017 us=348489 v3.rsa.anet.cli.lx64/x.4.232.194:51806 peer info: IV_PLAT=linux
Tue Dec 19 13:21:42 2017 us=348521 v3.rsa.anet.cli.lx64/x.4.232.194:51806 peer info: IV_PROTO=2
Tue Dec 19 13:21:42 2017 us=348551 v3.rsa.anet.cli.lx64/x.4.232.194:51806 peer info: IV_NCP=2
Tue Dec 19 13:21:42 2017 us=348580 v3.rsa.anet.cli.lx64/x.4.232.194:51806 peer info: IV_LZ4=1
Tue Dec 19 13:21:42 2017 us=348608 v3.rsa.anet.cli.lx64/x.4.232.194:51806 peer info: IV_LZ4v2=1
Tue Dec 19 13:21:42 2017 us=348636 v3.rsa.anet.cli.lx64/x.4.232.194:51806 peer info: IV_LZO=1
Поэтому, если у вас есть доступ к серверу OpenVPN, вы можете заблокировать там запросы, используя Пассивное снятие отпечатков пальцев ОС. и osf добавить ОС в белый список.
Я собираюсь написать это для Centos, поскольку именно тогда я его использовал. Вы устанавливаете приложение nfnl_osf, а затем базу данных сигнатур отпечатков пальцев из OpenBSD, чтобы помочь сопоставить машины.
yum -y install libpcap libpcap-devel iptables-utils
wget http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/etc/pf.os?rev=1.27 -O /usr/libexec/iptables/pf.os
nfnl_osf -f /usr/libexec/iptables/pf.os
После того, как мы установили их обе, мы импортируем базу данных в iptables, а затем запускаем следующие команды iptables, чтобы запустить проверку.
iptables -I INPUT -j ACCEPT -p udp --dport 1194 -m osf --genre Windows --log 2 --ttl 2
iptables -I INPUT -j ACCEPT -p udp --dport 1194 -m osf --genre Mac --log 2 --ttl 2
iptables -A INPUT -p udp --dport 1194 -j DROP
Надеюсь, это поможет!