31
|
Linux секция за напреднали / Хардуерни и софтуерни проблеми / Isp-serv за traffic shaping
|
-: Nov 23, 2007, 01:13
|
Докато се ровех в Yandex, търсейки статия за Traffic Shaping, попаднах на нещо, което ме заинтригува. Статията е на руски език. За хората от предното поколение (като мен) това не е проблем - но малцина от по-младите го владеят. Надявам се информацията да е полезна на повече хора. Всъщност това е цикъл от 7 статии, в които много подробно се описват стъпки за прекомпилиране на ядрото, добавяне на пачове от Patch-o-Matic към IPtables (най-вече Layer7, GeoIP, ConnLimit, Quota), инсталиране на IProute2, IPsentinel, добавяне на IMQ и ESFQ, конфигуриране на IPtables и самия Traffic Shaping. Целта е да се получи олекотен "пакет" само с най-необходимите драйвери и модули, и оптимизация на някои скриптове за по-бърз BootUp процес. Адресът на това богатство е ISP-servДосега съм го правил върху 2 машини. Едната е у дома, със следните версии: 1. Ядро - 2.6.16.18 2. IPtables - 1.3.5 3. IProute2 - 2.6.16 4. IPsentinel - 0.12 (не съм го инсталирал) 5. Patch-o-matic - 20060511 и 20060525 6. ESFQ - 2.6.15.1 7. Layer7 - 2.2 Работи върху Pentium III/450 MHz повече от година и половина, държи се задоволително (не съм правил задълбочени тестове, но успешно разделя трафика между мен и брат ми). Втората е в офиса: 1. Ядро - 2.6.21 2. IPtables - 1.3.7 3. IProute2 - 2.6.20 4. Patch-o-matic - 20070619 5. ESFQ - 2.6.21.4 6. Layer7 - 2.9 Наложи се да се поровя в Google за разни пачове на пачовете в Patch-o-Matic, тъй като NETFILTER преминава от IPTABLES към XTABLES, и интегрира някои от модулите от Patch-o-Matic в ядрото. При нужда ще ги предоставя допълнително. Все още не съм проверил доколко успешно разделя трафика.
|
|
|
32
|
Linux секция за напреднали / Хардуерни и софтуерни проблеми / Postfix проблем
|
-: Nov 23, 2007, 00:48
|
Тези три реда в main.cf се карат помежду си. Избери си един от тях - най-добре първия - и махни другите два реда. Примерен код | smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks, reject_unauth_destination smtpd_recipient_restrictions = regexp:/etc/postfix/access_regexp smtpd_recipient_restrictions = pcre:/etc/postfix/access_regexp
|
Ако ти даде други грешки в LOG-файла, пиши - ще помагаме.
|
|
|
37
|
Linux секция за начинаещи / Настройка на програми / Postfix - защита от dictionary атака
|
-: Jul 26, 2007, 12:41
|
Привет. От време на време (3 пъти за година и половина) получавам истинска буря от атаки, насочени към налучкване на пощенски акаунти. Започва се по азбучен ред, и всяко писмо идва от различен IP-адрес (почти всички си имат прав и обратен DNS запис) Сървъра ми е Postfix 2.2.4 на Fedora Core 4. Има ли начин някакси да огранича такива атаки или е неспасяемо ?
|
|
|
39
|
Linux секция за начинаещи / Настройка на програми / Iptables с drop по дефолт - отворени портове
|
-: Jun 01, 2007, 15:12
|
@teh Съгласих се с теб, че SYN-cookies са добро решение. Също и със забележката, че никъде не се проверят хората/пакетите/топчетата ... кой е легитимен, и кой не е. Малко коментари по Примерен код | /sbin/sysctl -w net.ipv4.conf.all.send_redirects=0 /sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0 /sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0 /sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0 /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 /sbin/sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 /sbin/sysctl -w net.ipv4.conf.all.log_martians=1 /sbin/sysctl -w net.ipv4.conf.all.rp_filter=1
|
send_redirects=0 accept_redirects=0 Първият параметър изобщо не влияе, ако срещу теб започне DoS-атака. Влияението на втория е спорно, и обикновено препоръчват да се оставя в 1, особено ако хоста се намира в мрежа с множество възможни маршрути.
log_martians=1 Това само би спомогнало на целите на атакуващия, особено ако използва невалидни значения в адреса на изпращача - всеки пакет ще се логва.
rp_filter=1 Това също не помага за защита от DoS, защото изисква нападнатия хост да проверява обратния път до атакуващия, допринасяйки за допълнително натоварване на мрежата.
mc_forwarding=0 Това влияе само на пакетите с групов адрес, и на нормален хост изобщо не работи - само на маршрутиратор.
Методът с --limit правилото, който аз бях използвал, е нож с две остриета - именно защото не проверява кой пакет е легитимен, и кой не е. И всъщност в някои случаи по-скоро помага на атакуващия, отколкото да предпазва.
По принцип общи правила за защита от DoS май не съществуват, и всеки сам се спасява '> Ако атаката се състои в тъпо запълване на външния канал с входящи пакети, няколко правила на моя сървър няма да помогнат кой знае колко. Ако атаката е конкретно към дадена машина, се опитва да се идентифицира паразитния трафик, и да се филтрира.
Това, което аз наблюдавам при мен, е че периодично с автоматични скенери за дупки в сигурността се сондира WEB-сървъра, с идеята да бутнат някакъв троянец и да вземат машината под контрол за по-нататъшна "дообработка" Най-често ме проверяват за присъствието на:
Примерен код | blog drupal phpgroupware xmlrpc xmlsrv awstats mambo dbadmin myadmin sysadmin webadmin PMA horde
|
Но това вече излиза извън темата на разговора '>
Примерен скрипт за IPTABLES - според мен е тежък, но може да послужи да си извади човек по нещичко оттук-оттам. TBF пач за разширяване на възможностите на limit и hashlimit за инверсия в правилата.
На The Open Net има доста интересни статии.
|
|
|
41
|
Linux секция за начинаещи / Настройка на програми / Iptables с drop по дефолт - отворени портове
|
-: Jun 01, 2007, 11:22
|
Съвсем нарочно и преднамерено съм си сложил "вратичката" още в началото, това го научих малко по-отдавна '> Алекс, наистина заслужи бирата - остава само да я изпием. За пореден път се убеждавам колко е важен реда на правилата. Влади, аз продължавам да съм убеден, че DROP-ACCEPT начина на работа позволява да имаш по-малко правила и (поне на мен) ми е по-лесен да си го представя, отколкото ACCEPT-DROP. Както винаги - въпрос на лични предпочитания. Между другото, ти с коя версия на IPTABLES си, използваш ли някакви допълнителни пачове ? Защото доколкото зная, до версия 1.3.1 опцията LIMIT не може да работи с инверсия: Примерен код | -A TCP -p tcp --syn -m ! limit --limit 25/s --limit-burst 35 -j DROP -A TCP -p tcp --syn -m limit ! --limit 25/s --limit-burst 35 -j DROP
|
този код не работи. Преработих си малко правилата, и сега вече порт 3306 е отворен само за мен и никой друг.
Примерен код | *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT
*filter :FORWARD DROP [0:0] :INPUT DROP [0:0] :OUTPUT ACCEPT [0:0] :protect - [0:0]
-A INPUT -s хх.хх.хх.хх/32 -i eth0 -j ACCEPT -A INPUT -p all -s localhost -i eth0 -j DROP -A INPUT -p all -s localhost -i eth1 -j DROP -A INPUT -i lo -j ACCEPT
# PROTECTION port scanner #-A INPUT -i eth0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 3/s --limit-burst 5 -j REJECT --reject-with icmp-host-unreachable
# Drop hijackers !!! -A INPUT -i eth0 -s 81.169.186.45/32 -j DROP -A INPUT -i eth0 -s 84.170.202.66/32 -j DROP -A INPUT -i eth0 -s 203.172.213.122/32 -j DROP -A INPUT -i eth0 -s 194.242.112.72/32 -j DROP -A INPUT -i eth0 -s 212.241.246.148/32 -j DROP -A INPUT -i eth0 -s 204.13.82.60/32 -j DROP -A INPUT -i eth0 -s 85.140.156.23/32 -j DROP -A INPUT -i eth0 -s 213.234.30.79/32 -j DROP -A INPUT -i eth0 -s 87.106.12.174/28 -j DROP -A INPUT -i eth0 -s 213.91.242.188/32 -j DROP -A INPUT -i eth0 -s 87.126.147.86/32 -j DROP -A INPUT -i eth0 -s 217.160.23.161/32 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 110 -j protect #-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 2120 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 909 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 5222:5223 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 5269 -j protect -A INPUT -i eth0 -p tcp -m tcp --dport 30000:30024 -j protect # Should be last in this block -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# PROTECTION SYN flood -A protect -i eth0 -p tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 100/s --limit-burst 200 -j ACCEPT # There is no need for the next rule, since if packet does not match the rule above, it will leave chain PROTECT # and return back to the originating INPUT chain, where a DROP by default will be made #-A protect -i eth0 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT --reject-with icmp-host-unreachable
# PROTECTION Ping of Death -A INPUT -i eth0 -p icmp -m icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 3 -j ACCEPT # Accept all ICMP answers, hopefully they do not need further processing # but this is not tested against DoS attacks -A INPUT -i eth0 -p icmp -m icmp --icmp-type echo-reply -j ACCEPT -A INPUT -i eth0 -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT -A INPUT -i eth0 -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT # if this is Ping-of-Death or something similar, it will not match the rules above, so we handle it here -A INPUT -i eth0 -p icmp -m icmp -j REJECT --reject-with icmp-host-unreachable
COMMIT
|
Само защитата от сканиране на портове още не съм измислил как да я направя, но ще се справя.
Благодаря !
|
|
|
42
|
Linux секция за начинаещи / Настройка на програми / Iptables с drop по дефолт - отворени портове
|
-: May 31, 2007, 19:48
|
Сетих се нещо. Може би проблема идва от това, че имам няколко виртуални интерфейса на един физически. И тъй като в правилата съм написал -i eth0, може би не се получава съвпадение. Но пак няма логика - защото нали ако нито едно правило не съвпадне, трябва да се приложи политиката по подразбиране - която е указана като DROP. Хм ....
Пробвах да махна -A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
и скенера пак показа, че порта е отворен ...
|
|
|
44
|
Linux секция за начинаещи / Настройка на програми / Iptables с drop по дефолт - отворени портове
|
-: May 31, 2007, 19:35
|
Този код ще спре изцяло достъпа до MySQL - на мен ми трябва да реже всички, освен мен ;-) Цитат | iptables -t nat -A PREROUTING -p tcp -s 0.0.0.0 -d ip.to.na.servera --dport 3306 -j DROP |
В ръководството на IPTABLES изрично се указва, че таблица NAT се използва само за промяна на адресите и/или портовете на източника/получателя на пакета - а за филтрация на пакетите да се използва таблица FILTER.
|
|
|
|