Архив рубрики: Web

MassScreenshoter — массовое создание скриншотов сайтов

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

Для работы утилиты требуется наличие PhantomJS, который в свою очередь требует запуска из графической оболочки (GNOME,KDE,Xfce,Mate и т.д.) или любой оконной системы.

Установим PhantomJS и Git:

Читать далее MassScreenshoter — массовое создание скриншотов сайтов

Установка облачного сервиса Nextcloud

Nextcloud это веб-приложение для хранения данных, синхронизации данных, синхронизации контактов и календарей, общего доступа к файлам в «облаке».
Nextcloud написан на PHP, что позволяет установить его на любой сервер и хостинг.
Nextcloud имеет множество возможностей, таких как:

  • хранение файлов;
  • журналирование всех действий пользователей;
  • доступ по протоколу WebDAV;
  • каленьдарь;
  • заметки;
  • планировщик задач;
  • авторизацию в домене AD;
  • и многое другое.

Данная статья писалась на основе версии 10.0.1.

Для установки потребуется:

  • Настроенный Web-сервер Apache с поддержкой PHP;
  • Настроенная база данных MySQL/MariaDB;
  • Пустая база данных MySQL/MariaDB;

В данной статье не описывается установка LAMP, потому что либо он уже установлен хостинг-провайдером, либо его установка сильно индивидуальна для разных проектов и окружений.
Поэтому перейдем непосредственно к установке Nextcloud.
Читать далее Установка облачного сервиса Nextcloud

Защита Apache с помощью ModSecurity

Способов защиты Web-сервера существует огромное множество. Начинать защиту нужно с обновления ПО и скрытия версий используемого ПО (как скрыть версии Web-сервера я рассказывал в статье Скрываем отображение версий Apache, Nginx и PHP). Далее можно установить WAF (Web Application Firewall) — файрвол для веб-приложений. ModSecurity — это файрвол выполненный в виде модуля для Apache, что позволяет его легко установить и использовать. Защититься с помощью ModSecurity можно от:

  • SQL-injection;
  • XSS;
  • троянов;
  • ботов;
  • захватов сеанса;
  • и многих других атак и взломов.

Начнем установку ModSecurity.
Для начала нам потребуется установить требуемый модуль:

и включить его:
Читать далее Защита Apache с помощью ModSecurity

Скрываем отображение версий Apache, Nginx и PHP

Убрать отображение версии Apache желательно для того, чтобы не попасть на 0-day уязвимости, а так же если вы ежедневно не следите за обновлением ПО и уязвимостями. Скрытие версий конечно не поможет избавиться от уязвимостей (для этого есть другие инструменты), но затруднит работу злоумышленнику.

Для того, чтобы скрыть версию Apache можно поставить модуль libapache-mod-security, который будет скрывать все лишнее. Установим его командой:

далее включим его:

И отредактируем конфигурацию, изменив или добавив строки в файле /etc/apache2/conf-available/security.conf:
Читать далее Скрываем отображение версий Apache, Nginx и PHP

Использование MySQL socket в WordPress

Можно немного ускорить WordPress если убрать лишние накладные расходы при общении WordPress с базой данных. Для этого нужно использовать сокеты (unix socket основан на файловом доступе), а не TCP порты для доступа. Это уберет оверхед, который создается семейством протоколов TCP/IP.
Но у этого метода есть ограничения:

  • Web сервер и база данных должны находиться на одном сервере;
  • Должен быть *nix сервер (Linux, FreeBSD и т.д.).

Для использования сокета нужно убедиться, что в БД MySQL тоже включен сокет. Для этого откроем файл настроек /etc/mysql/my.cnf и найдем в разделе [mysqld] строчку:

Читать далее Использование MySQL socket в WordPress

Fail2ban для WordPress

Fail2ban имеет возможность подключения сторонних модулей, для контроля доступа. Одним из таких модулей является модуль для WordPress.
Как установить на сервер Fail2ban я рассказывал в статье Fail2ban для SSH.

Для интеграции с WordPress постребуется установить в WordPress плагин WP fail2ban.

После его установки нужно скопировать из папки модуля для WordPress (обычно находится по адресу wordpress/wp-content/plugins/wp-fail2ban) в папку фильтров Fail2ban (находится по адресу /etc/fail2ban/filter.d) файл wordpress.conf.
Читать далее Fail2ban для WordPress

Nginx Apache и реальный IP клиента

В случае, когда Nginx используется как Frontend для Apache то возникает проблема с передачей IP адреса клиента в Apache, т.к. по умолчанию он будет видеть только адрес проксирующего Nginx сервера. Как настроить Nginx в качестве Frontend для Apache я рассказывал в статье Nginx, как frontend для нескольких серверов.
Для того, чтобы это исправить, нам потребуется изменить конфигурацию Nginx, чтобы он начал передавать адреса и установить модель для Apachelibapache2-mod-rpaf, который будет принимать правильные IP адреса.

Установим модуль:

apt-get install libapache2-mod-rpaf

изменим его настройки в файле /etc/apache2/mods-available/rpaf.conf
Читать далее Nginx Apache и реальный IP клиента

Пакетная оптимизация изображений на сайте

Для любого сайта важна скорость загрузки страницы и немаловажную роль в этом играет размер изображений.
Поэтому их нужно периодически оптимизировать.
Для оптимизации удобно использовать утилиты:
optipng — для оптимизации PNG и GIF файлов;
jpegoptim — для оптимизации JPG файлов.

Сначала нужно установить данные утилиты:

Читать далее Пакетная оптимизация изображений на сайте

Скрипт резервного копирования сайта с шифрованием и выгрузкой на Яндекс.диск

Прошло некоторое время и замечательная утилита Grive для выгрузки файлов на Google Drive перестала корректно работать, в связи с чем перестало работать резервное копирование. Поэтому было решено использовать Яндекс.диск для хранения резервных копий, а он поддерживает работу по протоколу WebDAV, что сильно упрощает работу с ним.

Итак, создадим новый скрипт для резервного копирования.

Для его работы потребуются дополнительные утилиты: mysqldump, openssl, curl.

установим их:

Далее сам скрипт резервного копирования и пояснения к нему.
Читать далее Скрипт резервного копирования сайта с шифрованием и выгрузкой на Яндекс.диск

Перенос базы MySQL в другое место

Не всегда удобно когда база данных находится в системных разделах. Поэтому ее приходится переносить в другую папку в системе (которая находится на более быстром или более большом диске).
Для того чтобы перенести базу MySQL в другое место нужно сначала остановить MySQL:

Теперь скопируем базу в другое место (по умолчанию она лежит в папке /var/lib/mysql) предположим что мы ее переносим в папку /mnt/data/

Перемещаем базу в новое место:

Меняем в файле конфигурации местоположение базы,
для этого открываем файл /etc/mysql/my.cnf,
находим в нем строчку:
Читать далее Перенос базы MySQL в другое место