Статьи

Рекомендации по работе с конфиденциальными данными: защита вашего сервера

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


Первое, что нужно учитывать, это ваш поставщик услуг. Неважно, используете ли вы только хостинг, VPS или даже выделенный сервер, правила одинаковы.

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

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

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

  • Сколько людей, кроме вас, будут иметь доступ к серверу?
  • Что происходит с заменяемыми дисками (они перерабатывают их или продают кому-то)?
  • Можно ли запросить резервное копирование ваших данных на ленту?
  • Если так, кто будет иметь к ним доступ?

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


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


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


Все, что включено на вашем сервере, является возможной угрозой безопасности. Поэтому, чтобы минимизировать риск сбоя некоторых служб и подвергания их атакам, вы должны отключить все, что вам не нужно. В зависимости от вашей операционной системы, есть много инструментов для выполнения этой задачи. Например, sysv-rc-conf в Debian, manual stanza в Ubuntu (и все, что использует upstart) и msconfig если вам нужно использовать Windows.

Ситуация с портами практически такая же. В большинстве случаев (сервер HTTP (S) плюс доступ по SSH) вам следует запретить доступ ко всем портам, кроме 80 (для трафика HTTP), 443 (для HTTPS) и 22 (или любого другого порта по вашему выбору для SSH). Это гарантирует, что даже если вы установите какое-либо неисправное программное обеспечение, оно не будет использовано потенциальным злоумышленником — скорее всего, оно само по себе выйдет из строя и вызовет много проблем, поэтому обязательно проверьте, что вы устанавливаете. Поверьте мне, вы действительно не хотите угадывать имена каталогов после того, как испорченный файловый менеджер вышел из строя и переименовал их в случайные строки (и это одна из менее болезненных аварий, которые могут произойти).

Если у вас есть несколько HTTP-серверов, работающих на разных портах (например, несколько приложений Node.js.), вы должны использовать nginx , Apache или Varnish для прокси-трафика с порта 80 на соответствующие порты для всех ваших серверов.


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

1
sudo passwd —maxdays 14 —warndays 7

Где >username< — это имя пользователя, которому нужно будет сменить пароль через 14 дней. В Microsoft Technet есть статья о политике паролей в Windows Server .


Вы никогда не должны позволять кому-либо входить в систему как «root», используя SSH — это серьезная угроза безопасности. Если кто-то взломает ваш пароль с помощью грубой атаки, игра окончена .

Если у вас еще нет другого пользователя, создайте его с помощью команды useradd (если вы просто наберете его и нажмете Enter, появится хороший мастер, который поможет вам создать нового пользователя). Теперь убедитесь, что у вас установлен sudo и введите:

1
sudo -V

Если у вас его нет, установите его с помощью apt-get install sudo . Затем вы можете включить его для пользователя, которого вы только что создали:

1
adduser sudo

Где >username< — это имя пользователя, которого вы только что создали. Теперь отредактируйте файл /etc/ssh/sshd_config . Найдите эту строку:

1
#PermitRootLogin yes

И измените его на:

1
#PermitRootLogin no

Теперь перезапустите службу SSH, и все готово:

1
/etc/init.d/sshd restart

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


Для некоторых это очевидно, но есть люди, которые думают, что им не нужно антивирусное (AV) программное обеспечение на их сервере. Столько раз я слышал: «Привет, я использую Linux, мне не нужно никакого AV — нет вредоносного ПО для Linux!». Конечно, по сравнению с Windows количество вредоносных программ очень мало. Но зачем сравнивать? Это существует, это факт. И это может заразить вашу машину.

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

Чтобы ваша система работала лучше с помощью антивирусного программного обеспечения, вы должны исключить некоторые каталоги из проверки. Это компромисс между полной безопасностью и максимальной производительностью. Есть отличная статья о том, что вы должны делать с вашим AV на Windows Technet. Существует также хороший вариант для Linux в сообществе Symantec Connect.


Способ доступа к вашему серверу также важен. Вот несколько советов о том, как получить безопасный доступ к вашему серверу:

Это распространенная ошибка. Никогда не используйте общедоступную точку доступа Wi-Fi для доступа к вашему серверу. Вы не знаете, кто его запускает — это может быть кто-то, кто просто шпионит за всеми, кто подключен к точке доступа. Даже если владелец точки доступа не является таким человеком (например, в очень популярном кафе), если он не защищен, кто-то другой может понюхать всех, кто его использует (человек в середине атаки). Если вам действительно нужно использовать общедоступную точку доступа для доступа к вашему серверу (например, ваше крайне важное приложение не работает), будьте осторожны — если вы обращались к своему серверу по SSH раньше, а теперь у него другой отпечаток (ваш SSH-клиент должен уведомить об этом Вы об этом) прервите соединение и попытайтесь найти другую точку доступа. Другой отпечаток означает, что кто-то, подключенный к вашей сети, перехватил ваше общение и пытается заставить вас отправить ему свой пароль.

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

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

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