Posts Tagged ‘linux’

Как не надо делать бэкап скрипт

Friday, July 5th, 2013

  Вот таким печальным образом некто mikus@hostnet.lv делает бэкапы удалённых linux серверов. Тут вам в 10 строках и создание полной копии в /tmp папке без ограничения прав доступа, и передача через сеть в нешифрованном виде, и использование национальных слов наряду с английскими, и запутывание логики в следствии то ли отсутствия логического мышления, то ли неумения пользоваться командой man.
  “Ietaupiet līdz pat 80% no saviem IT izdevumiem, izmantojot ārpakalpojumu LINUX serveru administrēšana” – написанно на сайте hostnet.lv. Вот что бывает при экономии 80% – linux начинают администрировать сельские сторожа.

#!/bin/bash

LOCALHOST=cargomix.hostnet.lv
DATE=$(date +%Y-%m-%d)
HOST=”webconcept.lv”
LOGIN=”backup”
PASS=”XXXXXX”
PORT=”21″
REMOTEDIR=”www/”$DATE
BACKUPDIR=”/tmp/all_backup/”;
ADMINEMAIL=”mikus@hostnet.lv”

mkdir -p $BACKUPDIR/;

# var/log

for directory in etc root var/spool/cyrus var/lib/mysql var/lib/cyrus; do
cd /$directory;
echo “Backuping /$directory…”
mkdir -p $BACKUPDIR
dir2=$(echo $directory | cut -d “/” -f 2)
tar cfz /tmp/all_backup/$dir2.tar.gz . > /dev/null ;
#rm -rf $BACKUPDIR$directory
done

if
ncftpput -u $LOGIN -p $PASS -P $PORT -Rm -r 10 -DD $HOST $REMOTEDIR $BACKUPDIR*;
then
echo “Backup Succsefull”;
echo “Backup was succesfull at $LOCALHOST” | mail -s “$LOCALHOST all backup succsesfull – $laiks” $ADMINEMAIL;

else
echo “Backup Error”;
echo “Backup ERROR at $laiks.” | mail -s “ALL BACKUP ERROR $LOCALHOST” $ADMINEMAIL;
fi

rm -rf $BACKUPDIR/;

Ethernet Encryptor своими руками

Thursday, July 29th, 2010

  Возникла задача защитить сетевой трафик в отдельно взятом канале связи, проложенном через канализации и кроссы офисного здания с одного этажа на другой. Чтобы не усложнять топологию локальной сети VPN туннелями, решили сделать прозрачное шифрование Ethernet на входе и выходе небезопасного канала.
  В интернете можно найти готовые устройства типа L2 Ethernet Encryptor от BlackBox ценой от $5K, но можно и самим сваять такой черный ящик на linux используя vtun (или openvpn). К тому же есть неплохое готовое описание. Разве что в нашем случае не нужны IP адреса на интерфейсе моста и промежуточные адреса мы так же не хотим светить:

# hide ip on interconnection link
net.ipv4.conf.eth1.arp_filter = 1
net.ipv4.conf.eth1.arp_announce = 2
net.ipv4.conf.eth1.arp_ignore = 2

  При использовании схемы “сервер” <-> “много клиентов” опцию “device” надо убирать. Иначе только первый клиент может установить соединение, а при попытки подключения остальных возникает ошибка

Can’t allocate tap device tap. Device or resource busy(16)

  Железку можно взять на hacom.net. 270-ый Atom с шифрованием blowfish128ecb без компрессии пропускает 56Mbps видео в mpeg4, а netperf с lzo:1 на 100baseT/Full выдаёт аж 160Mbps !

прозрачное сжатие fs в Linux

Sunday, June 13th, 2010

  Забился двухтерабайтник, решил попробовать прозрачное сжатие на файловой системы под линуксой. К моему удивлению, из всего многообразия всяких ext4, jfs, xfs и иже с ними обнаружилось всего два кандидата – свежевыпиленный btrfs, но в ванильном ядре, и шестилетней давности reiser4, но патчем.
  Хотелось бы, конечно, насладится передовые технологии, однако у btrfs до сих пор нестабильный формат, и, судя по комментарию разработчика reiser4, ребята не осилили математику в школе. К тому же, lzo побыстрее zlib-a будет.
  Хотя небольшая практика показала что и reiser4 иной раз в кору падает:

