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

Protocol filter(PF) от DDos атак на сервер под freeBSD

Защита от Doss-атак для web сервера
1) Фаервол
2) И грамотно настроенный веб сервер!

Пример:
1) Фаерволл PF.

Обозначаем фильтер протоколов в rc.conf
pf=YES
pf_rules=/etc/pf.conf

Код: /etc/pf.conf
set block-policy drop # Если кто то попал под правило block молча откидаем его пакеты
set fingerprints "/etc/pf.os" # Файл с всеми извесными ОС, PF может резать людей по версиям ОС
set loginterface $ext_if # С какого интерфейса статистику снимать будем.
set optimization normal # Нормализация хождения трафика
scrub in all # Нормализация входящего трафика
scrub out all # Нормализация исходящего трафика

table persist # Создаём таблицу DDOS
block quick from to any # Всех кто в таблице DDOS рубим и не смотрим на остальные правила

# Защита от ДДОС атак на WWW сервер
pass in on $ext_if proto tcp from any to $int_if port www flags S/SA keep state
( max-src-conn-rate 50/5, overload flush)
# Если кто то хочет создать больше чем 50 линков за 5 сек добавлять в таблицу DDOS

Посмотреть всех кто попался на удочку так pfctl -t ddos -T show а очистить таблицу так pfctl -t ddos -T flush

Мини мануал по командам PF
pfctl -f /etc/pf.conf - Загрузить правила из файла /etc/pf.conf
pfctl -nf /etc/pf.conf - Проверить валидность правил из файла /etc/pf.conf - НО НЕ ЗАГРУЖАТЬ
pfctl -Nf /etc/pf.conf - Загрузить только правила NAT
pfctl -Rf /etc/pf.conf - Загрузить только фильтрующие правила
pfctl -sn - Посмотреть активные правила NAT ТРАНСЛЯЦИИ
pfctl -sr - Посмотреть активные правила фильтра
pfctl -ss - Показать текущую таблицу состояний (state table)
pfctl -si - Показать статистику
pfctl -sa - Показать ВСЁ что можна

Другие примеры PF:

# added by defsite.ru

set loginterface em0
set optimization aggressive
set limit {states 120000, frags 10000}
set limit src-nodes 70000

set skip on { lo0 }

pass in quick on em0 inet proto tcp from any to 77.91.229.144 port 80 flags S/SA synproxy state (max 100000, source-track rule, max-src-states 60, max-src-conn 50, if-bound, adaptive.start 60000, adaptive.end 120000)

Дополнительная информация по PF

2. web server
Устанавливаем в паре 2 веб сервера Nginx and Apache
На порту 80 работает Nginx а на 8080 работает Apache
Дуступ к порту 8080 разрешен только из интерфейса lo0.

И того Nginx выступает в качестве кешырующего веб сервера а апач в качестве выполняймого.
И вот когда Вас ДОСЯТ или ДДОСЯТ, Nginx первый раз берет страничку у апачаИ того Nginx выступает в качестве кешырующего веб сервера а апач в качестве выполняймого.
И вот когда Вас ДОСЯТ или ДДОСЯТ Nginx первый раз берет страничку у апача а второй и все последующие отдайот из кеша и сразу рубает линк с ДДОСЕРОМ, а второй и все последующие отдаёт из кеша и сразу рубает линк с ДДОСЕРОМ.

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

Виртуализация сервера на KVM

Задача: установить debian5 и создать на нем виртуализацию windows srv 2003 с помощью KVM.
Установка KVM:
apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers pkg-config libgnutls-dev libpci-dev

Установка qemu:
apt-get install qemu

Создание образа на HDD:
qemu-img create -f qcow2 /usr/local/vm/win2003.img 20G
Создается образ /usr/local/vm/win2003.img размером в 20Гб

Установка windows 2003:
qemu -cdrom /dev/hda -hda /usr/local/vm/win2003.img -m 1288 -boot d -kernel-kqemu -no-kqemu -vnc :0 -localtime -daemonize
Выделил ОЗУ 1288МЬ
-daemonize не держать процесс до завершения работы виртуальной машины.

Подключение к образу через VNC
При нажатие F8, меню сочетания клавишь.

Для подключение к установленному windows через rdp:
rdesktop 192.168.X.X:3389 -u admin -f -a 24
-f это fullscreen, a 24 - 24 бит цветности
crl+alt+enter - свернуть fullscreen

Чтобы виртуальная машина была в сети, необходимо создать для неё виртуальный интерфейс и сделать мост между им и реальном lan.

Для этого был написан скрипт /etc/script-ifup:

#!/bin/sh
ifconfig eth1 down
ifconfig eth1 0.0.0.0 up
brctl addbr mybridge
brctl addif mybridge eth1
ifconfig mybridge 192.168.7.22 netmask 255.255.255.0
route add default gw 192.168.7.1
ifconfig mybridge up
sleep 2
vde_tunctl -b
ifconfig tap0 0.0.0.0 promisc up
brctl addif mybridge tap0
sleep 2
echo "most rabotaet)"

В win2003 прописываем сетевые настройки.

Виртуальный сервер win2003 теперь в сети. Рекомендую сделать копию образа 2003.

P.S.
1. Запускаем сервер.
2. Запускаем скрипт для виртуального инетрфейста или моста(можно скрипт в автозапуск поставить).
3. Запускаем виртуальную машину с виртуальным интерфейсом:
qemu -hda /usr/local/vm/win2003.img -kernel-kqemu -net nic,model=rtl8139 -net tap,ifname=tap0 -vnc :0 -m 758 -daemonize