среда, 30 декабря 2009 г.

xneur gxneur установка (аналог Punto Switcher)

доустанавливаем пакеты
yum install -y libX11-devel aspell-devel gstreamer-devel pcre-devel xosd xosd-devel libnotify-devel libglade2-devel
в каталоге сирцов xneur
./configure && make && make install
ln -s /usr/local/lib/pkgconfig/xnconfig.pc /usr/lib/pkgconfig
в каталоге сирцов gxneur (фронтенд для гнома для кедов kxneur(для четвертых пока нет!))
./configure && make && make install

среда, 23 декабря 2009 г.

Восстановление данных и файловых систем

Восстановление разделов (елси они не видятся fdisk) testdisk & hdparm (http://man-linux.ru/notes/solve/testdisk/, http://rlab.ru/forum/topic,405.0
scalpel - также программа для восстановления данных
1). ext3
сначала отмонтировать раздел (пакет ext3grep)
# ext3grep /dev/sda1 --dump-names - список файлов для восстановления
# ext3grep /dev/sda1 --restore-file /home/user/work/file.txt - файла
# ext3grep /dev/sda1 --restore-file /home/user/work/ - каталога
# ext3grep /dev/sda1 --restore-all --after=1231543545 - всех с момента (секунды с начала эпохи Unix)
2). ntfs (http://man.linux-ntfs.org/ - описание всех утилит)
пакет ntfsprogs
# ntfsundelete /dev/sda5
6006 FN.. 21% 2007-07-11 152579024 Dd705
6013 FR.. 100% 2007-03-29 574 make
3 колонка - % сохранности файла, если 100% можно восстановить
# ntfsundelete -p 100 /dev/sda5 - вывести только с 100% сохранностью
# ntfsundelete /dev/sda5 -p 100 -t 2d - тоже + удаленные за последние 2 дня
востановим файл с inode (1 колонка) 6013 в каталог /undelete
# ntfsundelete /dev/sda5 -u -i 6013 -d /undelete
# ntfsundelete /dev/sda5 -u -m "*.doc" - восстановление по маске
# ntfsundelete /dev/sda5 -S 5k-6m - восстановление по длине
# ntfsundelete /dev/sda5 -u -m "*" -d /undelete - все файлы
3). FAT, UFS, EXT3
# photorec - выбирает диск, потом выбираем пункт меню Intel, раздел, тип файловой системы, каталог восстановления, Y
Недостатки - имена не восстанавливает, дает сбои (битые файлы), вдобавок к нему нужно комплект утилит Sleuth Kit:
Просмотр удаленных файлов
# fls -rd /dev/sda7 (-r - рекурсивно по каталогам, -d - показывать только удаленные файлы)
r/r * 1214015(realloc): andrey/.xauthFPV1Nv-n
d/r * 4472833: test
4472833 - номера инод, а realloc - означает что файл можно восстановить (3 строка),
Пример использования:
# fls -rd /dev/sda7 | grep -v '(realloc)' | less (конкретный файл grep 1.jpg)
Восстановление файла
# icat -r /dev/sda7 1213725 >/home/vova/Downloads/1.doc
Восстановление всех файлов:
# for i in 'fls -rd /dev/sda7 | grep -v '(realloc)' | awk {'print $3'} | tr -d [:]'; do icat -r -f fat /dev/sdb1 $i > /home/andrey/tmp/inode-$i ; done
4). Починка файловых систем
fsck.vfat - FAT12, FAT16, FAT32
fsck.ufs - UFS, UFS2, FFS
ntfsfix - NTFS
К сожалению, ntfsfix не способна полностью вылечить NTFS. Она лишь исправляет некоторые из ее проблем и устанавливает флаг принудительной проверки файловой системы, так что следующая перезагрузка в Windows повлечет за собой запуск chkdsk для полной проверки ФС. Используя виртуальную машину, мы можем избежать необходимости перезагрузки в Windows. Для ЭТОГО:
1. Запускаем виртуальную машину и устанавливаем винду на виртуальный жесткий диск.
2. Отмонтируем раздел, содержащий файловую систему NTFS.
3. Запускаем виртуальную машину, в качестве первого жесткого диска которой указываем виртуальный диск с Windows, а второго — наш настоящий жесткий диск.
4. С помощью стандартных средств Windows запускаем проверку NTFS-раздела.
5). Копирование разделов
на новом диске создается раздел, идентичный по размерам источнику, и выполняется команда «dd if=раздел1 of=раздел2 bs=1m». Таким же образом можно скопировать и NTFS-раздел, но в пакете ntfsprogs для этой цели есть более подходящая утилита. Программа ntfsclone идентична по функциональности команде dd за исключением двух особенностей. Во-первых, она не копирует незанятые участки файловой системы, и перемещение происходит быстрее, а образ раздела (если ты создаешь образ) занимает меньше места. Во-вторых, ntfsclone способна хранить образ в специальном сжатом файле, который удобно передавать на другие машины. Для клонирования раздела:
# ntfsclone --overwrite /dev/hda1 /dev/hdb1
А для создания образа:
# ntfsclone --save-image --output backup.img /dev/hda1
Утилита ntfsclone особенно удобна, если ты решил скопировать установленный Windows на целый парк других машин (учебный класс или офис). Для этого достаточно установить Windows на одну машину и создать образ, который затем можно выложить в шару и с помощью Linux LiveCD залить на другие машины. Чтобы они смогли загружаться, придется также скопировать MBR-запись диска:
# sfdisk -d /dev/sda > /share/sda-sfdisk.dump
# dd if=/dev/sda bs=512 count=1 of=/share/sda-mbr.dump
А затем записать ее на диск всех машин:
# sfdisk /dev/sda < /share/sda-sfdisk.dump
# dd if=/share/sda-mbr.dump of=/dev/sda
6). Перенос данных
Если ты решил полностью перейти на Linux, но не хочешь использовать различные ухищрения и ntfs-3g для доступа к своим старым данным, расположенным на NTFS-разделе? Ведь этот раздел может занимать большую часть диска, и нет никакой возможности просто скопировать его содержимое на новый раздел, отформатированный в ext3/ext4. В этом случае тебе на помощь опять придут утилиты из пакета ntfsprogs, а точнее одна из них — ntfsresize, которая позволит копировать данные небольшими порциями в новую файловую систему с последующим уменьшением размера NTFS-раздела и увеличением ехt3/ехt4-раздела. Для этого тебе понадобится какой-нибудь LiveCD, содержащий ntfsprogs и e2fsprogs версии не ниже 1.41 (для поддержки ext4, если ты, конечно, собираешься переносить данные на нее). Также очень желательно, чтобы LiveCD содержал свеженький gparted, потому что изменять размер вручную трудно и опасно (кроме изменения размера самой ФС, предстоит менять размер раздела с помощью fdisk, одна ошибка и всю операцию придется начинать сначала). Загружаемся с LiveCD и монтируем разделы жесткого диска. Допустим, его размер составляет 120 Гб. Из них 80 Гб — под завязку набитый NTFS-раздел, а остальные 30 Гб (да, именно 30, после перевода маркетинговых гигабайт в настоящие объем диска оказывается равным примерно 111 Гб) — это раздел с установленным Linux, занятость которого составляет 5 Гб. Значит, наше «окно» равно примерно 25 Гб. Перемещаем файлы с NTFS-раздела на ext3/ext4- раздел до тех пор, пока их совокупный размер не станет равен размеру окна. В результате последний оказывается полностью заполненным, а первый «худеет» на 25 Гб. Отмонтируем оба раздела и запускаем gparted. Выбираем NTFS-раздел, жмем вторую кнопку мыши, выбираем Resize/Move и уменьшаем раздел на размер окна, выбираем ехt3/ехt4-раздел и увеличиваем его на тот же размер окна (раздел придется сдвинуть к началу диска, а затем увеличить). Так мы получаем еще 25 Гб освободившегося места, что позволит нам скопировать часть файлов, а затем вновь изменить размер. Четыре таких прохода, и мы полностью удаляем NTFS-раздел, а раздел ext3/ext4 расширяем на весь диск.

live cd с данными утилитами можно взять www.sysresccd.org

источник http://forum.http-soft-soft.ru/vosstanavlivaem-dannye-s-t52.html