# mkfs.reiser4 -o create=ccreg40,compress=gzip1,compressMode=force,cluster=4K,key=key_short /dev/sdb1
mkfs.reiser4 1.0.7
Copyright (C) 2001-2005 by Hans Reiser, licensing governed by reiser4progs/COPYING.

Block size 4096 will be used.
Linux 2.6.28 is detected.
Uuid f813fede-b138-4203-8e61-6a7b68419d41 will be used.
Reiser4 is going to be created on /dev/sdb1.
(Yes/No): yes
Creating reiser4 on /dev/sdb1 … Segmentation fault

  P.S. А Шишкин оказывается на redhat работает :)

Скажите диджею – с него я х#ею !

Wednesday, November 18th, 2009

  Позвонил мне тут бывший коллега с пожарки – решил он сменить поле деятельности: надоело ему менять картриджи и теперь он настоящий одмин. И кто-то даже доверил ему настроить почтовый сервер. И он даже сумел поставить туда Debian. А дальше начинается трагикомедия…
  Интернет не работал – на всех трёх сетевых адаптерах был прописан один и тот же IP адрес, и даже шлюз по умолчанию был настроен на первых двух. Провод был воткнут в третий интерфейс. Похоже, именно эта проблема заставила одмина позвонить мне.
  Вторым моментом, впечатлившим меня, оказалось разбиение дисков. В сервере установленно три диска – hdb, hdc и hdd. Понятно, что не каждый одмин может поставить диск как мастер, но вот одинокий hdb1 в зеркале с самим собой повеселил. И это на с нуля установленном-то сервере…
  Почему-то начинающие одмины думают, что достаточно установить одну из веб приблуд типа ispcp и дальше всё автоматически заработает. И страшно удивляются, когда сообщаешь им о необходимости что-то настраивать дополнительно. А вопросы типа “ну что там было ?” от человека, который ничего не понимает в предмете просто ставят меня в тупик. И главное – о чём думают люди, нанимающие таких одминов ?

nginx отправляет lighttpd на свалку

Friday, September 11th, 2009

  В восьмой версии nginx появилась поддержка асинхронного файлового ввода-вывода (aio). Это означает, что теперь файловый io не блокирует весь сервер и запросы продолжают выполняться.
  Практический пример может быть таким: есть два диска, на одном html файлы, на другом rar архивы. Если диск с архивами занят чтением, то тот же lighttpd ждёт результата и не обслуживает запросы к html, не смотря на то, что первый диск свободен – сервер висит.
  По правде говоря, в lighttpd aio тоже вроде как есть, но только в версии 1.5 которую никак не могут выпустить. Похоже, пора менять lighttpd на nginx.

Vserver или openVZ

Tuesday, June 30th, 2009

  Вот в чём вопрос.
  Вот что говорит разработчик vserver:

Linux-VServer
– community driven project
– lightweight isolation
– small and unintrusive patch
– supports all kernel archs
– provides highly advanced jails

OpenVZ
– FOSS version of commercial product
– virtualization (e.g. network)
– rather large (grown) patch
– focused on a few (x86/ppc/sparc)
– provides VPS (e.g. live migration)

Except for that, give or take a feature the functionality is mostly the same.

С преветом от Linux

Sunday, April 19th, 2009

  Отличнейший экслойт объявился для последнего бага в udev. Кому всю жизнь не хватало прав рута – налетайте !
  Оригинал здесь:
http://seclists.org/fulldisclosure/2009/Apr/att-0198/udev_txt

Новая фича openssh

Saturday, January 10th, 2009

  В новой версии openssh появилась встроенная возможность запирать пользователей в chroot. Вкупе со встроенным sftp сервером эта фича предоставляет простую и безопасную замену устаревшему ftp на хостинговых площадках.
  Подробное описание конфигурации можно посмотреть здесь. Стоит только упомянуть об одной особенности: все директории в пути chroot должны быть под владением пользователя root, иначе не работает – в логах появляется ошибка “fatal: bad ownership or modes for chroot directory”. Нашёл здесь.

nano.lv как хостинг

