Системный администратор в Черногории и по всему миру

Администрирование серверов, разработка плагинов к хостинг-панелям

Защищаем от хотлинкига

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

Конфиг nginx в общем случае будет выглядеть так:
location ^~ /downloads/ {
secure_link $arg_hash,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr salt";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
alias /var/www/sites/data/www/test/files/;
}

где $arg_hash - $_GET['hash'] переменная hash кодирующая ссылку, а $arg_expires - $_GET['expires'] содержащее время "протухания" ссылки, а salt - "соль" которой добавляем уникальность (как вариант, можно добавлять в secure_link_md5 user_agent или любые другие переменные). Я использую alias, так как физически имя папки в url отличается от фактической в файловой системе.

Генерация ссылки на php происходит следующим образом:

$salt="salt";
$time = time() + 10800;
$file="/downloads/file.rar"
$hash=md5($time."/".$file.$_SERVER['REMOTE_ADDR']." ".$salt,TRUE);
$hash = strtr( base64_encode($hash), array( '+' => '-', '/' => '_', '=' => '' ));
$link="http://test.com".$file."?hash=".$hash."&expires=".$time;

Тэги: , ,

ISPManager и Dkim, Ошибка: can't read file '/etc/exim4/ssl/t

В ispmanager 4 версии при включении Dkim возможно появление ошибки вида:
Ошибка: can't read file '/etc/exim4/ssl/test.com.txt'
dkim

Проблема заключается в том, что инсталлятор ispmanager устанавливая через apt пакеты, не устанавливает dkim-tools, решение:
apt-get install opendkim-tools

Тэги: ,

Тормозит скачивание? Берем в руки mtr

1) Ставим mtr

SuSE: через Yast
Debian/Ubuntu: apt-get install mtr
Gentoo: emerge -av mtr
FreeBSD: pkg_add -r mtr-nox11
winmtr (Windows): http://sourceforge.net/projects/winmtr/

2) запускаем и ждем пару минут
root@serv2:~# mtr -s 1500 -r -c 1000 -i 0.1 www.domain.ru
HOST: domain.ru Loss% Snt Last Avg Best Wrst StDev
1.|-- gw.ispsystem.net 3.6% 1000 0.6 0.6 0.5 9.6 0.5
2.|-- edge.webdc.ru 3.2% 1000 0.5 0.7 0.4 23.8 2.5
3.|-- as24940.ix.dataix.ru 4.2% 1000 38.0 37.9 37.7 52.9 1.0
4.|-- core4.hetzner.de 4.5% 1000 37.9 38.0 37.8 56.5 1.4
5.|-- core21.hetzner.de 3.8% 1000 50.4 50.4 50.2 73.3 1.7
6.|-- juniper1.rz14.hetzner.de 3.1% 1000 50.4 52.2 50.1 142.8 7.9
7.|-- hos-tr2.ex3k1.rz14.hetzne 5.4% 1000 52.2 51.7 50.7 62.0 1.3
8.|-- core.domain.ru 89.4% 1000 50.5 50.8 50.2 51.7 0.2
9.|-- domain.ru 3.3% 1000 50.6 50.8 50.3 55.9 0.5

3) Получаем статистику и делаем выводы о потерях.

Тэги: ,

Жесткий ребут

В ситуации, когда обычный reboot не помогает можно воспользоваться следующими командами (выполняются последовательно)
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

Смена места жительства

Перебрался в Черногорию.
640px-Flag_of_Montenegro.svg

Обновление Debian c squeeze на wheezy

Быстрое обновление с debian 6 (squeeze) на debian 7 (wheezy)

пункт 1 - делаем бэкап и копируем его на удаленный сервер (ибо нефиг);
пункт 2 - поехали
aptitude update
aptitude upgrade
cp -a /etc/apt/sources.list{,.queeze}
sed -i 's/squeeze/wheezy/' /etc/apt/sources.list
aptitude update
aptitude upgrade
update-grub
reboot
aptitude update
aptitude upgrade
aptitude dist-upgrade
aptitude install -f
reboot
lsb_release -a

Тэги:

debian + ispmanager, проблема php сессий

Ispmanager 4 в Debian не выставляет session.gc_probability из-за чего происходит переполнение папки с сессиями. По причине того, что в debian  удаление старых сессий идет через crontab задание, которое ничего "не знает" про размещение сессий в домашних каталогах пользователей.

Решение:

echo "session.gc_probability = 1" > /etc/php5/conf.d/fix.ini