Настраиваем фаерволл для веб-сервера

Сервер в сети с открытыми портами — звучит не очень безопасно 🙂 В данной заметке вы найдёте отлаженные правила фаерволла для сервера, принимающего HTTP запросы и отдающего HTTP ответы, проще говоря, веб-сервера.

Вероятнее всего ваш веб-сервер крутится на Linux, а в Linux из коробки присутствует фаерволл netfilter. Для управления им используется утилита iptables.

Внимание: если вы не имеете непосредственного физического доступа к серверу, а работаете с ним удалённо через SSH, то прежде, чем приступать к настройке фаерволла, обратитесь к вашему хостинг-провайдеру с вопросом, сможет ли он восстановить доступ к SSH или предоставить альтернативу в случае, если вы нечаянно заблокируете себя.

Тем не менее, iptables сам не сохраняет введённые правила навсегда — они будут сброшены после перезагрузки. Чтобы настройки сохранялись нужно установить iptables-persistent отдельно. Но это в конце. Для начала следует сформировать и протестировать правила фаерволла, убедиться в работоспособности доступа к серверу по SSH, работы приложения веб-сервера (nginx, Apache) и т.п.

Читать дальше…

Отключаем запуск внешних программ через PHP

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

Это очень полезная возможность при создании сервисов и других приложений посложнее сайтиков.

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

Читать дальше…

Как убрать сохранение прав доступа к файлам CHMOD в Git

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

Чтобы отключить сохранение прав доступа к файлам (CHMOD) в репозиториях Git используйте эту комманду:

git config --global core.fileMode false

Но это подействует только для вновь клонируемых репозиториев. К сожалению, Git в конфигурациях всех локальных репозиториях добавляет опцию fileMode = true. Поэтому, придётся пройтись по всем локальным репозиториям (или написать скрипт) и ввести следующую команду:

git config --unset core.fileMode

Это уберёт из конфигурации локального репозитория опцию fileMode вообще. Тогда Git будет использовать настройку по умолчанию, заданную первой командой.

«Накипело»

Один идиот кривой конфиг выкладывает у себя в блоге, другие идиоты этот конфиг копипастят в своих. А то, что этот конфиг оптимизирован под FreeBSD или trusted прокси, никого блядь не волнует — все пихают его в свои обучающие статьи для Debian и Ubuntu, а документацию не читают вообще! И колесит это говно по интернетам.

Как сделать HTTPS на сайте и защититься от SSL-атак

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

summary-a

 

Читать дальше…

Заметки по Git

borken-pipets

 

Отключение автоматической конвертации конца строк LF в CRLF и обратно:

git config --global core.autocrlf false

Отключение сохранения в репозитории прав доступа CHMOD к файлам:

git config --global core.fileMode false

Если по ошибке запушили в центральный репозиторий гигайбатный бэкап, только так он не будет скачиваться при пулле:

Непосредственно в центральном репозитории выполнить: 
git update-ref refs/heads/%ВЕТКА% %ID_НОРМАЛЬНОГО_КОММИТА%

Читать дальше…

Как установить Android Studio на Ubuntu 15.10

  1. Java SDK (JDK):
    sudo apt-get install default-jdk
  2. GNU Standard C++ Library:
    sudo apt-get install lib32stdc++6
  3. Поддержка KVM:
    sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
  4. Скачиваем отсюда Android Studio: https://developer.android.com/intl/ru/sdk/index.html#Other «All Android Studio Packages» Linux (внизу). Например:
    wget https://dl.google.com/dl/android/studio/ide-zips/1.4.0.10/android-studio-ide-141.2288178-linux.zip
  5. Распаковываем:
    unzip android-studio-ide-141.2288178-linux.zip
  6. Запускаем:
    android-studio/bin/studio.sh

Как запретить запуск скриптов в определённой папке

Если используется Apache2 сервер, то достаточно просто создать файл .htaccess в нужном каталоге со следующим содержимым:

php_flag engine 0
AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp

Ограничиваем каталог, в который можно получить доступ с помощью PHP

По умолчанию все файлы за пределами рабочего каталога сайта могут быть открыты через PHP приложения, например, файловые менеджеры. Это представляет серьёзную угрозу конфиденциальности данных, т.к. содержимое всего сервера может быть получено злоумышленником (через те же файловые менеджеры, шеллы, уязвимости, etc).

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

Далее вы узнаете, как это сделать.

Читать дальше…

Простой сервер для команды веб-разработчиков. Часть 4

  1. Пользователи и SSH
  2. Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
  3. Git-сервер, установка Composer и cron
  4. memcached и FTP-сервер

Заключительная часть цикла статей по установке и настройке простого сервера для команды веб-разработчиков. Давайте установим memcached и настроим FTP-сервер.

Читать дальше…

Простой сервер для команды веб-разработчиков. Часть 3

  1. Пользователи и SSH
  2. Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
  3. Git-сервер, установка Composer и cron
  4. memcached и FTP-сервер

Перейдём к установке и настройке центральных Git репозиториев, а также установим PHPUnit и cron.

Читать дальше…

Простой сервер для команды веб-разработчиков. Часть 2

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

  1. Пользователи и SSH
  2. Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
  3. Git-сервер, установка Composer и cron
  4. memcached и FTP-сервер

Теперь рассмотрим настройку веб-сервера с Apache 2, PHP 5.5 и MySQL, т.к. он понадобится для дальнейших шагов, и настройку поддоменов в DNS.

Читать дальше…

Простой сервер для команды веб-разработчиков. Часть 1

Это будет цикл статей по установке и настройке простого сервера для команды веб-разработчиков. Сервер будет иметь Git, FTP, SSH, Apache 2, PHP 5.4, MySQL, cron, поддомены, memcached, Composer. Статьи будут применимы к Ubuntu 14.04. Полагаю, что сервер будет использоваться в корпоративных целях, а не для конечных проектов. Хотя, если допустимо проекту находиться на dev сервере, то почему бы и нет…

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

Подразумевается, что Ubuntu 14.04 уже установлен на сервере (на VPS/VDS, например) и имеется доступ к root консоли.

  1. Пользователи и SSH
  2. Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
  3. Git-сервер, установка Composer и cron
  4. memcached и FTP-сервер

Читать дальше…