Friday, January 2nd, 2009

  На днях знакомый прислал мне классную ссылку на интернет сайт, размещённый на хостинговой площадке фирмы nano.lv. Оказывается, за неполных три LVL несложными манипуляциями можно получить удалённый доступ в основную систему сервера со всеми вытекающими – начиная от сбора информации и заканчивая атаками DoS и получением рутовских прав.
  Что бы я хотел сказать treck-у по этому поводу… Внешний клиент для админа это всегда враг, главной целью которого является полный захват сервера либо выведение его из строя. Именно исходя из этого утверждения следует строить хостинговую систему и всегда думать о балансе между предоставляемыми возможностями и общей безопасностью системы.
  С другой стороны, предоставляя пользователям удалённый доступ к системе с возможностью запуска приложений, очень трудно (скорее даже невозможно) обеспечить разделение ресурсов и безопасность основной системы без использования полной виртуализации для каждого клиента. До тех пор, пока пользователь обслуживается системным ядром, любая ошибка в его коде может быть использована для отказа в обслуживании всего сервера. А ошибки и сплойты для linux это естественная и бесконечная история его развития. И grsecurity тут не поможет. Аминь.

Ошибка в find

Thursday, October 30th, 2008

  find (GNU findutils) 4.3.13

find: arithmetic overflow while converting 30 minutes to a number of seconds

  Что бы это значило ?

Ошибка в модуле ipt_recent для netfilter

Saturday, October 18th, 2008

  Есть у меня один могильничек… Точнее сервер на RedHat 7.2 с ядром серии 2.4.
  Всё бы ничего, да в модуле ipt_recent для netfilter-а оказывается есть крутой баг, делающий этот самый ipt_recent совершенно бесполезным. Нашли его ещё в 2005-ом и благополучно исправили в ветке 2.6, но забыли портировать на 2.4 – в текущем ядре 2.4.36.7 модуль всё ещё кривой.
  Так что пришлось мне править оригинальную заплатку что бы она накладывалась на ядро серии 2.4. Так же отправил письмо в linux-kernel, надеюсь в следующем релизе исправят.
  Patch: http://dg.sad.lv/files/ipt_recent.2.4.patch

tcp window scaling – теория и практика

Sunday, September 14th, 2008

  Опция TCP window scale позволяет динамически согласовывать (увеличивать) количество передаваемых данных в одном пакете. Что, в теории, ведёт к более эффективному использованию интернет соединений и увеличению реальной пропускной способности. Данная фича уже давно присутствует в Linux и даже была включена в новейшем Windows Server 2008 ;)
  Однако, в реальной жизни всё не так уж радостно. В случае, если в результате некорректной реализации масштабирования окна в ОS либо неправильной настройки, не удаётся согласовать размер окна, происходит повторная, порой многократная, передача пакетов. К сожалению, многие из купивших Cisco или установивших *BSD по пошаговой инструкции 3-4 года назад, никогда в дальнейшем не утруждают себя обновлениями.
  В результате, на высоконагруженных серверах, включение TCP window scaling приводит к заметному снижению производительности. 5-10 клиентов с кривой реализацией TCP стэка посылающие 100 сообщений по 5 мегабайт увеличивают нагрузку на канал передачи данных и CPU принимающего сервера в несколько раз !

Linux наступает на desktop

Friday, July 18th, 2008

  В этом я сегодня смог убедится лично.
  Раньше я видел только сотрудников высокотехнологичных компаний (собственно inbox.lv), выполняющих свои служебные обязанности за рабочими столами KDE или Gnome. Но вот чтобы делопроизводитель транспортной компании смог сломать xfce и рассказывал как по форумам искал manual вернуть пропавшие иконки… При чём, женщине лет этак за сорок… Был в шоке.
  Так и не понял как ей удалось так испортить сессию, что ни xfdesktop, ни xfce4-panel не запускались после авторизации. Зато курсор работал исправно ;) Хотя… надо признаться, xfce я видел второй раз в жизни :)

анекдот с anekdot.ru

Sunday, March 23rd, 2008

Винда:
Приветствую тебя, мой повелитель!!!
Вы действительно хотите удалить этот каталог, о мой повелитель?!!!
Извините, я не могу удалить этот файл, мой повелитель, без него моё существование станет невозможным, о мой повелитель!!!

