Comments 32
Недурно) Но, думаю, после разрешения на выполнение скриптов, надо бы обратно вернуть к исходному состоянию — иначе теперь ПК уязвим на исполнение несанкционированных скриптиков.
Спасибо за комментарий, поправил
Есть нюанс, что скрипт может упасть в процессе работы и тогда executionpolicy не вернётся к исходному состоянию. Хотя вообще эта меру безопасности очень сомнительная.
Можно запускать так и не менять executionpolicy на машине:
powrshell -f "path\to\script.ps1" -executionpolicy bypass
альтернативно - можно закинуть rasphone.pbk с сертификатом (можно зашить в бинарь, можно sfx собрать..), ну или воспользоваться инструментом CMAK, тогда можно и кастомизировать окно подключения (например добавить телефон техподдержки). так же как и при создании пошиком, удобно сразу добавить маршруты для реализации split-tunnel, только ЕМНИП пошиком докидывание маршрутов работает начиная с вин10
1. Для создания впн соединения не всегда нужны админские права
2. СМАК вспотеешь собирать, проще PS скриптом.
3. Сертификат можно сразу в бинарном виде из скрипта добавлять локальному пользователю в реестр.
4. В любом случае логин и пароль в windows10 придется вводить руками или запускать так же из консоли "rasdial.exe vpn_name login password"
У меня в статье более расширено описано как подключаться через скрипт. https://habr.com/ru/post/693056/
Хотя смотрю она у тебя и так в закладках)
Это для раздела всего компьютера, раздел пользователя будет другой
# создаем ветку с названием сертификата 32323F22E9065D0157DE9B902020DA41A12B4E53
New-Item -Path HKLM:\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates -name 32323F22E9065D0157DE9B902020DA41A12B4E53 -Verbose -Force
# создаем раздел в созданной ветке. Файл бинарный, нужно добавить "0x" перед каждым байтом сертификата
New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\32323F22E9065D0157DE9B902020DA41A12B4E53 -Name Blob -PropertyType "Binary" -Value ([byte[]] (0x04,0x00,0x00,0x00, ..... ,
0x61,0xa4)) -Force -Verbose
как будто вводить руками пароль это что-то плохое :D мне чем нравится отдавать pbk - это просто файл забрали, двойным кликом запустили, подключились, также отключились. а с CMAK-ом было весело когда были популярны х86 десктопы. приходилось делать два CMAK-а, и опять же запихивать в автоустановщик с выбором разрядности системы.
сейчас практикую больше впн-ы без клиентских настроек-конфигов-прочих подпрыгиваний, вроде any\open connect
может у тебя kerberos проверка логина и пароля? У себя я коннект делаю теневым, без участия пользователя. Каждый комп со своими данными. Есть инет подключится, пропадет, будет долбится пока не подключится. В итоге пользователь не влияет на подключение
Мой вариант для дистанционной работы: выдал нуждающимся (благо, что их можно по пальцам одной руки пересчитать:) загрузочную флешку с кастомизированным образом LUbuntu. На рабочем столе всего 2 ярлыка: запуск ssh туннеля и rdp к серверу, там и там - с паролем. Запускается на чем угодно. Пользователи рады.
Повышаем привилегии до администратора:
После этого VPN соединения создаются в профиле администратора. А у пользователя, для которого и предназначался скрипт, их не будет.
Спасибо за статью ! Я тут семейную сетку конфигурирую с шарой на VPS, есть пара проблемных пользаков, понял что поправить !
Можно разрешать выполнение скрипта из скрипта?
А EXE-файлик как делать? Хотя-бы ссылку.
Повышаем привилегии до администратора
Зачем?
Set-ExecutionPolicy Unrestricted -Force
Опять же - зачем? Тем более в ситуации, когда вы это пишете ВНУТРИ скрипта, который планируете запускать (небезопасно и бессмысленно одновременно).
Out-File -FilePath "$env:HOMEPATH\vpn_cert.cer" -Encoding utf8
Зачем тут UTF-8? Формат файла сертификата в указанном виде - закодированный в base64 ASCII .
Зачем?
В конце возвращаем политику выполнения в дефолт
Зачем тут UTF-8?
Если честно, по другому кажется не получалось... давно это делал, но так же работает))? Спорить не буду, попробую. Спасибо за комментарий
В конце возвращаем политику выполнения в дефолт
А если у вас скрипт посреди исполнения прервется по любой причине (вылетит по ошибке, скажем), что будет? :)
А зачем вы вообще меняете политику, какой конкретно смысл несет эта команда у вас в скрипте?
Не надо заниматься шаманством, не понимая в точности, что делает та или иная команда в том или ином конкретном случае. Это в лучшем случае просто загромождает скрипт, в худшем - может привести к совершенно неожиданным для вас последствиям.
ну и было бы не дурно, раз у тебя так много пользователей, подумать над тем что у тебя уже есть такое соединение. В твоем скрипте оно не даст создаться и пользователь будет пытаться подключаться со старыми данными.
Нужна проверка, если такое соединение есть, то удалять его и создавать новое.
if (Get-VpnConnection -Name $vpn_name -AllUserConnection -ErrorAction Ignore -Verbose)
{ Remove-VpnConnection -Name $vpn_name -AllUserConnection -ErrorAction Ignore -Verbose -Force
# Удаляем сертификат
Remove-Item -Path HKLM:\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\32323F22E9065D0157DE9B902020DA41A12B4E53 -ErrorAction Ignore -Verbose
}
else {}
# дальше ниже создаем новое соединение
Так идея скрипта, однократно настроить соединение до компании на домашнем пк пользователя, запросив только логин и пароль
А я еще добавляю в аналогичный скрипт маршрутизацию. Типа:
$VPNconnectionL2TPDestPrefix = "192.168.6.0/24"
Add-VpnConnectionRoute -ConnectionName $VPNconnectionL2TP -DestinationPrefix $VPNconnectionL2TPDestPrefix
Понятно, что не во всех случаях это актуально, но у меня VPN для доступа только к рабочей подсети, а не к тому, чтобы через нее все тиктоки смотрели...
На основе этого всего и создаются трояны-шпионы. В фоновом процессе подобный скрипт следит за трафиком. Некоторые антивирусы считают подобные скрипты за угрозы, а не ВПН.
впны на личных компах это зло
Скрипт для настройки VPN на Power Shell