From: sadm <sadm@spnet.ru.>
Newsgroups: email
Date: Mon, 15 Jan 2007 14:31:37 +0000 (UTC)
Subject: Использование connlimit без перекомпиляции ядра в Fedora Core
Многие Fedoraводы сталкиваются со следующей проблемой: есть сервер,
который является шлюзом в интернет для некоторого количества
пользователей. Он периодически попадает в black-листы из-за того, что
зараженные вирусами пользовательские компьютеры начинают массово
рассылать спам. Для решения данной проблемы (на мой взгляд) достаточно
ограничить количество одновременных подключений к порту 25 c клиентских
компьютеров. Для этого существует замечательный модуль connlimit,
который по неизвестной мне причине не входит в rpm-ки Fedoroвских ядер
(хотя, непонятно почему, пакет iptables с давних времен собирается
Fedoroвцами с поддержкой connlimit). Я сторонник того, чтобы вся система
по максимуму состояла из rpm пакетов - так ее легче обновлять и
поддерживать (на мой взгляд). Поэтому вот мой рецепт компиляции модуля
ядра connlimit для имеющегося ядра, установленного из rpm:
Смотрим установленную версию ядра и iptables:
[root@]# rpm -q kernel
kernel-2.6.18-1.2200.fc5
[root@]# rpm -q iptables
iptables-1.3.5-1.2
Скачиваем kernel-2.6.18-1.2200.fc5.src.rpm и iptables-1.3.5-1.2.src.rpm с
http://download.fedora.redhat.com/pub/fedora/linux/core/
cd /usr/src/patch-o-matic-ng-20061006
./runme --download connlimit
Жмем "y"
Теперь конфигурируем и компилируем модуль ядра:
cd /usr/src/linux
make menuconfig
Идем в Networking ---> Networking options --->
Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration --->
IP: Netfilter Configuration --->
Жмем "М" возле пункта "Connections/IP limit match support" (внизу страницы)
Выходим из меню конфигурирования, не забыв при этом сохранить новую конфигурацию ядра
Запускаем компиляцию ядра:
make
Делаем странную вещь - ждем, пока откомпилируются
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CC init/main.o
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
CC init/do_mounts.o
CC init/do_mounts_rd.o
CC init/do_mounts_initrd.o
CC init/do_mounts_md.o
LD init/mounts.o
CC init/initramfs.o
CC init/calibrate.o
LD init/built-in.o
HOSTCC usr/gen_init_cpio
GEN usr/initramfs_data.cpio.gz
AS usr/initramfs_data.o
LD usr/built-in.o
и затем прерываем компиляцию ядра с помощью Ctrl-C
теперь запускаем компиляцию модулей нетфильтра:
make M=net/ipv4/netfilter/
После завершения компиляции копируем модуль в директорию модулей ядра и обновляем дерево
зависимостей модулей:
cp net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.18-1.2200.fc5/kernel/net/ipv4/netfilter/
chmod a+x /lib/modules/2.6.18-1.2200.fc5/kernel/net/ipv4/netfilter/ipt_connlimit.ko
depmod -a
Теперь пробуем загрузить модуль ядра:
insmod ipt_connlimit.ko
Если ошибок не возникло - все в порядке, можно задавать лимиты на количество одновременных
подключений, например так:
# Разрешаем только одно одновременное соединение с одного айпи на smtp
iptables -A FORWARD -p tcp --syn --dport smtp -m connlimit --connlimit-above 1 -j DROP
387 Прочтений • [Использование connlimit без перекомпиляции ядра в Fedora Core (limit fedora linux iptables speed shaper ratelimit)] [08.05.2012] [Комментариев: 0]