Linux глазами хакера
Шрифт:
14.1. Основы безопасности
Мы начинали книгу с рассмотрения того, как взламываются компьютеры, а напоследок поговорим про общие принципы безопасности. Некоторые аспекты, которые мы будем рассматривать, затронут только ОС Linux, а кое-какие советы можно применять к любой операционной системе и компьютеру (серверу) в целом.
В этой главе я развею некоторые мифы о безопасности и покажу множество примеров из собственного опыта.
Почему необходимо уметь строить оборонительные рубежи? Неужели ОС или серверные программы не могут быть изначально защищенными? Вы
Лазейки есть всегда, потому что программы пишут люди, а им свойственно ошибаться. Получается, что даже в самой защищенной программе есть дыра, просто ее, наверное, еще не нашли. Спросите любого хакера про самое защищенное ядро Linux, и он вам скажет, что последняя версия отличная и не содержит багов. Повторите вопрос через месяц, но на этот раз тоже ядро окажется дырявым и без заплаток, и с ним работать не рекомендуется.
При появлении каждой новой версии ОС мы слышим, как она надежна и безопасна, но через короткое время появляются обновления. Избежать ошибок невозможно, и с этим надо смириться и регулярно устанавливать исправления.
В большинстве случаев я бы не назвал уязвимости ошибками, потому что программы работают верно, просто хакер использует их особым образом и выводит из строя систему. Такие ситуации предусмотреть очень сложно, и задача разработчика максимально их сократить.
Итак, рассмотрим основные принципы безопасности, которые могут понадобиться в нашей повседневной жизни.
14.1.1. Ответственность
Первое, с чем необходимо разобраться, — кто должен отвечать за безопасность системы. В большинстве организаций этим занимаются администраторы, и это первая ошибка. Человек, который настраивает систему, может не иметь исчерпывающей информации по безопасности и просто не будет видеть своих ошибок.
В администрировании очень часто возникают классические ошибки обмана зрения. Я написал достаточно много работ и постоянно сталкиваюсь с такой проблемой. Когда вы читаете свой текст, то видите его таким, какой он должен быть, а не то, что есть на самом деле. Например, вы можете написать слово "горад", а читать его как "город" только потому, что так было задумано.
Ошибка в одной букве конфигурационного файла может привести к плачевным последствиям, и администратор ее может не увидеть, потому что воспринимает параметр таким, как надо. Зато любой взгляд со стороны без проблем зацепится за ошибку. Лучше всего, если таким наблюдателем будет специалист.
Администратор должен настраивать и обслуживать систему, а специалист по безопасности обязан проверять настройки и тестировать систему на уязвимости. Конечно же, оба человека должны помогать друг другу и могут быть взаимозаменяемы, но не стоит их объединять в одном лице, особенно в крупных компаниях.
Оплата высококвалифицированных специалистов должна быть достойная, и здесь не стоит экономить, потому что человеческий фактор — самая большая дыра в безопасности.
14.1.2. Защищайте только то, что нужно
Многие
То же самое и с файловой системой. Некоторые безобидные папки могут оказаться хорошим материалом для хакера. Однажды я тестировал на безопасность систему, в которой была открыта только одна директория с файлами, содержащими тексты песен группы "Dune". Вроде бы невинная вещь, и что можно сделать через текстовые файлы?
Я запустил подбор пароля для пользователя root и в качестве словаря указал эти файлы, Каково же было мое удивление, когда я увидел, что установленный пароль root — название группы "Dune". Взлом занял всего несколько секунд!!!
Очень часто в открытые папки администраторы выкладывают информацию, связанную с их интересами, и если параметры доступа тоже заданы исходя из этих пристрастий, то и на подбор пароля потребуется не более 5 минут.
С другой стороны, получив хоть какой-то доступ к системе (особенно на запись данных), у хакера появляется возможность повысить свои привилегии аж до администратора. В Интернете все чаще появляются сплоиты, которые позволяют это сделать. Если злоумышленник вообще не имеет доступа к системе, то и взломать ее сложнее.
На данный момент известно не так уж много способов для удаленного взлома, зато, имея локальный доступ к системе, вероятность повысить свои права увеличивается в несколько раз. Защищать компьютер от проникновения по сети проще, и основным способом в этом случае является использование сетевого экрана. Если хакеру все же удалось пробраться, то тут уже все зависит от правильной политики регламентации доступа. Если хоть где-то есть ошибка, то хакер сможет получить права администратора.
Когда злоумышленник пытается удаленно пробиться в систему, защищенную сетевым экраном, то его возможности сильно ограничены еще из-за того, что он слишком мало знает об атакуемой системе. Проникнув внутрь, объем информации сразу увеличивается в несколько раз.
Основными целями, которые подвергаются атакам хакеров, являются:
□ уязвимые программы ОС. Если посмотреть отчеты по безопасности, то вы увидите, что дыры в различных утилитах появляются почти каждую неделю, и программисты с администраторами только и успевают их затыкать;
□ программы сторонних разработчиков. Все программное обеспечение, которое включается в дистрибутив производителем, тщательно тестируется. Сторонние же разработчики осуществляют проверку только на своем дистрибутиве, и нет гарантии, что программа будет также безопасно и стабильно работать со всеми вариантами ОС Linux. К тому же профессионализм некоторых "чужих" разработок оставляет желать лучшего, и мы об этом уже говорили, когда рассматривали безопасность открытого программного обеспечения (см. разд. 1.3);