Инструменты, выявляющие попытки вторжения

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478

Если взломщик проникает в систему, он изменяет ее конфигурацию в соответствии со своими потребностями. В зависимости от характера вторжения изменяется внешний вид Web-страниц, в файлах протоколов появляются новые записи, упрощающие обращение злоумышленников к системе, изменяются коды программ, а также появляются другие "сюрпризы". К сожалению, предсказать, какие именно действия предпримет взломщик, невозможно. Именно поэтому бороться с последствиями вторжения крайне сложно; если вы не знаете, что предпринял взломщик и каковы были его цели, нельзя доверять ни одной из системных программ. Радикальное решение — удалить с дисков компьютера всю информацию и повторно установить систему или восстановить ее с помощью резервной копии, сделанной еще до атаки.

Поскольку взломщик модифицирует системные файлы, наличие измененных файлов

может служить признаком атаки. Обнаружить факт проникновения в систему можно лишь в том случае, если администратор заранее сохранил информацию о состоянии основных системных файлов, например, файла /etc/passwd и исполняемых программ в каталоге /bin. Эта информация должна храниться в закодированном виде либо ее следует записать на сменный носитель. Эти данные необходимо периодически использовать для провер­ки целостности файлов. Если файл, который не должен был подвергаться изменениям,

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

(Необходимо учитывать, что некоторые файлы мог изменить сам администратор. Напри­мер, при создании новой учетной записи данные записываются в файл /etc/passwd.)

Использование базы данных пакетов

Во многих версиях Linux есть инструмент, который можно использовать для контроля целостности файлов. Речь идет о базе данных пакетов. Система управления пакетами Debian и система сохраняют в базе данных информацию об инсталлированных

программах. Для сравнения программы на диске с исходным содержимым пакета надо указать опцию —verifу (или -V) программы rpm. Ниже приведен пример вызова

данной команды.

# rpm -V postfix

S.5.... Т с /etc/postfix/aliases S.5.... Т с /etc/postfix/main.cf

В результате выполнения программы выводится информация о файлах, состояние ко­торых не соответствует исходному. В начале каждой строки выходных данных содержится набор признаков, сообщающих о характере несоответствия файлов. Например, буква "S" указывает на то, что размер файла изменился, цифра "5" свидетельствует о несоответствии сумм MD5, а буква "Т* означает; что изменилось время модификации файла. Сообщения, отображаемые в данном примере, не являются признаком атаки, так как файлы, ука­занные программой, могут периодически изменяться при настройке пакета. Если же вы выясните, например, что был изменен исполняемый файл Postfix, вам необходимо начать поиски других признаков вторжения, а впоследствии предпринять меры для устранения

последствий атаки.

В системе Debian аналогичные функции выполняет утилита dlocate, однако она не входит в составе Debian 2.2. Установив данную программу, вы сможете выполнить команду наподобие следующей:

# dlocate -md5check postfix

При выполнении данной команды проверяются суммы MD5 для содержимого пакета postfix и генерируется отчет о том, совпадают ли эти суммы для каждого файла.

Вместо проверки программы вы можете проверить всех паке-

тов, используя команду rpm -Va. Выходные данные будут насчитывать сотни строк, большинство из которых сообщают об изменениях конфигурационных файлов и файлов данных. Такие сообщения можно не принимать во внимание. Учитывая большой объем данных, выход в файл либо передать сгенерированную про-

граммой информацию утилите more или less.

Программы rpm и dlocate имеют существенные недостатки. Один из них состоит в том, что после инсталляции пакета нельзя выяснить, кто внес изменения в конфигу­рационный файл: системный администратор или взломщик. Кроме того, при желании взломщик может легко скрыть следы своего вмешательства. Для этого ему надо лишь использовать для установки модифицированных программ диспетчер пакетов. Например, если злоумышленник хочет заменить оболочку /bin/bash, ему достаточно установить новый RPM-naKeTbash. В результате вызов rpm -Va не выявит изменений. По этой при­чине не следует полностью полагаться на диспетчер пакетов; желательно использовать наряду с ним инструменты, предназначенные для выявления вмеша-

тельства в работу системы. Общее правило можно сформулировать так. Если диспетчер пакетов изменения файлов, полученное сообщение следует рассматривать как

признак того, что система подверглась атаке. Если же диспетчер пакетов не смог выявить изменения, этот факт не может быть гарантией целостности системы.

Использование Tripwire

