Таймауты для SSH-сессий

Date February 21st, 2010 Author Vitaly Agapov

ssh

Сколько раз уж бывало так, что сидишь на удалённом сервере, залогинившись по SSH, никого не трогаешь. Потом отвлечешься ненадолго (ну… пообедать там, новости почитать, Симпсонов посмотреть), смотришь в консоль, а сессия отвалилась. Вроде и не смертельно, вроде и секьюрно. В общем, не задумывался об этом и просто залогинивался по-новой. Сегодня, однако, задумался – в какой бы конфиг и какую бы строчку забабахать, чтобы этого не происходило. Гугл и man sshd_config в помощь. В общем, нашёл способ. И не один. Читать далее »

Tags: ,
Категория: Linux | 3 Комментариев »


Почтовый сервер — в каждый дом. Exim+Dovecot+SpamAssasin+ClamAV+PostfixAdmin

Date February 20th, 2010 Author Vitaly Agapov

“А если вы на него бочку катите, то это уже контейнерная перевозка. Этим Трансагентство занимается.”
— Печкин

exim

Как ясно из названия — мы будем заниматься организацией собственного почтового сервера, главным компонентом которого будет MTA Exim, который будет заниматься приемом-отправкой почты и скармливанием её различным фильтрам и MUA Dovecot. Почему именно Exim? Это вопрос скорее философский. Мне недавно подсказали, что он хорош. Я его потрогал, и он действительно оказался хорош. Он хорошо задокументирован (хотя н русском языке инфы мало, здесь правит бал всё-таки Postfix), секьюрен, производителен, лёгок в настройке. В общем, правильный выбор.

Данные о пользователях и вспомогательные таблицы будут храниться в MySQL. Для управления доменами и виртуальными почтовыми акаунтами будем использовать postfixadmin. Да и структуру базы данных будем использовать от этого проекта. Postfixadmin, конечно, предназначен обычно для работы с MTA Postfix, но это непринципиально. Он даже и догадываться у нас не будет, что подоткнут к Exim’у. Он достаточно удобен и лёгок в настройке.

После того, как всё заработает, подключим SpamAssassin и ClamAV для проверки на спам и вирусы.

И всё это добро будет у нас стоять на Ubuntu 9.10.

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

Tags: , , ,
Категория: Linux | 28 Комментариев »


Ускоряем web-сценарии на Perl, или ещё раз про Perl vs PHP

Date February 17th, 2010 Author Vitaly Agapov

“Концепция единообразия жизни позволяет наслаждаться каждым моментом, не отвлекаясь на сопоставление и сравнение.”
— х/ф “Эквилибриум”

Two_fast_two_furious_ver5Идея этой статьи родилась совершенно случайно после пары бесед с адептами PHP, утверждавшими, что Perl для Web-программирования не подходит по причине своей тормознутости, сложности и отсутствию многих полезных фич. Про второй и третий фактор говорить не будем по причине их субъективности. А вот с “тормознутостью” можно поработать. Действительно, из коробки сценарии на PHP должны работать быстрее сценариев на Perl из-за принципиального отличия их базовых парадигм: интерпретатор PHP загружен как модуль в Apache и не требует постоянной загрузки в память на каждый новый HTTP-запрос, в то время как интерпретатор Perl как раз и запускается отдельным процессом, выполняет сценарий и выгружается из памяти. Однако же спор на этом заканчивать рано, потому как для Perl существуют такие замечательные вещи, как mod_perl и FastCGI, которые могут добавить очков в корзину этому языку. При этом mod_perl по аналогии с mod_php загружается в память при старте Apache и не тратит драгоценных мгновений на запуск и выгрузку из памяти (жертвуя, правда, ресурсами сервера при этом), а FastCGI позволяет запустить интерпретатор с зацикленным сценарием один раз и обращаться к нему при поступлении новых запросов (здесь стоит отметить необходимость внесения некоторых изменений в сам скрипт).
Так вот. Попробуем разобраться, как всё это заставить работать и насколько всё это улучшает производительность по сравнению с работой сценариев в стандартном режиме с модулем mod_cgi.

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

Tags: , , ,
Категория: Apache, Perl, Web-dev | Нет комментариев »


XHTML-валидация для чайника

Date February 10th, 2010 Author Vitaly Agapov

"Добродетель опровергается, если спрашивать, «зачем?»…"
— Фридрих Ницше

uncle-samПолезность стандартизации всегда была весьма очевидной, а о её необходимости в Web-девелопменте уже как-то и говорить не приходится. И что уж тут обсуждать —  веб-стандарты вышли из тени и распространяются огромными темпами. Особенно это удивительно, если вспомнить, что в первой половине первого десятилетия о стандартах мало кто думал, и всё кодилось и версталось как бог на душу положит. А бог на душу клал изумительно. Но это камень всё-таки не в сторону web-девелоперов, а в сторону производителей браузеров, потому как всё разношёрстные костыли и прочие ухищрения были направлены в первую очередь на попытки заставить сайты работать адекватно и в IE, и в Netscape и в прочих Мозиллах с Операми.
Сейчас же интернет-сообщество, пинаемое всякими консорциумами, чьи названия всуе произносить не будем, движется в сторону веб-стандартизации. Стандарты, само собой, разные: XHTML1.1, XHTML1.0 Transitional, XHTML1.0 Strict, HTML4.01, HTML5.0 и т.д. В общем, на любой вкус.
Для облегчения участи кодеров и верстальщиков с подачи всё тех же консорциумов появились Валидаторы разметки (Markup Validators) для проверки сайтов на наличие ошибок и соответствие стандартам. Один из них можно найти по адресу http://validator.w3.org.

