Веб-сайты по своей природе уязвимы для атак и мошенников. Они являются связующим звеном между внешним миром и физическими действиями с данными или системами, в которых они развернуты. Обеспечение их безопасности и снижение потенциального ущерба, который может нанести хакер, всегда должен быть в центре внимания при развертывании критически важных систем.
С учетом вышесказанного, вот несколько рекомендуемых советов по развертыванию:
ВСЕГДА изолируйте ваши веб-приложения в своем собственном пространстве разрешений. В большинстве операционных систем это означает предоставление им собственной непривилегированной учетной записи пользователя, которая знает ТОЛЬКО о веб-приложении, которое находится в его каталоге. Используйте подход «Запретить все сначала, разрешить секунду», когда речь идет о предоставлении разрешений этому пользователю во всей операционной системе.
ПОСЛЕДСТВИЯ. Может быть сложнее делать какие-то особые вещи с вашим приложением в системе, и может потребовать от вас потратить некоторое время и деньги на автоматизированные системы конфигурации, такие как Puppet или Chef, просто чтобы вам не нужно было помнить, какие были эти настройки каждый раз. Но главное преимущество заключается в том, что если ваше приложение взломано, злоумышленник, скорее всего, получит доступ только к учетной записи этого пользователя и, следовательно, не будет иметь права наносить значительный ущерб. Песочница особенно важна в многодоменных или многоприкладных средах. Если вы работаете в Linux, вы можете заглянуть в SELinux.
Стратегии развертывания могут различаться. Лучший способ, который я нашел, - это создать привилегированную учетную запись sudo на удаленном хосте для развертывания через (mr_deployer). Таким образом, ваш сервер развертывания может использовать возможности sudo для настройки системы по своему усмотрению, но веб-приложение при запуске будет работать как непритязательный пользователь, которого вы создали (mr_app). Вы можете просто изменить права доступа к файлам приложения, которыми владеет my_app, непосредственно перед его запуском.
ПОСЛЕДСТВИЯ. Веб-приложениям не нужны возможности sudo. Это большая уязвимость безопасности. Вы не НАСА. У вас нет времени или опыта, чтобы сделать его надежным. И даже НАСА иногда ошибается.
ВСЕГДА отключайте возможности root SSH на ваших хостах. Если нет веских причин (и даже тогда ...), вы никогда не должны использовать SSH в качестве пользователя root и развертывать приложения.
ПОСЛЕДСТВИЯ: Если вы можете использовать SSH, кто-то другой может. Преимущество развертывания от имени другого пользователя состоит в том, что хакерам сложнее угадать имя пользователя: пользователи «root» или «администратор» присутствуют в каждой системе.
Просто помните: если хакер может взломать приложение пользователя, пользователь, вероятно, будет взломан. Уменьшите количество ущерба, которое может нанести один пользователь: это девиз многих системных администраторов.
Удачи!
- Хармон