Другие утилиты
1). Magic Rescue (magicrescue-1.1.9)
Папка восстановления должна быть на другом диске (флешка например)
рецепты восстановления в папке recipes (или искать в инете)
hdparm -d1 -c -u1 /dev/device - включения прямого доступа к устройству (делается сначала - можно обойтись без нее но время восстановления увеличится)
минимальный запуск указываем рецепт и директорию восстановления
magicrescue -d directory -r recipe device 
magicrescue -d /mnt/external -r /usr/local/share/magicrescue/recipes/zip /dev/sda2 (можно обойтись без полного пути просто zip)
Можно задать поиск для многих форматов указанием директории что содержит все рецепты для этих форматов. Дополнительные ключи
-M io - выводит результаты работы в консоль
-b blocksize - ограничение результатов в файлы, которые начинаются на разных размерах блоков (стандартный 512)
Если прервали Ctrl+c (ниже пример вывода утилиты где она это подсказывает) то можно продолжить с этого места
magicrescue: killed by signal 2 at offset 0x95D334D68 in file /dev/sda2
Use the -O option to resume from this offset later
пример
-O = 0x95D334D68 (-O [+|-|=][0x]offset, где - до позиции + после нее)
В папке /usr/local/share/magicrescue/tools/ для подальшей организации найденных файлов есть утилиты.
2). File Ripper - file formats: PNG, HTML, GIF, ZIP, LBM, PBM, ANM, BAT, BAS, RTF, HLP, WAV, WRI, JPG, ARJ, EXE, ANS, ZZT, FRM, text BAS, BMP, MZB, FLI, MSP, DOC, MZX, GDM, IT, S3M, SAV, BRD, LZH/LHA, MOD, XM, VOC, SVX, ABM, QUETZAL, and certain obscure MBBS-related formats corresponding to the files CALLERS, USERS.DAT and CONFIG
http://home.minlos.no/~peter.munsterhjelm/km
даже если дисковый образ или файловая система повреждены.
3). http://www.cgsecurity.org/wiki/PhotoRec общее ознакомление
качаем http://www.cgsecurity.org/wiki/TestDisk_Download
использование оригинальное
http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step
переведенное
http://www.cgsecurity.org/wiki/PhotoRec_Шаг_за_шагом

пятница, 18 декабря 2009 г.

состояния tcp-соединений

1). INVALID - пакеты, пришедшие вне пределов TCP-окна.
2). CLOSING - клиент отправляет FIN-пакет серверу, затем получает FIN-пакет от сервера и отсылает подтверждение закрытия -- FIN/ACK-пакет (одновременное закрытие соединения)
3). TIME_WAIT - CLOSING + прохождения заключительного FIN/ACK-пакета от сервера (одновременное закрытие соединения). чтобы дать время на прохождение "опоздавших" пакетов. "Опоздавшие" пакеты могут появиться в результате нарушения порядка прохождения пакетов по сети, т.е. в конечную точку пакеты приходят не в том порядке в каком они были отправлены. По истечении этого таймаута запись в таблице трассировщика, соответствующая закрытому соединению, уничтожается и соединеиние переводится в состояние CLOSED.
4). CLOSE-WAIT - от клиента получен FIN-пакет и в ответ отправлен FIN/ACK-пакет
5). LAST-ACK - CLOSE-WAIT + клиенту передан FIN-пакет со стороны сервера
6). ESTABLISHED - все соединения, которые благополучно миновали процедуру установления соединения, и по которым не было передано ни одного FIN-пакета
7). FIN-WAIT-1 - устанавливается после того как серверу будет передан FIN-пакет
8). FIN-WAIT-2 - FIN-WAIT-1 + получения FIN/ACK-пакета от сервера. Если от сервера FIN-пакет приходит раньше, чем FIN/ACK-пакет (ситуация "одновременного закрытия соединения"), вместо состояния FIN-WAIT-2 устанавливается состояние CLOSING.
9). LAST-ACK - сервер отправил FIN-пакет клиенту после получения FIN-пакета от клиента и передачи ему FIN/ACK-пакета. Это состояние устанавливается после CLOSE-WAIT состояния, когда ожидается прибытие заключительного FIN/ACK-пакета, после чего запись в таблице трассировщика уничтожается, и устанавливается состояние CLOSED.
10). LISTEN - это начальное состояние всех сокетов.
11). NONE - через трассировщик проходит первый пакет, то соединению присваивается этот статус.
12). SYN-SENT - клиент передаст SYN-пакет и перейдет в ожидание ответного SYN/ACK-пакета. Состояние SYN-SENT предшествует состоянию SYN-RCVD или ESTABLISHED, которое наступает после приема пакета SYN/ACK.
13). SYN-RECEIVED (SYN-RCVD или SYN-RECV) - наступает вслед за состоянием LISTEN или SYN-SENT после того, как сервер принял пакет SYN и ответил на него SYN/ACK-пакетом. Это состояние предшествует состоянию ESTABLISHED, которое, в свою очередь, наступает после получения, завершающего процедуру установления соединения, ACK-пакета.
14). Состояния UDP пакетов - Когда приходит первый UDP пакет, то он получает статус NEW, а как только через трассировщик пройдет обратный пакет -- UDP-соединению присваивается статус ESTABLISHED, но таймаут продолжает действовать. После того, как через соединение пройдет туда-обратно несколько UDP-пакетов, то для него, в таблице трассировщика, устанавливается флаг ASSURED (уверенное соединение прим. перев.) и таймаут перестает действовать.

четверг, 17 декабря 2009 г.

Roundcube прикручивание плагинов и т.д.

1). Для прикручивание плагина нужно его загрузить в папку plugins, а потом в файле /config/main.inc.php в строке $rcmail_config['plugins'] = array('userinfo','markasjunk','contextmenu'); - здесь userinfo,contextmenu - название папки с плагином

вторник, 8 декабря 2009 г.

ntlm-Авторизация под Linux на ISA

Качаем ntlmaps
Правим server.cfg
Listen port: 5865
Parent Proxy: your.proxy.com (e.g. enter the name or address of your proxy, do not enter the port as "your.proxy.com:number" as this will be taken care of in the next step)
Parent Proxy Port: port_number (usually 8080)
NT Windows Domain: domain_name (your domain)
NT Windows Username: user_name (the user name you will authenticate with)
NT Windows Password: password
(the password you will use to authenticate with the ISA Proxy)
запускаем (для автоматического запуска прописываем в rc.local)
./main.py 1>/dev/null 2>&1 &
или если пакет в виде сервиса service ntlmaps start
Ходим через локальный прокси 127.0.0.1:5865 (вместо loopback интерфеса любой действующий ip адрес)

понедельник, 7 декабря 2009 г.

thunderbird imap ошибка конкурирующих конектов

Thunderbird по умолчанию использует 5 конкурирующих конектов для подключения к IMAP серверу, а courier-imap по умолчанию позволяет 4 конкурирующих конекта с айпихи и максимум 40 конектов, чтобы это исправить в файле
/usr/lib/courier-imap/etc/imapd
нужно поставить
MAXDAEMONS=100
MAXPERIP=6
(можно и другие я поставил эти) и перезапустить сервис
[root@123 ~]# service courier-imap stop
Stopping Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
[root@123 ~]# service courier-imap start
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl

пятница, 4 декабря 2009 г.

Сборка из исходников

