книги хакеры / журнал хакер / 137_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|||||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
||
|
|
|
d |
f |
|
|
n |
e |
|
|||
|
|
|
|
|
-x cha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Типичноеправилоfirewall
выводятся данные логов Squid. Тут есть суммарный отчет за месяц «директору на стол», только почему-то он перебрасывает в «Монитор» — как-то это нелогично. Хотя сам отчет вполне ничего себе, с картинками, а директорам, как известно, картинки нравятся :).
БЕЗОПАСНОСТЬВНУТРЕННЕЙСЕТИ
Несмотря на пафосные обещания, безопасность, в общем-то, основана на стандартном наборе подходов: chroot основных сервисов и проверка контрольных сумм системных файлов. С другой стороны, аналогичная связка используется и в дистрибутиве Linux МСВС для российских военных (в нем, правда, есть еще ACL-листы и различные роли для пользователей), да и мы знаем, что им можно доверять. Настройки всех компонентов, отвечающих за защиту ресурсов внутренней сети, собраны в меню «Безопасность» и состоят из 10 подпунктов. Чтобы разрешить доступ по SSH, надо установить соответствующий флажок в «Общих настройках». Здесь же устанавливаются ограничения на количество сессий и блокировка сканеров портов, указывается IP системы админа. Далее идут две группы правил firewall: системные (то есть общие для всех) и пользовательские, которые затем можно назначить пользователям. Все это сделано для того, чтобы самому не копаться в iptables.
Âрезультате все задается в интуитивно понятной среде: IPадреса источника и назначения, протокол, порт, время действия, направление, интерфейс, скорость, действие. Список последних очень большой, от стандартных «Запретить/ Разрешить» до использования шейпера и фильтров. Чтобы просмотреть список фильтров, идем в подменю «Ключевые слова», где уже есть заготовки для 15 категорий. Причем никто не мешает тебе создать свой фильтр — достаточно взять за основу любой из уже имеющихся.
Âцелях повышения безопасности все встроенные сервисы по умолчанию отключены. Админ самостоятельно выбирает и активирует в разделе «Сервер» то, что ему действительно необходимо. Каждый раз, подключая новый сервис с помощью подобной сборки, я опасаюсь, что сейчас выйдет какой-нибудь сплойт, и придется заниматься обновлением вручную. В случае с Ideco все выполняется автоматически. Есть интересный момент. В разделе «Сервер -> Авт. Обновление», где администратору предлагаются расширенные настройки обновления сервера по расписанию, есть возможность «задержки установки обновления». Наверное, для ожидания обновления для обновления :). Рядышком находятся настройки резервного копирования. Но если выбрать «Сервер -> Резервное копирование -> На CD» и нажать на ссылку «Записать на CD сейчас», выдается сообщение «Данная опция доступна только через локальную консоль сервера».
Настраиваемтарифныйплан
INFO |
Просмотрграфиковзагруженности системыIdeco ICS
ТАКЗАЧТОПЛАТИТЬ?
Конечно, есть недоделки. Но если посмотреть на тот же самый eBox и Ideco ICS, сразу видна разница между бесплатным решением и коммерческим продуктом. eBox — удачная сборка от энтузиастов, но местами собрана на коленке. На деле это, к сожалению, всплывает в самый неподходящий момент. Я до сих пор помню, как у меня отвалился подсчет трафика для некоторых пользователей, а любые действия в админке ни к чему не приводили. С грехом пополам, при помощи комьюнити баг все-таки удалось починить, но сколько времени я на это убил? В случае с платным продук-
том я бы просто обратился в саппорт, причем в случае с Ideco
— русскоязычный. Когда продукт платный, чувствуется, что кто-то ответственен за то, чтобы у тебя все работало, и есть с кого спросить. Можно еще, конечно, поставить в плюс гибкость, стабильность, простоту внедрения, но пусть это делает официальный сайт. Я вижу только три вещи, за которые здесь можно платить: первое — все работает с полтычка и без напильника, второе — есть оперативный суппорт, третье — гарантированные обновления самого продукта, антивирусных баз и контентного фильтра. Возможно, плюсом будет также и то, что решение тиражное и используется во многих организациях. Не скажу, что я в восторге от коммерческой реализации интернет-шлюза — ничего сверхъестественного я не увидел. Но решением доволен: Ideco ICS закрывает много задач, и если кому-то нужна надежность, уверенность и поддержка от производителя, а начальство готово за это платить, то почему бы и нет. Ideco ICS будет для них хорошим выбором. В маленькой же локалке его вообще можно использовать бесплатно.z
info
Орешенияхдляорганизациисовместного доступаизащиты сетичитайвстатье «Привратникдля локальнойсети» в][ 07.2009.
Оспециализированныхдистрибутивах Linux читайвстатье «Сетевыерегулировщики», опубликованнойвянварском][ за
2010 год.
DVD |
dvd
Наприлагаемомк журналудискеты найдешьвидеоролик, которыйпознакомит тебяспроцессом установкиIdeco ICS иосновныминастройкамиинтерфейса.
HTTP://WWW
links
Официальныйсайт проектаIdecoICS— ideco-software.ru
XÀÊÅÐ 06 /137/ 10 |
119 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|||
|
F |
|
|
|
|
|
|
t |
|
|
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
|
o |
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|
|
|||
w Click |
to |
|
|
|
|
|
|
SYN/ACK |
|
||||
|
|
|
|
|
|
m |
Сергей «grinder» Яремчук grinder@synack.ru |
||||||
|
|
|
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
. |
|
|
|
|
|
.c |
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Ставимнаучет железоисофт
КАКПРОВЕСТИИНВЕНТАРИЗАЦИЮОБОРУДОВАНИЯИПРОГРАММНОГООБЕСПЕЧЕНИЯ, ОБОЙДЯСЬМАЛОЙКРОВЬЮ
IT-парклюбойорганизациичастонасчитываетнеодиндесятоксистем самойразнойконфигурации. Ивсегданайдетсяпарочкавольнодумцев, которыезахотятразвестиначальствонавнеочереднойапгрейдилиустановитьПОдляличныхцелей. Безсистемыучетаиконтроляадминрискует, какминимум, своейпремией. Рассмотримрешения, позволяющие упроститьэтузадачу.
WMIИPOWERSHELL
ÂWinNT 4.0SP4 администраторы получили новый инструмент для централизованного управления и слежения за работой различ- ных частей операционной системы — WMI (Windows Management Instrumentation, Инструментарий для Управления Windows). Правда, в первых версиях заложенных компонентов было немного (всего 15). Но в последующих Win2k+ их количество увели- чивалось вместе с возможностями. Сегодня WMI доступен для всех версий ОС Windows, включая Se7en. Опрашивая различные WMIклассы локальной и удаленных систем, мы можем получить всю необходимую информацию по имеющемуся в компании программному обеспечению и оборудованию.
Âпримерах предлагаю не использовать VBScript, JScript или другие скриптовые языки, уж слишком они громоздки и неудобны, тем более у нас уже есть роскошный PowerShell, способный выполнить за нас львиную долю работы (подробнее о PS читай в ][ 09.2009 и 05.2010).
ДляначалаполучимсписокBIOSнаподчиненныхкомпьютерах:
PS> Get-WMIObject Win32_BIOS -computerName synack.ru
Кактыпонимаешь,после'-computerName'ука- зываетсяимяхоста.Хотяприопроселокальной системыэтотпараметрможноопускать,чтомы ибудемделатьвдальнейшемдлякраткости.
Написавпростенькийскрипт,легкопередать
Get-WMIObjectсписоксистем,скоторых будетсобиратьсяинформация.Результатпри
необходимостисохраняемвтекстовыйфайлдля дальнейшегоанализа.
Аналогичнопроводимопросостальныхпараметров.Например,запрашиваеминформацию оCPU:
PS> Get-WMIObject Win32_Processor
Полныйсписокданных,какправило,ненужен, поэтомуотбираемтольконеобходимыепараметры:
PS> Get-WmiObject Win32_
ComputerSystem | Select
Manufacturer, Model
Посмотрим,какаяунасматеринскаяплата:
PS> Win32_Baseboard | Select Manufacturer, Name, Product | ft -a
КлассыWin32_ComputerSystem, Win32_ComputerSystemProductиWin32_ OperatingSystemпозволятсобратьобщие данныепокомпьютеруисистеме:
PS> "127.0.0.1", "synack.ru", "pc01" | Check-Online | Foreach-Object { Get-WMIObject Win32_ComputerSystem -computerName $_ }
ЗапрашиваемверсиюОС:
PS> Get-WmiObject Win32_ OperatingSystem | Select CSName,Buil dNumber,ServicePackMajorVersion
Прижеланиирезультатможносохранитьв файл,например«Export-CliXMLC:\check.xml»,а затемотфильтроватьилиобработать:
PS> Import-CliXML C:\check.xml |
Out-GridView
ПолныйсписокWin32_*классовисвойствдоступенвдокументацииMSDN«Win32_Classes» (http://msdn.microsoft.com/en-us/library/ aa394084%28v=VS.85%29.aspx).Альтернатив- ныйвариант—воспользоватьсяфункциейпо- иска.Кпримеру,просмотримсписокобъектов,в именахкоторыхприсутствуетсловоdisk:
PS> Get-WmiObject -List | where {$_. name -match "disk"}
ГОТОВЫЕУТИЛИТЫИПРИЛОЖЕНИЯ
Еслихорошопоискатьвинтернете,можно найтинеодиндесятокготовыхWMI-скриптов насамыхразныхязыкахпрограммирования, которыелегкоадаптируютсяподтвоинужды. МоевниманиепривлеклоHTA-приложение HardwareInventory(www.robvanderwoude.com/ hardware.php)свеб-оболочкой.Простовводим имякомпьютераиполучаемданныеобустановленномоборудовании.Принеобходимости можноотредактироватьсырецвтекстовомредакторе,дополнивегонужнымипараметрами (опросWMI-объектовреализованнаVBScript).
120 |
XÀÊÅÐ 06 /137/ 10 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Стороннимиразработчикамисозданрядспециальныхкомандлетов, упрощающихнаписаниескриптов.СкриптComputerInventoryScript (CompInv),которыйдоступеннасайтеpowershellpro.com,позволяет получитьинформациюожелезе,ОСисохранитьвсесобранныеданныев Excel'евскийфайлдлядальнейшегоанализа.Послезапускаскриптзадаст нескольковопросов,отвечаянакоторые,админвыбираетрежимсбора данных.Списоккомпьютеровдляпроверкиопределяетсяприпомощи специальноготекстовогофайла,такжескриптможетавтоматически проверитьвсесистемыилисерверы,входящиевдомен.Каквариант— имякомпьютеразадаетсявручную.Поумолчаниюиспользуетсятекущая учетнаязапись,но,ответив«Yes»навопрос«Wouldyouliketousean alternativecredential?»,можноуказатьтребуемуюучетнуюзапись.
Чтобызатемнезапускатьсозданныйскриптсамостоятельно,поручимэто SchTasks.Например:
> SchTasks /CREATE /TN CheckScript /TR "powershell.exe ` -noprofile -executionpolicy Unrestricted `
-file check.ps1" /IT /RL HIGHEST /SC DAILY
ВрезультатесоздаетсязаданиесназваниемCheckScript,котороебудет ежедневновыполнятьPS-скриптcheck.ps1,причемснаивысшимприори- тетом.
Вместессистемойинвентаризацииоборудованияиустановленныхпри- ложенийNetPoint(www.neutex.net)предлагаетсянаборPS-скриптов(Get- Net*),предназначенныхкакраздлясбораопределенноготипаданных
оподчиненныхсистемах.Например,просмотримналичиесвободного местанахарде:
PS> Get-NetLogicalDisk -DriveType "Local Disk" | where { $_.FreeSpace / $_.Size -lt .10 } | % { $_.ComputerSystemName }
Теперьпопробуемсобратьинформациюобустановленныхпрограммах:
PS> Get-NetProgram -System synack.ru -Uninstalled $False
| % { $_.DisplayName } | sort -unique
Всеговпоставкувходит20командлетов.
ДоступнабесплатнаяверсияNetPointExpressEdition,котораяработаетв 32/64-битныхWinXP/2k3/2k8/Vista/Se7en,ееможноприменятьвсетях любогоразмера.ДляустановкиNetPointпонадобитсяналичиеPS2.0,IISи SQL-сервера(достаточноExpressEdition).
Кстати,списокустановленныхпрограммможнополучить,простопрочи- тавнужнуюветкуреестра:
PS> Get-ItemProperty HKLM:\SOFTWARE\Microsoft\
Windows\CurrentVersion\Uninstall\* | Format-Table
DisplayName,Publisher | Out-GridView
КомандлетOut-GridViewвыводитданныевотдельномокнесвозмож- ностьюпоискаисортировки.
МИНУСЫИСПОЛЬЗОВАНИЯСКРИПТОВ
ЕслисборданныхприпомощиWMI/PowerShellдовольнопрост,товсе отчетыиизменениявконфигурацияхприходитсяконтролировать вручную.Конечно,можноусложнятьсвоискрипты,пытаясьавтоматизироватьпроцесс,нонекаждыйзахочеттратитьнаэтовремя.Здесьстоит напомнить,чтоMicrosoftпредлагаетнеобходимуюфункциональность
âSCCM(SystemCenterConfigurationManager),окотороммыужеписали
âномерах08.2009,09.2009и01-02.2010.Новтехслучаях,когдавраспоря- женииадминанаходятсятакже*nixсистемы,всевозможныероутеры
ипрочееоборудование,котороенеобходимоучитывать,WMI—ужене помощник.Крометого,остаетсяпроблемавизуальногопредставления данныхиотчетов.Здесьпридетсяприбегнутькстороннимпрограммам(в томчислераспространяемымподсвободнымилицензиями),благо,есть изчеговыбирать.
СИСТЕМАИНВЕНТАРИЗАЦИИMYZCI
Многие,ктопробовалсистемуинвентаризацииzCI(zci.sf.net),находили еедовольноудачнымрешением,ноейнехваталовозможностизаносить
XÀÊÅÐ 06 /137/ 10 |
121 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|||
w Click |
to |
|
|
|
|
SYN/ACK |
|
||||
|
|
|
|
|
m |
||||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
||||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
d |
f |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
ПолучаемсписокWMI-объектов
данныевручнуюилокализованногоинтерфейса.Конечно,этонекритическиемоменты,но естьидругиемелочи.Например,нельзяудалить устройствочерезвеб-интерфейс—необходи- мовручнуюсоставитьSQL-запроснаочистку данныхизтаблиц.Системаинвентаризации MyZCI(sf.net/projects/myzci)являетсяфорком zCI.РазработкойзанимаетсяЮрийВинник,
ондовелzCIдонужныхкондиций:интерфейс переведеннарусскийиукраинскийязыки, добавленыновыеполявтаблицы(например,
размещениекомпьютера)иупрощеноуправление.ДляработыMyZCIпотребуетсялюбойвебсерверсподдержкойPHP(сPECL,PHPExtension CommunityLibrary)иMySQL.
Распаковываемархивmyzci-1.2.1.zipвкорневой каталогвеб-сервераивфайлеzciconfig.php указываемпараметрыдоступакMySQL:
$ sudo nano zciconfig.php
return dbx_connect(DBX_MYSQL,"local host","zci","zci","passwd");
Проект GLPI
GLPI(GestionLibredeParcInformatique,glpi-project.org)—ещеодинпроект,ко- торыйпользуетсязаслуженнойпопулярностьюуадминов.Кромезадачпоучету компьютеровикомплектующих,онпозволяетхранитьданныепоостальному «хозяйству»,включаярасходныематериалы.ВотличиеотOCSNG,администратор самостоятельнонаполняетбазуустройств,используялокализованныйвеб-ин- терфейс.Нопроблемаэтарешаетсязасчетиспользованияплагина,интегрирующегоGLPIсOCSNG.Поэтомуихчастоустанавливаютвместе.Длявключения поддержкинеобходимоперейтив«Установки-Общие»ипереключить«Активиро- ватьрежимOCSNG»взначение«Да».Послеэтоговменюпоявитсяноваявкладка «РежимOCSNG»,вкоторойможносинхронизироватьданные.
НаосновеGLPIлегкоорганизоватьслужбутехническойподдержкипользователей,чтооченьудобно,ведьвместозвонкаюзероставляетзаявку,котораярегис- трируетсясистемой.ЗатемIT-подразделениеееобрабатывает.Этодисциплини- руетпользователей—ониперестаютзвонитьпомелочам,ауадминовпоявляется базаобращенийдляотчетаопроделаннойработе.НовозможностиGLPIэтимне ограничиваются.Онпозволяетсоздатьбазузнаний,состоящуюизстатей,вести учетпоставщиков,договоров.Системаснабженабольшимколичествомсамых разныхотчетовсвозможностьюэкспортарезультатавфайлформатаPDF,CSV илиSLK.ПоддерживаетсясинхронизациякалендаряпопротоколамiCal,Webcal. Функциональностьлегкорасширяетсязасчетплагинов,доступныхнасайте проекта(plugins.glpi-project.org).КромеOCSNGможноимпортироватьданныес сервераCactiилиNagios.
ПакетGLPIимеетсяврепозитарияхосновных*nixдистрибутивов.Установкапри помощиисходныхтекстовстандартнадляприложений,написанныхнаPHPи требующихналичиявеб-сервераиMySQL.
Смотримсписокустановленных программсиспользованиемOutGridView
ЧтобысоздатьтаблицывБД,используемскрипт mysqlscript.sql,находящийсявкаталогеengine. Записивнутринужнопривестивсоответствие сданными:
$ sudo nano mysqlscript.sql
create database zci;
...
grant all on zci.* to 'zci'@'localhost' identified by 'passwd';
#Если не планируется доступ к БД с других систем, последнюю строку комментируем
#grant select,delete,insert,update on zci.* to 'zci'@'%' identified by 'zci';
Локализацияинтерфейсапроизводитсяустановкойпеременной“$Lang”взначение“ru”в файлеlangconfig.php.
ДлясбораинформациивWindows-системе используетсяWindowsScriptHost,вLinux— lshwclientнаJava.Всекомпонентынаходятсяв подкаталогеadd-onsиengine.ЗдесьжележатMS WindowsScriptingHost5.6иMSWMICore1.5, которыенеобходимыдляработыклиентской частивWin95/98/NT4.Передразвертыванием вфайлахtakedata.jsиlshwclient.javaследует изменитьзначениепеременнойMyZCIpathи MyZCIserver,чтобыонауказывалаURLсервера. Процесснастройкиклиентскойчастинаконеч- ныхсистемахупрощен.Так,скриптinstall.sh, используемыйприустановкевLinux,проверяет наличиепакетовlshw,jdkиread-edid(инфао мониторе)иприихотсутствиивыдаетпояснительноесообщение.Далеепроисходитсборка Java-клиентаиустановказаданияcron.После развертыванияMyZCIнужноподключиться
ксерверусудаленнойсистемыизарегистрироватькомпьютер,нажавсоответствующую ссылкунаглавнойстранице.Информация оновойсистемедолжнапоявитьсявбазе
MyZCI.Скачиваемсглавнойстраницыархивс клиентскойчастьюизапускаемустановщик. Послечегоскриптыначнутотсылатьданныена сервер.
Интерфейспредельнопростипозволяетвыводитьдетальнуюинформациюожелезе,вносить иредактироватьданныеокомпьютерах,
122 |
XÀÊÅÐ 06 /137/ 10 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|||||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
||
|
|
|
d |
f |
|
|
n |
e |
|
|||
|
|
|
|
|
-x cha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DVD |
ПриложениеHardware Inventory
группировать,искатьсистемыпоопределенномукритерию (например,типвидеокартыимонитор),отслеживатьизменения.Менюадминистраторапозволяетопределятьстатус (закреплен,аренда)иместонахождениесистемы.
СИСТЕМАOCSINVENTORYNG
РешениеOCSInventoryNG(OCSNG,OpenComputersand SoftwareInventoryNewGeneration,ocsinventory-ng.org) позволяетпроизвестиинвентаризациюкомплектующихи программногообеспечения,установленныхнакомпьютерах влокальнойсети,иотслеживатьихизменения,периодическиполучаяданныеоконфигурациисистем.Ещеоднойполезнойфункциейявляетсявозможностьудаленнойустановки программивыполнениякоманд.Длясбораинформациина клиентскиекомпьютерыустанавливаетсяпрограмма-агент. АгентдоступенпрактическидлявсехверсийWindowsот95
Локализация
OCSNG/GLPI
ИнтерфейсOCSNGлокализован,новсежеесть небольшиепроблемы,приводящиектому,что русскоязычныеназванияпрограмм,установленныхвWindows,отображаютсянекорректно. Деловтом,чтовOCSNGизначальноиспользу- етсякодировкаISO-8859-1(дляотображенияCP- 1251),вGLPI—UTF8.ПриимпортеданныхOCSNG ->GLPIтакжевозникаютпроблемыскодиров- ками.Известнодвапутирешения:
1.Налетуприэкспортеменятьданныеииспользуемыешрифты.Чтобысделатьэто,нужно поправитьфайлexport.function.phpипри помощипакетаttf2pt1создатьновыешрифты, поддерживающиеUTF8.
2.ИзначальнонаучитьOCSNGработатьсUTF8. Дляэтогопредложеныпатчиипересобранные установочныефайлыдляWindows.Скачатьих можносftp://linvinus.ru/ocs.Здесьженаходят- сяготовыеdeb-пакетыдляUbuntu/Debian.
Крометого,вфайлеinc/ocsng.class.phpследует изменитьстроку«$this->dbenc="latin1";»на «$this->dbenc="utf8";»ив/etc/php5/apache2/ php.iniпроверитьустановку«default_charset= "utf-8"».
Информацияобоборудовании, собранная
OCSNG
до2k8R2,Linux,MacOSX,*BSD,Solaris,IBMAIXиHP-UX.Все собранныеданныеагентыотправляютнасерверуправления (managementserver)ввидеXML-потока,сжатогоприпомощи библиотекиZlib.Дляпередачииспользуетсястандартный протоколHTTP/HTTPS,поэтомупроблемсfirewall'омобыч- ноневозникает.Припомощиагентовреализованафункция "IPdiscovery",котораяпомогаетнаходитьвсесетевыеипериферийныеустройства,работающиевлокалке,втомчисле те,накоторыенельзяустановитьагента(свитчи,принте- ры,web-камерыит.д.)Агентысканируютсетьвпоисках подобныхустройствиотправляютсведенияонихнасервер дляанализа.
ВерсиядляWindowsнаписананаC++,*nixвариант—на PerlиС.
СервернаячастьOCSNGвключаетвсебячетырекомпонента, которыенеобязательнодолжныбытьустановленынаодном сервере.ЭтоСУБД(MySQL)длясбораданных,атакжевебсервер,которыйможетигратьоднуизтрехролей:
•Службасвязи—обеспечиваетсвязьпопротоколуHTTP междусерверомбазыданныхипрограммами-агентами (Apache1.3.X/2.XсинтегрированнымPerl,вDebian/Ubuntu пакетlibapache-dbi-perl);
•Службаразвертывания—хранениеустановочныхфайлов программ-агентов(любойвеб-серверсподдержкойSSL);
•Консольуправления—просмотрсобранныхданныхвбрау- зере(веб-серверсподдержкойPHPсZIPиGD).
СервернаячастьOCSNGможетбытьустановленанакомпьютер,работающийподуправлениемWin2k/XP/2k3,Linux, *BSD,Solaris,IBMAIXиMacOSX.
dvd
Наприлагаемом кжурналудиске
тынайдешьвидеоролик, вкоторомпоказано, какустановить инастроитьсвязку
OCSNG + GLPI.
HTTP://WWW
links
•Полныйсписок
Win32_*классов можнонайтив документацииMSDN «Win32_Classes»— msdn.microsoft.com
•Сайтпроекта
NetPoint—neutex.net
•СайтпроектаMyZCI
—sf.net/projects/myzci
•СайтпроектаzCI— zci.sf.net
•СайтпроектаOCSNG
—ocsinventory-ng.org
УСТАНОВКАOCSNG
Нужныйпакетимеетсяврепозиторияхбольшинствадистрибутивов,хотяобычноэтонесамаяактуальнаяверсия. Самостоятельнаясборкаизисходныхтекстовпривнимательномподходенедолжнавызватьтрудностей.Установоч- ныйскриптsetup.sh,находящийсявнутриархива,проверит наличиетребуемыхкомпонентовивыдастрекомендациипо устранениюпроблем,есливэтомбудетнеобходимость.
ВDebian/Ubuntuдляручнойсборкинужнонакатитьпакеты:
$ sudo apt-get install libapache2-mod-perl2 libdbi-perl libapache-dbi-perl libdbd-mysql- perl libsoap-lite-perl libxml-simple-perl libnet-ip-perl libcompress-zlib-perl php5-gd
ИXML::EntitiesизхранилищаCPAN:
INFO |
info
Многиеутилиты, выпускаемыепод коммерческимилицензиями, используютдлясбораданных именноWMI — это удобно, таккакне требуетсяустановка агентовнаудаленные системы.
XÀÊÅÐ 06 /137/ 10 |
123 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
|
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|||
w Click |
to |
|
|
|
|
|
SYN/ACK |
||||
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
- |
|
|
n |
e |
|
||
|
|
|
|
x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СписокустановленныхпакетоввOCSNG |
СвязываемGLPI сOCSNG |
$ sudo cpan -i XML::Entities
Впроцессеустановкибудутсозданывсенеобходимыеконфигурационные файлыиалиасыдлявеб-сервера.Таккакфайлы,которыемогутраспро- странятьсяприпомощиOCSNG,частоимеютбольшойразмер,следует установитьнужныезначенияпеременныхpost_max_sizeиupload_max_ filesizeвфайлах/etc/php5/apache2/php.ini(поумолчанию—8и2Мб)
иocsinventory-reports.conf.Послевсехнастроеквызываембраузери запускаемустановочныйскриптhttp://localhost/ocsreports/install.php, гдеуказываемпараметрыдоступакБД.Впроцессеустановкидлядоступа кбазеocswebбудетсозданаучетнаязапись«ocs»спаролем«ocs».Если доступкбазенеограниченлокальнойсистемой,вцеляхбезопасности дефолтныйпарольследуетизменить.ДляустановкиагентавLinuxпотребуетсяналичиенекоторыхмодулейPerl(XMLиZlib)иdmidecode.
$ sudo apt-get install libcompress-zlib-perl libnet-ip- perl libnet-ssleay-perl libwww-perl libxml-simple-perl po-debconf ucf dmidecode pciutils
ПослечегоагентустанавливаетсястандартнымдляPerl'овыхприложений способом:
$ tar xzvf Ocsinventory-Agent-1.1.2.tar.gz $ cd Ocsinventory-Agent-1.1.2
$ perl Makefile.PL $ make
$ sudo make install
Далеескриптначнетзадаватьрядвопросовпоразмещениюконфигурационныхфайлов.Вводимданныесервера,создаемтэг(длягруппировки систем),активируемзадачудляcron.Поокончаниинастройкисобранные данныеоконфигурациикомпьютераотправляютсянасервер.Еслисвязь установленаиполучаемответ«Success!»,установкуагентаможносчитать законченной.Егоданныепоявятсяввеб-консоли,вразделе«Всекомпью- теры».Вкаталоге/var/lib/ocsinventory-agentбудетсозданXML-файл, содержащийтекущуюконфигурациюкомпьютера.Еслижесоединения непроизошло,запустиагентврежимеотладки:
$ ocsinventory-agent -l /tmp –debug --server http:// ocsng-server/ocsinventory
Обычнополученнойинформациихватаетдлядиагностикиошибок. АгентдляWindowsможетбытьустановленнесколькимиспособами.Са- мыйпростой—вручнуюилиспомощьюприлагающегосяlogonскрипта.
ПослеинсталляциисервераустановочныйфайлагентаможноимпортироватьвбазуOCSNG.Простовыбираемвкладку«Агент»иуказываем месторасположениефайла,послечегоонбудетдоступенслюбогокомпьютерасети.Установкастандартна:напоследнемэтапесообщаемимя илиIP-адресOCSNGсервера,и,чтобысразужесформироватьиотправить отчет,устанавливаемфлажок«Immediatelylaunchinventory».Далееагент прописываетсявавтозагрузкуистартуетвкачествесервиса.
РАБОТАСИНТЕРФЕЙСОМOCSNG
Интерфейслокализован,поэтому,чтобыразобратьсясегоиспользованием,многовременинепонадобится.Поумолчаниюнавкладке«Всекомпьютеры»показанысемьосновныххарактеристикклиентскихмашин. Список«Addcolumn»позволяетлегкодобавитьещедо23полей.Очень удобно,чтоданныеподдаютсяручномуредактированию.Такжеследует отметитьлегкийпоискиудалениедубликатовсистем.
Какужеговорилосьранее,вOCSNGзаложенавозможностьустановки приложенийизапускаскриптов(bat,vbsит.п.)Такаяфункциональность сильновыручает.СоздаемпакетвDeployment—Buildизаполняемполя Newpackagebuilding:название,Priority(порядокустановки)идействиев Action.Предусмотренотриварианта:
-Store — копировать на целевую систему;
-Execute — копировать и выполнить с командой;
-Launch — копировать и запустить.
ПараметрывUsernotificationsпозволяютвывестипредупреждениепользователюиразрешитьемуотменятьзадачу.
ПослесозданияпакетаегоследуетактивироватьвDeployment—Activate. ВводимURLсервераинажимаем«Отправить».Выбираемкомпьютер, накоторыйбудемустанавливатьпакет,переходимвменюCustomization инажимаемссылкуAddpackage.Указываемпакетизапускаемпроцесс нажатиемAffect.СостояниезадачивыводитсявCustomization,общая статистикадоступнавтаблицеActivate.
ВOCSNGинициаторомсоединениявыступаетагент,которыйподклю- чаетсяксерверуразвсутки,отправляетинформациюосостояниии получаетзадания.Еслисозданныйпакетнеобходимоустановитьраньше, наклиентеследуетпринудительнозапуститькомандуocsinventory-agent.
ЗАКЛЮЧЕНИЕ
Посленастройкиизаполнениябазыданныхвсистемеинвентаризации тыбудешьпостоянноиметьподрукойактуальнуюинформациюотекущемсостояниикомповисможешьотслеживатьизменения.Отчеты,которыеонагенерирует,даютвозможностьбыстроопределитьконфигурациютиповогокомпьютера,используемоговорганизации,чтосослужит хорошуюслужбуприпланируемомапгрейдеилисменеОС.z
124 |
XÀÊÅÐ 06 /137/ 10 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Евгений Зобнин j1m@synack.ru
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Огненнаядуга
ЗАЩИЩАЕМСЯОТВЗЛОМЩИКОВСПОМОЩЬЮIPTABLES, IPFW ИPF
Брандмауэр— перваялиниязащитылюбогосервера, иотегоправильнойнастройкизависит, сможетлизлоумышленникпродвинутьсядальшевсвоихпопыткахпроникновениявсистему. Современныефайеры предлагаютмножествомеханизмовобеспечениябезопасности, используякоторыетыможешьоставить«неудел» 99% атакующих. Ивсеэтобез необходимостипокупкидорогостоящегооборудованияикоммерческого софта.
Главнаяцельвсехвзломщиков—получение доступаккомандномуинтерпретаторусервера дляиспользованияеговозможностейвсвоих интересах.Наиболеечастопроникновениев «святаясвятых»осуществляетсяспомощьюдыр всервисахилижечерезподборпароля(брутфорс)кодномуизних(например,ssh).
СКАНИРОВАНИЕПОРТОВ
Чтобывыявитьналичиеуязвимыхсервисов намашине,атакующийпроизводитразведкус помощьюсканерапортовиразличныхсистем обнаруженияуязвимостей.Обычновкачестве сканерапортовиспользуетсяnmap,который
способеносуществлятьсканированиедесятком различныхспособовивнекоторыхслучаяхумеетвыявлятьверсииОСисервисов.Вотсписок особеннопопулярныхфлаговnmap,которые обычноиспользуютвзломщики:
Флагиnmap, используемые присканировании
-sT — обычное TCP-сканирование с помощью открытия соединения на указанный порт и его завершения;
-sS — SYN/ACK-сканирование, связь разрывается сразу после ответа на запрос открытия соединения;
-sU — UDP-сканирование;
-sF — сканирование пакетами с установленным флагом FIN;
-sX — сканирование пакетами с установленными флагами FIN, PSH и URG; -sN — сканирование пакетами без установленных флагов.
Методзащитыотсканированияпрости известенлюбомусистемномуадминистрато-
ру.Заключаетсяонвпростомзакрытиивсех сервисов,которыенедолжныбытьвидныиз внешнейсети.Например,еслинамашинеработаютсервисыssh,sambaиapache,аизвнешнего мирадолженбытьвидентольковеб-серверс корпоративнойвеб-страницей,томежсетевой экранможетбытьнастроентак:
Начальнаянастройкаiptables
outif="eth1" iptables -F
iptables -i $outif -A INPUT \ -m conntrack \
--ctstate ESTABLISHED,RELATED \ -j ACCEPT
iptables -i $outif -A INPUT -p tcp \ --dport 80 -j ACCEPT
iptables -i $outif -P INPUT DROP iptables -i $outif -P OUTPUT ACCEPT
Начальнаянастройкаipfw
outif="rl0"
ipfw add allow ip from any to any \ via lo0
ipfw add allow ip from me to any \ via $outif
ipfw add allow tcp from any to me \ established via $outif
ipfw add allow tcp from any 80 \ to me via $outif
ipfw add deny ip from any to any \ via $outif
Начальнаянастройкаpf
outif="rl0" set skip on lo0 block all
pass out on $outif from $outif \
to any keep state
pass in on $outif proto from any \ to $outif port 80
Всетринабораправилделаютодноитоже
—разрешаютпрохождениелюбоготрафика поинтерфейсуобратнойпетли(loopback), разрешаютприниматьпакетыужеустановленныхсоединений(чтобы,например,браузер могполучитьответназапроскудаленному серверу),разрешаютобращенияна80-йпорт, блокируявсеостальные,иразрешаютлюбые коннектынаружу.Обративнимание,чтоеслив
примерахiptablesиipfwмыявнозадалиправила дляразрешенияприемапакетовужеустановленныхсоединений(established),товслучаесpf дляэтогодостаточнобылоуказать«keepstate»
âрулесете,разрешающемлюбыеисходящие соединения.
Вобщем-то,такаясхемазащитысетевых сервисовотсканированияипроникновения отличноработает, номыможемпойтидальше инастроитьфайертак,чтобынекоторыевиды сканированиявообщенемоглибыбытьвыполнены.Техническимынеможемсделатьэто
âотношенииобычногосканирования(флаги nmap'-sT','-sS'и'-sU')простопотому,чтовнем нетничегокриминального,однаконестандарт- ныетипысканирования,такиекак'-sN','-sF'
и'-sX',порождаютпакеты,которыеникакне моглибытьсозданылегальнымиприложениями.Поэтомубезтенисомненияотбрасываем подобныесоединения.
Методыборьбысэкзотическими видамисканирования
# Запрет FIN-сканирования Linux> iptables -A INPUT –p tcp \
XÀÊÅÐ 06 /137/ 10 |
125 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
|
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||
w Click |
to |
BUY |
|
|
|
|
|
SYN/ACK |
|||
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
||||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
d |
f |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
–m tcp \
–-tcp-flags FIN,ACK FIN -j DROP
FreeBSD> ipfw add reject tcp from any to any \ not established tcpflags fin
# Запрет X-сканирования
Linux> iptables -A INPUT –p tcp –m tcp \ --tcp-flags FIN,SYN,RST,PSH,ACK,URG
FIN,SYN,RST,PSH,ACK,URG \ –j DROP
FreeBSD> ipfw add reject tcp from any to any \ tcpflags fin, syn, rst, psh, ack, urg
# Запрет N-сканирования
Linux> iptables -A INPUT –p tcp –m tcp \ –-tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
FreeBSD> ipfw add reject tcp from any to any \ tcpflags !fin, !syn, !rst, !psh, !ack, !urg
ВOpenBSDвсеэтистрокиможнозаменитьпростойзаписьювначале /etc/pf.conf:
scrub in all
Директиваscrubактивируетмеханизмнормализациипакетов,при которомфрагментированныепакетывоссоединяются,апакетыснедопустимойкомбинациейфлаговотбрасываются.Кромеэкзотических видовсканированияscrubпозволяетзащититьсяиотобманасистем обнаружениявторжений(посылкасильнофрагментированныхпакетов) инекоторыхвидовDoS-атак.
ДлязащитыотSYN/ACK-сканирования,инициируемогоспомощью nmap-флага'-sS',мыможемиспользоватьметодпассивногоопределения ОС(OSFingerprint),доступныйвбрандмауэрахpfиiptables/netfilter (начинаясверсии1.4.6).Вовремяпроведенияобычногосканирования (флаг'-sT')nmapиспользуетстандартныйинтерфейссокетовоперацион- нойсистемы,поэтомутакойсканпочтиничемнеотличаетсяотпотока обычныхпакетов(нижемырассмотримнекоторыеегоотличия),однако приSYN/ACK-сканированииnmapформируетпакетысамостоятельно, поэтомуониимеютнекоторыечерты,которыевыдаютихисточник.Ме-
тодпассивногоопределенияОСпозволяетидентифицироватьэтипакеты иотброситьихспомощьюстандартныхправилфайервола:
OpenBSD> block in quick from any os NMAP
Linux> iptables -I INPUT -p tcp -m osf --genre NMAP \ -j DROP
Модульosfбрандмауэраiptables/netfilterиспользуетбазу«отпечатков», собраннуюиобновляемуюразработчикамиOpenBSD(/etc/pf.os), поэтомуобаэтихправиладолжныпривестикодинаковымрезультатам. Интереснотакжеито,чтоонипозволяютэффективнопротиводейство- ватьфункцииопределенияОСутилитыnmap(флаг'-O').
Теперь мы защищены почти от всех видов сканирования, кроме стандартного и тупого '-sT'. Как быть с ним? На самом деле все просто. Факт сканирования портов легко заметить, просто проанализировав логи файервола. Если за короткий промежуток времени происходило множество коннектов на различные порты — зна- чит, нас сканировали. Осталось только переложить эту идею на правила брандмауэра. Для iptables есть отличный рецепт, который блокирует всех, кто слишком настойчиво стучится в нерабочие порты:
Борьбасосканированиемспомощьюiptables
#Проверка на стук в нерабочие порты (10 в час) iptables -A INPUT -m recent --rcheck \
--seconds 3600 --hitcount 10 --rttl -j RETURN
#Вторая проверка на стук в нерабочие порты (2 в минуту) iptables -A INPUT -m recent --rcheck \
--seconds 60 --hitcount 2 --rttl -j RETURN
#Заносим адреса стучащихся в список
iptables -A INPUT -m recent --set
# Отбрасываем пакеты всех, кто превысил лимит на количество подключений
iptables -P INPUT -j DROP
Установивпакетxtables-addons,содержащийнаработкипроектаpatch-o- matic,мыполучимдоступкмодулюPSD(PortScanDetect),реализованномупообразуиподобиюдемонаscanlogd.Всепредыдущиестрокимогут бытьлегкозамененыпростымправилом:
126 |
XÀÊÅÐ 06 /137/ 10 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|||||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
||
|
|
|
d |
f |
|
|
n |
e |
|
|||
|
|
|
|
|
-x cha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Файерволкаконесть
#iptables -A INPUT -m psd -j DROP
Êсожалению,впакетныхфильтрахipfwиpf ничегоподобногонет,ноэтонебеда,потомукак сканированиюпортовхорошопротиводействуетдемонPortSentryитотсамыйscanlogd.
ЗАПРЕТICMP-СООБЩЕНИЙ
Хорошейпрактикойтакжеявляетсязапрет ICMP-сообщений,которыемогутвыдать дополнительнуюинформациюохостеили бытьиспользованыдлявыполненияразличных злонамеренныхдействий(например,модификациитаблицымаршрутизации).Нижеприведенатаблицасоспискомвозможныхтипов ICMP-сообщений:
ТипыICMP-сообщений
0 — echo reply (echo-ответ, пинг)
3 — destination unreachable (адресат недосягаем)
4 — source quench (подавление источника, просьба посылать пакеты медленнее)
5 — redirect (редирект)
8 — echo request (echo-запрос, пинг)
9 — router advertisement (объявление маршрутизатора)
10 — router solicitation (ходатайство маршрутизатора)
11 — time-to-live exceeded (истече- ние срока жизни пакета)
12 — IP header bad (неправильный IPзаголовок пакета)
13 — timestamp request (запрос зна- чения счетчика времени)
14 — timestamp reply (ответ на запрос значения счетчика времени)
15 — information request (запрос информации)
16 — information reply (ответ на запрос информации)
17 — address mask request (запрос маски сети)
18 — address mask reply (ответ на запрос маски сети)
Каквидишь,ответнанекоторыеICMP-сообще- нияможетпривестикразглашениюнекоторой информацииохосте,втовремякакдругие
—привестикмодификациитаблицымаршру- тизации,поэтомуихнеобходимозапретить. Обычновыходвовнешниймирразрешают ICMP-сообщениям0,3,4,11и12,втовремякак навходпринимаюттолько3,8и12.Воткакэто реализуетсявразличныхбрандмауэрах:
ЗапретопасныхICMP-сообщений
Linux> iptables -A INPUT -p icmp \ -icmp-type 3,8,12 -j ACCEPT
Linux> iptables -A OUTPUT -p icmp \ -icmp-type 0,3,4,11,12 -j ACCEPT
FreeBSD> ipfw add allow icmp \ from any to $outif in \
via $outif icmptype 3,8,12 FreeBSD> ipfw add allow icmp \ from $outif to any out \
via $outif icmptype 0,3,4,11,12
OpenBSD> pass in inet proto icmp \ from any to $outif \
Борьба с утечкой ресурсов
ПрииспользованиидействияTARPITобязательнодобавляйвконфигследующее правило,иначе«провисшие»соединениябудутсъедатьресурсыприобработке подсистемойconntrack:
#iptables-traw-IPREROUTING-ptcp--dport25-jNOTRACK
FWBuilder: универсальныйGUI длянастройкиiptables, ipfw, pf и ipf
icmp-type { 3, 8, 12 } keep state OpenBSD> pass out inet proto icmp \
from $outif to any \ icmp-type { 0, 3, 4, 11, 12 } \ keep state
ПрижеланиитыможешьзапретитьвесьICMP- трафик,включаяпинг-запросы,ноэтоможет повлиятьнакорректностьработысети.
БРУТФОРС
Разведавинформациюоботкрытыхпортахи ОС,взломщикпредпринимаетпопыткипроникновениявсистему,которыемогутбытьоснованынаэксплуатациидырвсервисах,либона подборепаролей.Предотвратитьвозможность взломасервисовбрандмауэрнамнепоможет, однакозатормозитьпроцесспереборапаролей
—легко.Дляэтогоприменяютсявозможности поограничениюколичествапакетов,пришед- шихнамашинусодногоIP-адреса.Воткакэто можносделатьспомощьюiptables:
Защитаотбрутфорса спомощьюiptables
#Цепочка для проверки соединений iptables -N brute_check
#Блокировка адреса, если за 60 секунд он инициировал более 2-х соединений
iptables -A brute_check -m recent \ --update --seconds 60 \ --hitcount 3 -j DROP
#Если нет — разрешаем соединение и заносим адрес в список
iptables -A brute_check -m recent \ --set -j ACCEPT
#Очищаем цепочку INPUT
iptables -F INPUT
# Отправляем в цепочку brute_check всех, кто пытается подключиться к 22-му порту
iptables -A INPUT -m conntrack \ --ctstate NEW -p tcp \ --dport 22 -j brute_check
iptables -P INPUT DROP
Тожесамоеможнопроделатьисиспользованиемpf:
XÀÊÅÐ 06 /137/ 10 |
127 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
|
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|||
w Click |
to |
|
|
|
|
|
SYN/ACK |
||||
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
- |
|
|
n |
e |
|
||
|
|
|
|
x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Настраиваемiptables
WARNING |
warning
Явноблокируяпакеты nmapспомощьюosf,
тырискуешьотсечь пакетылегальныхОС, имеющихсходную сигнатуру:SunOS4.1.x, Tru646.1,TOPS-20 version7,ExtremeWare 4.x,SymbianOS6048, SegaDreamcast Dreamkey3.0.
Защитаотбрутфорсаспомощьюpf
#Создаем таблицу для брутфорсеров table <bruteforcers> persist
#Блокируем всех, кто в нее попадает block in quick from <bruteforcers>
#Помещаем в таблицу bruteforcers всех, кто инициирует более двух соединений на 22-ой порт в минуту
pass in on $ext_if inet proto tcp to $outif \ port 22 flags S/SA keep state \ (max-src-conn-rate 60/2, \
overload <bruteforcers> flush)
Брандмауэрipfwнеобладаетдостаточнойфункциональностьюдляэффективногопротиводействиябрутфорсерам, поэтомуегопользователидолжныиспользоватьинструментыболеевысокогоуровня,такиекакспециальныемодули PAM,системыобнаружениявторженийипрограммывроде sshguard.
HTTP://WWW
links
sf.net/projects/ sentrytools— PortSentry www.openwall.com/ scanlogd—scanlogd
INFO |
info
Способызащитыот атактипаDoS/DDoS подробноописаны
вмоейстатье«Устоятьлюбойценой», опубликованной
всентябрьскомномере][ за2009 год.
СПУФИНГ
Спуфинг (подмена адреса отправителя пакета) может быть использован для осуществления DoS-атак или обхода брандмауэра. В первом случае спуфинг дает огромное преимущество атакующему, так как существенно затрудняет реакцию на атаку (пакеты, приходящие с совершенно разными адресами отправителя, не так просто классифицировать и заблокировать) и затягивает процесс закрытия новых соединений (обычно поддельный адрес недостижим, поэ-
тому закрытие соединения происходит лишь по истечению таймаута). Спуфинг, осуществляемый для обхода системы защиты, менее опасен и в большинстве случаев поддается контролю.
Достаточночасто,блокируявнешниесетевыесервисыхоста, системныеадминистраторыоставляютихоткрытымидля определенногодиапазонаадресов(например,дляподклю- чениясосвоейдомашнеймашины).Вычисливодинизэтих адресов,взломщикможетсформироватьпакет,указавэтот адресвкачествеобратного,итакимобразом«проскользнуть»черезбрандмауэр.Далееонможетугадатьномера последовательностиTCP-пакетовисделатьтак,чтобы доверяющийобратномуадресусервисвыполнилнужноеему действие.Этооченьтруднаявреализацииатака,которая, темнеменее,можетбытьвыполненаграмотнымспециалистом,аеслиречьидетопротоколеUDP,тоэтоподсилуи кулхацкеру.
Схемапрохожденияпакетачерезпод-
системуnetfilter ядраLinux
Ксчастью,защититьсяотподобныхатаклегко.Достаточно неоткрыватьпортынезащищенныхсервисоввовнешний мир,авслучаерезкойнеобходимостииспользоватьзащитныесистемысамихсервисов(например,сертификатыssh) илимеханизм«стукавпорты»(онемрассказановконце статьи).
Ситуация становится более сложной, когда дело касается сетевого моста, разделяющего внутреннюю и внешнюю сети (или две локальных сети). Доверительные отношения внутри локальной сети — обычное дело. Сервисы доступны всем, никакой аутентификации, шифрования и т.д. — просто лакомый кусочек для взломщика. Находясь во внешней сети, он может узнать сетевую маску внутренней сети и сформировать пакеты с соответствующим ей обратным адресом, что приведет к получению доступа ко всем ресурсам локалки. Это действительно опасная ситуация, но ее легко предотвратить с помощью правильной настройки брандмауэра или ОС. Для этого достаточно запретить прохождение пакетов, обратные адреса которых соответствуют используемым во внутренней сети, с внешнего интерфейса:
Linux> iptables -A INPUT -i $outif \ -s 192.168.1.0/24 -j DENY
FreeBSD> ipfw add deny ip from \ 192.168.1.0/24 to any via $outif
OpenBSD> block in on $outif from \ 192.168.1.0/24 to any
128 |
XÀÊÅÐ 06 /137/ 10 |