Для выявления случаев несанкционированного доступа к системе разработан инстру­мент Tripwire (http: //www. tripwire. org). Эта программа поставляется со многими

версиями Linux. Если же в вашем дистрибутивном пакете она отсутствует, скопируйте ее

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

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

обеспечения сохранности базы Tripwire поместите ее на сменный носитель, запретив

запись данных.

Tripwire может работать в одном из следующих режимов.

• Генерация базы данных. При первом запуске Tripwire необходимо инициализи­ровать базу данных. Для этого после редактирования конфигурационного файла

вызовите команду tripwire -initialize. Выполнение этой процедуры мо­жет продлиться достаточно долго, так как программа Tripwire должна создать кон­трольные суммы всех файлов, контроль над которыми был предусмотрен при на­стройке данного инструмента. Сформированная база данных помещается в под­каталог databases текущего каталога, но желательно переместить ее в каталог /usr/lib/tripwire/databases. Запись данных в этот каталог следует запре­тить.

• Обновление базы данных. Если вы внесли изменения в систему, можете об­новить базу данных Tripwire. Для этого вызовите команду tripwire -update путь_к_файлу, указав файл, который необходимо учесть в базе данных.

• Интерактивное обновление базы данных. Если внесенные вами изменения затра­гивают несколько компонентов системы или если вы установили большой пакет, за­пустите Tripwire в интерактивном режиме. Для этого вызовите команду tripwire -interactive. В этом случае программа будет отыскивать файлы, подвергшиеся изменениям, и осведомляться у вас, следует ли учитывать эти изменения в базе данных.

• Проверка целостности системы. Этот режим используется по умолчанию. Для того чтобы запустить Tripwire в таком режиме, достаточно ввести в командной строке tripwire. Проверку целостности системы желательно выполнять каждый день. Периодический вызов Tripwire можно организовать с помощью

Работой Tripwire управляет конфигурационный файл /etc/tripwire/tw. config.

Подобно многим другим конфигурационным файлам, строки, начинающиеся с символа

#, содержат комментарии. В остальных строках указываются каталоги, предназначенные

для проверки. Соответствующие записи имеют следующий формат:

[!|=]  объект [флаги_выбора \ шаблон]

Назначение компонентов записи приведено ниже.

• !. Если данный символ предшествует имени объекта, то указанный файл или ка­талог не подлежит проверке. Если объектом является каталог, содержащиеся в нем подкаталоги также не проверяются.

• =. Данный символ указывает на то, что каталог подлежит проверке, а файлы и под­каталоги, содержащиеся в нем, не должны проверяться. Обычно этот символ ука­зывается для рабочих каталогов пользователей. Если символ = предшествует имени каталога, то Tripwire лишь сообщает о том, что файлы или подкаталоги были созда­ны или удалены, но не приводит подробную информацию об этих файлах.

• объект. Объект представляет собой имя файла или каталога, предназначенного для проверки, например /etc или /usг. Если в качестве объекта указан каталог, выполняется проверка всех его подкаталогов. Не проверяются лишь подкаталоги, представляющие собой отдельные файловые системы. Например, если содержимое каталогов /usг и /usr/local находится в разных разделах, то, чтобы проверить все дерева подкаталогов, вы должны создать записи как для /usr, так и для /usr/ local.

• флаги^выбора. Данный компонент записи указывает Tripwire на то, какие типы изменений должны быть отражены в отчете. Флаги задаются в формате [+|-] [pinugsamc.123456789] . . .. Символ + или - разрешает или запреща­ет включать сведения в отчет. Остальные символы определяют типы проверки. Например, р задает поверку прав доступа, i — проверку индексных дескрипторов (mode), n соответствует числу связей, и — идентификатору владельца файла, g — идентификатору группы, s — размеру файла, а — времени доступа, — времени модификации, с — времени создания индексного дескриптора, а числа 0-9 задают особенности контрольного суммирования.

• шаблон. Вместо флагов выбора вы можете задать шаблон. По умолчанию прини­мается шаблон R, соответствующий +pinugsml2-ac3456789. В качестве при­меров других шаблонов можно привести L исполь­зуемый для проверки файлов протоколов, N (+pinugsamcl23456789), который выполняет подробную проверку, но проверка эта занимает много времени, и Е (-pinugsamcl23456789), игнорирующий все типы проверки.

Сформировав конфигурационный файл Tripwire, вы должны запустить программу в режиме генерации базы данных. В результате файл базы данных будет создан в ка­талоге databases. При последующих запусках Tripwire будет отыскивать файл базы данных в каталоге /usr/lib/tripwire/databases. Этот файл очень важен, поэто­му вы должны обеспечить его сохранность. Способы сохранения файла базы данных

описаны ниже.

• Файл базы данных может храниться на сменном носителе, защищенном от записи, например на дискете или компакт-диске. Если вы собираетесь выполнять проверку, периодически запуская Tripwire с помощью сгоп, носитель может быть постоянно

смонтирован (такой подход создает неудобства при работе с системой). Если вы

предполагаете запускать Tripwire вручную, носитель можно монтировать непосред­ственно перед проверкой.

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

Linux. Это затруднит действия взломщика по поиску пароля, но не гарантирует

целостность файла. Опытный хакер способен преодолеть подобные преграды.

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

• Tripwire поддерживает кодирование данных, поэтому файл базы данных можно

сохранить в зашифрованном виде. Чтобы изменить содержимое файла базы данных,

взломщик должен знать пароль, использовавшийся при кодировании.

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