1). распаковка
$ tar xvzf имя_архива.tar.gz
$ tar xvjf имя_архива.tar.bz2
2). применение патчей (перед проверить чтобы версия патча совпадала с версией программы)
$ cd исходники_программы
$ patch --dry-run -p1 < /путь/к/патчу.patch (проверка)
$ patch -p1 < /путь/к/патчу.patch (наложение)
Отмена наложенного патча ключ -R
Если патчи в зжатом виде
$ gzip -cd патч.gz | patch -p0
$ bzip2 -cd патч.bz2 | patch -p0
3). перед установкой
проверить наличие пакетов: gcc-* (компилятор), binutils (компоновщик и архиватор библиотек), libc-dev (заголовки стандартной библиотеки языка Си), make.
прочитать README из корня архива
4). кунфигурирование и сборка
$ ./configure --prefix=/usr/local (путь установки) --with-* --without-* (вкл./выкл. добавляемых в приложение компоненты) --enable-* (использование спец. кода). Потом сгенерится Makefile.
$ make
Исли в корне нет Makefile или configure значит программа использует альтернативные сборки:
scons (в корне файл SConstruct)
- устанавливаем scons и запускаем процесс компиляции $ scons PREFIX=/usr/local $ sudo scons)
- опции в README передаются scons в качестве аргументов
cmake (CMakeLists.txt)
- $ cmake . (. - сборка в текущем каталоге)
- $ make
- опции в README передаются в качестве аргументов
5). Проблемы компиляции
Checking for qt4 ... no - установить сам пакет и его заголовочный файлы *-dev
Checking for unistd.h ... no - установить заголовочный файлы (пакет искать по названию файла)
Если не помогло:
недоустановленные dev-пакеты - доустановить
устаревшии версии пакетов в дистре - сборка из исходников самой зависимости, а также зависимость зависимости и т.д.
неправильные пути поиска библиотек и заголовочных файлов (обусловлена ошибкой составителя правил для системы сборки или установкой зависимости в нестандартный каталог) - указать пути через переменны компилятора и линковщика перед запуском сборщика
$ export CFLAGS="$CFLAGS -I /usr/local/include -I /opt/include -I /usr/mysoft/include"
$ export LDFLAGS="$LDFLAGS -L /usr/local/lib -L /opt/lib -L /usr/mysoft/lib"
если зависимость в нужном месте а конфигуратор ее не видит нужно править configure коментом мест где производится поиск зависимости
если приложение не может быть собрано новым компилятором (написано в README) установи нужную версию компилятора и укажи к нему путь через переменную СС перед запуском сборщика:
$ install gcc-3.4
$ export CC="which gcc-3.4"
$ ./configure --prefix=/usr/local
6). установка
$ make (scons) install (uninstall - удаление из корня исходников)
checkinstall - создание пакетов в момент установки программы из исходников. использование вместо make install набрать
# checkinstall -R // RPM-пакет
# checkinstall -D // Deb-пакет
# checkinstall -S // Slackware
После установки strip для бинарников и библиотек с целью уменьшить их обьем, для уже установленных приложений можно так
# find / | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded
# find / | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded
7). Проблемы запуска
перечитать README, там могут быть указание где и при каких условия не работает, проверить доступность компонентов и каталогов программе, --help и проверить есть ключ дебуга, логи посмотреть.
тяжелая артиллерия strace (трассировщик системных вызовов, отслеживает все сисколлы, произведенные приложением и проверяет возвращаемое значение)
$ strace программа
вызов лучше смотреть с конца, пролистывая close и смотря open, проверить какие вернули отрицательный статус (-1) и смотреть к чему обращались (95% - права или отсутствие каталога/файла)
8). Флаги оптимизации
оптимизация выше "-О1" (или просто "-О") потенциально опасна
"-О2" не опасен большинству приложений, зато убивает низкоуровневый код с ассемблерными вставками
"-О3" (активирует агрессивный режим, идущий против стандартов) валит каждое 2 приложение.
Лучше остановится на таких флагах
О - базовая оптимизация (значительно увеличивается скорость исполнения программы)
О2 - стандартная (по сравнению с О чуть увеличит объем бинарника и скорость исполнения)
Оs - тоже О2 + флаги уменьшающие размер
fomit-frame-pointer - компилятор не сохраняет указатель на кадр стека (экономим на этом время). Может увеличить скорость программы

Если библиотеки в нестандартных каталогах и нужны при сборке ldconfig в помощь

Если непонятно, почему программа не находит что-то при конфигурации из сорцов, есть простой алгоритм:
Если пакет стоит, а configure говорит что нет, значит скорее всего нет пакета с хидерами (т.е. -devel) для одноименного пакета.
Если из сообщения вообще непонятно, чего конфигуратору нужно (типа "у вас не установлен KDE" smile.gif ) - смотрим файл configure.log в том же каталоге где патались запустить configure. Ищем там то самое сообщение, которым закончилась неудачная попытка конфигурации (оно всегда ближе к концу, непосредственно перед таблицей переменных, которые в логе всегда выводятся в конец файла).
Смотрим, чего конфигуратору не хватило - чаще всего он ищет либо какой-то хидер (.h или .hpp) либо некую библиотеку (тогда в логе будут сообщения от линкера (ld) о том, что библиотека не найдена (типа -lbla-bla not found).
В установке программ кликаем по биноклю в строке поиска, выбираем "по файлу" и вбиваем в строку не найденный файл. После чего устанвливаем найденные пакеты вместе с депенденсами.

понедельник, 30 ноября 2009 г.

netstat особенности работы

подсчет числа "полуоткрытых" TCP-соединений (SYN-флуд)
netstat -na | grep ":80\ " | grep SYN_RCVD
ключи:
-n - не резолвит айпихи, порты
-a - показывает сокеты и которые слушают и которые уже не слушают
просмотр адресов с которых идут запросы на подключение
netstat -na | grep ":80\ " | sort | uniq -c | sort -nr | less
sort - сортировка (-n - сравнение используя номера строк, -r - реверсировать результат)
uniq - сигнализировать или пропускать дублирующиеся линии (-с - Перед каждой строкой выводить число повторений этой строки на входе и один пробел)

суббота, 28 ноября 2009 г.

Windows установка программ в тихом режиме

Тихий - без вмешательства пользователя
Если использовать msiexec: msiexec /I install.msi /quiet /qn
Для сложных нужно создавать файл ответов
Рекомандации по данному вопросу можно найти - http://technet.microsoft.com/ru-ru/library/bb693561.aspx

пятница, 20 ноября 2009 г.

Сетевые параметры ядра в sysctl.conf

Включает/выключает reverse path filter ("проверка обратного адреса" -- хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев.) для заданного интерфейса. Смысл этой переменной достаточно прост -- все что поступает к нам проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс. (отвечает на те запросы которые идут на данный физический интерфейс, если в 0 то отвечает на все что знает на всех интерфейсах)
net.ipv4.conf.default.rp_filter=1 (0 не безопасно - нет верификации маршрута пакета)
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.lo.rp_filter=1
Переменная управляет приемом ICMP-сообщений о переадресации. Сообщения ICMP Redirect ... используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту, который (маршрут) может быть быстрее или менее загружен.
net.ipv4.conf.default.accept_redirects = 0 (1 небезопасно)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
Включает/выключает выдачу ICMP Redirect ... другим хостам. Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, что он должен вступить в контакт с другим сервером.
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
Включает/выключает режим безопасной переадресации. Если переменная выключена, то будут приниматься любые сообщения ICMP Redirect ... от любого хоста из любого места. Если переменная включена, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть использованы для перехвата трафика.
net.ipv4.conf.default.secure_redirects = 0 (1 небезопасно)
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.lo.secure_redirects = 0
Вырубить маршрутизация от источника (часто используется для спуфинга)
net.ipv4.conf.default.accept_source_route = 0  (1 не безопасно - нет верификации маршрута пакета)
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
Переменная разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.lo.bootp_relay = 0
Выключение проксирование arp-запросов для заданного интерфейса. ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp = 0
Переменная включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians -- "марсианские" пакеты). Под невозможными адресами, в данном случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации.
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.lo.log_martians = 0
Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP сообщения, отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно включить этот параметр -- защита от smurf атак
net.ipv4.icmp_echo_ignore_broadcasts = 1
Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. Обычно эти ошибки заносятся в системный журнал. Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе.
net.ipv4.icmp_ignore_bogus_error_responses = 1
Разрешает/запрещает передачу так называемых syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета. Когда в систему поступает слишком много запросов на соединение, то очередь может переполниться и тогда запускается передача syncookies в ответ на каждый SYN-запрос.
Эта переменная используется для предотвращения syn-flood атак
net.ipv4.tcp_syncookies=1
# Включение форвардинга
echo 1 > /proc/sys/net/ipv4/ip_forward или net.ipv4.ip_forward = 1 (в файле /etc/sysctl.conf)
# Включение форвардинга для VPN
echo 1 > /proc/sys/net/ipv4/ip_dynaddr или net.ipv4.ip_dynaddr = 0 (в файле /etc/sysctl.conf)
# Увеличение размера очередей
echo 32000000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max или net.ipv4.ip_conntrack_max = 32000000 (в файле /etc/sysctl.conf)
# Время ожидания до закрытия соединения
echo 14400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established или net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 14400 (в файле /etc/sysctl.conf)
# Время ожидания до посылки FIN пакета
echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait или net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 60 (в файле /etc/sysctl.conf)
# Время ожидания до посылки SYN пакета
echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent или net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 10 (в файле /etc/sysctl.conf)
# Увеличиваем размер backlog очереди
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog или net.ipv4.tcp_max_syn_backlog = 1280 (в файле /etc/sysctl.conf)
# Число начальных SYN и SYNACK пересылок для TCP соединения
echo 4 > /proc/sys/net/ipv4/tcp_synack_retries или net.ipv4.tcp_synack_retries = 4 (в файле /etc/sysctl.conf) (можно и 2 для безопасности)
echo 4 > /proc/sys/net/ipv4/tcp_syn_retries или net.ipv4.tcp_syn_retries = 4 (в файле /etc/sysctl.conf)
#Какие порты использовать в качестве локальных TCP и UDP портов
echo "16384 61000" > /proc/sys/net/ipv4/ip_local_port_range или net.ipv4.ip_local_port_range = 16384 61000 (можно 2000 65000) (в файле /etc/sysctl.conf)
# Сколько секунд ожидать приема FIN до полного закрытия сокета
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout или net.ipv4.tcp_fin_timeout = 30 (в файле /etc/sysctl.conf)
# Как часто посылать сообщение о поддержании keep alive соединения
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time или net.ipv4.tcp_keepalive_time = 1800 (в файле /etc/sysctl.conf)
# Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто
echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes или net.ipv4.tcp_keepalive_probes = 2 (в файле /etc/sysctl.conf)
# Зaпрещаем TCP window scaling (разрешаем елси nginx сервер = 1)
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling или net.ipv4.tcp_window_scaling = 0 (в файле /etc/sysctl.conf)
# Запрещаем selective acknowledgements, RFC2018
echo 0 > /proc/sys/net/ipv4/tcp_sack или net.ipv4.tcp_sack = 0 (в файле /etc/sysctl.conf)
# Запрещаем TCP timestamps, RFC1323
echo 0 > /proc/sys/net/ipv4/tcp_timestamps или net.ipv4.tcp_timestamps = 0 (в файле /etc/sysctl.conf)
# Уличиваем размер буфера для приема и отправки данных через сокеты
echo 1048576 > /proc/sys/net/core/rmem_max или net.core.rmem_max = 1048576 (можно 8388608) (в файле /etc/sysctl.conf)
echo 1048576 > /proc/sys/net/core/rmem_default или net.core.rmem_default = 1048576 (в файле /etc/sysctl.conf)
echo 1048576 > /proc/sys/net/core/wmem_max или net.core.wmem_max = 1048576 (можно 8388608) (в файле /etc/sysctl.conf)
echo 1048576 > /proc/sys/net/core/wmem_default или net.core.wmem_default = 1048576 (в файле /etc/sysctl.conf)
# Через какое время убивать соединеие закрытое на нашей стороне
echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries или net.ipv4.tcp_orphan_retries = 1 (в файле /etc/sysctl.conf)
# Включаем ExecShield
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Увеличиваем максимальный размер TCP-буферов
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.core.netdev_max_backlog =  5000


