2006/09/29

Bering-uClibc LEAF (Linux Embedded Appliance Firewall)

Bering-uClibc LEAF отлично подходит в качестве бездискового роутера, всё необходимое ему для работы может уместиться на одной дискете.

Лог:
1. Подготовить загрузочную дискету, прежде отформатировав ее на 1.6Мб
wget http://blogs.ssc.lt/resources/rs/Bering-uClibc_3.0-beta1_img_bering-uclibc-1680.bin
fdformat /dev/fd0u1680
dd if=Bering-uClibc_3.0-beta1_img_bering-uclibc-1680.bin of=/dev/fd0u1680
mount -t msdos /dev/fd0u1680 /mnt (для просмотра содержимого полученной загрузочной дискеты)

2. Включить необходимые модули для работы установленных устройств (например, ethernet-интерфейс). Bearing-uClibc хорошо укомплектован набором модулей [8Мб], которые можно включать в загрузочную дискету поместив желаемый модуль в /lib/modules и прописав его впоследствие в /etc/modules. Все модули по умолчанию закомментированы. Если необходимо, например, заставить работать ethernet-интерфейс rtl8139d, то в файле /etc/modules нужно расскомментировать строки:

crc
mil
8139too

3. После успешной установки модулей устройств можно переходить к установке дополнительных/удалению ненужных пакетов. Например, пакет Dnsmasq полностью заменяет пакет dchpdc, а если не нужен доступ к будущему маршрутизатору через ssh, то можно смело удалять dropbear. Чтобы удалить/добавить пакет необходимо удалить/добавить на дискету файл пакета и удалить/добавить имя пакета в основной файл загрузки - leaf.cfg. Если не хватает места на одной дискете (например, для установки snmp-сервиса[695Кб]), можно воспользоваться вторым дисководом и второй дискетой. В итоге может получиться следующий leaf.cfg файл:

LRP="root config etc modules iptables shorwall ulogd dnsmasq libm libsnmp netsnmpd snmpmibs"
PKGPATH="/dev/fd0u1680:msdos /dev/fd1u1440:msdos"
syst_size=6M
log_size=2M

4. Командой lrcfg можно внести изменения в настройки сети и подготовить конфигурационные файлы для работы всех требуемых пакетов. После внесения изменений их необходимо зафиксировать в основном меню lrcfg - команды s,m.

2006/09/21

Subversion authorization

Настройка авторизации доступа в svn очень проста - достаточно указать директивой AuthzSVNAccessFile путь до файла конфигурации доступа.

DAV svn
# Путь до репозитария
SVNPath /var/lib/svn
# Включение обычной аутентификации
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
# Если раскомментировать строки Limit, то анонимные пользователи
# получат доступ на чтение к репозитарию, иначе только
# аутентифицированные пользователи имеют доступ
#
Require valid-user
#


Сам файл dav_svn.authz имеет интуитивно понятный формат:

[groups]
harry_and_sally = harry,sally

[/]
harry = rw
* =

[/baz/fuz]
@harry_and_sally = rw
* = r

[/bar/fox]
molly = rw

Доступ к подпапкам наследуется, поэтому доступ к директории /bar/fox имеет не только molly, но и harry. Если не указано никакого права доступа (ни r, ни rw), значит доступ к директории закрыт указанным пользователям.

2006/09/20

SYN flood

Очень популярная DoS атака заключается в посылке большого числа SYN
пакетов на ваш сервер. При этом установка TCP связи не доводится до
конца. Очередь полуоткрытых запросов соединений быстро заполняется,
что мешает установке нормальных соединений. Так как соединение не
должно быть обязательно завершено, такая атака не требует больших
ресурсов от атакующей машины, поэтому её легко реализовать и
контролировать.

Если параметр tcp_syncookies установлен (доступен только когда ядро
собрано с CONFIG_SYNCOOKIES), тогда ядро обрабатывает SYN пакеты TCP в
обычном режиме до тех пор, пока очередь не заполнится. После
заполнения очереди включается механизм SYN cookies.

SYN cookies вообще не использует очередь SYN. Вместо этого ядро
отвечает на каждый SYN пакет, как обычно SYN|ACK, но туда будет
включено специально сгенерированное число на основе IP адресов и
портов источника и получателя, а также времени посылки пакета.
Атакующий никогда не получит эти пакеты, а поэтому и не ответит на
них. При нормальном соединении, будет послан третий пакет, содержащий
число, а сервер проверит был ли это ответ на SYN cookie и, если да, то
разрешит соединение даже в том случае, если в очереди SYN нет
соответствующей записи.

