пятница, 26 февраля 2010 г.

wine etersoft problem (виснет при загрузке 1с)

источник http://cgroup.drohobych.com.ua/index.php?option=com_content&task=view&id=113&Itemid=128&limit=1&limitstart=10
При использовании ресурсоёмких win-приложений могут возникать проблемы, связанные с установленными в системе ограничениями.
Лимит на количество открытых файлов

Ещё одна сторона совместной работы: одновременное использование большего количества ресурсов, что может приводить к превышению стандартных лимитов, используемых по умолчанию в различных Unix-системах. Лимиты могут определяться как в момент компиляции ядра, так и настраиваться в любой момент в процессе работы.

В контексте использования WINE наиболее актуален лимит на открытые файлы. Если в приложении не открываются большие файловые базы или невозможно работать более чем 3-м пользователям одновременно, это может означать, что превышен лимит на открытые файлы.

Лимит на открытые файлы двухуровневый: с одной стороны, имеется лимит ядра на общее число всех открытых файлов, с другой стороны, для каждой командной оболочки пользователя также может быть выставлен лимит на число открытых файлов.

Узнать текущее значение лимита ядра можно через команду winediag. Обычно это значение достаточно велико.

Чтобы разово изменить это значение в Linux можно посредством той же proc, для этого нужно просто записать новое значение в файл file-max (потребуются права суперпользователя):

# echo "104854" > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
104854

Пример 19. Изменение лимита на открытые файлы

Чтобы настройка лимитов сохранялась между перезагрузками, необходимо внести нужные значения в файл /etc/sysctl.conf:

# Maximum number of open files permitted
fs.file-max = 104854

Пример 20. Настройка sysctl.conf

Лимит по количеству открытых файлов для командной оболочки пользователя можно контролировать при помощи подсистемы авторизации PAM. Для этого в конфигурационном файле /etc/security/limits.conf выставляются необходимые значения:

* soft nofile 5000
* hard nofile 5000

можно заменить
* - nofile 5000

Пример 21. Указание лимитов в /etc/security/limits.conf

В данном случае указанлимит в 5000 файлов. Чтобы лимит применялся при регистрации пользователей в системе, в файле /etc/pam.d/system-auth должна быть строка:

session required /lib/security/pam_limits.so

Пример 22.

После повторного входа в систему выставленное вами значение лимита должно быть отображено в выводе команды ulimit -n.

GeoIP и ее использование

http://www.find-ip-address.org/ip-country/ - генерит сети (файл .htaccess для apache - вибираешь Allow или Deny) чтобы потом им рубить всякие нехорошие страны откуда рулит спам и т.д.
http://ipinfodb.com - аналог

Ставим:geoip
Переносим тестовый конфиг в рабочий: mv /etc/GeoIP.conf.default /etc/GeoIP.conf (не нужно идентичные)
Теперь пробуем для любого (я делал для своего) определить принадлежность IP адреса стране:
geoiplookup 95.79.205.111
GeoIP Country Edition: RU, Russian Federation
Теперь получим список всех клиентов, подключенных к нашему серверу:
netstat -apnt | awk '{print $5}' | tr ':' ' ' | awk '{print $1}' | sort | uniq > /tmp/ips
А теперь получаем список стран, соответствующих IP адресам наших клиентов:
for ip in `cat /tmp/ips`; do geoiplookup $ip; done | tr ',' ' ' | awk '{print $4}' | sort | uniq -c
лучше $5 - там имя страны полностью !
Теперь, если вы точно уверены, что, например, посетителей с Зимбабве в числе 1500 человек у Вас ну точно нету, то можете написать скрипт, который забанит неугодных ботов :) Кроме этого, есть модуль для iptables, который позволяет отсекать посетителей в зависимости от страны.

Прикручивает скриптом к айпитейблз (не забываем создать цепочку iptables -N drop_nets)
#!/bin/sh
#
# Get lists http://www.find-ip-address.org/ip-country/
# putting prefixes to deny, and output in the CIDR.
# Farewell China!
#
# ps: Do not forget to edit the list in the call zcat.
#
sudo iptables -F drop_nets
for LDENY in $( zcat \
AP_cidr_deny.txt.gz \ # Asia/Pacific region
CN_cidr_deny.txt.gz \ # China
IN_cidr_deny.txt.gz \ # India
KR_cidr_deny.txt.gz \ # Korea
MY_cidr_deny.txt.gz # Malasia
); do
echo $LDENY | grep "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/[0-9]*" >/dev/null&& \
sudo iptables -A drop_nets -s $LDENY -j DROP
done

Если хотим прикрутить как модуль айпитейбл, тогда:

Фильтрация пакетов по географическому признаку с помощью iptables и geoip
Брутфорс-атаки не должны представлять реальной угрозы для хорошонастроенного сервера, но, тем не менее, они отвлекают и засоряютлог-файлы. Существуют различные решения для предотвращения подобныхатак. В этой заметке я расскажу вам о еще одном из них: GeoIP
GeoIP - это модуль для netfilter/iptables, который позволяет фильтровать приходящие пакеты по их географическому местоположению.
Этот модуль может быть использован не только для предотвращениябрутфорса. Например, его можно использовать для так называемой“расистской маршрутизации”, т.е. для ограничения доступа к серверупользователям из определенных стран. Оставим цели использования насовести системных администраторов, а в этой заметке я просто опишуустановку и настройку модуля
Все проверялось на Debian 4.0, но ничего debian-специфичного в процессенет, так что все должно работать и на других дистрибутивах GNU/Linux.Для установки нам понадобятся новый модуля для ядра, библиотеки дляiptables и база соответствия IP-адресов странам. Пересобирать ядро ненужно.
Итак:Подготовка
Первым делом нам понадобятся исходные тексты ядра, которое используется в системе. Для Debian Etch это 2.6.18# apt-get install linux-source-2.6.18Скачанные исходники будут лежать в /usr/src. Распакуем их:# tar xjf /usr/src/linux-source-.tar.bz2 -C /usr/src/Замените на версию вашего ядра. Для распакованного архива понадобится около 300 Мб свободного места.Теперь нам нужны исходные тексты iptables. Нет необходимостипересобирать сам iptables, но исходники понадобятся для сборки модуля.Для работы с ними удобно использовать временную директорию# mkdir ~/geoip
# cd ~/geoip/
# apt-get source iptablesВнимание, для использования apt-get source в вашей системе должен быть установлен пакет dpkg-devТеперь не хватает только самого geoip# wget http://people.netfilter.org/peejix/patchlets/geoip.tar.gzДля дальнейшей работы нам понадобится patch-o-matic-ng, его можно найти на Если у вас старое ядро, то, возможно, вам придется выбрать более старуюверсию, но для нашей заметки актуален последний снапшот:# wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070414.tar.bz2Распакуем полученный архив:# tar xjf patch-o-matic-ng-20070414.tar.bz2И распакуем исходники geoip в поддиректорию patchlets/ пакета patch-o-matic-ng# tar xzf geoip.tar.gz -C patch-o-matic-ng-20070414/patchlets/Наложение патчей
Применим необходимые патчи к ядру и iptables# cd patch-o-matic-ng-20070407/
# KERNEL_DIR=/usr/src/linux-source-/ IPTABLES_DIR=~/geoip/iptables-/iptables/ ./runme geoipНе забудьте заменить на используемые в вашей системе версии ядра и iptables.
Если все прошло успешно, то patch-o-matic-ng предоставит информацию о полученном патче и предложит применить его. Ответьте y.Сборка и установка модуля для ядра
Для сборки нам понадобится пакет build-essential. Если вы работаете нес Debian, то установите средства для разработки: gcc, make и т.д.# apt-get install build-essentialТак как нам потребуется немного переконфигурировать ядро, мы возьмем за основу уже имеющуюся конфигурацию:# cd /usr/src/linux-source-/
# make oldconfigНа вопрос:geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW)Ответьте m, чтобы собрать geoip как модуль.Выполните подготовку для сборки модулей:# make modules_prepareЗатем соберите модули.. К сожалению, я не знаю как собрать толькоодин необходимый модуль, так что собираем все модули netfilter, покакто-нибудь не предложит лучший способ :)# make -C $(pwd) M=net/ipv4/netfilter/ modulesЕсли все нормально, то файл ipt_geoip.ko должен появиться в net/ipv4/netfilter/. Скопируем его к остальным модулям системы# cp net/ipv4/netfilter/ipt_geoip.ko /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/И активируем его:# depmod
# modprobe ipt_geoip
# echo “ipt_geoip” >> /etc/modulesСборка и установка библиотек iptables
Соберем библиотеку:# cd ~/geoip/iptables-/iptables/
make KERNEL_DIR=/usr/src/linux-source-/ extensions/libipt_geoip.soНе забывайте заменять !!!Скопируем полученный файл к другим библиотекам iptablescp extensions/libipt_geoip.so /lib/iptables/Создание файла привязок IP-адресов к странам
Мы будем использовать свободно распространяемую базу с MaxMind. Она имеет заявленную точность в 98% и обновляется раз в месяц. Если длявас этого недостаточно, можно купить более точную платную версию тамже. Скачайте и распакуйте базу:# cd ~/geoip/
# wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
# unzip GeoIPCountryCSV.zipВы можете открыть полученный файл в любом редакторе и увидите, чтоэто просто список, со значениями, разделенными запятыми. Поиск в такомфайле будет занимать много времени, поэтому мы преобразуем его вбинарный формат, используя утилиту csv2bin, также предоставленнуюавтором geoip.# wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
# tar xzf csv2bin-20041103.tar.gz
# cd csv2bin/
# make
# ./csv2bin ../GeoIPCountryWhois.csvОна создаст два файла geoipdb.bin и geoipdb.idx, которые необходимо положить в /var/geoip# mkdir /var/geoip
# mv geoipdb.* /var/geoip/Теперь вы можете выполнять фильтрацию по географическому признаку :)# # Блокировка доступа к SSH всем, кроме Афганистана
# iptables -A INPUT -p tcp –dport 22 -m geoip ! –src-cc AF -j REJECT
# # Запрет на пинг хостов, расположенных во Франции, Италии и Испании
# iptables -A OUTPUT -p icmp -m geoip –dst-cc FR,IT,ES -j REJECT
# # Помощь
# iptables -m geoip –help

источник: http://eaglebearsecurity.com/news/filtracija_paketov_po_geograficheskomu_priznaku_s_pomoshhju_iptables_i_geoip/2009-09-27-489