Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
14.6.2. Тюнинг HDD Долгое время в ОС Linux для доступа к жесткому диску была отключена да- же поддержка DMA (Direct Memory Access, прямой доступ к памяти), хотя эта возможность существует почти во всех материнских платах еще со вре- мен первых компьютеров с процессором Pentium. ОС не использовала DMA в целях совместимости с более старыми компьютерами, поэтому функцию приходилось включать самостоятельно. В современных дистрибутивах поддержка DMA уже включена, но работу винчестера можно и дальше оптимизировать. Для тестирования и настройки жесткого диска используется утилита hdparm . Для определения скорости ра- боты диска выполните команду с ключом -t : hdparm –t /dev/hda Глава 14 440 В ответ вы получите сообщение типа: Timing buffered disk reads: 64 MB in 3.02 seconds = 21.19MB/sec Попробуйте в качестве параметра указать раздел: hdparm /dev/hda2 В результате будут выведены параметры жесткого диска: /dev/hda2: multcount = 128 (on) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 8 (on) geometry = 2088/255/63, sectors = 32515560, start = 1028160 Из этого сообщения можно узнать много интересного: multcount — количество слов, читаемых за один такт. Эта опция должна быть включена, и желательно установить значение 128. Это может повы- сить производительность на 30—50%. Для изменения значения использу- ется ключ -mX , где X — это устанавливаемое значение; using_dma — режим DMA. Для включения используется ключ -d1 ; IO_support — режим доступа к диску. По умолчанию стоит 16-битный, но сейчас уже можно использовать 32-битный режим. Для включения ис- пользуется ключ -c3 Это основные три параметра, которые могут реально повысить производи- тельность . Итак, давайте установим значения в соответствии с указанными выше рекомендациями. Для этого выполните команду: hdparm –m128d1c3 /dev/hda Как видите, мы просто перечислили все ключи и указали диск /dev/hda Обратите внимание, что при определении устройства не стоит никаких цифр, которые указывали бы на раздел, так как доступ можно изменить только же- сткому диску в целом. После изменения параметров их необходимо сохранить с помощью команды: hdparm –k1 /dev/hda После этого снова выполните команду тестирования скорости работы диска hdparm –t /dev/hda Есть еще один параметр, который влияет на производительность — режим доступа . В настоящее время поддерживается три режима ATA 33/66/100. Советы хакера 441 Сверьтесь с документацией на жесткий диск, чтобы узнать, что он поддержи- вает . Для смены режима используется ключ -X : -X34 — ATA33; -X68 — ATA66; -X69 — ATA100. Для установки ATA66 выполните команду: hdparm –X68/dev/hda Странно , но установленные вами параметры не сохраняются после переза- грузки системы, поэтому желательно прописать эти команды в файл /etc/rc.d/rc.local. Для этого в самый конец файла добавляем три строки: hdparm –m128d1c3/dev/hda hdparm –X68/dev/hda hdparm –k1 /dev/hda 14.6.3. Автомонтирование Если вы начали знакомство с компьютером под ОС Windows, то вам пока- жется дикостью процесс ручного монтирования файловых систем и осо- бенно CD-ROM-дисков. Действительно, для сервера это еще приемлемо, потому что там диски используются редко, а вот на рабочей станции внеш- ние носители применяются регулярно. Мне иногда приходится вставлять по 20 разных дисков в день, и каждый раз монтировать и демонтировать их очень неудобно. Так как ОС Linux все больше поворачивается в сторону домашних пользова- телей , в последних дистрибутивах производителями по умолчанию включена возможность автоматического монтирования. Для этого используется служба autofs. Убедитесь, что она запускается у вас, и можно приступать к настройке. Основной конфигурационный файл сервиса autofs — файл /etc/auto.master. Просмотрите его содержимое в листинге 14.2. Листинг 14.2. Конфигурационный файл /etc/auto.master # $Id: auto.master,v 1.2 1997/10/06 21:52:03 hpa Exp $ # Sample auto.master file # Пример файла auto.master # Format of this file: # Формат этого файла: # mountpoint map options Глава 14 442 # точка_монтирования карта настройки # For details of the format look at autofs(8). # Для дополнительной информации выполните команду man autofs /misc /etc/auto.misc --timeout=60 Если не считать комментариев, в этом файле только одна содержательная строка — последняя. В вашей системе она может быть закомментирована, и для использования автоматического монтирования необходимо убрать знак "#". У конфигурационной строки следующий формат: точка_монтирования карта настройки В данном случае точкой монтирования выступает директория /misc. Это немного затрудняет работу, потому что при ручном подключении использу- ется директория /mnt. Второй параметр определяет карту монтирования. В данном случае это файл /etc/auto.misc. Формат и назначение файла чем-то похоже на файл /etc/fstab, который используется для команды mount. Содер- жимое файла /etc/auto.misc можно увидеть в листинге 14.3. Последний параметр --timeout=60 — это время простоя. Если в течение это- го периода в директории, использованной под подключение, не будет актив- ности , то устройство будет размонтировано. По умолчанию используется значение 60 секунд. В большинстве случаев это вполне приемлемо. Листинг 14.3. Содержимое файла /etc/auto.misk # $Id: auto.misc,v 1.2 1997/10/06 21:52:04 hpa Exp $ # This is an automounter map and it has the following format: # Это карта автомонтирования, которая имеет следующий формат: # key [ -mount-options-separated-by-comma ] location # Details may be found in the autofs(5) manpage # Дополнительную информацию можно получить, выполнив man autofs cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom # The following entries are samples to pique your imagination # Следующие записи являются примерами для возбуждения воображения #linux -ro,soft,intr ftp.example.org:/pub/linux #boot -fstype=ext2 :/dev/hda1 #floppy -fstype=auto :/dev/fd0 #floppy -fstype=ext2 :/dev/fd0 Советы хакера 443 #e2floppy -fstype=ext2 :/dev/fd0 #jaz -fstype=ext2 :/dev/sdc1 #removable -fstype=ext2 :/dev/hdd Теперь рассмотрим содержимое файла /etc/auto.misc. Здесь только одна строка без комментария, которая описывает команды подключения диска CD-ROM : cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom Первый параметр определяет директорию внутри /misc, куда будет монтиро- вано устройство. Второй атрибут — параметры файловой системы и ключи, которые будут использоваться для подключения. В случае с CD-ROM ис- пользуется файловая система ISO9660 и опции, разрешающие только чтение и запрещающие использование SUID- и SGID-программ. Последний пара- метр определяет устройство, которое должно монтироваться. Как видите, все очень даже просто. Если попытаться обратиться к директо- рии /misc/cd, и в приводе CD-ROM в этот момент будет находиться диск, то он будет автоматически смонтирован. Правда, для этого нужно использовать команды Linux (например, выполнить команду ls /misk/cd ), а не другие программы . Если просмотреть директорию /misc/cd с помощью Midnight Commander, то диск не будет смонтирован. 14.7. Короткие советы Мы проанализировали достаточно много аспектов создания безопасной систе- мы , но есть некоторые общие рекомендации, которые подытоживают рассмот- ренный в этой книге материал. Поэтому напоследок я собрал короткие советы, которые пригодятся вам при построении безопасного сервера или сети. 14.7.1. Дефрагментация пакетов С помощью фрагментированных пакетов хакеры производят очень много атак на серверы. В Linux можно сделать так, чтобы ОС объединяла приходя- щие пакеты. Если у вас монолитное ядро (без поддержки модулей), то необ- ходимо прописать 1 в файл /proc/sys/net/ipv4/ip_always_defrag. Это легко сде- лать с помощью команды: echo 1 > /proc/sys/net/ipv4/ip_always_defrag В последних ядрах, которые используют RPM-модули, необходимо подгру- зить модуль ip_conntrack : modprobe ip_conntrack Глава 14 444 14.7.2. Маршрутизация от источника Мы уже говорили о том, как пакеты проходят по сети. Напомню, что внутри сети пакеты передаются по MAC-адресу, а для обмена между сетями необхо- димо маршрутизирующее устройство, которое умеет работать с IP-адресами и направлять пакеты по нужному пути. В принципе, правильный путь опре- деляется самим маршрутизатором. Но эти устройства управляемы, и сущест- вует несколько методов заставить их устремить пакеты в нужное русло. Один из этих методов — маршрутизация от источника (source routing). С помощью маршрутизации от источника можно установить путь прохож- дения пакета по сети. Иногда это действительно удобно, но мы же знаем, что удобство — это "палка о двух концах". Вполне логичным было бы маршрутизацию от источника запретить, а еще лучше вообще никогда не придумывать Как маршрутизация от источника влияет на безопасность? Допустим, что ваш сетевой экран запрещает подключения с адреса 192.168.1.1, потому что через этот адрес к вам пытался проникнуть хакер. Так как все пакеты злоумышлен- ника маршрутизаторы направляют именно через этот адрес, то подключение становится невозможным. Но благодаря source routing злоумышленник мо- жет сам указать путь, по которому должен следовать пакет, и провести его в обход маршрутизатора или сервера с запрещенным адресом. Жаль , что мы не можем запретить маршрутизацию от источника на компь- ютере хакера, но мы должны запретить ее на своем компьютере и тем бо- лее на компьютере, который выполняет роль шлюза в Интернет (прокси- сервер или сетевой экран). Для этого необходимо установить 0 в файле /proc/sys/net/ipv4/conf/all/accept_source_route или выполнить команду: echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route 14.7.3. SNMP Протокол SNMP (Simple Network Management Protocol, простой протокол сетевого управления) применяется для управления сетевыми устройствами, такими как маршрутизаторы, управляемые коммутаторы и даже бытовыми устройствами , подключенными к сети. Существует три версии этого протокола. Первая версия была разработана очень давно и, конечно же, осуществляла открытый обмен паролями и дан- ными . Шифрование было добавлено в SNMP начиная со второй версии. Именно поэтому первую версию не рекомендуется использовать, а лучше даже запретить. Советы хакера 445 У SNMP есть еще один недостаток — протокол использует в качестве транс- порта протокол UDP, который не поддерживает виртуальное соединение, и передача осуществляется простой отправкой пакетов в сеть без подтвер- ждения доставки и без какой-либо авторизации, то есть злоумышленник лег- ко может подделать любые поля пакета. Я не рекомендую использовать SNMP вообще, потому что для большинства задач можно обойтись без него. Конечно же, шифрование, добавленное во второй версии, значительно повысило безопасность, и его можно стало при- менять даже в особо важных случаях. Но необходимо сначала убедиться, что вы работаете именно со второй или более старшей версией, и что шифрова- ние используется. 14.7.4. Полный путь Когда вы запускаете какие-либо команды или программы, то необходимо указывать полный путь к ним. Большинство пользователей и администрато- ров просто указывают имя запускаемого объекта, что может стать причиной взлома . Да что там говорить, я сам грешу вводом коротких команд. Рассмотрим пример того, как злоумышленник может использовать короткие имена в своих целях на примере команды ls : 1. Хакер создает в каком-либо каталоге (например, в общедоступном /tmp) файл с таким же именем, как и у атакуемой программы. 2. В этот файл хакер записывет сценарий, который выполняет необходимые ему действия. 3. В переменную окружения PATH добавляется путь к этому каталогу. Например , в файл может быть записан следующий код: #!/bin/sh # Изменяем права доступа к файлам /etc/passwd и /etc/shadow chmod 777 /etc/passwd > /dev/null chmod 777 /etc/shadow > /dev/null # Выполняем программу ls exec /bin/ls "$@" В данном примере выполняется всего три команды. Первые две изменяют права доступа к файлам /etc/passwd и /etc/shadow так, чтобы любой пользова- тель смог их прочитать. При этом все сообщения, которые могут возникнуть во время выполнения команд, направляются на нулевое устройство /dev/null, чтобы они не отображались на экране. После этого выполняется системная команда ls из каталога bin Глава 14 446 Теперь устанавливаем программе права, которые позволят выполнять ее лю- бому пользователю: chmod 777 /tmp/ls Ложный файл готов. Теперь необходимо сделать так, чтобы он выполнялся вместо системной команды ls . Для этого достаточно добавить каталог /tmp в самое начало системной переменной окружения PATH . Если теперь кто-то запустит команду ls без указания полного пути, то выполнится наш сцена- рий , который попытается изменить права доступа на файлы паролей. Если у пользователя, выполнившего команду, хватит полномочий для изменения прав , то можно считать, что система взломана. Следите за содержимым системной переменной окружения PATH , чтобы ее никто не изменил. 14.7.5. Доверенные хосты В файле .rhosts можно прописать адреса компьютеров, которым вы доверяете. Пользователи этих компьютеров смогут подключаться к серверу без аутен- тификации с помощью таких программ, как telnet или ftp. Мы уже столько раз говорили о безопасности, что нетрудно догадаться, что хакер может подделать адрес отправителя. Если ему удастся это сделать, то ваш сервер превратится в проходной двор. 14.7.6. Защита паролей Для защиты паролей Linux недостаточно только охранять файл /etc/shadow. Помимо этого вы должны контролировать сложность паролей, регулярно пы- таясь подобрать пароль по популярным словарям, которые легко найти в Ин- тернете (именно их используют хакеры). Если пароли сложные, то даже при получении файла /etc/shadow взломщику понадобится слишком много време- ни , и скорей всего ничего не удастся. Но не все так просто. Если пароли для доступа к системе защищаются самой ОС и обязательно шифруются, то остальные программы могут не иметь та- кой возможности. Например, в пользовательских программах для доступа к определенным сервисам, например, FTP или POP3, может не использовать- ся шифрование, и в этом случае пароли могут находиться в конфигурацион- ном файле в открытом виде. Прежде чем устанавливать какую-либо программу, узнайте, где она хранит пароли и как они защищены (используется шифрование или нет). Устанавли- вайте такие права на файлы, чтобы доступ к ним мог получить только кон- кретный пользователь и администратор. Желательно, чтобы для группы Советы хакера 447 стояли нулевые права, особенно, если в ней может быть несколько пользо- вателей Если отдельная группа создается для каждого пользователя, то для группы можно установить некоторые права. И все же, я бы не советовал этого делать, потому что неизвестно, что будет в будущем. Хакер может добавить себя в определенную группу, или вы сами можете случайно или намеренно объе- динить пользователей. Всем своим пользователям я рекомендую не сохранять в программах паро- лей . Это значит, что, например, при проверке почты надо каждый раз указы- вать свой пароль. Но это очень неудобно, особенно, когда у пользователя бо- лее трех почтовых ящиков, а это в наше время является нормой. Да и при наличии лишь одного есть другие запароленные службы, и очень трудно за- ставить пользователя помнить все пароли и не сохранять их в системе. Но вводить пароль надо непосредственно в программе, и лучше всего, если он не будет отображаться на экране. Это значит, что надо стараться не ука- зывать пароли в командной строке, которая не может использовать невиди- мые символы. Существует множество методов, с помощью которых можно увидеть наби- раемый пароль, например, команда ps . Пример правильного ввода пароля — утилита login, которая не отображает на экране вводимые данные. В открытом виде пароли могут храниться и в базах данных, именно там со- держится наиболее важная информация для любой организации. Базы дан- ных требуют отдельного разговора, и в данной книге мы эту тему не затраги- ваем , но забывать о ней нельзя. 14.7.7. Перенаправление сервисов Если существуют какие-либо ресурсы, к которым обращается ограниченный круг людей, то необходимо заставлять сервисы работать на нестандартных портах . Это позволит защитить систему от излишних посягательств. Одной из распространенных проблем использования стандартных портов явля- ется возможность их сканирования. Например, хакер узнает об уязвимости БД определенного разработчика. Допустим, что эта база использует порт 1457. Злоумышленнику достаточно только запустить сканирование сети в поисках компьютера с открытым портом 1457. Как только машина найдена, она попа- дает в "черный" список, и хакер может запустить программу, которая автома- тически захватит все компьютеры из списка. Проблема легко решается переконфигурированием сервиса для работы на другом порту. При этом необходимо убрать любые баннеры, которые появ- Глава 14 448 ляются при подключении на этот канал. В этом случае хакер не сможет узнать, что работает на порту и как взаимодействовать с удаленной программой. Если с сервисами внутреннего сервера работает небольшое количество лю- дей , то можно поменять местами особо уязвимые (те программы, которые предоставляют пользователям возможность записи или выполнения команд в системе), например FTP (заставить работать на порту 80) и HTTP (настро- ить на порт 21). Жаль, что это нельзя сделать с общедоступными сервисами, а если и можно, то бесполезно. Например, если заставить работать WEB- сервер на порту 81 вместо 80, то любой пользователь Интернета должен иметь возможность узнать об этом. А тогда и хакер будет в курсе. |