Включение механизма SYN cookies является очень простым способом борьбы
против атаки SYN флудом. При этом немного больше загружается процессор
из-за необходимости создавать и сверять cookie. Так как альтернативным
решением является отклонять все запросы на соединение, SYN cookies
являются хорошим выбором.
(скопировано с

Защита - включить tcp_syncookies
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

Ядро 2.2 не имеет данной возможности, поэтому единственный выход - переходить на 2.4 или выше.


Литература:

  1. Обзор файлов /proc имеющих отношение к работе Firewall в Linux
  2. SYN cookies
  3. Enable tcp_syncookies by default
  4. CERT® Advisory CA-1996-21 TCP SYN Flooding and IP Spoofing Attacks

2006/09/14

SNMP сервис для SmoothwallExpress

Установка [719Кб]
tar -xzvf smoothwall-snmp-5.2.1-5.i386.tar.gz -C / | sed 's!^!/!' | { while read FILE; do chown root.root $FILE; done }
patch -d / -p1 < /tmp/smoothwall-scripts-snmp.patch

После установки необходимо запустить скрипт snmpconf, который в интерактивном режиме помогает создать файл конфигурации snmpd.conf.
Перед использованием необходимо указать ссылку на полученный конфигурационный файл в скрипте запуска сервисов /etc/rc.d/rc.sysinit:
Вместо
/usr/local/sbin/snmpd -Lsd
должно быть
/usr/local/sbin/snmpd -c путь_до_snmpd.conf -Lsd 

Удаление
patch -d / -Rp1 < /tmp/smoothwall-scripts-snmp.patch
rm -rf /usr/local/lib/libelf* /usr/local/lib/libnetsnmp* /usr/local/bin/snmpconf /usr/local/sbin/snmpd /usr/local/share/snmp /tmp/smoothwall-scripts-snmp.patch

Ссылки по теме:
  1. SNMP server for SmoothWall
1. Создание tar.gz архива из каталога
tar -cf - $1 | gzip > $1.tar.gz

2. Более информативный список всех открытых портов

lsof -P -n -i

3. Очистка почтовой очереди в MTA Exim. Сервер пытается немедленно доставить все письма, находящиеся в очереди. Если какое-либо письмо не удалось доставить, оно удаляется из очереди.

exipick -i | xargs exim4 -Mg

4. MySQL: создание базы данных, создание пользователя, наделение пользователя привилегиями для работы с базой данных

CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT USAGE ON *.* TO 'user'@'host' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON `database`.* TO 'user'@'host';

2006/09/13

Запуск скриптов в фоновом режиме в Linux/Windows

Linux:
# script &

Windows:

c:\start script.exe

Очень удобно запускать параллельно несколько скриптов из одного bat-файла, например так:

start script1.exe
start script2.exe
start script3.exe
start script4.exe

2006/09/06

Brute force

Иногда необходимо получить доступ к устройствам(серверам), которые были настроены еще в прошлом веке + другими администраторами и естественно паролей никто не помнит. Тогда приходит на помощь софт для взлома паролей методом brute-force("грубая сила"), по-русски - перебор всех возможных вариантов.

THC-Hydra [1.3Мб] - консольная утилита, доступна как для win32, так и в исходниках для Linux, активно разрабатывается. Все везде хвалят и советуют именно ее из-за ее скорости, богатого набора доступных протоколов.
Цитата:
"Hydra is a parallized login cracker which supports numerous protocols to attack. New modules
are easy to add, beside that, it is flexible and very fast.
Currently this tool supports:
TELNET, FTP, HTTP, HTTPS, HTTP-PROXY, SMB, SMBNT, MS-SQL, MYSQL, REXEC,
RSH, RLOGIN, CVS, SNMP, SMTP-AUTH, SOCKS5, VNC, POP3, IMAP, NNTP, PCNFS,
ICQ, SAP/R3, LDAP2, LDAP3, Postgres, Teamspeak, Cisco auth, Cisco enable,
LDAP2, Cisco AAA (incorporated in telnet module)."
Но у нее есть минусы, с которыми я столкнулся и которые пришлось решать самостоятельно. А именно: программа умеет работать только с уже сформированными файлами паролей - т.е. она не может сформировать на лету набор паролей определенной длины из заданных символов. Здесь приходит на помощь маленький скрипт(dmzsgen.c) [3Кб], подсмотренный мною на сайте DMZ Services.
Второй существенный минус - hydra отказывается подбирать пароли, если не указанно имя пользователя. Это большой минус, т.к., например, zyxel-модемы в telnet-сессии сразу просят пароль, без логина.

Brutus [331Кб] - программка для win32, написана давно(январь 2000) и больше не получила развития. Список доступных протоколов у нее значительно меньше, чем у Hydra, зато у нее отсутствуют названные выше минусы + она имеет оконный интерфейс.

Я попробовал возможности обеих программ для telnet и http протоколов. Подбор паролей через telnet, как я ни пытался(а я пытался!), не принес мне желаемого результата, а вот на http-протоколе обе программки успешно подобрали пароль от разных устройств. Единственная поправка, касающаяся http - подбор паролей не следует осуществлять в несколько потоков, иначе программки думают, что они подобрали пароли и останавляваются после нескольких попыток, выдав якобы подобранный пароль.