Ну, после большого количества разочарования и исследования, я придумал рабочий сценарий. Для тех, которые хотят знать, как сделать то же, сценарий ниже работ хорошо для восстановления любого данного файла.
<#
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
}
Я думаю, вам лучше использовать 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
Вы можете попробовать модуль LIMIT.
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT
Вы можете реализовать то, что хотите, с помощью следующих двух правил
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 , лучший способ реализовать такой блок.