Чтение онлайн

ЖАНРЫ

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

# пробуждения воображения

#linux -ro,soft,intr ftp.example.org:/pub/linux

#boot -fstype=ext2 :/dev/hda1

#floppy -fstype=auto :/dev/fd0

#floppy -fstype=ext2 :/dev/fd0

#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- и DEV-программы. Последний параметр определяет устройство, которое должно монтироваться.

Как видите, все очень даже просто. Если попытаться обратиться к директории /misc/cd, и в приводе CD-ROM в этот момент будет находиться диск, то он будет автоматически смонтирован. Только есть одно замечание, адресоваться лучше командами Linux (например, выполнить команду

ls /misc/cd
), а не с помощью программ. Если просмотреть директорию /misc/cd с помощью Midnight Commander, то диск не будет смонтирован.

14.12. Короткие советы

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

14.12.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.12.2. Маршрутизация от источника

Мы уже не раз говорили о том, как пакеты проходят по сети, и достаточно подробно затронули эту тему в разд. 4.5.1. Напоминаю, что внутри сети пакеты передаются по MAC-адресу, а для обмена между сетями необходимо маршрутизирующее устройство, которое умеет работать с IP-адресами и направлять пакеты по нужному пути, который они сами определяют. Но эти устройства управляемы, и существует несколько методов заставить их устремить пакеты в нужное русло. Один из этих методов — маршрутизация от источника (source routing).

С помощью маршрутизации от источника можно установить путь прохождения пакета по сети. Иногда это действительно удобно, но мы же знаем, что это "палка о двух концах", и вполне логичным было бы source routing запретить, а лучше вообще никогда не придумывать.

Как маршрутизация от источника влияет на безопасность? Допустим, что ваш сетевой экран запрещает подключения с адреса 192.168.1.1, потому что через этот IP к вам пытался проникнуть хакер. Так как все пакеты злоумышленника маршрутизаторы направляют именно через этот адрес, то подключение становится невозможным. Но благодаря source routing злоумышленник может сам указать путь, по которому должен следовать пакет, и провести его в обход маршрутизатора или сервера с запрещенным адресом.

Жаль, что мы не можем запретить маршрутизацию от источника на компьютере хакера, но мы не должны принимать такие пакеты на своей стороне и тем более на компьютере, который выполняет роль шлюза в Интернет (прокси-сервер или сетевой экран).

Для этого необходимо установить 1 в файле /proc/sys/net/ipv4/conf/all/accept_source_route или выполнить команду:

echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

14.12.3. SNMP

Протокол SNMP (Simple Network Management Protocol, простой протокол сетевого управления) применяется для управления сетевыми устройствами, такими как маршрутизаторы, управляемые коммутаторы и даже бытовыми устройствами, подключенными к сети.

Существует три версии этого протокола. Первая версия была разработана очень давно и, конечно же, осуществляла открытый обмен паролями и данными. Шифрование было добавлено в SNMP, начиная со второй версии. Именно поэтому первую версию не рекомендуется использовать, а лучше даже запретить.

У SNMP есть еще один недостаток — протокол использует в качестве транспорта UDP-протокол, который не поддерживает виртуальное соединение, и передача осуществляется простой отправкой пакетов в сеть без подтверждения доставки и без каких-либо авторизаций, т.е. злоумышленник легко может подделать любые поля пакета.

Я не рекомендую использовать SNMP вообще, потому что для большинства задач можно обойтись без него. Конечно же, шифрование, добавленное во второй версии, значительно повысило безопасность, и его можно стало применять даже в особо важных случаях. Но необходимо сначала убедиться, что вы работаете именно со второй или более старшей версией и шифрование используется.

14.12.4. Полный путь

Когда вы запускаете какие-либо команды или программы, то необходимо указывать полный путь к ним. Большинство пользователей и администраторов просто указывают имя запускаемого объекта, что может стать причиной взлома. Да что там говорить, я сам грешу вводом коротких команд

Рассмотрим пример того, как злоумышленник может использовать короткие имена в своих целях на примере команды

ls
:

□ хакер создает в каком-либо каталоге (например, в общедоступном /tmp) файл с таким же именем, как и у атакуемой программы;

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

Например, следующий код может быть записан в такой файл:

#!/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
.

Теперь устанавливаем программе ls права, которые позволят выполнять ее любому пользователю:

chmod 777 /tmp/ls

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

ls
. Для этого достаточно добавить в системную переменную окружения
PATH
в самое начало каталог /tmp. Если теперь кто-либо запустит команду
ls
без указания полного пути, то выполнится наш сценарий, который попытается изменить права доступа на файлы паролей. Если у пользователя, запустившего команду, хватит полномочий для изменения прав, то можно считать, что система взломана.

Поделиться с друзьями: