Предотвратите нападения на SSH

Ну, после большого количества разочарования и исследования, я придумал рабочий сценарий. Для тех, которые хотят знать, как сделать то же, сценарий ниже работ хорошо для восстановления любого данного файла.

<#
Parameters: Folder Path, File to Restore, Deletion Date
Example Usage: 
.\RecoverFile.ps1 "ClientName\Folder\2010\02\03\" "mydoc.pdf" "2010-08-04 09:54:24.117" 
#>

$filePath = [IO.Path]::Combine("D:\ClientData\", $args[0] )
$fileName = $args[1]
$dateDeleted = Get-Date $args[2]

Write-Host "Restoring '" -NoNewLine
Write-Host $filePath -NoNewLine
Write-Host $fileName -NoNewLine
Write-Host "' which was deleted on '" -NoNewLine
Write-Host $dateDeleted -NoNewLine
Write-Host "'"

$recoveryDate = Get-Date $dateDeleted.AddDays(-1).ToShortDateString()
$pg = Get-ProtectionGroup -DPMServerName DPMSERVER01 | Where-Object {$_.FriendlyName -eq "Document Repository Data"} 
$ds = Get-Datasource $pg
$so = New-SearchOption -FromRecoveryPoint $recoveryDate.AddDays(-1).ToShortDateString() -ToRecoveryPoint $recoveryDate.ToShortDateString() -SearchDetail FilesFolders -SearchType exactMatch -Location $filePath -SearchString $fileName
$ri = Get-RecoverableItem -Datasource $ds -SearchOption $so
$ro = New-RecoveryOption -TargetServer CLIENTDATASERVER01 -RecoveryLocation OriginalServer -FileSystem -OverwriteType overwrite -RecoveryType Recover
$recoveryJob = Recover-RecoverableItem -RecoverableItem $ri -RecoveryOption $ro
#4.3 Wait till the recovery job completes
while (! $recoveryJob.hasCompleted )
{
    # Show a progress bar
    Write-Host "." -NoNewLine
    Start-Sleep 1
}
if($recoveryJob.Status -ne "Succeeded")
{
    Write-Host "Recovery failed" -ForeGroundColor Red
}
else
{
    Write-Host "Recovery successful" -ForeGroundColor Green
}
9
задан 22 September 2012 в 19:05
3 ответа

Я думаю, вам лучше использовать fail2ban , потому что ваш ipfilter правила также блокируют допустимые соединения. fail2ban будет блокировать IP-адреса только после неудачных подключений.

Далее, обычной практикой является запрет IP-адресов, когда они пытаются подключиться к порту 22, и привязка вашего ssh-сервера к другому порту. Затем вы сталкиваетесь только с парой незаконных подключений в неделю, если ваш компьютер не является широко известной целью.

Для точного вопроса, который вы задали:

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
10
ответ дан 2 December 2019 в 22:22

Вы можете попробовать модуль LIMIT.

iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT
4
ответ дан 2 December 2019 в 22:22

Вы можете реализовать то, что хотите, с помощью следующих двух правил

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

Обратите внимание, что использование -A , которое добавляет правила в конец цепочки, может помешать что правила iptables обрабатываются, т. е. по порядку, поэтому, если есть общее правило DROP или разрешающее правило до того, как будет достигнуто ваше, они никогда не будут выполнены.

Сказав, что вы также можете найти fail2ban , лучший способ реализовать такой блок.

7
ответ дан 2 December 2019 в 22:22

Теги

Похожие вопросы