vsftpd - создание файлопомойки
2009-11-01 11:52:00
/*
... есть такое слово - samba...
цели:
* выкинуть "самбу"
* анонимусов в ...
+ развернуть текст сохранённая копия
/*
... есть такое слово - samba...
цели:
* выкинуть "самбу"
* анонимусов в chroot и дать им все возможности для самореализации
* локальных/виртуальных лузеров тоже в chroot по домашним каталогам
* всё файло, что зальют аноны, должно иметь mode 0666
* все новые каталоги - mode 0777 (чтобы не парить мозг с правами/чисткой и одминить удалённо тем же ftp-клиентом)
* админов сервиса - в chroot не ставить (или ставить - на выбор, лучше конечно в chroot)
платформа - OpenBSD (ибо тут есть где развернуться), но должно работать везде. подробности о том, как установить и запустить vsftpd опустим. всем пользователям прочих фтп (особенно proftpd) пожелаем удачных обновлений и не скучать :). поехали...
* создаём chroot для анонимусов:
(Прим.: лучше загнать в ~/tmp/vsftpd/anon, а одминов сервиса - в ~/tmp/vsftpd)
> mkdir -p ~/tmp/vsftpd
> chmod 555 ~/tmp/vsftpd
> sudo echo 'anon_root=!ПОЛНЫЙ_ПУТЬ!/tmp/vsftpd' > /etc/vsftpd.conf
> mkdir -p ~/tmp/vsftpd/pub
> chmod 555 ~/tmp/vsftpd/pub
> mkdir -p ~/tmp/vsftpd/upload
> chmod 777 ~/tmp/vsftpd/upload
* добиваем /etc/vsftpd.conf
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#anonymous_enable=NO
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=000
anon_umask=000
chown_upload_mode=0666
file_open_mode=0666
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
dual_log_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog.log
vsftpd_log_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=_vsftpd
ftp_username=anonftp
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
deny_email_enable=YES
# (default follows)
banned_email_file=/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/ftpchroot
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES
#
#
# If enabled, vsftpd will load a list of usernames from the filename
# given by userlist_file. If a user tries to log in using a name in this
# file, they will be denied before they are asked for a password.
# This may be useful in preventing clear text passwords being transmitted.
userlist_enable=YES
#
# This option is the name of the file loaded when the userlist_enable
# option is active.
userlist_file=/etc/ftpusers
#
# This option should be the name of a directory which is empty. Also,
# the directory should not be writable by the ftp user. This directory
# is used as a secure chroot() jail at times vsftpd does not require
# filesystem access.
secure_chroot_dir=/var/empty
#
# The minimum port to allocate for PASV style data connections.
# Can be used to specify a narrow port range to assist firewalling.
pasv_min_port=49152
#
# The maximum port to allocate for PASV style data connections.
# Can be used to specify a narrow port range to assist firewalling.
pasv_max_port=65535
#
# By default, numeric IDs are shown in the user and group fields of
# directory listings. You can get textual names by enabling this parameter.
# It is off by default for performance reasons.
text_userdb_names=YES
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
imho для новичков есть несколько моментов, заслуживающих внимания:
> sudo touch /etc/vsftpd.banned_emails
(иначе "не пойдёт!")
> sudo useradd -d !ПОЛНЫЙ_ПУТЬ!/tmp/vsftpd -s /sbin/nologin anonftp
(иначе в OpenBSD сервис не стартанёт, ибо ftp_username по-умолчанию не объявлен)
> sudo echo 'ИМЯ_ОДМИНА_СЕРВИСА' >> /etc/ftpchroot
(а все остальные гаврики встанут в chroot в своих домашних каталогах)
в "/etc/ftpusers" у нас список тех, кому доступ на ftp заказан. также у нас УЖЕ есть пользователь "_vsftpd" с шеллом "/sbin/nologin" и несуществующим домашним каталогом (требуется по nopriv_user параметру). ACHTUNG! при подобном раскладе все симлинки, "вылетающие" за chroot, идут лесом (и это правильно. в Linux используем конструкцию "mount --bind -o ro" для наполнения "~/tmp/vsftpd/pub", в OpenBSD аналога "mount --bind" нет, сосём заполняем вручную). в "~/tmp/vsftpd/pub" закидываем контент и пишем "~/tmp/vsftpd/README!" файл с общим набором правил пользования сервисом.
всё, база готова. но решение несколько не кошерно. можно (и нужно) одминов сервиса также загнать в chroot, дав им хомяка в ~/tmp, а лучше - скинув анона в ~/tmp/vsftpd/anon (и хомяк одминам в ~/tmp/vsftpd) - тогда все будут счастливо возиться в песочнице и ваш сон никто не потревожит.
на что можно обратить внимание:
anon_max_rate
The maximum data transfer rate permitted, in bytes
per second, for anonymous clients.
Default: 0 (unlimited)
local_max_rate
The maximum data transfer rate permitted, in bytes
per second, for local authenticated users.
Default: 0 (unlimited)
max_per_ip
If vsftpd is in standalone mode, this is the maxi-
mum number of clients which may be connected from
the same source internet address. A client will get
an error message if they go over this limit.
Default: 0 (unlimited)
очень нравятся настройки ниже - можно спокойно и DSA вломить:
ssl_enable=YES
# Should include both certificate and key
rsa_cert_file=/your/cert/file
force_local_logins_ssl=YES
force_local_data_ssl=YES
force_anon_data_ssl=YES
force_anon_logins_ssl=YES
ssl_ciphers=DES-CBC3-SHA
также для хостеров порно полезен параметр (файлы доступны только если знать их имя, просмотр директории их не отобразит):
hide_file={*.mp3,.hidden,hide*,*.avi}
управление дисковыми квотами оставляем за OCью (эт элементарно).
собсно наше упражнение сукесфули комплитед, все новые каталоги получают mode 777 (непринуждённо удаляются одминами сервиса), новое файло, залитое анонами, mode 666, "самба" RIP.
удачи.
*/
Тэги:
openbsd,
vsftpd
OpenBSD - штрихи к портрету (misc.)
2009-10-31 15:11:00
/*
Страна замечательная, томики законов сразу рассылают в публичные дома, чтобы любой ...
+ развернуть текст сохранённая копия
/*
Страна замечательная, томики законов сразу рассылают в публичные дома, чтобы любой желающий мог повертеть на ..ю за символическую сумму.
/ЛОР/
сильнее всего мешает отсутствие поддержки multibyte encoding (utf8), что уже реализовано в NetBSD и FreeBSD. ждём-с, а пока каждый "строит коммунизм в отдельно взятой стране". ничего сложного. рассмотрим на примере терминала Eterm:
1) ставим "vim" и "w3m" (это наши будущие редактор и просмотрщик файлов/каталогов по умолчанию)
2) собсно обозначаем наши благие намерения:
> echo 'export PAGER=/usr/local/bin/w3m' >> ~/.profile
> echo 'export EDITOR=/usr/local/bin/vim' >> ~/.profile
w3m нам нужен хотя бы для просмотра (в Eterm) примонтированных партиций, поскольку команда ":edit ++enc=utf-8" в vim-е прекрасно работает с файлами, но сбоит на каталогах. EFM (Enlightenment File Manager) справляется с отображением UTF-8 на ура (особенно если evas собран с fribidi). после определения переменной PAGER это значение используется и для просмотра man-ов, что гораздо удобнее, чем дефолт ("more").
3) отучаем "mc" использовать "mcview" (рихтуем "~/.mc/ini"):
use_internal_View=0
тут же можно избавиться и от "mcedit", заменив его на $EDITOR
use_internal_edit=0
4) читаем "каноны":
http://www.openbsd.ru/docs/howto-cyrillic.html
5) делаем alias для запуска Eterm в нужной нам конфигурации:
alias eterm="Eterm -F -*-fixed-medium-r-normal-*-15-*-*-*-*-*-koi8-r"
после чего вызываем терминал по только что указанному "паттерну":
> eterm
6) опционально читаем "man w3m" и учимся эффективно использовать этот замечательный консольный браузер.
к этому моменту имеем полностью русифицированную рабочую систему, осталось лишь навести лоск в соответствии с личными предпочтениями (используем Enlightenment-DR17). рихтуем "/etc/enlightenment/sysactions.conf":
action: halt /sbin/halt -p
action: reboot /sbin/reboot
action: suspend /usr/sbin/zzz
action: hibernate /usr/sbin/zzz
user: $USER allow: *
с suspend и hibernate поосторожнее, может и не заработать. ставим из пакетов всё, что относится к "xdg*" и добавляем в "~/.profile" требуемые переменные:
export XDG_CACHE_HOME=$HOME/.cache
export XDG_CONFIG_DIRS=/etc/xdg
export XDG_CONFIG_HOME=$HOME/.config
export XDG_DATA_DIRS=/usr/share:/usr/local/share:/usr/X11R6/share
export XDG_DATA_HOME=$HOME/.local/share
после чего не мудрствуя лукаво копируем из openSuSE весь каталог "/etc/xdg/menu" (кто самый смелый - может рисовать xml-ные "менюшки" руками, автор - слабак, не осилил...). теперь мы имеем нормальное XDG/FDO Applications-menu. мелочь - а приятно.
последний штрих - не стоит менять настройки окружения root-а. как показывает практика успешная миграция на OpenBSD-current (это когда тащим cvs-ом исходники и компиляем всё сами) возможна только при буквальном соблюдении "канонов". т.е. если вы не имеете желания разбираться, какого буя сборка падает при "gcc version 4.2.4", но всё путём для "gcc version 3.3.5 (propolice)" - то не трогайте рутовое окружение (а падает оно патамучта gcc4 из пакетов имеет Thread model: posix и "_atomic_lock.c" из "libpthread" да и прочие аналогичные вещи ещё никто не рихтовал. у gcc3 Thread model: single).
всем - удачи!
*/
Тэги:
enlightenment,
openbsd
OpenBSD-4.6 - продолжение праздничного банкета
2009-10-28 16:41:00
/*
- стоимость дебоша уже включена в счёт, сэр!
надеюсь, что скоро будет обновление ...
+ развернуть текст сохранённая копия
/*
- стоимость дебоша уже включена в счёт, сэр!
надеюсь, что скоро будет обновление EFL для OpenBSD в портах и пакетах. пока планируется "прыгнуть" на версию "0.16.999.061", веду переписку для "прыжка" на текущий svn или, как минимум, версию "0.16.999.062" с поддержкой "lua" для "edje". иначе смысл теряется за морем лишних слов.
с версии 4.2 никаких кардинальных улучшений с "iocharset" или файловыми системами не произошло, посему воткнуть флешку с русскими именами файлов безболезненно получится только если:
1) кодировка на флешке koi8-r или 8859-5
2) вы свершили подвиг, справшись с "русификацией" OpenBSD (консольку - отдельно, иксы - отдельно и для многих приложений тоже нужен "индивидуальный подход" - весьма полезное упражнение для многих современных пользователей Linux-а...)
посему если ваши Linux партиции отформатированы в ext2/ext3 - их можно прочесть, на ext2 можно даже что-то записать. без отключения журнала можно писать и на ext3 (вы любите играть в русскую рулетку по утрам для поднятия тонуса). одним словом - благодать! только вот с ntfs неувязочка... для монтирования надо проверить в диспетчере дисков Windows, чтобы на партиции не стояла галочка "Dynamic" (а она там практически стоит всегда), иначе лучше сразу купить альбом Сосо Павлиашвили.
не менее элегантно раздаются права на примонтированные файловые системы (что-то в этом есть и здравое). идёт наследование прав точки монтирования на всю партицию. т.е. если в "/mnt/ПАПКА" был открыт доступ на запись какому-то юзверю, то после монтирования фс в "/mnt/ПАПКА" эти права будут унаследованы всей партицией. дёшево и сердито.
нещадно туплю с pgp ключами для подписи своих писем. красивого решения пока не нашёл. дано:
* мой любимый ключ шифрования для Linux gpg с Elgamal алгоритмом
* mutt
* pgp5 в поставке OpenBSD (да-да-да! есть ещё pgp2 для совсем Ъ ребят, но оно умеет только RSA), что умеет только DSS, а об Elgamal ни сном ни духом
надо:
* импортировать в pgp5 ключ из gpg и заставить его воспринимать "как родного"
* вздрючить mutt на предмет подписи/шифрования сообщений требуемым ключом
и понеслось... экспортировал ключ из gpg (asc), пихаю его в pgp - облом, Validity - invalid, Trust - complete, а надо Validity - complete, Trust - ultimate. тупо копирую pubring и secring из gpg в pgp - pgp сыпется в корку, потом каким-то макаром заставляю родить:
Do you want to unset this key as axiomatic [y/N]? y
Keyrings updated.
ASSERTION FAILED at pgpRngRead.c line 3284:
(0) not true
ASSERTION FAILED at pgpRngRead.c line 3284:
(0) not true
и писец (Сосо Павлиашвили берёт очередной аккорд). ладно, сгенерил новую пару, забросил на сервер (pgp.mit.edu), а "mutt" загибает меня в позу и требует ласки и внимания... тут уж "сам дурак", ибо mutt умный и в своей поставке имеет шаблоны для "отношений" практически со всем, что шевелится. пример:
$ pkg_info -L mutt | grep pgp
/usr/local/bin/pgpewrap
/usr/local/bin/pgpring
/usr/local/share/examples/mutt/pgp2.rc
/usr/local/share/examples/mutt/pgp5.rc
/usr/local/share/examples/mutt/pgp6.rc
вот этот-то "pgp5.rc" шаблон я и забодался искать на просторах интернетов (сколько же хламья на этих-то просторах, зачем я это всё пишу...). привожу результат (часть для pgp):
линк на pastebin.com
оно работает. вроде именно так, как и хотелось.
пришлось компильнуть microdc2 для... гхм... коротания вечеров за просмотром мультиков (imho - идиотизм разрешать/проектировать файлообменники в локальных сетях с использованием DC[++] протокола) и прикрутил PyBookReader для чтения макулатуры (после распаковки сырцов надо gmake сделать - появится поддержка fb2 формата, если установлены все зависимости). браузер - Seamonkey (тут без вариантов), редакторы - Vim + SciTE, xchat, MPlayer, ffmpeg и "жизнь налаживается".
а то всё linux да linux....
P.S. а в вашем "линуксе" Evolution gpg-sign умеет?
Тэги:
mutt,
openbsd,
pgp
OpenBSD-4.6 и EFL приложения
2009-10-27 16:43:00
/
мы победили всех зверей,
давайте грамоту скорей!
что-то стало холодать ...
+ развернуть текст сохранённая копия
/
мы победили всех зверей,
давайте грамоту скорей!
что-то стало холодать,
значит время компилять!
сподобился вот дожить до релиза версии 4.6 самого Ъ из Ъ "юнихов" - OpenBSD - за что молитву и свечку под икону. перекрестившись на святое (In God We Trust, да и "знак червонца проступает вместо лика на доске" однако...), решился на апгрейд с ранее установленной версии 4.2. чесал репу, прикидывая как это сделать не напрягаясь. в итоге забэкапил настройки, снёс всё и "мы наш, мы новый мир построим..." с чистого так сказать листа. сразу скажу - это было правильное решение. иначе двумя вечерами на выходных не отделался бы.
в отличие от многих дистрибутивов Linux-а (и несмотря на то, что в qemu это "чудо" отказывается работать до сих пор) всё сразу завелось как должно. отсутствие конфига иксов не помешало правильному определению оборудования и установке штатных режимов. пустячок-с, а приятно (знает кто в доме хозяин и уважение сразу демонстрирует, однозначно). оформление GUI по умолчанию (fvwm) - Ъ (в OpenBSD куда ни плюнь - Ъ, за редкими исключениями типа пакетного фильтра или UKC, что лишь подтверждают мудрость - "в семье не без урода"). наверное кто-то вышел из трёхгодичного запоя и решил стать "белым и пушистым зайчиком", попутно реализовав весь накопившийся творческий потенциал вот в эдакой милой расцветочке:
видимо на ларьке было написано что "Пива НЕТ!" (али ещё чего похлеще). как человек, не отягщённый избытком серого вещества в черепушке, решил компильнуть Enlightenment-svn-current, а то пакеты в официальном репо какими были 2 года назад (опосля того, как их сваяли совместными усилиями с Laurent Fanis) - такими же и остались. нам, кабанам... процесс получился творческим, занимательным и поучительным. перипетии отмечены в дискуссии на ЛОР-е, где и приведены итоги этого безобразия в виде оформленных багрепортов. описывать все эротические сцены этой "битвы за Сталинград" ни сил ни желания нет. победа одержана, за ценой не постояли. хочется как-то отложить основные вехи и моменты, не учтённые в упомянутых хрониках. буде сие кому интересно - благо.
муторную часть подготовки необходимого окружения опустим, ибо "pkg_add blah bla мля..." наводит тоску. не помешает правда свежий gcc (version 4.2.4 на сей момент). вот с этого и начинаются приключения. каким-то макаром в систему влетел "ccache" (может и сам его "попросил" - запамятовал) - а это очень мощное подспорье, ибо печатать слово "gmake" пришлось изрядно. после чего стоит изменить порядок каталогов в $PATH, дабы натравить ccache на новую версию gcc. делаем:
> ln -s /usr/local/bin/i386-unknown-openbsd4.6-gcc-4.2.4 /usr/local/bin/gcc
> export PATH="$HOME/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/sbin:/usr/games:."
> ln -s /usr/local/bin/ccache $HOME/bin/gcc
махинации должны гарантировать следующий выхлоп:
> gcc -v
Using built-in specs.
Target: i386-unknown-openbsd4.6
Configured with: /usr/obj/i386/gcc-4.2.4/gcc-4.2.4/configure --with-gmp=/usr/local --enable-libgcj --verbose --program-transform-name=s,^,e, --disable-nls --disable-checking --with-system-zlib --disable-libmudflap --disable-libgomp --disable-tls --with-as=/usr/bin/as --with-ld=/usr/bin/ld --with-gnu-ld --with-gnu-as --enable-threads=posix --enable-wchar_t --enable-languages=c,c++,fortran,objc,java,ada --enable-cpp --with-gnu-as --with-gnu-ld --enable-shared --prefix=/usr/local --sysconfdir=/etc --mandir=/usr/local/man --infodir=/usr/local/info
Thread model: posix
gcc version 4.2.4
после этого можно "фтыкать" багрепорты и неспеша заниматься сборкой:
http://trac.enlightenment.org/e/ticket/447
http://trac.enlightenment.org/e/ticket/448
http://trac.enlightenment.org/e/ticket/449
http://trac.enlightenment.org/e/ticket/450
http://trac.enlightenment.org/e/ticket/451
http://trac.enlightenment.org/e/ticket/452
неошкуренным остался лишь довольно интимный вопрос об Entrance. тут довольно забавная ситуёвина. корячился где-то так:
1) в заголовок файла "entrance/src/client/entrance_auth.h" добавлял:
#include <xorg/shadow.h>
(хотя думаю, что это лишнее...)
2) скрипту ./configure передавал параметры:
./configure --with-random=/dev/urandom --with-auth-mode=shadow
первый - потому, что /dev/random в OpenBSD Ъёвый настолько, что "ни капли в рот, ни сантиметра в ....", а второй от безысходности (как и #include он не избавляет отцов расейской демократии от посещения вендиспансера). как всё установится в систему - рихтуем параметры работы Entrance. результат ниже:
# entrance_edit
Entrance Daemon Settings
attempts = 5
xserver = "/usr/X11R6/bin/X -quiet -nolisten tcp vt5 -dpi 96 dpms"
Entrance Client Settings
xsession = "/etc/X11/xdm/Xsession"
auth = 0
engine = 0
reboot = 1
halt = 1
theme = "default.edj"
background = ""
pointer = "/usr/local/share/entrance/images/pointer.png"
greeting-before = "Welcome to"
greeting-after = ""
date-format = "%A %B %e, %Y"
time-format = "%l:%M:%S %p"
autologin-mode = 0
autologin-user = ""
presel-mode = 1
presel-prevuser = "$USER"
user-remember = 1
user-remember-count = 5
user-count = 1
session-count = 2
default-session = "default"
default-session-title = "Default"
default-session-icon = "default.png"
изменение параметров - этой же командой рутом ("entrance_edit" другому не даёт). например:
# entrance_edit -auth=0
# entrance_edit -xserver="/usr/X11R6/bin/X -quiet -nolisten tcp vt5 -dpi 96 dpms"
по умолчанию параметр "auth" равен двум (shadow mode authentication), что служит гарантией нерабочего состояния для OpenBSD. запуск Entrance элементарен:
# echo '/usr/local/sbin/entranced' >> /etc/rc.local
для успокоения души на "/usr/local/sbin/entranced" можно вколотить суид-бит (сами решайте). наши скромные достижения:
картинка на Imagebam
за рамками этой истории остались капельки слов, мыслей и картинок нецензурного, непотребного и откровенно эротического содержания с уклоном в жёсткое порно. зато теперь - тепло и сухо...
удачи!
Тэги:
enlightenment,
openbsd