Основы безопасности

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

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

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

Итак, рассмотрим основные принципы безопасности, которые могут понадобиться в нашей повседневной жизни. 

Ответственность

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

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

Ошибка в одной букве конфигурационного файла может привести к плачевным последствиям, и администратор ее может не увидеть, потому что воспринимает параметр таким, как надо. Зато любой взгляд со стороны без проблем зацепится за ошибку. Лучше всего, если таким наблюдателем будет специалист. 

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

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

Защищайте только то, что нужно

Я слышал такую рекомендацию, что нужно защищать только то, что нужно. Действительно, зачем охранять мусорную корзину, когда в ней находятся одни только отходы, которые никому не нужны. Тут же вспоминается знаменитый фильм "Хакеры", в котором главные герои залезали в мусорный бак. Что они там искали? Различные документы или бумажки. Нередко пользователи записывают пароль на листочках, или им раздают параметры доступа в виде распечаток, именно это искали хакеры. 

В защите того, что требует защиты есть смысл. Да, нужно ранжировать информацию и делать упор на те области, которые требуют большего внимания. Но при этом нельзя спускать все остальное и нужно сделать так, чтобы важная информация (требующая защиты) была только в одном месте. И вот второго в принципе не так уж и сложно добиться. 

То же самое и с файловой системой. Некоторые безобидные папки могут оказаться хорошим материалом для хакера. Однажды я тестировал на безопасность систему, в которой была открыта только одна директория с файлами, содержащими тексты песен группы "Dune". Вроде бы невинная вещь, и что можно сделать через текстовые файлы?

Я запустил подбор пароля для пользователя root и в качестве словаря указал эти файлы. Каково же было мое удивление, когда я увидел, что установленный пароль root — название группы "Dune". Взлом занял всего несколько секунд!!!

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

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

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

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

Основными целями, которые подвергаются атакам хакеров, являются:

- уязвимые программы ОС. Если посмотреть отчеты по безопасности, то вы увидите, что дыры в различных утилитах появляются почти каждую неделю, и программисты с администраторами только и успевают их затыкать; 

- программы сторонних разработчиков. Все программное обеспечение, которое включается в дистрибутив производителем, тщательно тестируется. Сторонние же разработчики осуществляют проверку только на своем дистрибутиве, и нет гарантии, что программа будет также безопасно и стабильно работать со всеми вариантами ОС Linux. К тому же профессионализм некоторых "чужих" разработок оставляет желать лучшего, и мы об этом уже говорили, когда рассматривали безопасность открытого программного обеспечения (разд 1.3);

- сценарии и программы, написанные администратором системы или программистами вашей организации. Очень часто для расширения возможностей ОС пишутся собственные сценарии (чаще всего используется интерпретатор Perl), и нередко именно они становятся причиной взлома. Только профессионал, хорошо знакомый с принципами безопасности и правилами создания кода, сможет создать защищенный сценарий или программу. Любители и простые администраторы слишком мало внимания уделяют различным проверкам аргументов и параметров, чем незамедлительно воспользуется хакер.

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

Были случаи, когда администраторы один сервер с закрытой информацией защищали и любили, а другой — открывали для всеобщего обозрения и использования. Это правильное решение, но между этими серверами не должно быть доверительных отношений, и имена пользователей и пароли следует делать разными. Но так как мы ленивые, то пароль root для всех серверов, чаще всего, один и тот же или отличается незначительно, чтобы легко было запомнить. Если не совершать этой ошибки, то решение с физически разделенными для разных задач серверами является верным решением.

Нет поблажек

Допустим, что вы администрируете сервер на крупном предприятии с большим количеством офисов. Это самое сложное с психологической точки зрения. Почему? Сейчас увидите. 

Большинство администраторов защищают сеть от внешнего вмешательства. Но по статистике большинство взломов, причем самых жестоких, происходят внутри системы (работниками фирмы, друзьями и т. д.), потому что администраторы не выдерживают натиска друзей и коллег, требующих дать пароль или доступ к определенному ресурсу. Вы не должны поддаваться на такие уговоры. Если предоставить большие привилегии другу, он может наказать вас взломом. Пусть он будет и случайным или просто шалостью, но ликвидация последствий может оказаться достаточно проблематичной. 

Безопасность — это не только надежная защита системы от взлома, но и устойчивость к неправильным действиям пользователя. Хотите пример? Их у меня много, но простейший и чаще всего встречающийся — это эффект начальника. Многие администраторы считают, что руководитель или директор фирмы должен иметь все права, чтобы иметь возможность просмотреть любую информацию. Идея хорошая, но реализуется достаточно сложно, потому что начальники, получив доступ на чтение, начинают просить право на запись, чтобы можно было что-то изменить. А это уже намного страшнее, особенно, если шеф не IBM-совместимый и плохо знает компьютер. Именно такие просят максимальные права, и неумелые/случайные действия могут уничтожить все данные. Виноватым сделают вас. 

