А самая большая благодарность — вам за то, что купили книгу, и моим постоянным читателям, с которыми я регулярно общаюсь на форуме сайта www.vr-online.ru. Последние работы основываются на их вопросах и предложениях. Если у вас появятся какие-то проблемы, то милости прошу на этот форум. Я постараюсь помочь по мере возможности и жду любых комментариев по поводу этой книги. Ваши замечания помогут мне сделать мою работу лучше.
Глава 1
Введение
Однажды я показывал администратору ОС Windows, как устанавливать и работать с Linux. Сам процесс инсталляции ему понравился, потому что в последних версиях он достаточно прост. Но когда мы установили и решили настроить Samba-сервер, последовала куча вопросов типа: "А зачем настраивать Samba?", "Почему нельзя получить доступ автоматически?" Администраторы Windows-систем ленивы и привыкли, что ОС сама делает за них все. что нужно, но когда их систему взламывают, начинают задавать вопросы: "А почему Microsoft не дала нам нужных инструментов, чтобы запретить определенные действия?".
Если смотреть на ОС Linux с точки зрения пользователя, то после установки системы уже ничего настраивать не надо. Можно сразу же приступать к работе с любыми офисными приложениями и пользовательскими утилитами. Но если речь идет о сетевых и серверных программах, то здесь уже требуются более сложные настройки, и ничего автоматически работать не будет. По умолчанию в системе практически все действия, которые могут привести к нежелательному результату или вторжению по сети, запрещены. Для изменения ограничений нужно настраивать конфигурационные файлы, редактировать которые крайне неудобно, или использовать специализированные утилиты, большинство из которых имеют интерфейс командной строки.
Из-за этих неудобств мой знакомый администратор Windows-систем сказал: "Linux придумали администраторы, которым нечего делать на работе, для того, чтобы играться с конфигурационными файлами". Через неделю этот же человек настраивал сервис IIS (Internet Information Services, информационные сервисы Интернета) на новом сервере с ОС Windows 2003. Он ругался теми же словами, потому что эта служба по умолчанию не устанавливается с ОС, и прежде чем начать работать, нужно ее подключить и четко прописать, что должно использоваться, а что нет.
Корпорация Microsoft начинала делать ОС по принципу "лишь бы было удобно", поэтому достаточно было подключить требуемые компоненты. Но теперь Windows становится с каждым годом все сложнее, большинство удобных функций, обеспечивающих защиту, просто отключаются, и при необходимости их приходится открывать. В Linux все было наоборот, эту ОС создавали с точки зрения "лишь бы было безопаснее", а теперь двигаются в сторону наращивания сервисов.
Удобства и безопасность — две стороны одной медали, поэтому производителю приходится чем-то жертвовать.
1.1. Атаки хакеров
Прежде чем знакомится с Linux и ее принципами безопасности, мы должны знать, как хакеры могут проникать в систему. Для того чтобы защитить систему, нужно иметь представление о возможных действиях злоумышленника. Давайте познакомимся с процессом взлома компьютера. Мы должны знать, о чем думают хакеры, чем они дышат и что едят ☺. Только так мы сможем построить неприступную информационную стену для сервера или сети.
Невозможно дать конкретные рецепты взломов. В каждом случае это процесс, который зависит от самой системы и настроек ее безопасности. Чаще всего взлом происходит через ошибки в каких-либо программах, а каждый администратор может использовать различный софт.
Почему количество атак с каждым годом только увеличивается? Раньше вся информация об уязвимостях хранилась на закрытых BBS (Bulletin Board System, электронная доска объявлений) и была доступна только избранным. К этой категории относились и хакеры. Именно они и совершали безнаказанные атаки, потому что уровень просвещенности и опытности таких людей был достаточно высок.
С другой стороны, элита хакерского мира состояла в основном из добропорядочных людей, для которых исследования в области безопасности не являлись целью разрушения.
В настоящее время информация об уязвимостях лежит на каждом углу и является достоянием общественности. Теперь взломом может заниматься кто угодно. Тут же хочется спросить борцов за свободу информации: "Как же так получилось?" Просто чрезмерная свобода в конце концов ведет к разрушению. Есть определенная категория людей, которых хлебом не корми, дай где-нибудь напакостить. Если человек, используя общедоступную информацию, поддастся этой слабости, то он превратится во взломщика.
Злоумышленники при проникновении в систему могут преследовать разные цели.
1. Утечка информации — вскрытие сервера для скачивания каких-либо секретных данных, которые не должны быть доступны широкой общественности. Такие взломы чаще всего направляют против компаний для кражи отчетности, исходных кодов программ, секретной документации и т.д., их выполняют профессиональные хакеры по заказу или для получения собственной выгоды.
2. Нарушение целостности — изменение или уничтожение данных на сервере. Такие действия могут производиться против любых серверов в сетях Интернет/интранет. В качестве взломщиков могут выступать не только профессионалы, но и любители или даже недовольные сотрудники фирм.
3. Отказ от обслуживания — атака на сервер с целью сделать его недосягаемым для остальных участников сети. Этим занимаются, в основном, любители, желая нанести вред.
4. Рабство — получило распространение в последнее время. Сервер захватывается для дальнейшего использования в нападении на другие серверы. Например, для осуществления атаки типа "Отказ от обслуживания" чаще всего нужны значительные ресурсы (мощный процессор и быстрый доступ в сеть), которые отсутствуют на домашнем компьютере. Для осуществления таких атак захватывается какой-либо слабо защищенный сервер в Интернете, обладающий необходимыми ресурсами, и используется в дальнейших взломах.
Атаки могут быть трех видов:
1. Внутренняя — взломщик получил физический доступ к интересующему его компьютеру. Защитить системный блок сервера от злоумышленника не так уж и сложно, потому что можно оградить доступ к серверу сейфом и поставить охрану.
2. Внешняя из глобальной сети — удаленный взлом через сеть. Именно этот вид атаки является самым сложным для защиты. Даже если поставить самый лучший сейф от удаленной атаки (Firewall) и постоянную охрану для наблюдения (программы мониторинга и журналирования), безопасность не может быть гарантированной. Примерами этого являются взломы самых защищаемых серверов в сети (yahoo.com, microsoft.com, серверы NASA и т.д.).
3. Внешняя из локальной сети — это проникновение, совершенное пользователем вашей сети. Да, хакеры бывают не только в Интернете, соседи по кабинету тоже могут пытаться взломать сервер или ваш компьютер ради шутки или с целью мести.
При построении обороны мы должны понимать, как хакеры атакуют компьютеры своих жертв. Только тогда можно предотвратить нежелательное вторжение и защитить систему. Давайте рассмотрим основные методы нападения, используемые хакером, и способы реализации. Для лучшего понимания процесса будем рассуждать так, как это делает взломщик.
Единственное, чего мы не будем затрагивать, так это вопросы социальной инженерии. Это тема отдельной книги и затрагивать ее не имеет смысла.
1.1.1. Исследования
Допустим, что у вас есть некий сервер, который нужно взломать или протестировать на защищенность от проникновения. С чего нужно начинать? Что сделать в первую очередь? Сразу возникает очень много вопросов и ни одного ответа.
Четкой последовательности действий нет. Взлом — это творческий процесс, а значит, и подходить к нему надо с этой точки зрения. Нет определенных правил и нельзя все подвести под один шаблон. Зато могу дать несколько рекомендаций, которых желательно придерживаться.
Сканирование
Самое первое, с чего начинается взлом или тест системы на уязвимость, — сканирование портов. Для чего? А для того, чтобы узнать, какие сервисы (в Linux это демоны) установлены в системе. Каждый открытый порт — это сервисная программа, установленная на сервере, к которой можно подсоединиться и выполнить определенные действия. Например, на 21 порту висит FTP-сервис. Если вы сможете к нему подключиться, то станет доступной возможность скачивания и закачивания на сервер файлов. Но это только в том случае, если вы будете обладать соответствующими правами.
Для начала нужно просканировать первые 1024 порта. Среди них очень много стандартных сервисов типа FTP, HTTP, Telnet и т.д. Каждый открытый порт — это дверь с замочком для входа на сервер. Чем больше таких дверей, тем больше вероятность, что какой-то засов не выдержит натиска и откроется.