- •2. Версии iPv4 и iPv6
- •3. Пакеты и их инкапсуляция
- •4. Адресация пакетов
- •Глава 14. Сети tcp/ip 505
- •6. Cidr: протокол бесклассовой междоменной маршрутизации
- •7. Частные адреса и система nat
- •8. Маршрутизация
- •9. Таблицы маршрутизации
- •10. Arp: протокол преобразования адресов
- •11. Dhcp: протокол динамического конфигурирования узлов
- •12. Ррр: протокол двухточечного соединения
- •13. Команда ifconfig: конфигурирование сетевых интерфейсов
- •14. Демоны маршрутизации
- •Глава 15. Маршрутизация 571
- •15. Основные протоколы маршрутизации
- •Глава 15. Маршрутизация 567
- •16. Технология Ethernet: сетевая панацея
- •17. Беспроводной стандарт: локальная сеть для кочевников
- •18. Dsl и кабельные модемы: “последняя миля” 8
- •Глава 16. Сетевые аппаратные средства 593
- •20. Основные задачи системы dns
- •Глава 18. Сетевой протокол Network File System 737
- •22. Серверная часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 745
- •23. Клиентская часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 753
- •24. Ldap: упрощенный протокол доступа к каталогам
- •25. Структура данных ldap
- •Глава 19. Совместное использование системных файлов 775
- •26. Nis: Сетевая информационная служба
- •27. Системы электронной почты
- •Глава 20. Электронная почта 789
- •28. Протоколы smtp, pop3.
- •30. Почтовые серверы
- •Часть II. Работа в сети
- •31. Cпам и вредоносные программы
- •Глава 20. Электронная почта 813 ip range
- •32. Фильтрация почты
- •33. Почтовый агент sendmail
- •34. Почтовый агент Postfix
- •Глава 20. Электронная почта 877
- •35. Поиск неисправностей в сетях
- •Глава 21. Управление сетями 911
- •36. Kоманда traceroute: трассировка ip-пакетов
- •Глава 21. Управление сетями 915
- •37. Команда netstat: получение информации о состоянии сети
- •Глава 21. Управление сетями 919
- •39. Snmp: простой протокол управления сетями
- •40. Протокол NetFlow: мониторинг соединений
- •Глава 21. Управление сетями 939
- •41. Ключевые аспекты безопасности
- •Глава 22. Безопасность 951
- •42. Пароли и учетные записи пользователей
- •43. Эффективное использование команды chroot
- •44. Команда nmap: сканирование сетевых портов
- •45. Bro: программная система для распознавания вторжения в сеть
- •Глава 22. Безопасность 967
- •46. Мандатное управление доступом
- •47. Ssh: безопасная оболочка
- •48. Брандмауэры
- •Глава 22. Безопасность 983
- •49. Функциональный стек lamp
- •50. Обнаружение ресурсов в сети веб
- •Глава 23. Веб-хостинг 1003
- •51. Принцип работы http
- •52. Конфигурирование сервера Apache
- •Глава 23. Веб-хостинг 1011
- •53. Виртуальные интерфейсы
- •54. Протокол Secure Sockets Layes
- •Глава 23. Веб-хостинг 1017
43. Эффективное использование команды chroot
Системный вызов chroot ограничивает процесс конкретной библиотекой. Он за крывает доступ к файлам, расположенным за пределами каталога, и тем самым смягчает последствия, которые могут возникнуть при его взломе.
Команда chroot — это простая оболочка описанного выше системного вызова. Кроме того, некоторые демоны, представляющие угрозу для безопасности системы, имеют встроенную поддержку команды chroot и должны запускаться только в этом ре жиме, который устанавливается в их конфигурационных файлах.
Эксперты по вопросам безопасности иногда косо смотрят на использование коман ды chroot в этом контексте, поскольку они считают, что неправильное использование или неверное понимание этой команды может создать у системных администраторов иллюзию безопасности. Они жалуются, что некоторые системные администраторы ис пользуют команду chroot, чтобы избавить себя от хлопот, связанных с использованием других инструментов для обеспечения безопасности, например регулярного обновления программного обеспечения и пристального мониторинга.
Эти утверждения не точны, и в любом случае их нельзя считать приговором команде chroot. Аналогичные высказывания звучали и в адрес брандмауэров, но лишь немногие эксперты осмелятся посоветовать удалить фильтры пакетов из вашей сети. При условии правильного использования в сочетании с другими средствами безопасности команда chroot достойна включения в арсенал инструментов для защиты сети (даже если это не входило в планы ее разработчиков).
Перечислим сценарии, в которых целесообразно использовать команду chroot.
•
•
Допустим, что вы хотите запустить демона без привилегий суперпользователя, на пример Apache или BIND в ограниченном поддереве файловой системы. Если де мон окажется взломанным, то хакер будет ограничен поддеревом, поскольку дру гих уязвимых мест нет и эскалация привилегий не произойдет.
Предположим, что вы хотите ограничить удаленных пользователей конкретной совокупностью файлов и команд.
Однако команда chroot может защитить вас в указанных сценариях только при вы полнении следующих условий.
•
• •
Все процессы в окружении chroot запускаются без привилегий суперпользова теля. Процессы, которые запускаются с привилегиями суперпользователя, всегда способны взломать окружение chroot.
Вы не запускаете программы, выполняемые с установленным битом setuid, с правами суперпользователя.
Окружение chroot соответствует современному уровню и является минимальным, т.е. содержит только исполняемые программы, библиотеки и конфигурационные файлы, необходимые для выполнения поставленной задачи.
В эпоху совместно используемых библиотек и зависимостей между процессами соз дание описанного выше окружения chroot становится непростой задачей. Некоторые сценарии, которые могут облегчить ее решение, содержатся в пакете JailKit (olivier. sessink.nl/jailkit) .
44. Команда nmap: сканирование сетевых портов
Эта команда является сканером сетевых портов. Ее основное назначение — проверка указанных компьютеров на предмет того, какие TCP- и UDP-порты на них прослушива ются серверными программами3. За большинством сетевых служб закреплены “извест ные” порты, поэтому такая информация позволяет узнать, какие программы выполня ются на компьютере.
Запуск команды nmap — отличный способ узнать, как выглядит система в глазах того, кто пытается ее взломать. В качестве примера приведем отчет, выданный этой командой на самом обычном, относительно незащищенном компьютере.
ubuntu$ nmap -sT ubuntu.booklab.atrust.com
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-01 12:31 MST
Interesting ports on ubuntu.booklab.atrust.com (192.168.20.25):
Not shown: 1691 closed ports
PORT STATE 25/tcp open 80/tcp open 111/tcp open 139/tcp open 445/tcp open 3306/tcp open
SERVICE
smtp
http
rpcbind
netbios-ssn
microsoft-ds
mysql
Nmap finished: 1 IP address (1 host up) scanned in 0.186 seconds
Аргумент -sT сообщает команде nmap о необходимости подключиться к каждому ТСР-порту на указанном узле4. Как только соединение устанавливается, команда nmap немедленно отключается, что не очень корректно, зато безболезненно для правильно написанного сетевого сервера.
Как следует из примера, на узле ubuntu выполняются две службы, являющихся тра диционными источниками проблем для безопасности системы: portmap (rpcbind) и почтовый сервер (smtp). Это наиболее вероятные места для атаки хакеров.
Колонка STATE (состояние) содержит запись open (открыт) для портов, с которыми связаны серверы, closed (закрыт) для портов, с которыми не связан ни один сервер, за пись unfiltered (нефильтруемый) для портов, пребывающих в неизвестном состоянии, и запись filtered (фильтруемый) для портов, доступ к которым невозможен из-за на личия брандмауэра. Чаще всего встречаются нефильтруемые порты. Они отображаются только при АСК-сканировании. Вот, например, результат запроса к более защищенному коммерческому веб-серверу secure.booklab.atrust.com.
3 Как объяснялось в главе 14, порт — это нумерованный канал взаимодействия. IP-адрес иден тифицирует весь компьютер, а комбинация IP-адреса и номера порта определяет конкретный сер вер или сетевое соединение.
4 На самом деле по умолчанию проверяются только привилегированные (их номера меньше 1024) и “известные” порты. С помощью опции -р можно явно задать диапазон сканирования.
962 Часть II. Работа в сети
ubuntu$ nmap -sT secure.booklab.atrust.com
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-01 12:42 MST Interesting ports on secure.booklab.atrust.com (192.168.20.35): Not shown: 1691 closed ports
PORT STATE SERVICE
25/tcp open smtp 80/tcp open http
Nmap finished: 1 IP address (1 host up) scanned in 0.143 seconds
В данном случае очевидно, что компьютер сконфигурирован на обработку электрон ной почты по протоколу SMTP и работу с сервером HTTP. Брандмауэр блокирует доступ к остальным портам.
Помимо стандартного опроса TCP- и UDP-портов, команда nmap способна про верять порты “по-хакерски”, не устанавливая с ними реального соединения. В боль шинстве случаев посылаются пакеты, которые похожи на пакеты из уже имеющегося TCP-соединения (это не квитирующие пакеты), а затем проверяются полученные в от вет диагностические пакеты. Таким способом можно обойти брандмауэр или программу мониторинга сети, которая контролирует появление сканеров портов. Если в вашей ор ганизации имеется брандмауэр (см. раздел 22.11), не поленитесь проверить его в разных режимах сканирования.
Команда nmap обладает магической способностью угадывать, какая операционная система установлена на удаленном узле. Это делается путем анализа деталей реализации стека TCP/IP. Чтобы проверить работу команды nmap в этом режиме, воспользуйтесь опцией -О, например.
ubuntu$ sudo nmap -sV -О secure.booklab.atrust.com
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-
1 12:44 MST
Interesting ports on secure.booklab.atrust.com (192.168.20.35): Not shown: 1691 closed ports
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.6.16 - 2.6.24
Nmap finished: 1 IP address (1 host up) scanned in 8.095 seconds
Эта возможность может оказаться весьма полезной при анализе состояния локаль ной сети. К сожалению, она же является рабочим инструментом хакеров, которые могут определить тип атаки на основании известных слабых мест конкретных операционных систем или серверов.
Не забывайте также, что большинство администраторов не приветствуют попыток сканирования сети и выяснения ее слабых мест, какими бы благородными ни были мо тивы. Никогда не запускайте команду nmap в чужой сети без разрешения сетевого адми нистратора.
