В статье – Установка маршрутизатора pfSense в Hyper-V мы настроили маршрутизатор pfSense для работы в частной сети. Сегодня мы настроим Windows Server для работы в этой сети используя только командную строку PowerShell.
Запустим PowerShell из-под администратора.
Командлет Invoke-WebRequest в PowerShell — удобный инструмент для отправки HTTP-запросов на веб-сайты. Если вы уже пользуетесь прокси-сервисами Bright Data, вы можете использовать этот командлет с прокси-сервером, указав параметр -Proxy, а затем сведения о прокси-сервере.
4 min read
Ознакомившись с этим руководством по прокси-серверу Invoke-WebRequest PowerShell, вы узнаете:
Давайте узнаем подробности!
Эта статья посвящена основам управления настройками и правилами встроенного Windows Defender Firewall из командной строки PowerShell. Мы рассмотрим, как включать/отключать брандмауэр для различных профилей, создавать, редактировать и удалять правила, экспортировать/импортировать правила Windows Firewall с помощью PowerShell.
Для управления настройками Windows Firewall обычно используется отдельная графическая MMC оснастка
wf.msc
(Control Panel -> System and Security -> Windows Defender Firewall -> Advanced settings). Большинство операций по настройке и управлению параметрами Windows Firewall можно выполнять из командной строки PowerShell. Для этого, начиная с версии Windows PowerShell 5.1, можно использовать встроенный модуль NetSecurity
Полный список командетов в модуле NetSecurity можно вывести с помощью команды:
Get-Command -Module NetSecurity
Раньше для управления правилами и настройками Брандмауэра Windows использовалась команда
netsh advfirewall firewall
.
Что такое PowerShell Invoke-WebRequest?
Invoke-WebRequest — это командлет PowerShell для отправки запросов HTTP, HTTPS и FTP веб-серверам и веб-службам. По умолчанию он автоматически анализирует ответ, полученный от сервера, и возвращает подборки форм, ссылок, изображений и других важных элементов HTML.
Обычно он используется для доступа к интерфейсам REST API, загрузки файлов из Интернета или взаимодействия с веб-службами. Ниже приведен базовый синтаксис запроса Invoke-WebRequest:
Invoke-WebRequest [-Uri] <Uri> [-Method <WebRequestMethod>] [-Headers <IDictionary>] [-Body <Object>]
Ключевые параметры, которые следует запомнить:
- – Uri: URI веб-ресурса, на который отправлен запрос.
- – Method: HTTP-метод для использования в запросе (например, GET, POST, PUT, DELETE). Invoke-WebRequest по умолчанию отправляет запросы GET.
- – Headers — дополнительные HTTP-заголовки, которые необходимо включить в запрос.
- – Body — тело запроса для отправки на сервер.
Как видите, единственный обязательный аргумент — это
Invoke-WebRequest <Uri>
Этот командлет был добавлен в PowerShell 3.0 в 2012 году.
Для онлайн тестирования скорости интернета существуют большое количество онлайн-сервисов. Если вам нужно периодически собирать метрики скорости Интернет-подключения от провайдера для системы мониторинга, можно воспользоваться широко известной консольный клиент Speedtest от Ookla. В этой статье, мы рассмотрим, как измерить скорость Интернет-подключения из командной строки Windows (скрипта PowerShell).
Чтобы автоматически протестировать скорость скачивания/загрузки сети до ближайшей к вам локации с сервисом Speedtest, выполните команду:
Утилита вернет скорость скачивания, загрузки (в Мбит/с), сетевые задержки с вашего компьютера до ближайшего сервера Speedtest. Если сервер расположен близко к вам (а их действительно очень много), условно это и будет вашей скоростью Интернета.
Можно вручную выбрать провайдера, страну и город с сервером Speedtest, до которого нужно тестировать подключение. Выведите список ближайших точек и скопируйте ID:
Выполнить тестирование до выбранного сервера:
.\speedtest.exe -s 37149
Утилита speedtest позволяет возвращать результаты в структурированных форматах (CSV, JSON, TSV), что удобно, когда вам нужно дополнительно извлечь данные из результатов или отправить результату проверки в систему мониторинга.
Например, чтобы получить результаты тестирования скорости Интернета из скрипта PowerShell:
$speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" --accept-license -s 37149 -f json
Вы можете передать результаты тестировании скорости интернета в виде метрик в вашу систему мониторинга (как получить данные в Zabbix из PowerShell скрипта).
В локальной сети можно протестировать пропускную способность сети между двумя машинами можно с помощью утилиты iperf.
Предварительные требования для начала работы с прокси-сервером в PowerShell
Чтобы начать использовать прокси-сервер PowerShell с Invoke-WebRequest, вам необходимо понять, как выглядит URL-адрес прокси-сервера.
Вот URL-адрес прокси-сервера PowerShell Invoke-WebRequest:
<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]
Он включает следующее:
— протокол, используемый для подключения к прокси-серверу. — IP-адрес или URL-адрес имени хоста прокси-сервера. — номер порта, который прослушивает прокси-сервер. — необязательное имя пользователя, которое нужна указать, когда требуется аутентификация на прокси-сервере. — необязательный пароль, который нужно указать, когда требуется аутентификация на прокси-сервере.
Обратите внимание, что часть URL-адреса
Invoke-WebRequest: эта операция не поддерживается для относительного URI.
Что касается протоколов прокси-серверов, то наиболее популярными являются HTTP, HTTPS и SOCKS. В PowerShell 5.1 Invoke-WebRequest поддерживает только HTTP, а в PowerShell 7.x — также HTTPS и SOCKS.
Пора получить действительный прокси-сервер HTTP!
Вы можете найти его бесплатно в Интернете, как показано ниже:
Protocol: HTTP; IP Address: 190.6.23.219; Port: 999
Подготовьте эту информацию, чтобы получить следующий URL-адрес прокси-сервера:
http://190.6.23.219:999
Предупреждение
Бесплатные прокси-серверы можно использовать для обучения, но вы не можете полагаться на них в реальных ситуациях. Бесплатные прокси-серверы ненадежны, подвержены ошибкам, медленны, существенно ограничивают объем передаваемых данных и недолговечны. Не используйте их!
Каково решение? Прокси-серверы премиум-класса от Bright Data — лучшего поставщика данных услуг на рынке. Подпишитесь и попробуйте наши надежные прокси-серверы бесплатно.
http://admin-4521:@rUuH3tJqf45.103.203.109:9571
Есть файл SubnetForm.ps1 в котором следующий код:
$ipStart = "10.62.39.1"
$ipEnd = "10.62.39.3"
Connect-DB
for ($x = $ipStart; $x -le $ipEnd; $x++)
{
$ip = ([System.Net.IPAddress]$x).GetAddressBytes()
[Array]::Reverse($ip)
$ip = $ip -join '.'
$commandDB = "INSERT INTO public.ip_addresses (ip_range) VALUES ('$ip'::inet);"
Write-Host $commandDB
Insert-DB -commandDB $commandDB
}
Есть второй файл в котором имеется функция соединения с БД и записи в БД:
# функция соединения с БД
function Connect-DB
{
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[string]$dbServer = 'localhost',
[string]$dbName = 'postgres',
[string]$dbUser = 'postgres',
[string]$dbPass = 'postgres',
[string]$port = '5432'
)
$connect = "Driver={PostgreSQL UNICODE(x64)};Server=$dbServer;Port=$port;Database=$dbName;Uid=$dbUser;Pwd=$dbPass;"
$cnDB = New-Object System.Data.Odbc.OdbcConnection($connect)
$dsDB = New-Object System.Data.DataSet
$cnDB.Open()
}
function Insert-DB
{
[CmdletBinding()]
param (
$commandDB
)
$adDB = New-Object System.Data.Odbc.OdbcDataAdapter
$adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand($commandDB, $cnDB)
$adDB.Fill($dsDB) | out-null
}
При запуске кода появляются ошибки:
INSERT INTO public.ip_addresses (ip_range) VALUES ('10.62.39.1'::inet);
ERROR: Обнаружено несколько неоднозначных перегрузок для "Fill", число аргументов: "1".
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:430 знак:3
ERROR: + $adDB.Fill($dsDB) | out-null
ERROR: + ____________________________
ERROR: + CategoryInfo : NotSpecified: (:) [], MethodException
ERROR: + FullyQualifiedErrorId : MethodCountCouldNotFindBest
ERROR:
INSERT INTO public.ip_addresses (ip_range) VALUES ('10.62.39.2'::inet);
ERROR: Обнаружено несколько неоднозначных перегрузок для "Fill", число аргументов: "1".
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:430 знак:3
ERROR: + $adDB.Fill($dsDB) | out-null
ERROR: + ____________________________
ERROR: + CategoryInfo : NotSpecified: (:) [], MethodException
ERROR: + FullyQualifiedErrorId : MethodCountCouldNotFindBest
ERROR:
INSERT INTO public.ip_addresses (ip_range) VALUES ('10.62.39.3'::inet);
ERROR: Обнаружено несколько неоднозначных перегрузок для "Fill", число аргументов: "1".
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:430 знак:3
ERROR: + $adDB.Fill($dsDB) | out-null
ERROR: + ____________________________
ERROR: + CategoryInfo : NotSpecified: (:) [], MethodException
ERROR: + FullyQualifiedErrorId : MethodCountCouldNotFindBest
- Posters
- 6 Сообщений:
Отправлено 07 Январь 2024 – 03:48
07.01.2024 3:19 SpIDer Guard Обнаружена угроза Объект: powershell.exe Угроза: DPC:PowerShell.AVKill.10 Действие: Не обезврежено Путь: \PROC\CMDLINE\10328\powershell.exe
- 3 140 Сообщений:
Отправлено 07 Январь 2024 – 03:48
1. Если Вы подозреваете у себя на компьютере вирусную активность и хотите получить помощь в этом разделе,
Вам необходимо кроме описания проблемы приложить к письму логи работы двух программ – сканера Dr. Web (или CureIt!, если антивирус Dr. Web не установлен на Вашем ПК), DrWeb SysInfo. Дождитесь окончания работы сканера Dr. Web или CureIt!, прежде, чем запускать DrWeb SysInfo. Без логов помочь Вам не сможет даже самый квалифицированный специалист. Так как логи могут иметь большой объём, превышающий ограничения форума, то рекомендуем закачать их на какой-нибудь файлообменник, а на форуме указать ссылку.
2. Если у Вас зашифрованы файлы,
Внимание! Услуга по расшифровке файлов предоставляется только лицензионным пользователям продуктов Dr.Web, у которых на момент заражения была установлена актуальная коммерческая лицензия Dr.Web Security Space или Dr.Web Enterprise Security Suite.
Что НЕ нужно делать:
– лечить и удалять найденные антивирусом вирусы в автоматическом режиме или самостоятельно. Можно переместить всё найденное в карантин, а после спросить специалистов или не предпринимать никаких действий, а просто сообщить название найденных вирусов;
– переустанавливать операционную систему;
– менять расширение у зашифрованных файлов;
– очищать папки с временными файлами, а также историю браузера;
– использовать самостоятельно без консультации с вирусным аналитиком Dr. Web дешифраторы из “Аптечки сисадмина” Dr. Web;
– использовать дешифраторы рекомендуемые в других темах с аналогичной проблемой.
- Posters
- 6 Сообщений:
Отправлено 07 Январь 2024 – 04:28
- 3 648 Сообщений:
Отправлено 07 Январь 2024 – 14:44
Во-первых, судя по логам, вы подхватили банковского трояна.
Во-вторых, powershell (который вносит все *.exe в исключения штатного антивируса Windows Defender) стартует из \Windows\System32\dialer.exe (который, возможно, подменен).
Сообщите дату создания и размер этого файла, а также проверьте его на VirusTotal.
- Posters
- 959 Сообщений:
Отправлено 07 Январь 2024 – 16:08
Лог сканера Dr. Web сделайте.
После перезагрузки в 3:21 Угроза: DPC:PowerShell.AVKill.10 больше не обнаруживается?
- Posters
- 6 Сообщений:
Отправлено 07 Январь 2024 – 17:20
Лог сканера Dr. Web сделайте.
После перезагрузки в 3:21 Угроза: DPC:PowerShell.AVKill.10 больше не обнаруживается?
Доброго времени суток, 1) где взять лог после работы dr web
2) Да, после скана и перезагрузки AVKILL.10 исчез
- Posters
- 6 Сообщений:
Отправлено 07 Январь 2024 – 18:38
Во-первых, судя по логам, вы подхватили банковского трояна.
Во-вторых, powershell (который вносит все *.exe в исключения штатного антивируса Windows Defender) стартует из \Windows\System32\dialer.exe (который, возможно, подменен).
Сообщите дату создания и размер этого файла, а также проверьте его на VirusTotal.
Дата создания dialer.exe 07.12.2019 в 12.09. Размер: 39 кб
- Posters
- 959 Сообщений:
Отправлено 07 Январь 2024 – 19:40
где взять лог после работы dr web
- Posters
- 6 Сообщений:
Отправлено 07 Январь 2024 – 21:19
- 1 382 Сообщений:
Отправлено 08 Январь 2024 – 22:54
Во-первых, судя по логам, вы подхватили банковского трояна.
Во-вторых, powershell (который вносит все *.exe в исключения штатного антивируса Windows Defender) стартует из \Windows\System32\dialer.exe (который, возможно, подменен).
Сообщите дату создания и размер этого файла, а также проверьте его на VirusTotal.
Файл на диске там родной, в процессе работает заинжекченный код трояна.
- Posters
- 6 Сообщений:
Отправлено 09 Январь 2024 – 00:45
- 1 382 Сообщений:
Отправлено 09 Январь 2024 – 01:52
Комп перезагрузите. Именно перезагрузка, а не выключить/включить.
Вы там 11.12.2023 KMS активатор качали, видимо для активации офиса. Откуда качали не подскажите? И сам файл/архив активатора закиньте на vms.drweb.com/sendvirus/ . Как получите письмо с номером тикета, напишите здесь.
Сообщение было изменено Ivan Korolev: 09 Январь 2024 – 01:56
- Members
- 1 Сообщений:
Отправлено 03 Апрель 2024 – 00:51
Добрый день, столкнулся с той же проблемой. после скана и перегрузки аквилл исчез. Подскажите, как решили эту проблему?
- 12 900 Сообщений:
Keep yourself alive
Отправлено 03 Апрель 2024 – 01:06
ridcoyer, создайте свою тему и приложите логи. Здесь уже всё решено.
Установка Invoke-WebRequest
Чтобы использовать Invoke-WebRequest, вам понадобится PowerShell. Итак, давайте узнаем, как установить PowerShell и получить доступ к командлету Invoke-WebRequest!
Windows
Во-первых, вы должны понять, что Windows PowerShell и PowerShell — это две разных программы. Windows PowerShell — это версия PowerShell, поставляемая вместе с Windows, и ее последняя версия — 5.1. Windows PowerShell содержит командлет Invoke-WebRequest. Это означает, что если вы используете современную версию Windows, вы готовы сразу же приступить к делу! При наличии более старых версий следуйте указаниям в официальном руководстве по установке PowerShell.
В то же время некоторые функции Invoke-WebRequest доступны только в версии PowerShell 7.x и более поздних версиях. Дополнительные сведения о том, как установить PowerShell 7.x, приводятся в официальном руководстве по миграции с Windows PowerShell 5.1 на PowerShell 7. Обратите внимание, что PowerShell 7.x устанавливается в новый каталог и работает параллельно с Windows PowerShell 5.1.
Вы можете узнать, какая версия PowerShell установлена на вашем компьютере под управлением ОС Windows, с помощью следующей команды:
$PSVersionTable
В PowerShell 7.x нужно ввести что-то вроде этого:
PSVersion 7.4.1
PSEdition Core
GitCommitId 7.4.1
OS Microsoft Windows 10.0.22631
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
macOS и Linux
Удаляем все ip-адреса через командную строку
Очистим все уже установленные адреса, если они есть:
Remove-NetIPAddress -InterfaceIndex 12 -AsJob
Remove-NetRoute -AsJob
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses (127.0.0.1)
ipconfig /all
Настройка протокола IP для Windows
Имя компьютера . . . . . . . . . : sd-server-1
Основной DNS-суффикс . . . . . . : soft.altuninvv.ru
Тип узла. . . . . . . . . . . . . : Гибридный
IP-маршрутизация включена . . . . : Нет
WINS-прокси включен . . . . . . . : Нет
Порядок просмотра суффиксов DNS . : soft.altuninvv.ru
Ethernet adapter Ethernet:
DNS-суффикс подключения . . . . . :
Описание. . . . . . . . . . . . . : Сетевой адаптер Hyper-V (Майкрософт)
Физический адрес. . . . . . . . . : 00-15-5D-01-28-02
DHCP включен. . . . . . . . . . . : Нет
Автонастройка включена. . . . . . : Да
Автонастройка IPv4-адреса . . . . : 169.254.97.43(Основной)
Маска подсети . . . . . . . . . . : 255.255.0.0
Основной шлюз. . . . . . . . . :
DNS-серверы. . . . . . . . . . . : 127.0.0.1
NetBios через TCP/IP. . . . . . . . : Включен
Туннельный адаптер isatap.{0694B4DA-F8D3-456C-B0E2-2A1269DE1267}:
Состояние среды. . . . . . . . : Среда передачи недоступна.
DNS-суффикс подключения . . . . . :
Описание. . . . . . . . . . . . . : Адаптер Microsoft ISATAP
Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
DHCP включен. . . . . . . . . . . : Нет
Автонастройка включена. . . . . . : Да
Настройки сети сброшены!
Как указать прокси-сервер HTTP в Invoke-WebRequest
Прежде чем начать, запустите следующую команду в PowerShell:
Invoke-WebRequest "https://httpbin.org/ip"
That should print something like:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "194.34.233.12"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 32
Content-Type: application/json
Date: Thu, 01 Feb 2024 10:46:14 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 32]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 32
Если вы хотите получить доступ только к полю «Контент», вы можете сделать это следующим образом:
$response = Invoke-WebRequest "https://httpbin.org/ip"
$response.Content
This would print:
{
"origin": "194.34.233.12"
}
Использование параметра командной строки
Invoke-WebRequest предлагает флаг -Proxy для указания URL-адреса прокси-сервера для запроса.
Итак, синтаксис использования Invoke-WebRequest на прокси-сервере выглядит следующим образом:
Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>
Если теперь вы выполните эту команду PowerShell:
Invoke-WebRequest -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"
Invoke-WebRequest -Uri "http://httpbin.org/ip" -Proxy "http://brd.superproxy.io:22225" -ProxyCredential (New-Object System.Management.Automation.PSCredential("brd-customer-CUSTOMER_ID-zone-ZONE’S_NAME", ("ZONE’S_PASSWORD" | ConvertTo-SecureString -AsPlainText -Force)))
The result should be:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "190.6.23.219"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 31
Content-Type: application/json
Date: Thu, 01 Feb 2024 12:36:56 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 31]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 31
Примечание: не забывайте, что бесплатные прокси-серверы недолговечны! К тому времени, когда вы прочитаете это руководство, маловероятно, что вышеуказанный сервер все еще будет работать. В случае ошибки замените его новым прокси-сервером.
Использование переменных окружения
Начиная с версии PowerShell 7.0, Invoke-WebRequest поддерживает конфигурацию прокси-сервера с помощью переменных окружения.
Таким образом, другой способ использования прокси-сервера PowerShell в Invoke-WebRequest заключается в установке следующих двух окружений:
- HTTP_PROXY — это URL-адрес прокси-сервера, используемый для HTTP-запросов;
- HTTPS_PROXY — это URL-адрес прокси-сервера, используемый для HTTPS-запросов.
В Windows можно задать две переменные окружения, используя следующий синтаксис PowerShell:
$env:HTTP_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:HTTPS_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
В нашем примере команды будут выглядеть следующим образом:
$env:HTTP_PROXY = "http://190.6.23.219:999"
$env:HTTPS_PROXY = "http://190.6.23.219:999"
В macOS и Linux вам необходимо использовать следующий синтаксис:
export HTTP_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export HTTPS_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Итак, две команды будут следующими:
export http_proxy="http://190.6.23.219:999"
export https_proxy="http://190.6.23.219:999"
Отныне каждый запрос Invoke-WebRequest будет проходить через указанные прокси-серверы без необходимости добавлять опцию -Proxy. После настройки envs запустите следующую команду:
Invoke-WebRequest "https://httpbin.org/ip"
You will get the same result as before:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "190.6.23.219"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 31
Content-Type: application/json
Date: Thu, 01 Feb 2024 12:36:56 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 31]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 31
Чтобы отключить прокси-серверы Invoke-WebRequest, отключите переменные окружения с помощью:
$env:HTTP_PROXY = ""
$env:HTTPS_PROXY = ""
Or on macOS and Linux:
unset HTTP_PROXY
unset HTTPS_PROXY
Создать новое правило Windows Firewall
Для управления правилами брандмауэра используются 9 командлетов:
- New-NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Enable-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Rename-NetFirewallRule
- Set-NetFirewallRule
- Show-NetFirewallRule
Рассмотрим несколько простых примеров открытия портов в Windows Firewall.
Например, вы хотите разрешить входящие TCP подключения на порты 80 и 443 для профилей Domain и Private. Воспользуйтесь такой командой:
Вы можете разрешить или заблокировать трафик для конкретной программы. Например, вы хотите заблокировать исходящие соединения для FireFox:
Разрешим входящее RDP подключение по стандартному порту TCP\3389 только с одного IP адреса:
New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.1.55 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
Чтобы разрешить ICMP ping для адресов из указанных диапазонов IP адресов и подсети, используйте команды:
New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
Добавить в правило файервола список IP адресов из текстового файла (по одному IP в строке):
В предыдущей статье мы показывали как с помощью PowerShell можно заблокировать доступ к сайтам не только по IP адресу, но и по DNS имени домена/сайта.
Разрешить все входящие подключения с указанного IP адреса (добавить адрес в белый список):
$IP = '192.168.1.20'
New-NetFirewallRule -DisplayName "Allow $IP" -Direction Inbound -Action Allow -RemoteAddress $IP
Изменить правило Windows Firewall с помощью PowerShell
Чтобы отредактировать правило брандмауэра, используется командлет Set-NetFirewallRule. Например, вы хотите разрешить входящие подключения с указанного IP адреса для ранее созданного правила:
Если нужно добавить в правило файервола несколько IP адресов, используйте такой скрипт:
Вывести все IP адреса, которые содержатся в правиле брандмауэра:
Удалить один IP адрес из правила:
Отключаем IPv6 через командную строку
Get-NetAdapterBinding -ComponentID 'ms_tcpip6'
Name DisplayName ComponentID Enabled
---- ----------- ----------- -------
Ethernet Протокол Интернета версии 6 (TCP/IPv6) ms_tcpip6 True
Get-NetAdapterBinding -ComponentID ‘ms_tcpip6’ | Disable-NetAdapterBinding -ComponentID ‘ms_tcpip6’ -PassThru
Проверим еще раз:
Get-NetAdapterBinding -ComponentID 'ms_tcpip6'
Name DisplayName ComponentID Enabled
---- ----------- ----------- -------
Ethernet Протокол Интернета версии 6 (TCP/IPv6) ms_tcpip6 False
IPv6 отключен на сервере.
Отключаем DHCP-клиент на интерфейсе через командную строку
Get-NetIPConfiguration -Detailed
ComputerName : SD-SERVER-1
InterfaceAlias : Ethernet
InterfaceIndex : 12
InterfaceDescription : Сетевой адаптер Hyper-V (Майкрософт)
NetAdapter.LinkLayerAddress : 00-15-5D-01-28-02
NetAdapter.Status : Up
NetProfile.Name : soft.altuninvv.ru
NetProfile.NetworkCategory : DomainAuthenticated
NetProfile.IPv6Connectivity : NoTraffic
NetProfile.IPv4Connectivity : LocalNetwork
IPv4Address : 192.168.1.39
IPv4DefaultGateway : 192.168.1.1
NetIPv4Interface.NlMTU : 1500
NetIPv4Interface.DHCP : Enabled
DNSServer : 127.0.0.1
NetIPv4Interface.DHCP : Enabled
Указывает что DHCP-клиент включен на интерфейсе.
Отключим DHCP, для этого нам нужен индекс интерфейса:
InterfaceIndex : 12
Set-NetIPInterface -ifIndex 12 -Dhcp Disabled
Какой прокси-сервер PowerShell следует использовать?
Ответ на этот вопрос меняется в зависимости от того, чего вы хотите достичь с помощью запроса Invoke-WebRequest. Чтобы найти подходящий прокси-сервер PowerShell для ваших нужд, ознакомьтесь с различными типами доступных прокси-серверов:
- Прокси-серверы центров обработки данных: они быстрые и дешевые, но сайты могут легко обнаружить и заблокировать их из-за их идентифицируемых диапазонов IP-адресов.
- Резидентные прокси-серверы: они предлагают ротацию подлинных IP-адресов с реальных устройств в определенных местах. Это означает, что они могут гарантировать высокий уровень анонимности. Резидентные прокси-серверы идеально подходят для доступа к сайтам, использующим географические ограничения, или для обхода мер по борьбе с ботами.
- Прокси-серверы интернет-провайдеров (ISP): они безопасны, быстры и очень надежны, поскольку предоставляют статические IP-адреса устройств, зарегистрированных у интернет-провайдеров. Прокси-серверы ISP также называют резидентными статическими прокси-серверами, и они являются идеальным решением для мониторинга оптимизации поисковых систем (SEO) и исследования рынка.
- Мобильные прокси-серверы: они предоставляют IP-адреса с реальных мобильных устройств для обеспечения высокого уровня анонимности. Они полезны для доступа к приложениям, сайтам или контенту, специально разработанному для мобильных устройств.
Установка статического адреса
Выполним в консоли:
Get-NetAdapter -ifIndex 12 | New-NetIPAddress –IPAddress 172.16.0.1 -DefaultGateway 172.16.0.254 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses (172.16.0.254)
Проверим настройки сети:
ipconfig /all
Настройка протокола IP для Windows
Имя компьютера . . . . . . . . . : sd-server-1
Основной DNS-суффикс . . . . . . : soft.altuninvv.ru
Тип узла. . . . . . . . . . . . . : Гибридный
IP-маршрутизация включена . . . . : Нет
WINS-прокси включен . . . . . . . : Нет
Порядок просмотра суффиксов DNS . : soft.altuninvv.ru
Ethernet adapter Ethernet:
DNS-суффикс подключения . . . . . :
Описание. . . . . . . . . . . . . : Сетевой адаптер Hyper-V (Майкрософт)
Физический адрес. . . . . . . . . : 00-15-5D-01-28-02
DHCP включен. . . . . . . . . . . : Нет
Автонастройка включена. . . . . . : Да
IPv4-адрес. . . . . . . . . . . . : 172.16.0.1(Основной)
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз. . . . . . . . . : 172.16.0.254
NetBios через TCP/IP. . . . . . . . : Включен
Проверим доступность шлюза:
ping 172.16.0.254
Обмен пакетами с 172.16.0.254 по с 32 байтами данных:
Ответ от 172.16.0.254: число байт=32 время<1мс TTL=64
Ответ от 172.16.0.254: число байт=32 время<1мс TTL=64
Ответ от 172.16.0.254: число байт=32 время<1мс TTL=64
Ответ от 172.16.0.254: число байт=32 время<1мс TTL=64
Шлюз доступен и сайты открываются.
Как использовать прокси HTTPS и SOCKS в PowerShell
Если вам требуется использовать прокси-сервер HTTPS или SOCKS, необходимо обновить PowerShell до версии 7.x и выше. В противном случае Invoke-WebRequest завершится ошибкой:
Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой https.
Или в случае прокси-сервера SOCKS:
Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой socks.
При работе с прокси-серверами HTTPS или SOCKS в PowerShell 7.x структура команд Invoke-WebRequest остается прежней:
Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>
Отличия заключаются в том, что
Если вы попытаетесь вызвать запрос через прокси-сервер, использующий протокол, отличный от указанного выше, вы получите следующую ошибку:
Invoke-WebRequest: Only the 'http', 'https', 'socks4', 'socks4a' and 'socks5' schemes are allowed for proxies.
Таким образом, полный пример прокси-запроса Invoke-WebRequest SOCKS выглядит так:
Invoke-WebRequest -Proxy "socks5://94.14.109.54:3567" "http://httpbin.org/ip"
As you can expect, the result will be:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "94.14.109.54"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 31
Content-Type: application/json
Date: Thu, 01 Feb 2024 12:47:56 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 31]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 31
Как включить и отключить Windows Defender Firewall через PowerShell?
По умолчанию Defender Firewall в Windows включен.
Как вы видите, в Windows Firewall есть три типа сетевых профилей:
- Domain (Доменный) – применяется к компьютерам, включенным в домен Active Directory;
- Private (Частный) – домашние или рабочие сети;
- Public (Общий) – общедоступные сети.
В настройках профилей по-умолчанию разрешены все исходящие подключения и блокируется входящие (кроме разрешенных).
Информация о типах сетей хранится службой Network Location Awareness (NLA) в базе данных. Вы можете изменить профиль сети в Windows, если он определился некорректно.
Каждый профиль может отличаться используемым набором правил файервола. По умолчанию все сетевые интерфейсы компьютера защищены фаейрволом и к ним применяются все три типа профилей.
Чтобы полностью отключить Firewall в Windows, выполните команду:
Set-NetFirewallProfile -All -Enabled False
Либо укажите конкретный профиль вместо All:
Set-NetFirewallProfile -Profile Public -Enabled False
Чтобы включить файервол для всех трех сетевых профилей, используется команда:
Set-NetFirewallProfile -All -Enabled True
Вывести тип профиля, который применяется к сетевому подключению:
В этом примере к сетевому подключению Ethernet0 применяется доменный профиль (DomainAuthenticated).
Вы можете управлять правилами Windows Firewall на удаленных компьютерах, если на них настроен PowerShell Remoting (WinRM). В этом примере с помощью командлета Invoke-Command мы отключим файервол на удаленных компьютерах из списка:
Можно изменить действие по-умолчнию для профиля Public и заблокировать все входящие подключения.
Текущие настройки профиля можно вывести так:
Get-NetFirewallProfile -Name Public
Если вы управляете настройками Windows Firewall через GPO, вы можете вывести текущие результирующие настройки профилей так:
Get-NetFirewallProfile -policystore activestore
Проверим, что все параметры брандмауэра применяются ко всем сетевым интерфейса компьютера.
Если все интерфейсы защищены, команда должна вернуть:
DisabledInterfaceAliases : {NotConfigured}
Можно отключить определенный профиль для интерфейса (вывести список имен интерфейсов можно с помощью командлета Get-NetIPInterface).
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
Как вы видите, теперь профиль Public не применяется к интерфейсу Ethernet0:
DisabledInterfaceAliases : {Ethernet0}
С помощью командлета
Set-NetFirewallProfile
вы можете изменить параметры профиля (действие по-умолчанию, журналирование, путь и размер лог файла, настройки оповещений и т.д.).
Вы можете настроить параметры логирования сетевых подключений на уровне каждого профиля. По умолчанию журналы Windows Firewall хранятся в каталоге
%systemroot%\system32\LogFiles\Firewall
, размер файла – 4 Мб. Вы можете изменить включить журналирование подключений и увеличить максимальный размер файла:
Необходимые советы и рекомендации
Ознакомьтесь с полезными уловками и ценными советами по работе с прокси-сервером PowerShell Invoke-WebRequest на профессиональном уровне.
Игнорирование конфигурации прокси-сервера PowerShell
Если вы хотите запретить Invoke-WebRequest использовать настроенный прокси-сервер PowerShell для чтения из переменных окружения, вы можете воспользоваться параметром -NoProxy следующим образом:
Invoke-WebRequest -NoProxy <Uri>
Эта команда предписывает Invoke-WebRequest связаться с
Чтобы убедиться в работоспособности данного подхода, настройте прокси-сервер в envs и запустите его:
Invoke-WebRequest -NoProxy "https://httpbin.org/ip"
Avoid SSL Certificate Errors
При использовании прокси-сервера HTTP ваши запросы могут не выполняться из-за ошибок SSL-сертификата. Чтобы избежать этого, задайте параметр -SkipCertificateCheck:
Invoke-WebRequest -SkipCertificateCheck -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>
– SkipCertificateCheck помогает избежать ошибок сертификатов, разрешая небезопасные подключения к серверу. Имейте в виду, что использование этого параметра небезопасно. Задавайте его только при работе с известными хостами.
Например, вы можете связываться с HTTPBin через прокси-сервер, обходя проблемы с SSL, с помощью следующего:
Invoke-WebRequest -SkipCertificateCheck -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"
Включить/отключить правило Windows Defender Firewall
Вы можете включать/отключать правила файервола с помощью командлетов Disable-NetFirewallRule и Enable-NetFirewallRule.
Disable-NetFirewallRule –DisplayName 'WEB-Inbound'
Чтобы разрешить ICMP (ping), выполните команду:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Чтобы удалить правило брандмауэре используется командлет Remove-NetFirewallRule.
Remove-NetFirewallRule -DisplayName 'WEB-Inbound'
Чтобы сбросить все правила Microsoft Defender Firewall и восстановить настройки по умолчанию, выполните команду:
netsh advfirewall reset
(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()
Это очистит все пользовательские настройки и правила Microsoft Defender Firewall. В списке правил останутся только стандартные правила сетевого доступа Windows.
Перед сбросом можно экспортировать текущие настройки в файл.
netsh advfirewall export "C:\Backup\firewall-config.wfw"
В дальнейшем вы можете вернуть старые настройки файервола, импортировав файл с правилами:
netsh advfirewall import "C:\Backup\firewall-config.wfw"
Заключение
Из этого руководства по прокси-серверу PowerShell вы узнали, что представляет собой инструмент Invoke-WebRequest, как он работает и как его использовать с прокси-сервером HTTP/HTTPS/SOCKS. Как оказалось, нельзя полагаться на прокси-серверы от бесплатных поставщиков. Поэтому единственное решение, которое необходимо принять, — это выбор поставщика услуг прокси-серверов. Экономьте время и энергию и обращайтесь непосредственно к Bright Data — лучшей компании на рынке в этой области.
Bright Data управляет лучшими прокси-серверами в мире, обслуживая компании из списка Fortune 500 и более 20 000 клиентов. Ее всемирная сеть прокси-серверов включает в себя:
В целом, это одна из крупнейших и самых надежных на рынке прокси-сетей, ориентированных на скрейпинг.
Поговорите с одним из наших торговых представителей и узнайте, какие продукты Bright Data лучше всего отвечают вашим потребностям.
Кредитная карта не требуется
Вывести список активных правил Windows Firewall
Список активных правил для входящего трафика можно вывести так:
Если, например, нам нужно вывести список блокирующих исходящих правил:
Если нужно отобразить имя программы в правиле:
Как вы видите командлет Get-NetFirewallRule не выводит порты сетевые порты и IP адреса для правил брандмауэра. Чтобы вывести всю информацию о разрешенных входящих (исходящих) подключениях в более удобном виде с отображением номеров портов, используйте такой скрипт:
PowerShell предоставляет широкие возможности по управлению правилами Windows Firewall из командной строки. Вы можете автоматически запускать скрипты PowerShell для открытия/закрытия портов при возникновении определенных событий. В следующей статье мы рассмотрим простую систему на базе PowerShell и Windows Firewall для автоматической блокировки IP адресов, с которых выполняется удаленный перебор паролей по RDP на Windows VDS сервере.
Заключение
Сегодня мы рассмотрели настройку локальной сети в Windows Server с использованием PowerSell:
Отключили получения адреса посредством DHCP;
Удалили все адреса с интерфейса;
Удалили все маршруты;
Установили адрес DNS для интерфейса как 127.0.0.1;
Отключили IPv6 на интерфейсе:
Установили статический адрес, шлюз и адрес DNS-сервера для интерфейса.
Проверили настройки и доступность сети Интернет.