14.6. Другие соображения, связанные с безопасностью
Безопасность - это не просто техническая проблема; больше всего речь идет о надлежащей практике и понимании рисков. В этом разделе рассматриваются некоторые из более распространенных рисков, а также несколько лучших практик, которые должны, в зависимости от случая, повысить безопасность или уменьшить влияние успешного нападения.
14.6.1. Наследственные риски веб-приложений
Универсальный характер веб-приложений привел к их распространению. Несколько часто работают параллельно: веб-почта, вики, какая-то система групповой работы, форум, фотогалерея, блог и так далее. Многие из этих приложений полагаются на стек “LAMP” (Linux, Apache, MySQL, PHP). К сожалению, многие из этих заявлений также были написаны без особого рассмотрения проблем безопасности. Данные, поступающие снаружи, слишком часто используются с малой или нулевой проверкой. Предоставление специально сконструированных значений может быть использовано для подрыва вызова в команду, чтобы вместо этого выполнить другую команду. Многие из наиболее очевидных проблем были исправлены с течением времени, но новые проблемы безопасности возникают регулярно.
Поэтому регулярное обновление веб-приложений является обязательным, чтобы любой взломщик (будь то профессиональный нападающий или “script kiddy“) не мог использовать известную уязвимость. Фактический риск зависит от случая и варьируется от уничтожения данных до произвольного исполнения кода, в том числе дефейса веб-сайта.
14.6.2. Знать, чего ожидать
Уязвимость в веб-приложении часто используется в качестве отправной точки для взлома попыток. Ниже приводится краткий обзор возможных последствий.
The consequences of an intrusion will have various levels of obviousness depending on the motivations of the attacker. “Script-kiddies“ only apply recipes they find on web sites; most often, they deface a web page or delete data. In more subtle cases, they add invisible contents to web pages so as to improve referrals to their own sites in search engines. In others, they simply install crypto-miners and use the compromised system to fill their crypto wallets.
Another very common scenario nowadays is a ransomware attack. The attackers will encrypt the data on the machine and leave a note with instructions how to pay ransom to get the key to decrypt the data. Of course, it is not for certain that even after paying, the data can be recovered or be sure it hasn't been stolen (and sold) as well.
Более продвинутый злоумышленник выйдет за рамки этого. Сценарий бедствия может продолжаться следующим образом: злоумышленник получает возможность выполнять команды как пользователь www-data
, но выполнение команды требует многих манипуляций. Чтобы облегчить их жизнь, они устанавливают другие веб-приложения, специально предназначенные для удаленного выполнения многих видов команд, таких как просмотр файловой системы, изучение разрешений, загрузка или загрузка файлов, выполнение команд и даже предоставление сетевой оболочки. Часто уязвимость позволит запустить команду wget
, которая загрузит некоторые вредоносные программы в /tmp/
, а затем выполнит его. Вредоносное ПО часто загружается со стороннего веб-сайта, который был ранее скомпрометирован, чтобы скрыть следы и затруднить выяснение фактического происхождения атаки.
На данный момент у злоумышленника достаточно свободы передвижения, поэтому они часто устанавливают IRC бот (робот, который подключается к IRC-серверу и может управляться этим каналом). Этот бот часто используется для обмена незаконными файлами (несанкционированными копиями фильмов или программного обеспечения и так далее). Определённый злоумышленник может захотеть пойти ещё дальше. Аккаунт www-data
не даёт полного доступа к машине, и злоумышленник попытается получить привилегии администратора. Теперь это не должно быть возможным, но если веб-приложение не было современным, есть вероятность, что ядро и другие программы тоже устарели; это иногда следует за решением администратора, который, несмотря на знание об уязвимости, пренебрегает обновлением системы, поскольку в ней нет локальных пользователей. Затем злоумышленник может воспользоваться этой второй уязвимостью, чтобы получить доступ на уровне root.
Теперь атакующий владеет машиной; они обычно стараются сохранить этот привилегированный доступ как можно дольше. Что включает в себя установку
rootkit, программы, которая заменит некоторые компоненты системы, чтобы злоумышленник смог снова получить привилегии администратора позднее (см. также
КРАТКИЙ ЭКСКУРС Пакеты checksecurity и chkrootkit /rkhunter ); rootkit также пытается скрыть свое существование, а также любые следы вторжения. Программа
ps
не будет перечислять некоторые процессы,
netstat
не будет перечислять некоторые из активных соединений и так далее. Используя корневые разрешения, злоумышленник смог наблюдать за всей системой, но не нашёл важных данных; поэтому он будет пытаться получить доступ к другим машинам в корпоративной сети. Анализируя учётную запись администратора и файлы истории, злоумышленник находит, к каким машинам обычно обращаются. Заменив
sudo
или
ssh
с помощью подменной программы, злоумышленник может перехватить отдельные пароли администратора (для использования на обнаруженных серверах...) и вторжение может распространяться далее.
Это кошмарный сценарий, который можно предотвратить несколькими мерами. В следующих нескольких разделах описываются некоторые из этих мер.
14.6.3. Выбор программного обеспечения мудро
Как только потенциальные проблемы безопасности будут известны, они должны быть приняты во внимание на каждом этапе процесса развертывания сервиса, особенно при выборе программного обеспечения для установки. Многие веб-сайты хранят список недавно обнаруженных уязвимостей, которые могут дать представление о записи отслеживания безопасности, прежде чем какое-то конкретное программное обеспечение будет развернуто. Конечно, эта информация должна быть сбалансирована с популярностью данного программного обеспечения: более широко используемая программа является более заманчивой целью, и она будет более тщательно изучена как следствие. С другой стороны, нишевая программа может быть полна уязвимостей безопасности, которые никогда не публикуются из-за отсутствия интереса к аудиту безопасности.
В мире свободного программного обеспечения, как правило, есть достаточно места для выбора, и выбор одного элемента программного обеспечения вместо другого должен быть решением, основанным на критериях применяемых на местном уровне. Больше возможностей подразумевает повышенный риск уязвимости, скрывающейся в коде; выбор наиболее продвинутой программы для задачи может быть контрпродуктивным, и лучший подход обычно состоит в том, чтобы выбрать простейшую программу, которая отвечает предъявляемым требованиям.
14.6.4. Управление машиной как целым
Большинство дистрибутивов Linux устанавливают по умолчанию ряд сервисов Unix и множество инструментов. Во многих случаях эти сервисы и инструменты не требуются для реальных целей, для которых администратор создал машину. По общему руководству в вопросах безопасности ненужное программное обеспечение лучше всего удалить. Действительно, нет смысла в усилении защиты FTP-сервера, если уязвимость в другом, неиспользуемом сервисе может быть использована для получения привилегий администратора на всей машине.
По той же причине, брандмауэры часто будут настроены, чтобы разрешить доступ только к сервисам, предназначенным для публичного доступа.
Текущие компьютеры достаточно мощны, чтобы позволить разместить несколько сервисов на одной и той же физической машине. С экономической точки зрения такая возможность интересна: только один компьютер для администрирования, более низкое потребление энергии и так далее. С точки зрения безопасности, однако, такой выбор может быть проблемой. Один скомпрометированный сервис может принести доступ ко всей машине, что, в свою очередь, ставит под угрозу другие сервисы, размещённые на одном и том же компьютере. Этот риск может быть смягчён путем изоляции сервисов. Это может быть достигнуто либо виртуализацией (каждый сервис размещается в выделенной виртуальной машине или контейнере), либо применением AppArmor / SELinux (каждый сервис-демон имеет должным образом разработанный набор разрешений).
14.6.5. Пользователи - это игроки
Обсуждая безопасность, немедленно приходит на ум защиты от атак анонимных взломщиков, скрывающихся в интернет-джунглях; но часто забытый факт заключается в том, что риски также приходят изнутри: сотрудник, который собирается покинуть компанию, может загрузить чувствительные файлы на важные проекты и продать их конкурентам, небрежный продавец может покинуть свой стол, не блокируя свою сессию во время встречи с новой перспективой, неуклюжий пользователь может удалить неправильный каталог по ошибке и так далее.
Реакция на эти риски может включать технические решения: не более, чем требуемые разрешения должны быть предоставлены пользователям, и регулярные резервные копии являются обязательными. Но во многих случаях надлежащая защита будет включать обучение пользователей, чтобы избежать рисков.
14.6.6. Физическая безопасность
Нет смысла в обеспечении безопасности сервисов и сетей, если сами компьютеры не защищены. Важные данные заслуживают того, чтобы их хранили на заменяемых жёстких дисках в RAID массивах, потому что жёсткие диски в конечном итоге сбоят, а доступность данных - это необходимость. Но если любой доставщик пиццы может войти в здание, проникнуть в серверную комнату и убежать с несколькими жёсткими дисками, важная часть безопасности не выполняется. Кто может войти в серверную комнату? Контроль за доступом? Эти вопросы заслуживают рассмотрения (и ответа) при оценке физической безопасности.
Физическая безопасность также включает в себя учёт рисков несчастных случаев, таких как пожары. Этот конкретный риск - это то, что оправдывает хранение резервных носителей в отдельном здании или, по крайней мере, в огнезащитном сейфе.
14.6.7. Правовая ответственность
Администратор более или менее доверяет своим пользователям, а также пользователям сети в целом. Поэтому они должны избегать любой небрежности, которой могут воспользоваться злонамеренные люди.
Злоумышленник, берущий под контроль вашу машину, затем использует её в качестве форвардной базы (известной как "relay system"), из которой можно выполнить другие гнусные действия, может вызвать у вас юридические проблемы, поскольку атакуемая сторона вначале увидит атаку, исходящую из вашей системы и поэтому будет считать вас злоумышленником (или соучастником). Во многих случаях злоумышленник будет использовать ваш сервер в качестве релея для отправки спама, что не будет иметь большого влияния (за исключением потенциальной регистрации в чёрных списках, которые могут ограничить вашу способность отправлять законные электронные письма). Тем не менее в других случаях скомпрометированная машина будет источником более важных проблем, например, отказа в обслуживания. Иногда это может вызывать потерю дохода, поскольку законные сервисы будут недоступны, а данные могут быть уничтожены. Иногда это также подразумевает потерю реальных денег, потому что атакованная сторона может начать судебное разбирательство против вас. Защитники прав могут подать в суд на вас, если несанкционированная копия работы, защищенной законом об авторском праве, раздаётся на вашем сервере, а также другие компании, принуждаемые соглашениями об уровне обслуживания, если они обязаны выплачивать штрафы после атаки с вашей машины.
Когда эти ситуации возникают, заявления о невиновности обычно не достаточно; по крайней мере, вам понадобятся убедительные доказательства, показывающие подозрительную активность в вашей системе, исходящую из данного IP-адреса. Это будет невозможно, если вы пренебрегаете рекомендациями этой главы и позволит злоумышленнику получить доступ к привилегированному аккаунту (в частности root) и использовать его для прикрытия своих следов.