Проверка переменных в sysctl.conf
sudo sysctl -a
sudo sysctl -a | grep ^net\.

применить изменения в /etc/sysctl.conf sysctl -p

четверг, 12 ноября 2009 г.

hasp 4 driver for linux

источник http://sharykin.blogspot.com/2008/09/hasp-4-driver-linux.html
Использование аппаратных ключей защиты в Linux

HASP (от англ. Hardware Against Software Piracy)- это мультиплатформенная аппаратно-программная система защиты программ и данных от нелегального использования и несанкционированного распространения.

Драйвера для поддержки ключей защиты в Linux поставляются в пакетах haspd и haspd-modules.

Ключи защиты HASP 4/HL (Aladdin)

Ключи HASP бывают как локальные (однопользовательские), так и сетевые (многопользовательские). По способу подключения ключи также бывают двух типов: подключаемые к порту LPT (параллельный порт) и к шине USB. Для ОС GNU/Linux имеются драйверы USB- и LPT-ключей защиты для ядра версии 2.4 и 2.6. Рекомендуется использовать USB-ключ защиты, так как это более современный способ подключения, и его подключение и настройка вызывает меньше проблем. Возможно, потребуется обратиться к поставщику программы и попросить о замене ключа.

Начиная с Win32 HASP HL API версии 1.12 поддерживаются локальные ключи HASP при работе из WINE@Etersoft. Примером такой программы является 1С: Предприятие 8.0 и выше.

Установка драйвера ключа HASP 4/HL

При эксплуатации программ, защищённых ключом защиты HASP (например, 1С: Предприятие 7.7), необходим драйвер ключа, установленный на компьютере с подключённым ключом. Для сетевого ключа в дополнение к драйверу потребуется также работающий сетевой менеджер лицензий. Сетевой ключ может располагаться на любом узле сети, работающем под управлением Linux или Windows.

Различение ключей:

* локальные LPT-ключи белого цвета, сетевые LPT-ключи — красного цвета;
* локальные USB-ключи фиолетового цвета (H4 M1 ORGL8), сетевые USB-ключи — красного цвета (H4 NET5 ORGL8);
* USB-ключ сервера 1С является локальным, и имеет фиолетовый цвет (надпись H4M1 ENSR8).

Все компоненты драйвера HASP, включая сетевой менеджер лицензий, находятся в пакете haspd. Достаточно обычным способом установить этот пакет (из каталога для вашей версии дистрибутива GNU/Linux) на тот компьютер, к которому подсоединён ключ (вне зависимости от типа ключа).

Проверить, что все компоненты драйвера запущены и работают правильно, можно командой:

[root@test root]# service haspd status
Aladdin HASP 4/HL driver status:
kernel module aksparlnx is loaded
aksusbd is running
winehasp is running
hasplm is running

Пример 35. Проверка статуса haspd


Для тех систем, где отсутствует команда service, следует использовать команду /etc/init.d/haspd status.

Если в выводе service haspd status появляется предупреждение о том, что не загружен модуль ядра (kernel module aksparlnx is not loaded), это свидетельствует о том, что у вас установлено ядро, для которого не удалось автоматически подобрать драйвер.

Проверить, какие порты прослушивает менеджер лицензий HASP, можно командой:

[root@test root]# netstat -ap | grep hasp
udp 0 0 *:475 *:* 1535/hasplm
udp 0 0 localhost.localdom:2790 *:* 1169/winehasp

Пример 36. Проверка прослушиваемых портов


Мы видим, что на порту 475 по протоколу UDP ожидает подключения с любых адресов менеджер лицензий, а на локальном порту 2790 по протоколу UDP слушает winehasp соединения с этой же машины.

Настройка приложения, использующего сетевой ключ

Если приложение использует сетевой ключ, то ему требуется знать информацию о расположении ключа защиты (сетевого менеджера лицензий) и способа обращения к нему. Эти данные указываются в файле NETHASP.INI в каталоге с исполняемыми файлами защищённого приложения. Этот файл может выглядеть, например, так:

[NH_COMMON]
NH_TCPIP = Enabled ; Используем только IP-протокол

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.0.1 ; IP-адрес (или имя) машины с менеджером лицензий
NH_TCPIP_METHOD = UDP ; UDP для Linux-сервера и TCP для Windows-сервера
NH_USE_BROADCAST = Disabled ; Отключить поиск ключа по всей сети

Пример 37. Конфигурационный файл NETHASP.INI


Обратите внимание, что концы строк в файле должны соответствовать принятым в DOS/Windows (CR LF), поэтому редактировать файл лучше в notepad.

Для упрощения настройки можно воспользоваться командой setnethasp IP-адрес, которая создаст NETHASP.INI, настроенный на указанный сервер.

Обращение к сетевому менеджеру лицензий, запущенному под Linux, возможно только по протоколу UDP/IP. Если вы используете менеджер лицензий, запущенный под Windows, то удостоверьтесь что в нём включен протокол TCP/IP.

Обратите внимание, что при использовании Linux-драйвера HASP (haspd) вам не требуется как-либо запускать и настраивать hinstall.exe из поставки Win-приложения.

Обратите внимание, что при использовании сетевого ключа устанавливать пакет haspd нужно только на машине с ключом.

Проверка доступности ключа

Если всё правильно настроено, но приложение не видит ключ, следует для проверки отключить межсетевой экран (firewall) командой service iptables stop или iptables -F

Далее можно попробовать обратиться к менеджеру лицензий с помощью тестовой программы.

# eterkeytest --hasp
USB:

HASP:
HASP API VERSION: 8.0

HASP Local:
LPT HASP4 M4 (HASP3 is connected, key is HASP4 Net 5)
1C:Accountancy v7.7 (simple and network)

HASP Net (press Ctrl-C to break):
..... -- active logins: 1
-- max logins: 5
-- key type: HASP4 Net 5
-- activations: 65535
1C:Accountancy v7.7 (simple and network)

Пример 38. Проверка ключа


Для Windows существует программа АКС Монитор, позволяющая увидеть тип ключа и количество лицензий в нём: ftp://ftp.aladdin.com/pub/hasp/new_releases/utility/monitor/Monitor_Setup.zip

