Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
Обнаружен взлом Если вы обнаружили, что в системе есть посторонний, а сервер содержит секретную информацию, потеря которой может оказаться фатальной для вас, я рекомендую остановить сетевой интерфейс, чтобы компьютер отключился от сети, и начать анализ системных журналов. Лучше пусть сервер будет полчаса недоступен, чем вы полностью потеряете над ним контроль. Для анализа первым делом необходимо запустить проверку конфигурации системы (об этом мы говорили в разд. 12.3). Необходимо сравнить отчеты программ проверки до и после взлома. Это поможет вам понять, что успел сделать хакер. Если в вашей системе оказался rootkit, то его нужно удалить. Следующим этапом необходимо проверить контрольные суммы всех основ- ных файлов, особенно конфигурационных из каталога /etc и исполняемых из каталога /bin. Злоумышленник может изменить эти файлы, чтобы получить потайной вход и оставаться в системе незамеченным. Определив отклонения, постарайтесь вернуть все в исходное состояние. Далее , анализируем целостность пакетов. Сначала выполняем команду: rpm –qa | grep kernel Таким образом можно проверить установленные пакеты ядра. После этого обследуем все установленные пакеты. Если вы увидели изменения, то добей- тесь возврата в исходное состояние. После этого необходимо проверить обновления для ОС Linux и используе- мых вами служб. В большинстве случаев взлом происходит именно из-за ус- таревшего программного обеспечения. Обновите все программы. Не забудьте и WEB-сценарии, которые используются на WEB-сервере, потому что они также нередко становятся причиной взлома. Если у вас WEB-сервер, то я не спешил бы возобновлять его работу, потому что это может быть опасно. Возможно, что ошибка еще не исправлена, если Советы хакера 449 у вас много сценариев, написанных самостоятельно. Если ваш компьютер вы- полняет функции почтового сервера или решает любые другие задачи, то мож- но возобновить работу, но продолжать тщательное наблюдение за системой. И только на последнем этапе я рекомендую начать анализ журналов и выяв- ление действий хакера, которые привели к взлому, параллельно наблюдая за работающей системой. Если злоумышленник снова попытается проникнуть, то вы должны увидеть это и предотвратить вторжение на раннем этапе, что- бы не пришлось повторять процесс чистки системы. Пока вы анализируете журналы, все пользователи должны сменить свои па- роли доступа к серверу и ко всем его службам. Разбирая журналы, вы должны определить: какие службы использовал хакер и в каких журналах есть записи о его ак- тивности на вашем сервере; какими учетными записями смог воспользоваться взломщик; какие команды он выполнял. Вы должны узнать как можно больше, чтобы определить, было ли выполнено все необходимое для предотвращения повторного взлома. Некоторые адми- нистраторы просто возобновляют работу сервера и через некоторое время расплачиваются за это. Желательно получить максимальное количество информации о хакере, чтобы эти сведения можно было предоставить в правоохранительные органы. Не пытайтесь бороться со взломом самостоятельно, потому что у вас может не хватить сил. Обратитесь за помощью в компетентные организации, кото- рые обладают достаточными ресурсами для выявления и пресечения атак. Чувствуя безнаказанность, хакер будет продолжать вторжения, и может воз- никнуть ситуация, когда взломщик успеет получить свое. Заключение Я надеюсь, что эта книга поможет вам больше узнать о безопасности вообще и о безопасности ОС Linux в частности. Мы достаточно много говорили и о защите, и о различных методах нападения, и может создаться мнение, что каждый администратор борется со злоумышленниками. Лично я считаю, что хакеров и взломщиков нет. Это миф, которым пытаются пугать админист- раторов. В любом мире есть сильные и слабые люди. Хакеры, в большинстве сво- ем, — это молодые ребята, которые просто знают больше других и умеют применить свои знания на практике. Почему-то сферу информационных технологий многие рассматривают как что-то сверхъестественное. Но это уже давно не так. Компьютеры прочно вошли в нашу жизнь и стали такими же предметами обихода, как радио или телевизор. Поэтому давайте относиться к ним также. Когда автомобильный мастер вмешивается в работу двигателя, растачивает его или просто украшает машину — это нормальная ситуация. Производи- тель не запрещает этого делать, но и не ручается за стабильную работу после таких действий. Однако теряется только гарантия, и никому не приходит в голову преследовать автомастера как "автохакера". Все это говорит о том, что с хакерами нужно бороться разумно. Если ваш сервер взломали, то это не значит, что надо посадить хакера. Нет, надо лишь уделять безопасности намного больше внимания. Если мы сможем повысить общий уровень знаний и качество предоставляемых в сети услуг, то взломов и хакеров будет намного меньше. Обучайтесь, развивайтесь и улучшайте собственные, а не надейтесь на го- товые решения, которые должны вас защищать. Если оставить все двери открытыми, то вас никто не защитит, в том числе и правоохранительные органы. П Р И Л О Ж Е Н И Я Приложение 1 Команды протокола FTP Когда вы подключаетесь к FTP-серверу с помощью клиента, работающего из командной строки (например, sftp, упомянутого в разд. 5.3.8), то для работы с сервером вам помогут следующие команды: cd путь — изменить текущую директорию на указанную. Чтобы подняться на один уровень выше, можно выполнить команду cd .. , а чтобы перейти в пап- ку ниже текущего уровня, то можно выполнить команду cd директория ; bye — разорвать соединение; exit — выйти из системы; chmod права имя файла — изменить права доступа к файлу. Например, чтобы установить права доступа 770 на файл passwd в текущей директо- рии нужно выполнить команду chmod 770 passwd ; get -P удаленный_файл локальный_файл — скачать файл. Ключ -P явля- ется необязательным, и позволяет сохранить права доступа на файл в ло- кальной системе, сделав их такими же, как и на сервере. Эта опция не ра- ботает , если файл передается между разными системами, потому что в Windows совершенно другой метод хранения прав доступа. Параметр локальный_файл указывает на полный путь к файлу, где должен быть со- хранен скачанный с сервера файл; put -P локальный_файл удаленный_файл — закачать локальный файл на сервер . Выполнение команды схоже с get , только в данном случае ло- кальный файл закачивается на сервер; help — отобразить список команд, которые разрешено выполнять; pwd — отобразить текущую директорию; rm файл — удалить файл; rmdir директория — удалить директорию; mkdir имя — создать директорию с указанным именем. Вы должны учитывать, что разные FTP-серверы и FTP-клиенты могут обра- батывать команды по-разному. Приложение 2 Полезные программы Эти программы могут помочь вам в борьбе с хакерами. Сперва перечислим снифферы , то есть утилиты для прослушивания трафика. dsniff (monkey.org/dugsong/dsniff) — пакет программ для прослушива- ния трафика, который состоит из следующих утилит: • dsniff — служит для перехвата паролей. Она прослушивает трафик в ожидании пакетов авторизации, и если такой пакет найден, то завет- ный пароль выводится на экран. Поддерживается поиск пакетов авто- ризации всех основных протоколов, таких как TELNET, FTP, POP и т. д.; • arpspoof — позволяет отправлять ARP-ответы, с помощью которых можно обмануть компьютеры жертвы, сказав, что определенный IP- принадлежит вам; • dnsspoof — позволяет отправлять поддельные DNS-ответы. Если жерт- ва запрашивает IP-адрес сервера, вы можете подделать ответ DNS- сервера , чтобы вместо нужного ему сервера клиент подключился к ва- шему компьютеру, и вы смогли перехватить на себя трафик; • filesnaf — прослушивает трафик в ожидании передачи файлов по NFS; • mailsnaf — прослушивает сеть в ожидании E-mail-сообщений по прото- колам POP и SMTP; • msgsnaf — отслеживает сообщения интернет-пейджеров и чатов, таких как ICQ и IRC; • macof — позволяет наводнить сеть пакетами с сгенерированными MAC-адресами. Если коммутатор перестает справляться с нагрузкой по определению пути, то он начинает работать как простой концентратор, и вы сможете прослушивать трафик всех компьютеров сети; Приложение 2. Полезные программы 457 • tcpkill — может завершить чужое соединение, отправив поддельный пакет с установленным флагом RST; • webspy — позволяет прослушивать соединения с WEB-серверами и со- храняет список сайтов, которые посещал определенный пользователь; • webmint — эмулирует WEB-сервер и становится посредником. Техно- логия атаки этим методом рассмотрена в разд. 7.9; ettercap (ettercap.sourceforge.net) — на мой взгляд, это самая удобная программа для прослушивания трафика. Основное назначение програм- мы — поиск паролей в пакетах всех популярных протоколов. Админист- раторы оценят возможность программы определять наличие в сети других программ подслушивания трафика. Теперь напомним программы, которые помогают анализировать конфигура- цию сервера и определять попытки взлома: lsat (usat.sourceforge.net) — программа проверки конфигурации системы (см. разд. 12.3.1). Анализирует конфигурацию сервера, отображая потен- циальные ошибки, и в некоторых случаях может дать рекомендации по устранению недочетов; bastille (bastille-linux.sourceforge.net) — система выявления потенциаль- ных ошибок в конфигурации сервера (см. разд. 12.3.2). Программа может автоматически исправлять ошибки и недочеты в конфигурации; Klaxon (www.eng.auburn.edu/users/doug/second.html) — программа для определения атак на вашу систему (см. разд. 12.4.1); PortSentry (sourceforge.net/projects/sentrytools) — утилита для слежения за портами и отслеживания попыток их сканирования (см. разд. 12.4.2). Позволяет автоматически сконфигурировать сетевой экран для запрета со- единения с компьютером, с которого происходило сканирование; Swatch (sourceforge.net/projects/swatch) — удобная программа анализа журналов по расписанию (см. разд. 12.6.2); Logsurfer (sourceforge.net/projects/logsurfer) — одна из немногих про- грамм , позволяющих анализировать журнал безопасности в динамике (см. разд . 12.6.3). Напоследок перечислим еще парочку полезных программ: John the Ripper (www.openwall.com/john) — самая знаменитая программа подбора паролей; Nmap (nmap.org) — сканер портов, который обладает большим количест- вом возможностей. Приложение 3 Интернет-ресурсы Я перечислю лишь несколько сайтов, которые кажутся мне наиболее инфор- мативными . Вы, вероятно, расширите этот список сайтами, интересными и полезными именно для вас. www.redhat.com — сайт компании Red Hat, где можно скачать последние версии программ, ядра, патчи и прочитать о перспективах развития ОС. www.kernel.org — сайт, посвященный ядрам ОС Linux. Здесь же можно скачать последнюю версию ядра. www.securityfocus.com — сайт посвященный безопасности, множество описаний различных уязвимостей и методов исправления ошибок. www.cert.org — еще один сайт, посвященный информационной безопас- ности www.securitylab.ru — русскоязычный сайт по информационной безопас- ности , где можно прочитать об уязвимостях на русском языке. www.xakep.ru — сайт российского журнала "Хакер". www.insecure.org — множество полезной информации по безопасности, статьи и программы. www.novell.com/de-de/linux — сайт SUSE, одного из самых простых и удоб- ных дистрибутивов Linux. www.linspire.com — разработчики Linspire пытаются создать ОС, в кото- рой могли бы выполняться программы Windows на ядре Linux. www.debian.org — официальный сайт дистрибутива Debian. www.slackware.com — сайт дистрибутива SlackWare. Приложение 4 Работа в командной строке Небольшой секрет: когда вы набираете команды, то можно экономить время с помощью кнопки и нажмите Если вам нужно повторить выполненную ранее команду, то можете исполь- зовать клавиши <↑> или <↓>. После нажатия на клавишу <↑> в командной строке появится последняя введенная команда. Нажмите еще раз, и увидите предпоследнюю . Нажмите <↓>, и вы опять вернетесь к последней команде. Таким образом можно перемещаться по истории введенных команд. Заметь- те , что не обязательно вводить команду именно так, как она была введена ранее , можно ее подредактировать и лишь затем нажать Псевдонимы С помощью команды alias можно создавать псевдонимы для команд. Если вы часто выполняете какое-то действие, для чего нужно подать длинную команду с кучей параметров, то удобно создать для нее псевдоним. Напри- мер , для просмотра текущего каталога используется команда ls , но она пока- зывает короткое содержимое, без прав доступа, а часто бывает необходимо увидеть именно их. Каждый раз указывать параметр -I , набирая ls , нудно, поэтому можно создать псевдоним ll : alias ll="ls -I" Теперь выполнение команды ll будет идентично выполнению ls -I . Но не торопитесь делать именно этот псевдоним в своей системе. Вполне возмож- но , что он уже у вас есть, по крайней мере, у меня в дистрибутиве такой псевдоним создан по умолчанию. Приложения 460 Перенаправление Теперь поговорим о том, как можно направлять выходные данные команды не на экран, а, например, в файл. Для этого используется символ >. Напри- мер , выполните команду: ls > outfile.txt В результате выполнения этой команды содержимое каталога не будет выве- дено на экран, а будет сохранено в файл. Если отобразить содержимое файла, подав команду cat outfile.txt вы увидите то, что было бы показано на экране после выполнения команды ls без перенаправления. Впрочем, не совсем так: в файле outfile.txt после та- кой команды окажется еще и его собственное имя, то есть строка outfile.txt. Если же этого файла до выполнения команды с перенаправлением не было, то и на экране бы мы его не увидели. Надо иметь в виду, что перенаправление перезаписывает файл без подтвер- ждения , если он уже существовал. Чтобы не переписывать файл, а дописы- вать в его конец, надо использовать два знака больше: ls >> outfile.txt Мы можем не только выводить результат в файл, но и получать параметры из файла . Например, можно выполнить команду: cat < infile.txt Команде cat в качестве параметров будет передано содержимое infile.txt. С помощью символа вертикальной черты | можно изменять стандартный поток ввода-вывода. Допустим, вы хотите узнать, когда в систему послед- ний раз входил пользователь по имени flenov. Для этого можно выполнить команду lastlog . Но если в системе зарегистрировано 1000 пользователей, то найти нужного будет проблематично. Он может находиться в любом месте , ведь результат не отсортирован. Представьте себе, если бы телефон- ная книга содержала всех абонентов в неотсортированном виде! Это была бы катастрофа. Как отсортировать вывод команды? Да очень просто, нужно направить ее вывод , в данном случае список пользователей команде sort , которая сорти- рует входящие данные и выводит их в отсортированном виде. А это можно сделать с помощью символа вертикальной черты: lastlog | sort Приложение 4. Работа в командной строке 461 Запуск в фоне Если команда работает очень долго, то вы можете запустить ее на выполне- ние в фоновом режиме. Для этого используется символ амперсанда ( & ), кото- рый нужно поставить в конце команды. Например, у меня на работе есть OLAP-сервер (это программа для получения отчетности), который написан на Java и при запуске захватывает консоль. Это значит, что консоль блокиру- ется программой, и пока программа не будет завершена, я не могу ни закрыть консоль , ни выполнять в ней другие команды. Если таким образом запустить несколько серверов, то на рабочем столе количество консолей начинает рас- ти . Чтобы избавиться от такого нежелательного поведения, достаточно после команды поставить символ & : start-olap-server.sh & Теперь программа запускается на выполнение, но не блокирует консоль. Да, вы видите вывод на экране, но в любой момент можете забрать консоль себе, нажав Последовательность команд А что если вам нужно просто выполнить последовательность команд? В этом случае напишите эти команды через точку с запятой. Например: ls > /outfile.txt; cat /outfile.txt; ls -al /outfile.txt Эта строка идентична вводу трех отдельных команд: ls > /outfile.txt cat /outfile.txt ls -al /outfile.txt В первой строке я запрашиваю отображение файлов текущей директории и сохранение результата в файл outfile.txt в моей домашней директории (на домашнюю директорию указывает символ тильды ( )). Вторая команда отображает содержимое созданного файла. Так как эта команда будет выполнена после завершения первой, файл уже будет сущест- вовать . Третья команда отображает параметры файла, его права доступа и время создания. Если команды разделить с помощью символов && , то вы указываете, что обе команды должны быть выполнены. Если первая команда не выполнится, Приложения 462 то вторая уже и не будет выполняться. Например, если файл outfile2.txt не существует , то вторая команда не будет выполнена: ls /outfile2.txt && cat /outfile.txt Если же нужно выполнить одну из команд, то разделите их символами двух вертикальных черт ( || ). Например: ls /outfile2.txt || cat /outfile.txt Если файл outfile2.txt не существует, то будет выполнена вторая команда. Если же он существует, значит, первая команда будет выполнена корректно, и вторая выполняться не будет. Командная строка в Linux — мощный механизм, который позволяет делать куда больше перечисленного. Полное описание всех возможностей нельзя поместить в таком коротком приложении, но даже упомянутые только что приемы позволят вам работать с ней более эффективно. |