Скрипт poweshell для усиления безопасности ПК

Не так давно в нашей организации была проверка ФСБ на внутреннего и внешнего злоумышленника. Так как у нас на рабочих станция в основном компьютеры на windows 10,7, то были обнаружены уязвимости и выписано предписание их устранить

Уязвимости это в основном связаны с NetBIOS, FDResPub, DNSClient и LLMNR. Наши админы при установки и настройки базового ПО не отключают эти параметры. Решили написать скрипт, который будет автоматически проделывать эту работу. Сам скрипт с подробными описаниями:

PowerShell

# Требуем запуск с правами администратора
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Host "Запустите скрипт от имени Администратора!" -ForegroundColor Red
    Start-Sleep -Seconds 3
    Exit
}

function Disable-NetBIOS {
    # Путь к интерфейсам в реестре
    $interfacesPath = "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces"

    # Получаем все интерфейсы
    $interfaces = Get-ChildItem -Path $interfacesPath

    foreach ($interface in $interfaces) {
        $regPath = $interface.PSPath
        try {
            # Устанавливаем значение NetbiosOptions в 2 (отключено)
            Set-ItemProperty -Path $regPath -Name NetbiosOptions -Value 2 -Force
            Write-Host "v NetBIOS отключен для интерфейса: $($interface.PSChildName)"
        } catch {
            Write-Warning " Не удалось отключить NetBIOS для интерфейса: $($interface.PSChildName). Ошибка: $_"
        }
    }
}

# Запускаем функцию
Disable-NetBIOS

Write-Host "Остановка службы FDResPub..." -ForegroundColor Yellow
Stop-Service "FDResPub" -Force
Write-Host "Служба FDResPub успешно остановлена!" -ForegroundColor Green

# Отключаем автозапуск службы и выводим сообщение
Write-Host "Отключение автозапуска FDResPub..." -ForegroundColor Yellow
Set-Service "FDResPub" -StartupType Disabled
Write-Host "Служба FDResPub отключена (StartupType: Disabled)." -ForegroundColor Green

# Путь к разделу реестра
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
$propertyName = "EnableMulticast"

try {
    # Проверяем/создаем раздел реестра
    if (-not (Test-Path $regPath)) {
        New-Item -Path $regPath -Force | Out-Null
        Write-Host "Раздел реестра создан: $regPath" -ForegroundColor Cyan
    }

    # Проверяем текущее значение
    $currentValue = Get-ItemProperty -Path $regPath -Name $propertyName -ErrorAction SilentlyContinue

    if ($currentValue.EnableMulticast -eq 0) {
        Write-Host "LLMNR уже отключен." -ForegroundColor Green
    }
    else {
        # Устанавливаем новое значение
        Set-ItemProperty -Path $regPath -Name $propertyName -Value 0 -Type DWORD -Force
        Write-Host "LLMNR успешно отключен." -ForegroundColor Green

        # Перезапускаем связанные службы
        try {
            Restart-Service -Name "DNSCache" -Force -ErrorAction Stop
            Write-Host "Служба DNS-клиент перезапущена." -ForegroundColor Cyan
        }
        catch {
            Write-Host "Не удалось перезапустить службу DNS-клиент: $_" -ForegroundColor Yellow
        }
    }
}
catch {
    Write-Host "Ошибка при работе с реестром: $_" -ForegroundColor Red
    Exit 1
}

# Дополнительная информация
Write-Host "`nДля полного применения изменений может потребоваться перезагрузка системы." -ForegroundColor Yellow

Комментарии (0)

Оставить комментарий

Пока нет комментариев. Будьте первым!