Обратите внимание на количество лицензий в ключе. Например, при использовании двух ключей одного типа (например, USB) по 5 лицензий менеджер лицений всё равно будет выдавать не более 5 лицензий, потому что он увидит только один ключ, то же и с локальными ключами.

Компоненты драйвера HASP в GNU/Linux

Драйвер ключей защиты HASP для GNU/Linux состоит из нескольких взаимодействующих компонент:

* aksparlnx (версия 1.6) — модуль ядра, обеспечивающий низкоуровневый доступ к LPT-ключу;
* askusbd (версия 1.8.1) — универсальный драйвер для USB- и LPT-ключей (системная служба);
* winehasp (версия 1.00) — часть драйвера, предоставляющая доступ к ключу HASP win-приложениям, исполняющимся в среде WINE (системная служба);
* hasplm (версия 8.30) — сетевой менеджер лицензий (системная служба).

Сборка модулей ядра для HASP

При отсутствии в пакете модулей для вашего ядра потребуется запустить сборку командой service haspd build

Для сборки потребуется установить заголовочные файлы ядра или исходники ядра (зависит от системы) именно той версии, под которую вы планируете сборку.

* Для систем ALT Linux это пакет kernel-headers-*.
* Для систем RHEL, Fedora Core, ASP Linux, LinuxXP это пакет kernel-devel-*.
* Для систем Debian, Ubuntu это пакет linux-headers-*.
* Для систем SUSE, Slackware, MOPSLinux это пакет kernel-source-*.
* Для систем Mandriva это пакет kernel-source-stripped-*.

В настоящий момент поддержка HASP на платформе FreeBSD не реализована. Ожидается, что она станет доступна к концу 2007 года.
источник: http://www.etersoft.ru/news/56
8<---------
не сделают они поддержку freebsd. Зачем оно им для старых ключей? Разве что энтузиасты постараются.
Следующее - про Убунту. Для Debian тоже должно сгодиться.
8<---------
http://forum.ubuntu.ru/index.php?topic=14194.0
8<---------
ветка форума по установке драйверов для на debian с ядром 2.6.18
найдено по ссылке с opennet.ru
8<---------
http://www.samaranets.ru/index.php?showtopic=1583
8<---------

сайт разработчика ключей: aladdin.ru - тоже есть форум и что скачать
блог, где описаны опыты по хасповодству на убунте: http://brandykov.blogspot.com/2008/06/ubuntu-hasp-server.html

воскресенье, 8 ноября 2009 г.

Использование дополнительных модулей iptables

1). C 2.6.14 версии ядра в него включен модуль позволяющий заглянуть внутрь пакета и построить правило, опираясь на наличие/отсутствие определенные строк - модуль string (xt_string). В дистрибутивах обычно включается и ядро пересобирать не нужно - смотреть
ls /lib/modules/2.6.24-24-generic/kernel/met/netfilter/xt_string.ko
Пример правила блокирующего icq.com:
iptables -A FORWARD -m string --string "icq.com" --algo kmp --to 655353 -j DROP
или DownloadMaster
iptables -A FORWARD -m string --string --algo kmp "DownloadMaster" -j REJECT
параметр --algo обязателен - определяет алгоритм, который будет использован для проверки совпадения строк. Варианты kmp (от Knuth-Pratt-Morris - усовершенствованный bm оптимизированным для разбора сложных строк) или bm (от Boyer-Moore - он один из наиболее быстрых в простых ситуациях). Также модуль string поддерживает и парамерт --hex-string, что позволяет производить поиск в бинарном формате.

Повышение производительности Linux на десктопе

1). Виртуальной памяти
При работе с небольшими программами и частым переключением между ними, коэффициент подкачки нужно установить 20 или 30 (переключение мгновенное, работа с ними медленная, поскольку они не большие то это будет незаметно).
При работе с громоздкими приложениями (OpenOffice, GIMP) и редким переключением между ними, коэффициент подкачки нужно установить > 70, например 80 или 85 (переключение медленное, работа с ними быстрая).
меняем в /etc/sysctl.conf - wm.swappiness=20 (установил 85)
Ограничение размера файлового кеша, чтобы занимал меньший объем ОЗУ (предотвращение свопинга) + активация принудительного сброса буфера в случае, если приложения суммарно займут более половины памяти:
vm.pagecache=90 (установил)
vm.dirty_ratio=50 (установил)
2). Выключение загрузки модуля ipv6
вставить строку blacklist ipv6 в файл vim /etc/modprobe.d/blacklist-mdv (может быть blacklist*)
3). предварительное связывание или prelink
ставим пакет и даем команду
# prelink -avmR
v - выводить информацию на экран;
a - подвергать пре-связыванию все бинарные файлы;
m - сохранить виртуальную память (нужно если библиотек очень много);
R - рандомизировать порядок следования участков памяти (повышает уровень защиты от атак на срыв стека).
После можно радовать ускорению. Ограничения:
3.1). prelink не способен увеличить скорость загрузки бинарников, скомпиленых без опции '-fPIC'. К сожалению, таких библиотек много, обычно сборщики нарочно отключают этот флаг для увеличения производительности предложения;
3.2). prelink не умееет обрабатывать библиотеки wine;
3.3). некоторые статистические библиотеки могут перестать запускаться после обработки prelink;
3.4). после установки новых приложений или библиотек операцию нужно повторить  
3.5). в Ubuntu prelink ставить не нужно - у него альтернативный метод DT_GNU_HASH (реализован на уровне корневой библиотеки (glibc)), также в Ubuntu вместо init используется система паралельно загрузки сервисов upstart.
Удаление prelink
# prelink -au
удаления пакета после этого
4). preload
Имеет смысл использовать данный демон если оперативки больше или равно 2 Гб, при меньшем количестве только помешает.
демон используется для предварительно загрузки библиотек для часто используемых приложией (холодный запуск приложений занимает меньше времени).
Ставим пакет - стандартный конфиг /etc/preload.conf работает сносно, но можно елси хочентся поменять - основные опции
секции model:
cycle - число обращений к системе для сбора статистики (дефолт 20с), если вредит производительности можно увеличить;
halflife - интервал, по истечении которого демон забывает накопленную статистику на 50% (дефолт 168 часов - неделя), уменьшать стоит если часто меняешь софт, увеличивать если месяцами и годами нет;
minsize - минамальный размер обьекта (программы, библиотеки), обрабатываемой демоном (дефолт 2000000 - 2 Мб), файлы меньшого размера демон на загружает, смысла менять нет, можно уменьшить елси кажеться что памяти хватит;
memtotal, memfree, memcached - опции взаимозаменямы - указывают на объем памяти потребляемый демоном, расчет по форумуле - вся память (memtotal) + доступная при старте (memfree) + кеш (memcached).
секции system:
mapprefix - список каталогов, файлы которых должны быть предварительно загружены (все не только бинарники и библиотеки);
exeprefix - список каталогов с бинарными файлами;
sortstrategy - способ оптимизации операций ввовда-вывода (дефолт 3 - оптимизация для жестких дисков) 1 - твердотельных, 2 - сетевые файловые системы.
теперь
# service preload reload
/var/log/preload.log - логи, /var/lib/preload/preload.state - текущее состояние preload и его кеш
5). предварительное чтение или readhead
Ubuntu и другие дистры используют систему readhead при инициализации (также как и preload заранее загружает приложения и компоненты в ОЗУ, + он частично внутри ядра и оптимизирован для ускорения запуска).
Но количество севрисов при старте может меняться и надо обновить списки файлов - параметр ядра profile перестраивает списки предварительно загружаемых файлов:
перезагрузка, - вход в меню загрузчика, и добавить в конец списка параметров ядра "profile", для загрузки - трошки покурить пока система будет грузиться в режиме профиля.
6). заморозка процесса или cryopid
чтобы ускорить запуск приложения лушче его не останавливать, а заморозить, а позже восстановить (программе не нужно будет инициализировать заново). Проге не нужно root и модификация ядра и не привязывает замороженный процес к конкретной машине. После заморозки процесс становится вроде самораспак архива и его можно лего перенести на другую машину и просто запустить. Пакет есть не в каждом дистрибутиве, с исходников так:
$ cd /tmp
$ wget http://dagobah.ucc.asn.au/wacky/cryopid-0.5.9.1-i386.tar.gz
$ tar -xzf cryopid-0.5.9.1-i386.tar.gz
$ make
$ mkdir ~/bic
$ cp freeze ~/bin
Запуск программы
$ ~/bin/freeze имя-файла pid-процесса
Проблемы: неполная поддержка сокетов и X-приложений, генерация мусора в списке процессов вместо имени восстановленной проги
7). ускоряем Ubuntu
7.1). отключение таймаута grub - /boot/grub/menu.lst  timeout=0 (было 3)
7.2). Ubuntu splash-screen, показываемый во время загрузки системы отключаеться -  /boot/grub/menu.lst убираем опиции "quiet" "splash"
7.3). IPv6 уже вшит в ядро (раньше модуль /etc/modprobe.d/aliases), надо ядру передать параметр "ipv6.disable=1" в том же /boot/grub/menu.lst
7.4). отключение проверки выхода из спящего режима (при загрузке ядро проверяет выходит ли пк из оного режима или выполняет обычную загрузку), добавить "noresume" в параметры загрузки ядра - ноутбучникам конечно этого делать не стоит
7.5). оптимизация initramfs (ram-диск хранит низкоуровневые компоненеты ос, которые должны быть доступны до монтирования корневой файловой системы). Открываем файл /etc/initramfs-tools/initramfs.conf строку "MODULES=most" меняем на "MODULES=dep". Пересобираем образы только с необоходимимы компонентами:
$ sudo update-initramfs -k all -u
после обновления ядра образы будут сгенерерированы атоматом.
7.6). отключи ненужные сервисы System -> Administration -> Services, безболезненно можно
- Bluetooth Manager - менеджер устройств Bluetooth
- Check for new hardware drivers - проверка новых версий проприетарных драйверов
- Evolution Alarm Notifier - сигнализатор прихода почты в Evolution
- Print Quene Applet - аплет очереди печати
- Tracker - служба поиска и индексирования
7.7). отключи автостарт ненужных приложений System -> Preferences -> Applications startup как пример апплет bluetooth. Запуск остальных можно оптимизировать так - редактирования строки каждого из них так:
sh -c "sleep 10; exec bluetooth-applet"
sh -c "sleep 10; exec /usr/lib/evolution/2.28/evolution-alarm-notify"
то есть для каждого следующего нужно число увеличить на 10.
8). запуск тяжеловесов
8.1). OpenOffice.
Tools -> Options раздел Memory значение для "Number of steps" 20 (уменьшение истории отмены), "Graphics cache" устанавливаем "Use for OpenOffice.org" 128, "Memory per object" 20. В подсекции "Java" убираем галочку "Use a Java runtime enviroment"
8.2). Firefox
удаляем ненужные и редко используемые плагины, оптизимировать базу sqlite, которая использует для хранения данных профиля
$ find ~/.mozilla/firefox/ -name *.sqlite -exec sqlite3 {} VACUUM \;
делать нужно постоянно раз в неделю например - потому что база растет и захламляется

