
- •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
Глава 22. Безопасность 951
Вы можете быть уверены, что любое выявленное вредоносное программное обе спечение вызовет в Интернете широкое волнение. Поищите в системе Google имя про граммного пакета, прежде чем его инсталлировать, и посмотрите, нет ли на первой стра нице неприятных сообщений о нем.
Руткиты
Умелые хакеры пытаются скрывать свои следы и избегать разоблачения. Часто они рассчитывают продолжить использование вашей системы для нелегального распростра нения программного обеспечения, зондирования других сетей или запуска атаки против других сетей. Для того чтобы оставаться незамеченными, они часто используют “Рутки ты” (“rootkits”). Троянские программы, внедренные в файлы, созданные фирмой Sony, используют возможности руткитов, чтобы скрыть себя от пользователей.
Руткиты — это программы и заплатки, скрывающие важную системную информа цию, например процесс, диск или сетевую активность. Они имеют много обличий и разную степень сложности — от простых замен приложения (как взломанные версии утилит ls и ps) до модулей ядра, которые практически невозможно выявить.
Для эффективного мониторинга системы и выявления внедренных руткитов суще ствует специальное программное обеспечение, например OSSEC. Кроме того, разра ботаны сценарии распознавания руткитов (такие, как chkrootkit, chkrootkit.org), сканирующие систему в поисках известных руткитов.
Несмотря на существование программ, позволяющих системным администраторам удалять руткиты из взломанных систем, время, которое они вынуждены затрачивать на очистку систем, можно было бы сэкономить, сохранив данные, переформатировав диск и начав работу с нуля. Большинство современных руткитов знают о существовании про грамм для их удаления и пытаются оказывать сопротивление.
Фильтрация пакетов
Еслисистемаподключается к сети, где есть выход в Интернет, необходимо, чтобы между этой системой и внешним миром стоял брандмауэр либо маршрутизатор, филь трующий пакеты. В качестве альтернативы можно включить фильтрацию пакетов в ядре (описывается в разделе 22.11). Какой бы ни была реализация, фильтр должен пропускать через себя трафик только важнейших служб, выполняющих “полезную” работу в сети.
Пароли
Все мы любим простые правила. Вот одно из них: у каждой учетной записи должен быть пароль, который трудно угадать. Но даже самые лучшие пароли нельзя передавать через Интернет в текстовом виде. Поэтому, если в системе допускается удаленная реги страция, следует применять SSH или какой-нибудь другой механизм аутентификации (см. раздел 22.10).
Бдительность
Для того чтобы быть уверенным в безопасности системы, следите за ее состоянием, сетевыми соединениями, таблицей процессов. Делать это нужно регулярно (желательно каждый день). Проблема всегда начинается с малого, а затем нарастает, как снежный ком, так что чем раньше будет обнаружена аномалия, тем меньшим окажется ущерб.
42. Пароли и учетные записи пользователей
Очень часто источником неприятностей является плохое управление паролями. По умолчанию в файлах /etc/passwd и /etc/shadow содержатся данные о том, кто может входить в систему и что он при этом имеет право в ней делать. Эти файлы представля ют собой передовую линию защиты системы от захватчиков. Их нужно вести с особой тщательностью, стараясь не допускать ошибок и не загромождать файлы устаревшими данными.
Подробнее о файле passwd см. раздел 7.1.
Глава 22. Безопасность 953
Система UNIX позволяет пользователям выбирать свои собственные пароли, но, не смотря на то, что это удобно, из-за этого возникает множество проблем, связанных с бе зопасностью. Когда вы даете пользователям их регистрационные имена, должны также инструктировать их о правилах выбора паролей. Рекомендуется выбирать пароли не ме нее чем из восьми символов, среди которых должны быть цифры, знаки препинания, а также прописные и строчные буквы. Бессмысленные сочетания символов, слогов, пер вые буквы слов легко запоминаемой фразы — вот самые лучшие пароли. При этом легко запоминаемая фраза не должна быть одной из широко распространенных. Лучше при думать свою собственную. Совет по выбору фраз приводился в разделе 4.3.
Важно постоянно проверять (желательно ежедневно), чтобы каждая регистрацион ная запись имела пароль. Записи в файле /etc/shadow, описывающие псевдопользо вателей, таких как “демон”, которые владеют файлами, но никогда не регистрируются, должны быть отмечены звездочками или знаком восклицания в поле зашифрованного пароля. Эти символы не совпадают ни с одним паролем и тем самым предотвращают использование данной учетной записи.
В организациях, использующих централизованную схему аутентификации, такую как LDAP или Active Directory, используется та же логика. Они требуют сложных паролей и блокируют учетные записи после нескольких неудачных попыток регистрации.
Устаревание паролей
В большинстве систем, использующих теневые пароли, можно реализовать меха низм так называемого устаревания паролей, при котором пользователей заставляют пе риодически менять пароли. На первый взгляд, это хорошая идея, однако ее практическая реализация влечет за собой определенные проблемы. Не всякому пользователю по душе периодически менять пароль, поскольку это сопряжено с запоминанием нового пароля. Обычно для пароля выбирается простое слово, которое легко вводится и запоминается, и когда приходит время замены, многие пользователи, не желая себя утруждать, опять берут предыдущий пароль. Таким образом, дискредитируется сама идея. Модули РАМ могут по мочь выбрать сильные пароли, чтобы избежать описанной выше ситуации (раздел 22.5).
В системе Linux процессом устаревания паролей управляет программа chage. С ее помощью администраторы могут задавать минимальное и максимальное количество изменений пароля, дату истечения срока действия пароля, коли чество дней до наступления даты истечения срока действия пароля, когда сле дует заблаговременно предупредить пользователя, количество дней простоя, в течение которых учетные записи остаются заблокированными, и другие параметры. Следующая команда задает минимальное количество дней между изменениями пароля равным 2, максимальное количество изменений пароля равным 90, дату истечения срока действия пароля равной 31 июля 2010 года, а также то, что пользователя следует предупредить об истечении срока действия пароля за 14 дней.
$ sudo chage -m 2 -М 90 -Е 2010-07-31 -W 14 ben
Более подробно процедура настройки параметров учетных записей описана в главе 7.
Другие системы иначе реализуют механизм устаревания паролей, обычно не так де тально. В системе Solaris параметры механизма устаревания паролей задаются в файле /etc/password. Устареванием паролей в системах семейства HP-UX управляет утилита smc, а в системе AIX оно настраивается в файле /etc/security/user.
954 Часть II. Работа в сети
Групповые и совместно используемые учетные записи
Опасно, если учетная запись используется несколькими людьми. Групповые реги страционные имена (например, guest или demo) представляют собой удобную лазейку для хакеров, поэтому они запрещены во многих сетях федеральными законами, такими как HIPAA. Не допускайте этого в своей сети. Однако технические средства не могут предотвратить совместное использование пользователями паролей, поэтому в этом во просе лучше всего вести разъяснительную работу.
Пользовательские оболочки
Теоретически можно установить в качестве оболочки для пользовательской учетной записи любую программу, включая пользовательский сценарий. На практике использо вание оболочек, отличающихся от стандартных, таких как bash и tcsh, весьма опас но. Еще опаснее беспарольные регистрационные имена, оболочкой которых является сценарий. Если у вас возникнет соблазн создать такое регистрационное имя, примените вместо него пару ключей SSH без пароля.
Привилегированные учетные записи
Единственная отличительная черта пользователя root состоит в том, что его иден тификатор равен 0. Поскольку в файле /etc/passwd может быть несколько записей с таким идентификатором, существует и несколько способов входа в систему в качестве суперпользователя.
Один из способов, который хакеры, получив доступ к интерпретатору команд су перпользователя, широко применяют для открытия “черного хода”, — редактирование файла /etc/passwd. Поскольку такие команды, как who и w, работают с регистрацион ным именем, хранящимся в файле /var/run/utmp, а не с идентификатором владельца регистрационного интерпретатора, они не в состоянии разоблачить хакера, который вы глядит как рядовой пользователь, хотя на самом деле зарегистрирован в системе в каче стве суперпользователя.
Не допускайте удаленную регистрацию суперпользователя даже через стан дартную корневую учетную запись. Для того чтобы это запретить, следует с помощью оболочки OpenSSH установить в файле /etc/ssh/sshd_config параметр конфигурации PermitRootLogin равным No.
Благодаря программе sudo (см. раздел 4.3) необходимость регистрироваться в каче стве суперпользователя, даже с системной консоли, возникает редко.