Посмотрим, какие ошибки у меня на сайтах, заявленных в DTD как XHTML1.1, могут найти валидаторы и как с ними справиться.
Читать далее »

Tags:
Категория: Apache, Web-dev | 5 Комментариев »


mod_rewrite для Apache

Date February 5th, 2010 Author Vitaly Agapov

“Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo.”
— Brian Moore

mod_rewrite_logo
В своей недавней статье “mod_security2 для Apache” я начал тему безопасности для web-сервера Apache. Там, конечно, не было никаких откровений – простая разминка для мозгов плюс полезная памятка на будущее. Но в целом оставлять эту благодатную тему не хочется, поэтому сейчас я пробегусь по ещё одному полезному модулю – mod_rewrite.

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

Но… ближе к телу!

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

Tags: ,
Категория: Apache, Linux, Security, Web-dev | Нет комментариев »


Постепенный вывод в Web-страницу (tail -f для Web)

Date February 2nd, 2010 Author Vitaly Agapov

tailf-iframeПредыстория такова, что мне потребовалось сделать web-интерфейс, позволяющий запускать и останавливать на сервере определённый процесс. И при этом хотелось в режиме реального времени видеть отладочную информацию, которую процесс пишет в свой лог-файл, примерно так, как это делает tail -f в командной строке. В моём случае это был Tomcat и его лог catalina.out, но это не принципиально. С тем же успехом это мог быть, например, Postfix и mail.log. В процессе работы встретились кое-какие подводные камни и интересные решения. Но обо всём по порядку…

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

Tags: ,
Категория: Apache, Perl, Web-dev | 5 Комментариев »


Защита web-приложения, использующего Ajax (Ajax Fingerprinting)

Date January 28th, 2010 Author Vitaly Agapov

ajaxНа редком сайте сейчас не увидишь привычных уже крутящихся иконок асинхронной загрузки через Ajax. Однако новые технологии приносят и новые беды в виде новых уязвимостей и дыр в безопасности. Меж тем, недавно я узнал о таком понятии как “Ajax fingerprinting”. Почитал про него, попробовал в деле, узнал кое-какие тонкости и сейчас об этом пишу. В целом идея тривиальна: в браузере JavaScript’ом генерируем Ajax’овый GET-запрос с дополнительным полем в заголовке XHR (XMLHttpRequest), а на стороне сервера с помощью mod_security фильтруем всё Ajax-запросы, не содержащие этого поля или содержащие неверное значение. Не самая крепкая защита, но лучше, чем ничего. Не зря гласит народная мудрость: “Если у Вас паранойя, то это не значит, что за Вами не следят”.

Посмотрим, как это всё реализовать.

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

Tags: , ,
Категория: Apache, Security, Web-dev | 1 Комментарий »


Ajax-автозаполнение (Ajax-autosuggest) своими силами

Date January 15th, 2010 Author Vitaly Agapov

ajaxТех, кто хоть иногда заходит в Интернет, автозаполнением поисковых форм уже никак не удивишь. Даже более того – эта фича становится де-факто обязятельной для реализации в любом web-проекте с функцией поиска. Впервые функциональность автозаполнения была реализована в Google Suggest, и с тех пор распространилась повсеместно. Действительно очень удобно – вводишь несколько первых букв в текстовое поле, а тебе уже выдают выпадающий список с возможными поисковыми строками, содержащими введённый тобой текст. Круто. Особенно крутость этого механизма ощущается после того, как узнаёшь, насколько просто её можно реализовать самому. И речь даже не о десятках (сотнях?) платных и бесплатных JS-библиотек, встречающихся там и тут на просторах всемирного “невода”, а о том, как можно её сделать самому с нуля своими руками. Об этом ниже…

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

Tags: ,
Категория: Web-dev | 14 Комментариев »


mod_security2 для Apache

Date January 10th, 2010 Author Vitaly Agapov

mod_securityДля защиты своих Web-приложений надо прикладывать максимум усилий и всегда быть готовым к тому, что этого всё равно окажется недостаточно. Руки, само собой, опускаться не должны (только если на клавиатуру), а мы должны знать и помнить о всех возможностях нашего любимого ПО.
Сегодня я себе в качестве памятки (а всем прочим для ознакомления или праздного интереса) вкратце опишу весьма нужный модуль для Web-сервера Apache: mod_security2.

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

Tags: ,
Категория: Apache, Linux, Security, Web-dev | 6 Комментариев »


Sphinx, часть 2: Perl API

Date December 31st, 2009 Author Vitaly Agapov

perlsphinxВ прошлой статье «Sphinx: начало» я описал процедуру установки Sphinx и показал, как создавать полнотекстовые индексы на примере базы данных с книгами. Теперь нам надо понять, как использовать эти индексы в Perl-приложении. Это может быть любое Perl-приложение, но в основном Sphinx Perl API находит применение в Web CGI. Почему именно в Perl? Да потому что про PHP и так написано везде и помногу, и, кроме того, Perl – это наше всё.
Читать далее »

Tags: , ,
Категория: MySQL, Perl, Web-dev | 4 Комментариев »