пятница, 30 октября 2009 г.

MailScanner проблемы и настройка

В логах почтовика сообщение (/var/log/maillog)
Oct 30 12:14:02 redhat update.virus.scanners: Found clamav installed
Oct 30 12:14:02 redhat update.virus.scanners: Running autoupdate for clamav
Oct 30 12:14:02 redhat ClamAV-autoupdate[4836]: ClamAV updater /usr/local/bin/freshclam cannot be run
В файле
vim /etc/MailScanner/virus.scanners.conf
поменять
clamav /usr/lib/MailScanner/clamav-wrapper /usr/local
на
clamav /usr/lib/MailScanner/clamav-wrapper /usr/
поскольку бинарник обновления clamav freshclam находится
/usr/bin/freshclam (принадлежит пакету clamav-0.95.1-4.el5.rf)

Отключение проверки и блокировки вложений кроме вирусов или файлов ими инфицированных
vim /etc/MailScanner/MailScanner.conf
1. Set "File Command =" to blank.
2. Set "Filename Rules =" to blank.
3. Set "Filetype Rules =" to blank.
4. To disable checking of zip attachments, set "Maximum Archive Depth =" to 0.
None of the above will affect scanning for viruses in attachments. Virus scanning will be controlled by the rules in /usr/mailscanner/etc/rules/virus.scanning.rules - это правило не стоит устанавливать !

Работа с perl

Выкачать файл с архивом нужного файла перла а потом в этом архиве
perl Makefile.PL && make && make test && make install

вторник, 27 октября 2009 г.

Повышения безопасности линукса

1). Смена ТТЛ в с 64 на число 128 (Windows) или любое другое /etc/sysctk.conf забить net.ipv4.ip_default_ttl=128, sysctl -p (перегрузка sysctl),
sysctl -a | grep ttl (проверка) - net.ipv4.ip_default_ttl = 128
2). Скрипты которые запускаються в root crontab должны иметь права 700 и владелец root.root - для того чтобы если будет взломан юзер он не смог в них вставить команды смены пароля root (а это будет возможно елси он будет иметь права на запись в них)
3). поставить утилиту logcheck и прописать в cron данную строку
crontab -e
00 23 * * * /usr/bin/logcheck.sh
исключения ненужным сообщений
vim /etc/logcheck/ignore
kernel: martian sourc
smartd*:
mdkapplet*:
postfix*
можно и не ставить logwatch или мандривовские проверки даже лучше 
4).  выключение "Ctrl+Alt+Del" - в файле /etc/inittab закоментить
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
и выполнить /sbin/init -q
5). поиск suid\sgid-файлов с несколькими ссылками
find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls
6). пароль на grub
/sbin/grub в интерактивной оболочке набрать md5crypt, набрать пароль, на экран выведется хеш
в /boot/grub/grub.conf добавить опцию "password --md5 хеш-пароля"
7). tiger - анализатор локальной безопасности, zeppoo находит руткиты, скрытые процессы и соединения, новые системные вызовы и др. используя прямой доступ к памяти ядра с помощью файлов /dev/kmem и /dev/mem
8). недопустить повышения прав пользователем
8.1). su запускают только члены групы wheel
в /etc/pam.d/su добавить "auth       required     pam_wheel.so" после строки "auth       sufficient   pam_rootok.so"
8.2). запус эксплоитов если взломали сервис возможен только из общедоступного /tmp и приватного взломанного сервиса (корневой http, ftp) - выносим их на отдельные разделы и подключаем с опцие noexec, nosuid,nodev
/dev/sda4 /tmp ext3 noexec, nosuid,nodev 0 0
но можно запустить прогу с помощью динамического линковщика
$ /lib/ld-unix.so.5 /tmp/exploit
для противодейсвия нужно ставить патч на ядро RSBAC (www.rcbak.org)
8.3). если эксплоит запустят его можно направить на ядро ОС или программы с SUID-битом. В ядря уязвимость или есть или нет, а снять SUID с программы так:
находим find / -type f \( -perm -04000 -o -perm -02000 \) \-exec  ls {}\;
и лишаем некоторых из них
chmod a-s /путь (внимательно можно завалить систему)
8.4). взломщик может найти доступные для всеобщей записи важные системные утилиты и вставить в них код (пример - опция сетевого сервиса входа без пароля или код срыва стека утилите читающего его)
ищем общедоступные файлы и снимаем бит записи для всех
find /dir -xdev -type d \( -perm 02000 -a ! -perm 1000 \) -print
8.5). файлы пользователя в домашнем каталоге остаются видимыми всем подряд (маска 022)
нужно в ~/.profile записать umask 077
также можно поставить модул ядра Yama, защищающий от многих атак
9). tropwire уступила AIDE (Advanced Intrusion Detection Enviroment), конфиги /etc/default/aide (главный конфигурационный файл) и /etc/aide/aide.conf (правила)
в первом меняем mailto
aide --init - инициализация (создает база, как только система обновилась или что поменялось нужно обновить базу aide --update)
переименовываем базу mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
проверяем систему aide -c /etc/aide.conf --check
хотя проверки будут проходить каждый день через cron не нужно полагатся на систему поскольку взломщик если сможет модифицировать системные файлы для установки бекдора, то он сможет и aide модифицировать - поэтому лучше ее поместить с базой на флешку и запускать руками
cp /var/lib/aide/aide.db* /etc/aide.conf /usr/sbin/aide /media/KINGSTON/aide/aide_robota/
          Особенности redhat es 5.2 (aide-0.11-1.2.el5.rf):
в конфиге /etc/aide.conf отмененно архивирование базы gzip_dbout=no и у баз убрано расширение gz, то есть стали называться aide.db и aide.db.new
создан скрипт (который и вставлен в cron)
#!/bin/bash
/usr/sbin/aide --check
exit 0
          Особенности mandriva 2009.0 (aide-0.13.1-2mdv2009.0):