Еще один недостаток повышенных прав для друзей и начальства — невозможность защитить их пароли. Когда только один пользователь (root) имеет максимальные права в системе, то его пароль защитить достаточно просто. Но если в системе таких 10 человек, то за их паролями уследить сложнее. Любой из этих пользователей может выбрать себе слабый по стойкости пароль или просто записать его на бумаге. Благодаря этому хакер может получить привилегированный доступ к системе и натворить бед. 

Защита рабочего места

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

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

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

Защищать рабочее место нужно так же, как и доступ по сети. Из моей практики могу сказать, что большинство взломов происходят именно из-за безответственного отношения самих пользователей. 

Для предохранения рабочего места следуйте следующим рекомендациям:

1.Никогда не записывайте пароли на листиках и других более заметных местах. Потратьте немного времени, чтобы запомнить основные кодовые комбинации.

2.Отходя от компьютера, блокируйте клавиатуру утилитами vlock или xlock, или выходите из системы, чтобы в ваше отсутствие никто и ничего не мог делать. 

3.Необходимо разрешать вход в BIOS (Basic Input Output System, базовая система ввода вывода) только с помощью пароля. Если хакер получил физический доступ к компьютеру, то он сможет его перезагрузить в однопользовательском режиме и далее взломать пароль root. 

4.Защищайте паролем загрузку ОС в конфигурационном файле. Проблемы загрузчика мы рассматривали в разд. 3.2.

5.Перезагрузка компьютера не должны быть случайной или незапланированной. Отключите в файле /etc/inittab строку, отвечающую за сочетание клавишь <Ctr>+<Alt>+<Del>.

6.Этот пункт будет звучать банально, но нужно быть аккуратным, при работе с входящей почты. До сих пор проникновение в систему через забросы по почте вирусов и троянов является очень даже действенным способом. 

7.Должны быть уникальные пароли. Опять же, из личной практики были случаи, когда прогоняли базу данных известных паролей и массово проводили взлом. В интернете уже утекло огромное количество паролей, включая очень крупные сайты, такие как linkedin. Базы email и паролей, полученных во время тех взломов прогоняют по другим сайтам, таким как facebook, google и др и хакеры находят много совпадений. Один из сайтов, который я защищал так тоже прогоняли, но мы реализовали двуфакторую авторизацию, которая остановила хакеров. 

Документация по безопасности

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

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

Рассмотрим простейший пример. Хакер проник в систему и получил исключительные права root. Вы закрываете уязвимость и меняете пароль администратора, но хакер возвращается в систему. Почему? Во время взлома хакер мог украсть файлы пользователей и паролей (/etc/passwd и /etc/shadow) и расшифровать его (подобрать пароли с помощью специализированных утилит для хранящихся в файле зашифрованных его версий). После взлома все пользователи должны поменять свои пароли. Для решения этого вопрса есть два способа:

1.Самостоятельно сгенерировать пароли и раздать пользователям. В большой организации это удобно, потому что можно быть уверенным, что все пароли изменены, но с передачей могут быть проблемы.

2.Написать инструкцию по безопасности, которая обяжет всех пользователей по первому сигналу администратора сменить свои пароли. Этот документ должен быть прочитан всеми сотрудниками.

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

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

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

Случаи со взломами, совершенные бывшими сотрудниками, случаются достаточно часто. Я сам неоднократно столкнулся с этим, когда администратор был уволен, но никто не изменил пароли. Через пару дней все файлы на сервере были уничтожены. Я в это время работал программистом в той фирме, и все сотрудники отдела ИТ в срочном порядке восстанавливали данные. 

Патчинг ядра

Помимо официальных обновлений ядра существует множество заплаток, написанных сторонними разработчиками (SELinux, lcap, LIDS и т. д.). Все они предназначены для защиты системы на уровне ядра ОС. Например, можно запретить выполнение кода из стека, что сделает невозможным многие атаки, использующие его переполнение. Некоторые заплатки запрещают просмотр каталога  /proc, следаят за процессами в системе, защищают от сканирования портов и многое другое. 

Примечание: SELinux уже неверно считать сторонним, потому что его некоторые производители дистрибутивов включили в родную поставку – к таким относится очень популярный CentOS. Ubuntu использует другой подход. 

Почему я не рассматривал примеры сторонних патчей ядра более подробно раньше? Большинство из них требуют перекомпиляции ядра и работают не со всеми версиями/ядрами ОС Linux, а также требуют немалых усилий при установке. Безопасность повышается, и это факт, но стабильность может пошатнуться, потому что эти заплатки делаются сторонними разработчиками, а Red Hat просто может их не учесть.

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

Развитие

Одна из важнейших составляющих эффективного управления — образование. Сколько администраторов самоучек? Очень много!!! 

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

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

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

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



Внимание!!! Если ты копируешь эту статью себе на сайт, то оставляй ссылку непосредственно на эту страницу. Спасибо за понимание

Комментарии

Паника, что-то случилось!!! Ничего не найдено в комментариях. Срочно нужно что-то добавить, чтобы это место не оставалось пустым.

Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

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

Пишите мне