magnify
formats

Использование connlimit

Опубликовано: 21.05.2008 Автор: в

В этой статье я опишу процесс установки модуля IPTables — connlimit. Для чего же он нужен? В последнее время начинает остро вставать проблема (D)DOS-атак на сервера. К сожалению, эта проблема и не минула один из веб-серверов, находящихся под моим контролем. Внезапно стал «падать» Apache. Пронаблюдав один из таких моментов с помощью netstat -an | sort -k 5, я обнаружил ненормальное количество открытых соединений на 80 порт с некоторых IP-адресов (очевидно, зомби-машин), что и приводило к непомерному увеличению нагрузки и, затем, отказу веб-сервера.

Поэтому было принято решение ограничить количество одновременных ограничений с одного IP-адреса. Поскольку на сервере установлен дистрибутив Debian 4.0, то, соответственно буду описывать действия, производимые именно для этой системы. Я реализовал данное ограничение с помощью модуля IPTables — connlimit, который собрал без перекомпиляции(переустановки) ядра.

1. Подготовка:

# Ставим исходники ядра
apt-get install linux-source-2.6.18 dpkg-dev
cd /usr/src/
# Распаковываем ядро
tar --use-compress-program bzip2 -xvf linux-source-2.6.18.tar.bz2
# Делаем симлинк на ядро (чтобы было проще потом)
ln -s /usr/src/linux-source-2.6.18 /usr/src/linux
# Копируем для совместимости
cp /boot/config-2.6.18-4-686 /usr/src/linux/.config
# Берем исходники IPTables и копируем их в /usr/src/iptables
cd /tmp
apt-get source iptables
cp -r /tmp/iptables-1.3.6.0debian1/iptables/ usr/src

2. Редактируем файл /usr/src/linux/Makefile, чтобы в начале файла было

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 18
EXTRAVERSION = -12etch2
NAME=Avast! A bilge rat!

3. Установка и запуск patch-o-matic

# Скачиваем и распаковываем patch-o-matic
wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070401.tar.bz2
tar --use-compress-program bzip2 -xvf patch-o-matic-ng-20070401.tar.bz2
# Запускаем патч
cd patch-o-matic-ng-20070401
./runme --download connlimit
# На вопрос установки патча отвечаем 'y'

4. Конфигурируем ядро

cd /usr/src/linux
make menuconfig
# Идем в Networking  --- Networking options  ---  Network packet filtering (replaces ipchains)  --- IP: Netfilter Configuration
# Ставим M возле Connections/IP limit match support
# Выходим, не забыв сохранить конфиг

5. Собираем ядро

# Трюк с прерыванием сборки и запуском make M=net/ipv4/netfilter/ у меня не сработал,
# поэтому я подождал полной сборки, благо никуда не спешил..8)
make

6. Пробуем подключить модуль

cp /usr/src/linux/net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.18-4-686/kernel/net/ipv4/netfilter/
depmod -a
insmod ipt_connlimit.ko

Если ошибок не возникло, то радуемся и начинаем ограничивать количество одновременный соединений. Для этого необходимо добавить одно правило IPTables (куда — зависит от вашей текущей конфигурации):

# Ставим ограничение на 5 соединений на 80 порт.
-A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT

Замечу, что после включения этого правила, нагрузка на Apache сильно снизилась и он перестал «падать». Не уверен, что этот метод поможет от массированной DDOS-атаки, но с отдельными злодеями справится замечательно. Кстати, ничто не мешает таким образом ограничивать соединения на другие порты, например на 25. В случае других дистрибутивов, установка в общих чертах происходит таким же образом.

Ссылки:

  1. http://www.netfilter.org/projects/patch-o-matic/index.html
  2. http://www.opennet.ru/base/net/connlimit_fedora.txt.html
 
Просмотров: 5 496 | Комментариев нет  comments 
formats

Выбор проекта и ставка

Опубликовано: 21.05.2008 Автор: в

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

Вот тут, как ни странно, я бы посоветовал не торопиться. Во-первых, у новичков сразу возникнут проблемы с получением первого заказа, поскольку ни рейтинга, ни истории успешно выполненных проектов у них нет. Во-вторых, «торопыжничество» может сыграть плохую шутку. Представим, что вы выиграли заказ. Но нередки случаи, когда заказчик, мягко говоря, не совсем верно выражает требования к проекту (на то он и заказчик)..8) И из-за этой несогласованности требований проект может легко провалиться, и никаких денег вы не получите. Постарайтесь все-таки изучить заказ и понять, что требуется заказчику.

Ни в коем случае НЕ ВЫПОЛНЯЙТЕ тестовые задания от заказчиков с низким или нулевым рейтингом. В подавляющем большинстве случаев это обман. Приступайте к работе над проектом только после выигрыша ставки и перечисления оплаты (во временный кошелек).

Важно понять, что вы выиграете первый заказ далеко не сразу (хотя бывают и исключения). На GetAFreelancer, например, есть такой тип проекта как «Trial Project». Он выбирается заказчиком и ставить на него могут только фрилансеры без рейтинговых записей, что очень удобно для новичков. Делайте ставки на большое количество заказов. Описание к ставке должно быть максимально заинтересовывающим заказчика. Не стесняйтесь расхваливать себя, указывайте опыт работы, имеющиеся навыки.

Для простоты и ускорения процесса, можно составить общее описание, которые вы будете «copy-paste» в каждую ставку. Например, описание, которое сейчас использую я (возможно далекое от совершенства, но в принципе работающее):

Hello,

I can do this job for you quickly and in the high quality.

I have very strong knowledge in [здесь перечисляете навыки, требующиеся к заказу].

[можно добавить план действий, которому будете следовать]

Please contact with me if you are interested in my suggestion.

Thanks.

Очень удобной возможностью слежения за открытыми заказами являются RSS-подписки, имеющиеся на такого рода freelance-биржах. Каждый день на каждом из этих сайтов появляется более 500 новых проектов и отслеживать это, используя браузер, не совсем удобно. Вместо этого можно с успехом использовать любой RSS-клиент, например, Attensa. Приведу список URL основных RSS-каналов, которыми пользуюсь:

  1. http://www.rentacoder.com/RentACoder/misc/LinkToUs/RssFeed_newBidRequests.asp
  2. http://www.getafreelancer.com/rss.xml
  3. http://www.scriptlance.com/rss/rss_projects_d.xml

Конечно, эти RSS-каналы можно детализировать, например, подписываясь на определенную категорию заказов.

Напоследок, укажу некоторые тонкости и подводные камни, с которыми приходилось сталкиваться мне.

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

Есть также еще одна неприятная особенность работы — это большое количество фрилансеров из стран, что называется Emergency Economy, например Индия. Кодеры из таких стран, согласны выполнить проект чуть-ли не за копейки, что, бывает, раздражает и снижает вероятность успеха выбора именно вас. Но предположу, что в большинстве таких ставок качество работы оставляет желать лучшего. Также я заметил рост тенденции заказчиков выбирать, все-таки, золотую середину между качеством и ценой. Поэтому сильно обращать внимание на сбивающих вашу ставку фрилансеров не стоит.

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

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

И, наконец, не отчаивайтесь, если заказчик выбрал другого фрилансера. Ждите подходящего заказа, делайте ставки и обязательно какой-нибудь проект будет вашим!

 
Просмотров: 990 | Комментариев нет  comments