скрипт /etc/cron.daily/aide и он хочет подписанную базу aide.db.sig
- создадим ключи root:
gpg --gen-key
- подписиваем базу
gpg -b  /var/lib/aide/aide.db
10). программы нахождения руткитов
#chkrootkit
#rkhunter --check
поскольку программ написаны на shell, то используются стандартные утилиты командрой строки (awk, cat, grep, ...) для выполнения проверок, если нет уверенности в их целосности тогда их можно сохранить на флешку и запуск будет такой 
#chkrootkit -p /media/flash
#rkhunter --check --bindir /media/flash
11). Уязвимость ядра - код RDS (Reliable Datagram Sockets)
wget  www.vsecurity.com/download/tools/linux-rds-exploit.c
gcc linux-rds-exploit.c
 ./a.out
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
 [+] Resolved rds_proto_ops to 0xf85abd20
 [+] Resolved rds_ioctl to 0xf8593090
 [+] Resolved commit_creds to 0xc015e940
 [+] Resolved prepare_kernel_cred to 0xc015eac0
[*] Overwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...
[*] Got root!
Борьба или обновить ядро или заблокировать загрузку модуля rds (если протокол не используется)
# echo "blacklist rds" > /etc/modprobe.d/blacklist-rds.conf

вторник, 20 октября 2009 г.

Поддержка выполнения perl скриптов в apache2

Доставить пакет perl-CGI
в /etc/httpd/conf/httpd.conf
добавить строку (то есть перловские скрипты будут выполняться как cgi скрипты)
AddHandler cgi-script .pl
можно после строки (для наглядности)
AddHandler cgi-script .cgi
А также в директории где находяся скрипты на perl добавить опцию
Options ExecCGI
В нашем случае это директория (Directory "/var/www/html")

воскресенье, 11 октября 2009 г.

RDP client Windows Mobile 6.1

Его нужно обязательно ставить в основную память, а не на карточку, поскольку при установке на карточку после перезагрузки перестают работать все кнопки кроме "Х" и "Ok", на дополнительной клавиатуре "пробел", "Del".

использование tcpdump + grep

tcpdump -n | grep -v '212.90.171.129\|212.90.171.130\|212.90.171.132\|212.90.171.137\|212.90.171.140\|212.90.171.145\|212.90.171.149\|212..171.150\|212.90.171.151\|212.90.171.153\|212.90.171.155' | grep '212.90.171.*'

-n - tcpdump не резолвит имена 

-v - grep выводит несовпадения

| - операция "или"


среда, 30 сентября 2009 г.

Проблемы с отображением шрифтов и линуксе

Земенить arial.ttf, arialbd.ttf, arialbi.ttf, ariali.ttf, times.ttf, timesbd.ttf, timesbi.ttf, timesi.ttf (взятыми с виндовз или /home/kolotay/alx/ms_fonts) по адресу /usr/share/fonts/TTF/ms

Сначала обновите систему yum update gdm

http://linuxforum.ru/index.php?mode=threaded&showtopic=12690

Советует техническая поддержка asp linux:

1. Попробуйте выключить AIGLX - модуль для поддержки 3d (от не работает
корректно).
Для этого в xorg.conf либо удалите строки:

Section "ServerFlags"
Option "AIGLX" "on"
EndSection

либо попробуйте отключить его:

Section "ServerFlags"
Option "AIGLX" "off"
EndSection

После этого перезапустите X-сервер.

2. Попробуйте переключить опиции:

Option "OpenGLOverlay" "off"
Option "VideoOverlay" "on"

на

Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"

Перезагрузите X-сервер.

3. Вы писали, что пробовали подключить русские шрифты.
Попробуйте указать их явно. В настоящий момент у Вас указаны только
следующие директории:

Section "Files"
ModulePath "/usr/lib/xorg/modules/extensions/fglrx"
ModulePath "/usr/lib/xorg/modules"
EndSection

Если добавленные шрифты не находятся в одной из этих директорий,
допишите их. Перезагрузите X-сервер.

P.S. Я постараюсь найти больше информации и прислать еще возможные
варианты. Напишите как предложенные методы (по отдельности) повлияли на
изображение, если это произойдет.

Дополнительно: попробуйте установить драйвер radeon (пакет есть в
update-ах):

xorg-x11-drv-ati-6.8.0-19.0.140asp.i386.rpm

После установки драйвера, удалите пакеты с драйвером fglrx (иначе он не
позволит проверить работу драйвера radeon).
В файле xorg.conf замените:

Driver "fglrx"

на

Driver "radeon"

И желательно удалить настройки от fglrx:

1) Section "ServerFlags"
Option "AIGLX" "on"
EndSection

2) данные из секции Section "Device":

Option "OpenGLOverlay" "off"
Option "VideoOverlay" "on"
BusID "PCI:1:0:0"

3 )Section "Extensions"
Option "Composite" "Enable"
EndSection

понедельник, 28 сентября 2009 г.

Безплатные программы для Linux

запись CD-DVD
http://infrarecorder.org
редактирование видео (вырезание музыки из фильма и т.д.)
kdenlive
работа с разделами жесткого диска
gparted 
чтение chm файлов
kchmviewer
клонирование дисков
G4L
статистика сетевого интерфейса
vnstat
Включение машины в домен
SADMS
Торент-клиенты
MLdonkey (аналог amule)
мониторинг сетевых интерфейсов
iptraf - подробная статистика реального времени сетевых интерфейсов
Анализ tcpdump файла
chaosreader
Djvu редактор
DjVuSmooth

пятница, 25 сентября 2009 г.

Cisco switch vlan ньюансы vtp mode

В режиме vtp server можно завести только vlans 1-1005, при этом в режиме transparent  (прозрачный) доступный полный список vlan 1-4096. Поэтому в режиме vtp server не получится завести vlan больше 1005

четверг, 24 сентября 2009 г.

Защита .svn директорий на web серверах

Были получены исходники 3300 глобальных интернет-проектов
Пару месяцев назад нами (2Товарища и Антон Исайкин) была обнаружена уязвимость, присущая в основном большим интернет-проектам (вроде Рамблера, Мейла, Яндекса, Оперы и пр.). Удалось получить доступ к файловым структурам известнейших сайтов (в общей сложности 3320 сайтов) и в ряде случаев их полные исходные коды.

Казалось бы, что в XXI веке трудно найти подобную уязвимость. Кажется, что уже всё найдено, а то что не найдено, сидит где-то очень очень глубоко. Оказалось, что корнем сегодняшнего зла является вполне повседневная вещь. Наверняка каждый из вас когда-нибудь имел дело с системой контроля версий SVN.

SVN является продвинутым средством для организации совместной разработки десятков, а то и сотен разработчиков. В силу особенностей архитектуры, SVN хранит в каждой директории проекта свои метафайлы, аккуратно сложенные в скрытую директорию .svn. В одном из файлов под названием entries находится список всех файлов и директорий, расположенных в той же папке, что и .svn. Так же там находится информация о расположении репозитория, размере файлов, даты их изменения и логины пользователей, работающих над проектом. Уже не плохо, правда? Объясню, получается, если проект разрабатывается с помощью SVN, то заглянув по адресу draftcopy.ru/.svn/entries мы увидим файловую структуру корня проекта с авторами, последними изменениями, ссылкой на основную ветку репозитория итп.

Но можно пойти и далее. В той же папке .svn находится директори text-base, в которой лежат последние версии всех файлов, находящихся в репозитории. Картину дополняет так же и то, что файлы имеют не стандартное расширение (например .php), которое позволяет их сразу отправить на интерпретатор, а дополнительное расширение .svn-base, благодаря которому файл отдается запросившему его человеку «как есть», т.е. голый исходный код!

draftcopy.ru/.svn/text-base/index.php.svn-base

Стоит заметить, что описанная картина является идеальной и хоть она и была таковой в большинстве случаев, все же большой процент исходных кодов не удалось получить по тем или иным причинам.

Впервые осознав, что обнаруженная уязвимость присуща большинству проектов последние девять лет, было решено полностью просканировать рунет чтобы посмотреть чем живут интернет-проекты и получить интересную статистику. Но перед историей о том как это было, следует рассказать седым админам, как защищаться от подобного…

Защита от уязвимости

Уязвимость можно обойти несколькими путями. Путь в лоб — запретить обращаться к метадиректориям SVN по 80-ому порту, т.е. средствами вебсервера.

Решение для nginx
location ~ /.svn/ {
deny all;
}

