Как устроить DoS атаку на сервер баз данных одной строчкой

Web Developer
40 МБит / сек — неплохой трафик для DoS атаки. Именно на столько внезапно вырос входящий трафик до одного из наших серверов. Сайт мужественно держался. Время начала всплеска аномально высокого трафика подозрительно точно совпадало с временем выкладывания одного крупного релиза, что и навело на мысль о том что мы DoS`им себя сами.

Ситуацию осложняло то, что в релиз попали изменения порядка сотни разных php-файлов и просмотреть весь список изменений было очень трудоёмко. tcpdump помог выяснить что трафик вырос до сервера баз данных PostgreSQL. Круг сужался.
Читать дальше

Нокогири: парсинг HTML в одну строку

Мучительный опыт парсинга кучи невалидных html и «xml» документов и удивительная простота dapper (сервис) и nokogiri (ruby) заставили потратить 5 часов на написание своей собственной пилы.

Примеры использования:

<?php
$html = gzdecode(file_get_contents('http://habrahabr.ru/'));

$saw = new nokogiri($html);
var_dump($saw->get('a.habracut')->toArray());
// На выходе: Array(6) { [0]=> array(3) { ["class"]=> string(8) "habracut" ["href"]=> string(56) "http://habrahabr.ru/blogs/google_chrome/110099/#habracut" ["#text"]=> string(29) "Читать дальше →" } [1]=> ....
var_dump($saw->get('ul.panel-nav-top li.current')->toArray());
// На выходе: array(2) { ["class"]=> string(7) "current" ["a"]=> array(3) { ["href"]=> string(20) "http://habrahabr.ru/" ["class"]=> string(8) "disabled" ["#text"]=> string(10) "Посты" } }
var_dump($saw->get('#sidebar dl.air-comment a.topic')->toArray());
// На выходе: array(50) { [0]=> array(3) { ["class"]=> string(5) "topic" ["href"]=> string(36) "http://habrahabr.ru/blogs/os/110045/" ["#text"]=> string(63) "ФБР внедряло backdoor'ы в IPSec код OpenBSD (?)" } [1]=> array(3) { ["cl
var_dump($saw->get('a[rel=bookmark]')->toArray());
// На выходе: array(10) { [0]=> array(4) { ["rel"]=> string(8) "bookmark" ["href"]=> string(47) "http://habrahabr.ru/blogs/google_chrome/110099/" ["class"]=> string(5) "topic" ["#text"]=> string(100) "Google объявил Chrome готовым к использованию в бизнес-среде" } [1]=> array(4) { ["rel"]=

Ошибки html игнорируются.
Распознаются вложеные теги (через пробел), а также конструкции вида .class, #id и [attr=value]
Создание из строки: nokogiri::fromString($htmlString); или new nokogiri($htmlString);
Создание из DomDocument: nokogiri::fromDom($dom);


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

Capistrano и php

Web Developer
Всем привет. Сегодня я хотел бы ещё раз поговорить о замечательном deploy-ере Capistrano.

Напомню, что Capistrano — это Open Source-ный инструмент для выполнения скриптов на нескольких серверах, который в основном используется для web приложений. Он позволяет автоматизировать процесс развертывания новой версии на одном или нескольких web серверах и включает поддержку таких задач, как например изменение базы данных.

Capistrano написан на Ruby и является «модулем» (или компонентном, не знаю как лучше) фреймворка Ruby on Rails.
Данный топик по большей части является переводом туториала со страницы проекта на github-е с некоторыми дополнениями, изменениями и сокращениями специфичными для php (или для «не RoR»). Здесь не будут рассматриваться вопросы работы с несколькими серверами и базой данных, это всего лишь небольшое пособие для начинающих.

Итак, допустим на нашем локальном компьютере в паке /path/deploy/from находится приложение написанное на языке php. У этого приложения есть git репозиторий находящийся по адресу example.net/project.git с актуальным кодом. Также у нас есть хостинг по адресу example.com с ssh доступом и папкой /path/deploy/to куда мы собираемся залить наши файлы. Мы не хотим постоянно возиться с ftp клиентом и решили потратить несколько часов для того, чтобы разобраться в деплойере capistrano. Давайте приступим.


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

Proxy-сервер SQUID web-интерфейс для администрирования SAMS SAMS+REJIK с аунтентификацией по NTLM

Руководство
Настраиваем связку SQUID SAMS+REJIK с аунтентификацией по NTLM.
Так как есть ДОМЕН под управление Win 2003 Server, и нужна авторизация пользователя под своей учетной записью и так же вести логи и предоставлять информацию начальству в случаи надобности.
Авторизация пользователей будет по NTLM.
Для всего нам понадобится apache, php, mysql, сам squid, sams, samba. Все это нам предстоит установить, или обновить.

Для начало ставим скопом apache, php, mysql:
$ aptitude install apache2 apache2-doc apache2-utils ssl-cert mysql-server libmysqlclient15-dev libapache2-mod-php5 php5 php5-common php5-dev php5-mcrypt php5-imagick php5-mysql

Для того, чтобы пользователи могли проходить NTLM аутентификацию, необходимо настроить авторизация через Active Directory, и здесь вы будем использовать samba, kerberos, winbind, pam. Настраиваем и введем наш сервер в домен:

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

Установка и настройка сервера nginx с поддержкой PHP в Debian / Ubuntu

Руководство
Nginx — высоко производительный HTTP сервер, распространяемый с вместе с исходными кодами. Nginx стал популярным благодаря своей стабильности, богатому набору возможностей, простой конфигурацией и небольшим потреблением системных ресурсов.

Встроенной поддержки PHP в nginx нет, но есть возможность работы с FastCGI. Благодаря этому, а так же fastcgi демону spawn-fcgi, идущего вместе с сервером lighttpd, PHP-сайты могут вполне благополучно работать под nginx.

Установка и настройка PHP
Установка PHP не отличается от установки какого-либо другого пакета в Debian / Ubuntu. Выполняем установку непосредственно PHP(5), а так же поддержку FastCGI в PHP:

$ sudo aptitude install php5 php5-cgi

Настройка PHP
После установки PHP, необходимо сделать некоторые настройки: обеспечить поддержку правильных PATH_INFO/PATH_TRANSLATED в CGI. Для этого необходимо отредактировать файл/etc/php5/cgi/php.ini следующим образом:

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

Roundcube Webmail 0.4

Web

Roundcube — перспективный webmail-клиент для служб IMAP. При разработке не в последнюю очередь уделялось внимание эргономике и эстетике интерфейса. Присутствуют поддержка HTML-сообщений, проверка орфографии, многоязыковая поддержка. При включенном JavaScript используются возможности AJAX. В качестве механизмов хранения данных предлагаются MySQL, PostgreSQL или SQLite; поддерживаются адресные книги в LDAP. Благодаря гибкой архитектуре, использующей плагины, достигается расширяемость функциональности (например, загрузка пользовательских Sieve-скриптов по протоколу ManageSieve).

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

Nginx + php

Руководство
Сегодняшний интернет без php представить невозможно. Nginx предоставляет возможность выполнять php скрипты, используя FastCGI.

То есть для того, что бы включить поддержку CGI в php.

Для этого, в FreeBSD делаем:

cd /usr/ports/lang/php5, и выбираем Build CGI version

После того как собран php, нам необходимо собрать расширения php,
идем в
cd /usr/ports/lang/php5-extensions

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

Установка Apache + MySQL + PHP/Perl

Руководство
Предположим, что ставить мы его будем на Дебиан (самый распространенный вариант) или Убунту (дома у меня такой).

Для работы с нормальной нагрузкой такому серверу необходимо не менее 256 Мб оперативной памяти. Это Мускль большинство хавает.

Итак, заходим по ssh или просто садимся за свой сервер (если он под рукой). На нем уже должен стоять Дебиан или Убунту.

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