Сценарий Powershell для удаления sub папок и файлов, если дата создания является> 7 дней, но поддерживает родительские папки sub папок и файлов <7 дней

Существует два вопроса для рассмотрения при проверке сертификата:

  • проверка его была испущена объектом, которому Вы доверяете, и
  • проверка его соответствует идентификационным данным сервера, с которым Вы пытаетесь связаться.

Выпущенные CA сертификаты

Инфраструктура открытых ключей с помощью спецификации сертификата X.509 определяет структуру для помещения на месте для этого. Это - иерархическая модель, где Вы получаете дерево, корнем которого Центры сертификации (CA) и его листы, сертификаты объекта конца (в особенности сертификаты сервера).

Корневые сертификаты CA имеют тенденцию быть самоподписанными. Набор их включен по умолчанию в Вашей ОС или браузере. Это - "прыжок веры" часть, где Вы доверяете своему поставщику ОС/браузера для проверки АВАРИИ, чтобы сделать их задание правильно. Частью большой коммерческой АВАРИИ является Verisign, Thawte...

CA может затем подписать другие сертификаты. Можно проверить сертификат, который Вы никогда не видели прежде путем проверки, был ли он подписан CA, которому Вы доверяете. Может также быть промежуточная АВАРИЯ. Например, сертификат для https://www.google.com/ был подписан "Thawte SGC CA", который был самостоятельно подписан "VeriSign, Общественностью Inc./Class 3 Основной Центр сертификации" (я закорачиваю имена здесь для упрощения). Задание CA состоит в том, чтобы проверить (средствами, внешними к PKI), что человек/учреждение, которому это выпускает сертификат, является законным владельцем того имени хоста (например. www.google.com здесь). Путем эта внеполосная проверка варьируется для сертификатов non-EV, это часто делается просто путем посылания электронного письма адресу, который зарегистрировал доменное имя (доступный в whois каталоге).

После того как это сделано, предположите, что Вы не знаете, доверять ли https://www.google.com/, клиент проверяет этот сертификат против доверительных привязок, которые он имеет (АВАРИЯ, часто предварительно импортируемая поставщиками ОС/браузера). Если Вы соединяетесь с www.google.com, браузер получает сертификат и затем может разработать цепочку до главного выпускающего (существует запись выпускающего в каждом сертификате), пока это не находит тот, которому это доверяет (в этом случае то от Verisign). Пока неплохо сертификату доверяют. Второй шаг состоит из проверки, что этот сертификат действительно для этой машины. Для HTTPS это сделано путем проверки, что имя хоста находится в подчиненном расширении имени альтернативы сертификата, или как нейтрализация, что это находится в "Общем названии" (CN) запись в подчиненном отличительном имени. Это объяснено в RFC 2818 (идентификационные данные сервера).

Здесь возможные попытки напасть следующие:

  • Взломщики подделывают сертификат (для того имени хоста или не) с их собственным Приблизительно. Так как их CA не распознан Вашим браузером, сертификат не будет проверен. Даже если бы они фальсифицировали имя выпускающего, то они не смогли бы фальсифицировать подпись (потому что Вы проверяете, что использование открытого ключа с помощью CA сертифицирует Вас, уже доверяют). Одна из самых больших проблем здесь была в силе подписи: нападения коллизии были продемонстрированы с помощью алгоритма выборки сообщений MD5, таким образом, АВАРИЯ теперь использует SHA-1 вместо этого, который считают более устойчивым. Если Вы полагаете, что RSAwithSHA1 или DSAwithSHA1 достаточно устойчивы, у Вас не должно быть проблемы там.
  • Взломщики получают законный сертификат от известного CA, но для другого имени хоста (поскольку CA не должен испускать кому-то еще). Скажем, они добираются www.example.com. Вы пытаетесь соединиться с www.google.com, они перенаправляют трафик к своему полю, которое покажет сертификат, который будет поддаваться проверке CA, для которого Вы доверяете, но www.example.com. Это - то, где проверка имени хоста важна. Ваш браузер предупредит Вас, что Вы не подключены к хосту, который Вы предназначили.

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

Самоподписанные сертификаты

Это - тот же принцип, за исключением того, что Вы - CA, и этот самоподписанный сертификат может также непосредственно быть сертификатом сервера. Если Вы создаете свой собственный самоподписанный сертификат и помещаете его на Вашу машину, можно также импортировать его в браузере как доверяемые полномочия, в этом случае Вы выполняете ту же процедуру, как описано выше.

Некоторые браузеры, как Firefox, позволят Вам добавить постоянные исключения к этим правилам. Если Вы знаете некоторыми другими средствами (например, администратор дал Вам лично сертификат), каков сертификат для машины, с которой Вы хотите соединиться, можно принять решение доверять им явно, даже если они не были подписаны CA, которому Вы доверяете или если имя не соответствует. Конечно, для этого, действительно необходимо знать априорно и явно каков этот конкретный сертификат должен быть.

Если в любом случаи, пользователь принимает решение проигнорировать предупреждения и принимает, чтобы быть перенаправленным к соединению с недоверяемым сертификатом, то MITM (с тем недоверяемым сертификатом) может видеть/перенаправлять/изменять трафик.

3
задан 30 September 2012 в 08:17
2 ответа

Могу я предложить немного другой подход? Я бы сначала удалил все файлы старше 7 дней, а на втором шаге удалил пустые папки. Примерно так:

$deleted = @()

Get-ChildItem $dump_path -Recurse | Where-Object {
  -not $_.PSIsContainer -and $_.CreationTime -lt $del_date
} | ForEach-Object {
  $deleted += $_.FullName
  $_
} | Remove-Item

function Remove-EmptyFolders($folder) {
  Get-ChildItem $folder | Where-Object { $_.PSIsContainer } | ForEach-Object {
    $path = $_.FullName
    Remove-Emptyfolders $path
    if ( @(Get-ChildItem $path -Recurse | Where-Object { -not $_.PSIsContainer}).Length -eq 0 ) {
      $deleted += $path
      Remove-Item $path -Recurse -Force
    }
  }
}

Remove-EmptyFolders $dump_path

$html = $deleted | Select-Object @{Name='Path';Expression={$_}} | ConvertTo-Html
6
ответ дан 3 December 2019 в 05:30

Большое спасибо за код. Это очень помогло.

Я добавил следующее, чтобы отправить электронное письмо с результатами удаления:

$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "</style>"

$html = $deleted | Select-Object @{Name='Path';Expression={$_}} | ConvertTo-Html -Head $style

#SMTP server name
 $smtpServer = "smtp.xxxx.com"

 #Creating a Mail object
 $msg = new-object Net.Mail.MailMessage

 #Creating SMTP server object
 $smtp = new-object Net.Mail.SmtpClient($smtpServer)

 #Email structure 
 $msg.From = "email@xxxx.com"
 #$msg.ReplyTo = "replyto@xxxx.com"
 $msg.To.Add("email@xxxx.com")
 $msg.subject = "Deleted files and folders"
 $msg.IsBodyHTML = $true
 $msg.body = $html

 #Sending email 
 $smtp.Send($msg)

Я заметил, что сгенерированное электронное письмо содержит только список удаленных файлов, а не папки, так что убежище Не понял, почему папки не указаны (если у вас есть какие-то идеи, которые были бы замечательны).

0
ответ дан 3 December 2019 в 05:30

Теги

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