Глобальных локейшенов в nginx`е нет, поэтому прийдется подписывать для каждой server области. Чтобы правило имело силу, необходимо загружать его до других локейшенов с регулярным выражением. Универсальный способ — первым локейшеном.

Решение для Apache

Order allow,deny
Deny from all
Satisfy All


Тут немного проще, дописываем это в httpd.conf и на всех проектах под управлением apache чтение из директории .svn будет недоступно.

Решение средствами SVN
Защита от уязвимости средствами вебсервера — лечение болезни. Любой доктор скажет, что профилактика проще, легче и менее затратней, чем лечение. Поэтому лучшим решение будет отсутствие этих самых метадиректорий в корне проекта. Добиться этого можно средствами svn export из основной ветки.
Информация взята с twocomrades.ru



История исследования

Как уже было сказано, было решено просканировать весь рунет на наличие подобной уязвимости. Были подняты прокси-сервера, написан парсер и получена свежая база доменов в зоне ru. Первая версия скрипта работала две недели, получая сайт за сайтом в один поток. К завершению сканирования, база насчитывала более 3000 уязвимых сайтов и занимала более ста гигабайт исходных кодов.

Проблемой первого сканировния было то, что скачивались все сорцы без разбора, не зависимо от того, отдавали они 200 или 500 код, а так же закачивалась графика и js-скрипты. А так же часто веб-сервера были настроены таким образом чтобы отдавать 200 код, даже если файл на самом дела отсутствовал.

Вторая версия скрипта была уже шустрее, работала в несколько потоков с двух серверных машин и правильно различала коды ответа содержимое полученных страниц. Мы обошли весь рунет за 4 дня. Дальнейшими планами была база доткомов. Стало очевидно, что при текущих ресурсах обход был бы выполнен как минимум за пару лет (зона com сейчас насчитывает более 700 млн доменов (против 2 млн ru)).

К дел был привлечен отличный си-программист Андрей Сатеренко, который написал быстрого демона, который сумел бы в пару раз сократить наши временные затраты. Но, к сожалению, к этому моменту лето кончилось, навалилилась работа. Грандиозные планы было решено свернуть.

Прежде чем публиковать открыто информацию об уязвимости, необходимо было предупредить всех пострадавших. В первую очередь письма были разосланы гигантам (yandex.ru, rambler.ru, mail.ru, opera.com, rbk.ru, 003.ru, bolero.ru, habrahabr.ru, итого 19 адресов), затем, сегодняшней ночью, письма получили остальные 3000+ сайтов.

Выпуск этой статьи был задержан ожиданием пока opera.com закроет уязвимость на всех своих серверах.

Немного статистики:
Просканировано доменов: 2253388
Уязвимых: 3320

Статистики по оповещениям пока нет, возможна она будет опубликована через пару недель. Из крупных порталов, ответили шестеро. Самым оперативным оказался Яндекс, прислав ответное письмо ночью в воскресенье. Десять проектов никак не прореагировали на наши письма, три проекта закрыли уязвимость не поблагодарив.
Мы не злопамятные, мы запишем их имена…

Несколько интересных фактов:
Киберсквотеры полюбили SVN, как и оптимизаторы;
Единый CSS для календарей яндекса собирается из десятка CSS средстами $make из консоли 0_0;
На проектах Рамблера пользуются сервисами Яндекса 0_0, найдены файлы «подтверждения домена» для сервисов Яндекса;
РБК использует и сервисы яндекса и сервисы гугля и очень любят «сложные» пароли;
Опера уважает MySQL, но сайт у них на голом html с реальными директориями и поддиректориями;
Блондинка уважает CodeIgniter;
PostgreSQL уважают движок wikimedia => PostgreSQL уважают MySQL ;-)
Все проекты Футурико (и Лепра) написаны на perl.
Порядка 10 сайтов со словами в домене типа «hack» и «secure» уязвимы;
Многие уверены, что назвав директорию с phpmyadmin примерно «__xpma123uff__» но сохранив пароль в конфиг, это хорошая защита;
Многие до сих пор хранят конфиги в inc файлах, без расширения .php, которые открываются как текст в браузере.


Для вас старались 2Товарища (mobilz) и Антон Исайкин (oowl, twi).
Мы готовы к сотрудничеству ;)

P.S. Во избежании конфликтов все исходные коды, полученные за время исследования были распечатанны и сожжены :-)
P.S.S. Два пункта:
абсолютно все, кто мог пострадать, получили предупреждения об уязвимости с точной датой обнародования заранее.
никакие исходные коды ни при каких условиях не будут опубликованы или проданы. Не стоит писать нам по этому поводу.

P.P.P.S. Не обделяйте oowlкармой )
P.P.P.P.S. Никаких сорцов самого поискового механизма Яндекса получено не было, однако были получены корни веб морды некоторых ресурсов. Верстка, xmlapi, xsl шаблоны итп. Ничего серьезного, разве что все адреса репозиториев, логины разработчиков итп. Кукуц, Бобук, расслабьтесь.

четверг, 17 сентября 2009 г.

Postfix проверка почтового адреса отправителя

reject_unverified_sender (детальнее www.postfix.org раздел Documentations)

Исключение из syslog определенных логов

меня больше достало то, что при установке postfix почтовые логи пишуться как в /var/log/mail.* так и в /var/log/syslog

ну это какраз просто лечится :
в файле /etc/syslog.conf
Код
*.*;auth,authpriv.none -/var/log/syslog
заменить на
Код
*.*;auth,authpriv.none,mail.none -/var/log/syslog

У меня на redhat as 5.2 не пишутся такие сообщения cat /etc/syslog.conf | grep messa

# Log all kernel messages to the console.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

среда, 16 сентября 2009 г.

Работа telnet c smtp/pop3

smtp:

220 relay.ukrhub.net ESMTP (ISP UKRCOM from UKRAINE) (for contacts:postmaster_at_ukrhub.net)

ehlo 123.ukrhub.net

250-relay.ukrhub.net
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

mail from:<1@1.com>

250 2.1.0 Ok

rcpt to:<123@ukrhub.net>

250 2.1.5 Ok

data

354 End data with .

aa;ghjag;aghag;hg;laghag.
. (должно заканчиваться точкой)

250 2.0.0 Ok: queued as 3B0F71ECC8

quit

221 2.0.0 Bye
Connection closed by foreign host.

pop3:

+OK ISP UKRCOM POP SERVER
user 123
+OK
pass 123
+OK Logged in.
list
+OK 0 messages:
.
stat
+OK 0 0
quit
+OK Logging out.

воскресенье, 13 сентября 2009 г.

Настройка профиля bash (сохранение истории, алиасы, функции)

cat /home/vova/.bashrc
# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
shopt -s histappend
PROMPT_COMMAND='history -a'
shopt -s cdspell
export HISTCONTROL="ignoredupes"
export HISTIGNORE="&:ls:[bf]g:exit"
shopt -s cmdhist
alias rm_ape='rm -f *.ape'
function cdl () { cd "$1"; ls; }
function cdla () { cd "$1"; ls -la; }

четверг, 10 сентября 2009 г.

Проверка настройки почтовика

550 We do not accept mail from dynamic IPs. Что делать?

SPAM, smtp Pavel Nagaev Print This Post

Время от времени в форумах ИТ специалисты жалуются на то, что их пользователи получают из некоторых почтовых систем сообщение об ошибке: «#5.5.0 smtp;550 We do not accept mail from dynamic IPs. Please contact support@company.ruЧто же делать и как ее устранить?

Причиной проблемы является то, что принимающий сервер распознал IP вашего сервера, как динамический. Причин этому может быть несколько:

  • у вашего SMTP сервера нет PTR записи
  • ваш SMTP сервер в HELO/EHLO представляется, как adsl-01.mydomain.ru. Вместо adsl может быть dsl, dynamic и т.д

  • IP вашего SMTP сервера принадлежит глобальному списку динамических адресов — DNSBL, разновидность RBL

Для того, чтобы этой ошибки не возникало, необходимо еще раз проверить:

  • наличие PTR записи для IP вашего SMTP сервера
  • что ваш SMTP сервер представляется своим внешним FQDN
  • IP вашего сервера не находится в глобальной базе динамических адресов

Первых две настройки можно проверить тут в разделе “E_mail valid”, третью в по адресу: http://www.robtex.com/rbl/

Помните, что возникновение данной проблемы — это проблема неправильной настройки DNS, SMTP сервера или конфигурации сети.

Удачи вам и пусть подобных проблем никогда не возникает!

WIKI о протоколе SMTP
FAQ по настройке DNS для почтового сервера
VIDEO:Разговоры об ИТ. Выпуск 13. Решение проблем внешних SMTP серверов. Pavel Nagaev

источник http://www.exchangerus.ru/2008/06/17/550-we-do-not-accept-mail-from-dynamic-ips-chto-delat/