Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 15:09 Здравейте.
Опитвам се да напиша правила за IPTABLES на едно малко сървърче. Инсталирал съм си Fedora Core 4, и IPTABLES 1.3.0, на сървъра работят Apache, MySQL, SSH, FTP, Postfix. Искам да направя следното: 1. Да има безусловен достъп от Интернет до Apache, Postfix и FTP 2. Само аз (конкретно IP) да имам достъп през Интернет до SSH и MySQL За целта съм избрал политиката "Забрана на всичко, и след това разрешаване само на необходимото" Ето и самите правила на IPTABLES:
Използвах един On-line скенер за отворени портове и установих, че въпреки политиката по подразбиране DROP за веригата INPUT, и че не съм обявил никъде порт 3306 - той все пак е отворен за външния свят. Някой може ли да ми даде съвет или да подскаже къде бъркам ? Титла: Iptables с drop по дефолт - отворени портове Публикувано от: KPETEH в May 31, 2007, 16:49 Добре нали имаш стартиран MySQL вероятно ти е отворен порта заради самата услуга.
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tony1975 в May 31, 2007, 16:51 Здрасти колега
Можеш да пробваш това: // Приема всички tcp на порт 3306 от localhost iptables -A INPUT -i lo -p tcp --dport mysql -j ACCEPT // Приема всички udp на порт 3306 от localhost iptables -A INPUT -i lo -p udp --dport mysql -j ACCEPT // Приема tcp на порт 3306 от allowed_ip iptables -A INPUT -i eth0 -p tcp --dport mysql -s allowed_ip -j ACCEPT // Приема udp на порт 3306 от allowed_ip iptables -A INPUT -i eth0 -p udp --dport mysql -s allowed_ip -j ACCEPT [...] всички други правила нататък... // drop-ване на всички други пакети iptables -A INPUT -j DROP Пиши ми, ако съм ти помогнал Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 17:42 Като гледам не би трябвало да е отворен този порт. Единствено ми прави впечатление, че имаш два адреса в бан списъка, които са с ACCEPT, а не DROP ...
# Drop hijackers !!! .... -A INPUT -i eth0 -s 194.242.112.72/32 -j ACCEPT -A INPUT -i eth0 -s 212.241.246.148/32 -j ACCEPT .... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 17:48 Написал съм ги по инерция тези двамата в бан-списъка да са ACCEPT :-) Благодаря за напомнянето.
Обаче все още не мога да си обясня защо порта ми стои отворен ?! Каква е тази магия ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 17:51 Какво имаш на тези портове?
-A INPUT -i eth0 -p tcp -m tcp --dport 2120 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 909 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 30000:30024 -j ACCEPT И пробвай да махнеш -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT и да кажеш дали порта е отворен тогава. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 18:28 На 2120 - FTP, на 909 - Webmin, 30000-30024 са ми за data-каналите на FTP-то (за да може да се връзват хора, които седят зад NAT и им се налага да ползват PASV режим на трансфер)
Като махна -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT се получават тайм-аути. Например като се опитам да заредя уеб-страница, се появява бял екран, и чак след 5-6 секунди се зарежда съдържанието. Или пък ако пробвам с TELNET да се вържа към порт 25, получавам отговора 220 Greeting Postfix пак след 5-6 секунди. А ако го върна обратно, всичко си е наред - няма таймаут-и. И в двата случая обаче порт 3306 си остава достъпен отвън ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 18:49 А като спреш напълно mysqld пак ли ти дава този тест, че е отворен порта?
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 18:57 Е, не разбира се - нали като го спра, никой не отваря порта - няма LISTEN. Въпроса е, че като съм го пуснал, трябва да е достъпен само за мен - а не за всички, както е с останалите услуги. Демек трябва да дропи всички пакети, които не идват от моето IP.
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: daxen в May 31, 2007, 19:12
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 19:33
Идеята ми беше да видим до колко са достоверни резултатите от този тест ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 19:35
Това със сигурност ще работи (както и другите предишни подобни предложения), но въпросът е, че не би трябвало да се прави това при такова построяване на защитната стена... Все пак - пробвай, да видим дали няма пак да се получи някакво такова чудо Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 19:35 Този код ще спре изцяло достъпа до MySQL - на мен ми трябва да реже всички, освен мен ;-)
В ръководството на IPTABLES изрично се указва, че таблица NAT се използва само за промяна на адресите и/или портовете на източника/получателя на пакета - а за филтрация на пакетите да се използва таблица FILTER. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 19:40
Теста си работи както трябва - на портовете, на които няма услуга, се бави по 1 минута и накрая изплюва, че порта е затворен. Ето му адреса Online Port Scanner Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в May 31, 2007, 19:48 Сетих се нещо.
Може би проблема идва от това, че имам няколко виртуални интерфейса на един физически. И тъй като в правилата съм написал -i eth0, може би не се получава съвпадение. Но пак няма логика - защото нали ако нито едно правило не съвпадне, трябва да се приложи политиката по подразбиране - която е указана като DROP. Хм .... Пробвах да махна -A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT и скенера пак показа, че порта е отворен ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 20:44 1. Пробвай експлицитно да добавиш в края:
iptables -A INPUT -j DROP както предложи tony1975 2. Все пак какво става, ако му дадеш: iptables -A INPUT -p tcp --dport 3306 -j DROP пробвай и да го сложиш съвсем в началото. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: daxen в May 31, 2007, 22:27
еми добавяш си едно правило да пуска само тебе и така ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в May 31, 2007, 23:43 Ако не се справяш - пробвай в debug mode :
сложи едно правило: -A INPUT -p tcp --dport 3306 -j LOG --log-level info --log-prefix '### SQL ###' в края, пусни си в една конзола "tail -f /var/log/messages" и пусни скенера. Ако не излезе нищо, значи вече или е DROP-нат или ACCEPT-нат (в твоя случай явно второто). Тогава придвижваш това правило с едно правило по-нагоре и пак .. и пак .. докато не откриеш колко правило всъщност ти прави мизериите Титла: Iptables с drop по дефолт - отворени портове Публикувано от: alex_c в Jun 01, 2007, 00:14 Абе, пичове, нали с правилото:
-A INPUT -i eth0 -p tcp --syn -m limit --limit 25/s --limit-burst 35 -j ACCEPT разрешава конекции по протокол TCP с честота 25 в секунда, без да е указано на кой порт става това. Не виждам къде в таблицата се указва достъп по SSH и до MySQL сървъра само от конкретно IP. За да се постигне желания ефект (заедно със защита от syn-flood), таблицата трябва да изглежда примерно така: ----------------------------------------------- *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] :syn-food - [0:0] # Enable full access from my home IP -A INPUT -s xx.xx.xx.xx/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 -A INPUT -i eth0 -p icmp -m icmp --icmp-type echo-request -j ACCEPT -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 # PROTECTION SYN flood -A INPUT -i eth0 -p tcp -m tcp --dport 25 --syn -j syn-food -A INPUT -i eth0 -p tcp -m tcp --dport 80 --syn -j syn-food -A INPUT -i eth0 -p tcp -m tcp --dport 110 --syn -j syn-food -A INPUT -i eth0 -p tcp -m tcp --dport 2120 --syn -j syn-food -A INPUT -i eth0 -p tcp -m tcp --dport 909 --syn -j syn-food -A INPUT -i eth0 -p tcp -m tcp --dport 30000:30024 --syn -j syn-food -A INPUT -i eth0 -p tcp -m tcp --syn -j REJECT -A syn-food -m limit --limit 25/s --limit-burst 35 -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 ACCEPT # PROTECTION Ping of Death -A INPUT -i eth0 -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 3 -j ACCEPT # 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 ACCEPT -A INPUT -i eth0 -s 212.241.246.148/32 -j ACCEPT -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 -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT ----------------------------------------------- По принцип може и без реда: -A INPUT -i eth0 -p tcp -m tcp --syn -j REJECT но без него при сканиране ще бъде открито, че всички останали портове са филтрирани, докато така ще се върне ICMP съобщение: destination port unreachable. P.S. Сега видях, че съм именовал веригата за ограничаване на SYN пакетите syn-food, а не syn-flood (не че е от значение, но някак си храната няма място тук ), но ме мързи да го поправям Best wishes! Alex Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 00:18
Имаме победител tmcdos, струва ми се, че дължиш една бира на alex Сега по темата: Аз по принцип не съм привърженик на -P директивите ... Предпочитам всяка верига, която се занимава с даден проблем да извършва две действия - или DROP/REJECT или RETURN, но никога ACCEPT. Точно покрай такива простотии се научих на това. След като мина всякакви предпазни вериги, то чак тогава почвам да ACCEPT-вам пакети по услуги, ИП-та, мрежи и т.н. И най-накрая си добавям едно тотално DROP/REJECT правило. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 00:37 Та, по "моя" начин стената би изглеждала примерно така:
Това, което alex_c забеляза, всъщност го има и при Ping-of-Death защитата - ти ВЕЧЕ си приел тези пакети по-горе. Както виждаш използвам много малко ACCEPT правила при това само в края. За DROP правилото винаги си сигурен, че не искаш пакета да продължи по нататък, независимо какво има след него. За ACCEPT правилата обаче, това съвсем не е така - винаги може да се появи нещо след него, което да иска да отхвърли този пакет по друг признак Титла: Iptables с drop по дефолт - отворени портове Публикувано от: alex_c в Jun 01, 2007, 09:14 @VladSun:
За ACCEPT правилата обаче, това съвсем не е така - винаги може да се появи нещо след него, което да иска да отхвърли този пакет по друг признак Не съм съгласен с това - след като веднъж един пакет е ACCEPT-нат, той излиза от текущата таблица (filter, nat или mangle) и повече не се проверява за съответствие от правилата след реда, с който е извършено ACCEPT-ването. Не случайно (или може би е улучил мястото ) tmcdos е сложил правилото: -A INPUT -s xx.xx.xx.xx/32 -i eth0 -j ACCEPT в началото на таблицата, а именно, за да приемат и да не се проверяват повече пакетите със сорс адрес xx.xx.xx.xx/32 повече. Best wishes! Alex Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в Jun 01, 2007, 11:22 Съвсем нарочно и преднамерено съм си сложил "вратичката" още в началото, това го научих малко по-отдавна
Алекс, наистина заслужи бирата - остава само да я изпием. За пореден път се убеждавам колко е важен реда на правилата. Влади, аз продължавам да съм убеден, че DROP-ACCEPT начина на работа позволява да имаш по-малко правила и (поне на мен) ми е по-лесен да си го представя, отколкото ACCEPT-DROP. Както винаги - въпрос на лични предпочитания. Между другото, ти с коя версия на IPTABLES си, използваш ли някакви допълнителни пачове ? Защото доколкото зная, до версия 1.3.1 опцията LIMIT не може да работи с инверсия:
този код не работи. Преработих си малко правилата, и сега вече порт 3306 е отворен само за мен и никой друг.
Само защитата от сканиране на портове още не съм измислил как да я направя, но ще се справя. Благодаря ! Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 11:43 Има малки изключения но като цяло сте изписали три страници глупости.
Ако говорим само за ipv4, "standalone" машина и SPI, iptables скрипта ти *трябва* да изглежда така:
Файлът /etc/sysctl.conf трябва да изглежда *поне* така:
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: alex_c в Jun 01, 2007, 13:08 @teh
Не разбирам какво имаш против ограничаването на наводняването със SYN пакети? Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в Jun 01, 2007, 13:30 Алекс, не му се връзвай на teh, вече разбрах откъде ми идва проблема, и дори си го оправих
Благодаря ти. teh, не се сърди - но твоето решение не ми върши работа. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 13:46 Просто е още един начин да се прецакаш ;-)
Ти от къде си сигурен, че с това правило няма да спреш легитимни syn пакети преди още да са напълнили опашката (DoS yourself)? Или обратното - опашката вече ще е пълна (DoS attack successful) пък твоето правило няма да влезе в сила защото всеоще не е достигнат желания rate? Този тип ограничение изисква много подробно тестване от всевъзможни източници (различни в отношение "network distance") на всеки един хост върху който ще го прилагаш и пак накрая е твърде вероятно нищо полезно да не си направил а напротив - точно обратното. Именно против syn flood хората (DJB) са измислили т.нар. syn cookies(1). Имат няколко недостатъка но при положение, че syn cookies проверките влизат в сила единствено когато опашката се напълни и включват проверката за следващите постъпили syn пакети (вместо да ги drop-ват както ще стане ако не е вкл. tcp_syncookies), тогава това *Е* по-доброто решение. 1 - http://en.wikipedia.org/wiki/Syncookies Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 13:51 @tmcdos:
"Проблема си е във клуба". За вършене - върши. Проблема е, че не можеш да го разчетеш въпреки, че е в пъти по изчистено, просто и функционално от предните "опити". Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 14:11 @alex_c
Звучиш малко по разумен. Помисли върху това: Имаш една опашка с определен максимален размер. Когато опашката се запълни - не се допускат повечете хора/единици/пакети/топчета/.../ и се отпращат. Отбелязвам, че и в този случай никой не прави проверка легитимни ли са или не хората. Със правило като твоето (или на който е там) казваш следното: "Няма да пускам по повече от 5 човека на минута". Тук също не правиш проверка дали са легитмни или не. Какво можеш да постигнеш с наложеното правило? Ще държиш опашката наполовина пълна и другите хора ще ги отпращаш или пък опашката ще е постоянно пълна и хората ще бъдат отпращани защото е пълна а твоето правило няма да влезе в сила защото опашката се пълни цялата въпреки, че пускаш само по 5 човека на минута. Като и тук никъде не проверяваш легитмни ли са или не хората на опашката. Много по добре звучи да няма такива правила а просто когато опашката се напълни, вместо да отпращаш хората да започнеш да ги проверяваш дали са легитимни докато опашката отново се върне обратно на максимално допустимия размер. Отбелязвам, че последното не е 100% решение на проблема , но е доста по логичен ход от колкото сам да се прецакваш. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 14:43 Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 14:48 @teh
Прав си за DoS с така направена syn-flood защита. То за това хората са измислили hashlimit. Но тъй като ТИ си ЕДИНСТВЕНИЯ (ДЪ УАН) разбирач тука, аз спирам да пиша защото по незнайни за мен причини (което е естествено при условие, че аз не съм ДЪ УАН) пак ще ме обвиниш в сляпо преписвачество ... Айде, живей си весело! Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 15:00 "The one" може да се каже на този който е измислил решението. И това определено не съм аз. Карам ви се, защото се занимавате с глупости (даже и ги препоръчвате на трети лица) след като има вече готово решение (от 1997, т.е. десетилетие) вместо да се занимавате с нещо за което няма решение.
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в Jun 01, 2007, 15:12 @teh
Съгласих се с теб, че SYN-cookies са добро решение. Също и със забележката, че никъде не се проверят хората/пакетите/топчетата ... кой е легитимен, и кой не е. Малко коментари по
send_redirects=0 accept_redirects=0 Първият параметър изобщо не влияе, ако срещу теб започне DoS-атака. Влияението на втория е спорно, и обикновено препоръчват да се оставя в 1, особено ако хоста се намира в мрежа с множество възможни маршрути. log_martians=1 Това само би спомогнало на целите на атакуващия, особено ако използва невалидни значения в адреса на изпращача - всеки пакет ще се логва. rp_filter=1 Това също не помага за защита от DoS, защото изисква нападнатия хост да проверява обратния път до атакуващия, допринасяйки за допълнително натоварване на мрежата. mc_forwarding=0 Това влияе само на пакетите с групов адрес, и на нормален хост изобщо не работи - само на маршрутиратор. Методът с --limit правилото, който аз бях използвал, е нож с две остриета - именно защото не проверява кой пакет е легитимен, и кой не е. И всъщност в някои случаи по-скоро помага на атакуващия, отколкото да предпазва. По принцип общи правила за защита от DoS май не съществуват, и всеки сам се спасява Ако атаката се състои в тъпо запълване на външния канал с входящи пакети, няколко правила на моя сървър няма да помогнат кой знае колко. Ако атаката е конкретно към дадена машина, се опитва да се идентифицира паразитния трафик, и да се филтрира. Това, което аз наблюдавам при мен, е че периодично с автоматични скенери за дупки в сигурността се сондира WEB-сървъра, с идеята да бутнат някакъв троянец и да вземат машината под контрол за по-нататъшна "дообработка" Най-често ме проверяват за присъствието на:
Но това вече излиза извън темата на разговора Примерен скрипт за IPTABLES - според мен е тежък, но може да послужи да си извади човек по нещичко оттук-оттам. TBF пач за разширяване на възможностите на limit и hashlimit за инверсия в правилата. На The Open Net има доста интересни статии. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 15:22
За запълването на входящия канал - определено няма спасение. Но за ДоС има ... В днешно време ДДоС е големият ужасТ. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 15:23 Последния ти "Примерен код" никой никъде в тази тема май не го е пускал. Както и никой никъде не е казал, че става въпрос само за syn flood/DoS защита. Живи и здрави и да не се напивате много довечера ;-)
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: tmcdos в Jun 01, 2007, 15:31 Добре
Приемам темата за приключена успешно с ваша помощ, приятели. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 15:58 @VladSun
Изтриха коментарите от статията ти, иначе ти бях написал много прост пример как да се DoS-неш сам. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 15:59
Не са - просто са с оценка по-малка от 1 и не се виждат по подразбиране ... Чакам ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 16:07 Ще го пусна тук:
"Да речем, че за твоя "brute force ssh protection" използваш следната логика: От всеки един адрес не позволявам tcp/22 връзка ако той се е опитал или е направил такава за интервал по малък от 60 секунди". Най-просто казано. Приемаме и условието, че въпросната машина е колокирана в някакъв data център. Също и, че ти прекарваш по-голямата част от времето си в някаква корпоративна мрежа използваща rfc1918 адреси т.е. в най-общия случай си зад NAT и/или proxy. По този начин в повечето случаи всичко в тази мрежа което прави някакви заявки на вън се вижда сякаш идва от един адрес. Представяме си, че твой колега който иска да се пошегува с теб пуска един скрипт който на 10 секунди прави (или се опитва) връзка до въпросната машина в data центъра на порт tcp/22. Ти кога ще успееш да направиш легитимна връзка до машината с цел да отстраниш спешно възникнал проблем от мрежата в която прекарваш по-голямата част от деня си? Това не е ли типичен пример за DoS поради зле написан firewall? После как ще обясниш на шефа си (който е цъкал с език докато трета седмица си писал firewall-a "брей тоя нашия админ колко е умен и колко много работи по тоя firewall" и ти си го убеждавал, че това е the ultimate firewall) защо не си можал да влезеш на машината и да решиш проблема? Просто не се прави на това ниво защитата от brute force." Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 16:12 Хех, аз ти казах без IP spoofing, а ти ми написа пример с NAT
"... Също и, че ти прекарваш по-голямата част от времето си в някаква корпоративна мрежа използваща rfc1918 адреси т.е. в най-общия случай си зад NAT и/или proxy. По този начин в повечето случаи всичко в тази мрежа което прави някакви заявки на вън се вижда сякаш идва от един адрес..." Това не означава ли, че си в "white list"? Сега ще кажеш - да, ама IP то се взима динамично ... И аз ще ти отговоря: Корпоративна мрежа с NAT и динамично IP? Всъщност има ли още и домашни потребители, които да са зад NAT?!?! PS: "след като има вече готово решение (от 1997, т.е. десетилетие)" Я, сега да видим с твоите любими syn-cookies как ще се оправиш в същия този случай, но при шеговит колега със syn-flood. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 16:22 Домашни почти не, но корпоративни има много. Я се сетил да сложи white list, я не
Според мен по удачния начин за brute force защита ще е на application ниво. Т.е. ssh/telnet/.../ или който и да е там демон просто преди да поиска някаква аутентикация да изчака 2-5 секунди след осъществяването на връзката. Другото вече си е работа и задължение на потребителя/админа/.../ - дължина на ключове, пароли, пас-фрази и т.н. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 16:32
по 1. - Е, аз за какво съм сложил тоя "white list" навсякъде? по 2. - Съгласен до някъде, но мисля, че много се отклоняваш от същинската тема на статията "Адаптивна защитна стена". Показвам как се осъществява адаптация на защитна стена при откриването на атака. Никъде не съм казал: задължително използвайте идентифицирането за тази, тази и тази атака. Всеки е в свободата си да избере какви атаки да предизвикват адаптацията... Приеми го като framework. ПП: Все пак има малка разлика - ако осъществяваш bruteforce защитата на application level по този начин, то няма да защитиш машината от други видове атаки към машината от същия хост. Титла: Iptables с drop по дефолт - отворени портове Публикувано от: gat3way в Jun 01, 2007, 16:37 Що си мислите, че syncookies са нещо толкова прекрасно? Според мен, не са. Може да не "чупят" протокола, ама чупят прекрасните му възможности за congestion avoidance и за "самонагаждане" спрямо скоростта на връзката. Ако предоставяш някаква по-използвана услуга, тогава syncookies повече пречат на нещата, отколкото помагат. И апропо, ядрото "информира" сървърният сокет за наличието на нова конекция чак когато тя бъде счетена за "established" , а не както е било в пред-2.4 дните, при получаване на SYN пакет. Последното доста подобрява ситуацията при една SYN атака, защото не се заделят напразно ресурси за конекции, които никога няма да обслужват легитимни клиенти.
И между другото, много полезно е когато колокираш машина в някой дейтацентър, машината ти да има мениджмънт процесор като например iLO. Не само защото някой може да DoS-не системата, но и поради много други фактори. Както и да е... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 16:54 Това за чупенето съм го споменал (губиш window scaling и т.н.) както и, че не е 100% решение (но пък клони към 99). Но при положение, че не са активни (syn cookies) когато опашката се напълни - новите пакети се drop-ват. А когато са активни, пакетите се третират по абсолютно същия начин както и без syn cookies до момента в който опашката се запълни и *чак тогава* започват проверките за новодошлите syn пакети които иначе щяха да бъдат drop-нати. И това протича докато опашката не падне с 1 пакет под максималния и размер. Прочети thread-a който дадох ... има примерен код, даже и Alan Cox се обажда на едно място.
За iLO-то съм съгласен - много е удобно. Но самата идея, че си стигнал да ползваш iLO-то заради зле написания си firewall е притеснителна Титла: Iptables с drop по дефолт - отворени портове Публикувано от: VladSun в Jun 01, 2007, 17:05
Ти така и не се обоснова убедително ... Е ли пък да ми отговориш за любимите ти сини бисквитки ... Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 17:25 Отговорих ти. Но the mighty moderators пият бира сигурно вече.
Титла: Iptables с drop по дефолт - отворени портове Публикувано от: teh в Jun 01, 2007, 17:29 Ето го и тук:
'Пишем на две места и почва да става некомфортно (тук и форума) ;-) Ще отговоря само на последното: "Я, сега да видим с твоите любими syn-cookies как ще се оправиш в същия този случай, но при шеговит колега със syn-flood." Няма проблем! Въпреки, че опашката е пълна (следователно syn cookies проверката е активна вече), когато АЗ се опитам да направя връзка с дадената машина тя ще върне на рутера пакет със cookie (3 bytes sequence number) който connection tracking механизма на рутера ще прехвърли на мен (защото следи какво правя) а не на колегата който флуди и аз наобратно ще му върна пакет със същия sequence. Ще завършим 3 way handshake-а и от тук нататък вече не ни интересува даже syn опашката и комуникираме нормално с условието, че connection tracking-а на локалния рутер си върши работата, а той го прави.' |