Линукс:
Дарофф, чувак!
Хочешь это сделать? Валяй!!!
Что ой бля?
Я тебя просил это делать?
Тряси теперь бубен, я послушаю!!!

ebuild для Дженту за 15 минут

Friday, March 7th, 2008

  Для нового мега проекта Danaki для inbox.lv (уже в стадии подготовки к запуску) необходимо было установить последний lighttpd версии 1.5 которого ещё нет в официальном Gentoo.
  Ставить из tarball’а не кошерно, решил сделать свой ebuild из существующего для 1.4.18. Делал подобное первый раз без каких-либо познаний в этом деле. За 20 минут я:

  1. исправил URL для 1.5
  2. добавил нашу заплатку для кода
  3. добавил новую зависимость (aio)
  4. добавил новый USE флаг
  5. изменил конфигурационные файлы для lighttpd по умолчанию

  Ничего сложного :)

Восстановление Intel Entry Storage System SS4000-E

Saturday, March 1st, 2008

  Сломался у товарищей значит Intel Entry Storage System SS4000-E. Дёрнулось электричество и аппарат сказал что диски у него теперь девственные и совсем новые. А раз там Linux Inside, притащили мне искать потерянное добро. (more…)

Простой шейпер

Friday, February 1st, 2008

  Иногда возникает необходимость шейпить траффик по определённому порту. В моём случае исходящий SMTP траффик убивал DSL линк когда кто-нибудь посылал видео ролик на 7 мегов 3-10 адресатам. С помощью пакета iproute2 в linux можно творить маленькие чудеса :)

  • Устанавливаем очередь CBQ на интерфейс:

    tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 100mbit
  • Создаём класс на 256kbit:

    tc class add dev eth1 parent 1: classid 1:1 cbq rate 256kbit allot 1500 prio 5 bounded isolated
  • Загняем траффик по шаблону ip dport 25 0xffff через фильтр u32:

    tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dport 25 0xffff flowid 1:1

  В результате исходящий траффик на 25 порт не превышает 260kbit/s в любой ситуации.

  Больше здесь:
Rate limiting a single host or netmask
The u32 classifier

Поиски причин segfault под Gentoo

Saturday, January 26th, 2008

  Пришлось на днях поразвлекаться с gdb и падающим в segmentation failure PHP. Вот несколько советов по получению удовлетворительного результата под hardened Gentoo:

  1. ставим размер coredump’a бесконечным:
    ulimit -c unlimited
  2. прописываем путь для коры:
    echo "/tmp/core.%p-%t" > /proc/sys/kernel/core_pattern
  3. переключить компилятор gcc на vanilla (ВАЖНО!):
    gcc-config i686-pc-linux-gnu-3.4.6-vanilla
  4. запускаем сборку с дополнительными опциями:
    EXTRA_ECONF=" --enable-debug" FEATURES="nostrip" emerge -a php

  После падения по segfault смотрим результат:
gdb /usr/bin/php-cgi /tmp/core.bla-bla-bla

Подводные камни патча Grsecurity

Sunday, January 20th, 2008

  На днях столкнулся с проблемами при использовании ядра, собранного из sys-kernel/hardened-sources в Gentoo с включенными опциями grsecurity. Долго не мог понять в чем дело – gcc постоянно падал в segfault при сборке большинства пакетов, в то время как tar паковал пару гигов через bzip2 на ура. Поменяли проц и мамку – без результата.
  Дело оказалось в опции CONFIG_PAX_NOEXEC из раздела Security options->PaX->Non-executable page. После полного отключения фичи Non-executable pages компилятор всё таки заработал.
  Данная проблема явилась для меня сюрпризом, так как я уже долгое время работаю с ядрами линукс с включенным PAX’ом под amd64 без каких-либо нареканий. В этом же случае, система оказалась i686 на базе процессора Pentium4 без поддержки NX бита.

Trustix умер

Saturday, December 1st, 2007

  Как это ни печально, но весьма неплохой серверный rpm-based дистрибутив Trustix, согласно объявлению на оффициальном сайте, закончил своё существование. Так сказать, “всем спасибо, все свободны”.
  Что я буду теперь делать с теми 15 серверами, которые я поставил на Trustix за последние пять лет ?!?! Жопа, блин.