1. PaNaMa
[Adm] (Off) [ 16 Sep 2013, 12:18 ]
პოსტის მიზანია დავიცვათ საკუთარი ვებ სერვერი syn flood პირდაპირი შეტევებისგან, (iptables-ის დონეზე) და რამოდენიმე რჩევა syn spoofing ის დროს ასეთი შეტევების ძირითადი მიზანია Dos -ის მიღწევა.
ეს შეტევა დაფუძვნებულია TCP კავშირის დამყარების პრინციპზე, როდესაც თქვენ შედიხართ ბროუზერით ვებ-გვერდზე – თქვენ აგზავნით SYN (synchronize) პაკეტს სერვერზე, სერვერი კი ამ დროს იმყოფება Listening რეჟიმში და უსმენს კონკრეტულ პორტს, როდესაც სერვერი მიიღებს თქვენს SYN პაკეტს ის პასუხობს SYN-ACK (synchronize acknowledged) პაკეტით და გიგზავნით ისევ თქვენ, რაც ნიშნავს, რომ მოთხოვნა სინქრონიზაციაზე მიღებულია, ამის შემდეგ თქვენ აგზავნით პროცედურის დამასრულებელ პაკეტს – ACK (acknowledge) სერვერთან და ნანატრი TCP კავშირი დგება თქვენს და დაშორებულ სერვერს შორის, სინამდვილეში ეს ისე სწრაფად ხდება, რომ თქვენ გაანალიზებას ვერ ასწრებთ გვერდი ისე იტვირთება თქვენს ბოუზერში. სწორედ ამას ეწოდება “TCP 3-Way Handshake” კავშირი ან ქართულად “სამგზის კავშირი” , ამ სამგიზს კავშირიდან თითოეული პროცესი ექვემდებარება გარკვეულ კრიტრერიუმებს მაგ: განსაზღვრულია კავშირის ვადა (time-out).
1. client——-syn——->>web server
2. client<<—syn-ack—–web server
3. client——-syn——>> web server
SYN შეტევებში არსებობს 2 ტიპის შეტევა syn-flooding, როდესაც სერვერს ვალოდინებთ პასუხის გაცემაზე და syn-spoofing ამ დროს პასუხის მიღებისას “ვემალებით” სერვერს. ანუ ვცვლით სორს მისამართს და აგონიაში მყოფი სერვერი აგზავნის პაკეტებს არარსებულ იპ მისამართებზე.
როგორ გავიგო შეტევა ?
გავიგოთ კავშირების რაოდენობა 80-ე პორტზე, განურჩევლად მისი მდგომარეობისა
netstat -n | grep :80 | wc -l
გავიგოთ SYN_RECV მდგომარეობაში მყოფი კავშირების რაოდენობა, ეს მნიშვნელოვანია ამ მდგომარეობაში არ უნდა იყვეს ბევრი კავშირი, მაგ: 1000 კლიენტის ერთდროული შემოსვლის დროს ეს პარამეტრი არ უნდა იყვეს 10 ზე მეტი 1 წთ განმავლობაში.
netstat -n -p | grep SYN_RECV | wc -l
თუ გვინდა ვუყუროთ ასეთი კავშირების ცვლილებას რეალურ დროში :
watch -n0 "netstat -n -p | grep SYN_RECV | wc -l"
თუ გვინდა ვნახოთ, რომელ IP მისამართს რამდენი კავშირი აქვს გახსნილი სერვერთან აკრიფეთ შემდეგი:
ყურადღება მიაქციეთ თითოეულ IP მისამართზე კავშირების რაიოდენობას, არ უნდა იყვეს საეჭვოზე მეტი, 1 IP მისამართისთვის 5610 კავშირი ძალიან ბევრია
არსებობს რამოდენიმე დაცვა 2.6.xx კერნელში, რომლებიც გვიცავს ასეთი შეტევებისგან მაგალითად ერთ-ერთი SYN cookies. მისი იდეა მდგომარეობს შემდეგში: როდესაც კლინტი აგზავნის SYN პაკეტს სერვერთან, სერვერი უგავნის SYN + cookies, ანუ პლიუს კიდევ ერთ cookies პაკეტს, და გაგზავნისთანავე წყვეტს კავშირს კლინტთან, შედეგად აღარ არსებობს ნახევრად ღია კავშირები სერვერზე) ანუ აღარ ელოდება შემდეგ საფეხურებს კილინტისგან კავშირის დასამყარებლად. დამატებითი cookies პაკეტი წარმოადგენს, კლინტის მისამართს, კლინტის პორტს, კლინტის თანმიმდევრობას*, სერვერის მისამართს, სერვერის პორტს და + საიდუმლო ჰეშს.
თუ ამის შემდეგ კლინტი გამოაგზავნის ACK პაკეტს, სერვერი თავიდან გამოითვლის cookies მიმდევრობებს და შეადრებს ემთხვევა თუ არა ძველ გაგაზავნილ SYN-ACK მოთხოვნას. თუ ემთხვევა კავშირი დადგება. რეალურად როგოც ჟღეს ისე ვერ ამართლებს ეს მეთოდი, ამ გამოთვლებსაც ჭირდება cpu რესურსები, და დრო, ბევრ Linux დისტროში ეს პარამეტრი გამორთულია, მაგრამ Feddora 1x -ში ნაგულისხმევად ჩართულია, თუ გადაწყვეტთ ამ პარამეტრის ჩართვას, მოახდინეთ შემდეგი ცვლილებები:
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
#დროებითი ჩართვა,
ან დაამატეთ ჩანაწერი /etc/sysctl.conf #მუდმივი ჩართვა
net.ipv4.tcp_syncookies = 1 [Pasuxi][Cit]|
__________ bolo redaqtireba 16 Sep 2013, 13:39; sul 1 -jer
2. PaNaMa
[Adm] (Off) [ 16 Sep 2013, 12:23 ]
თავდაცვა I - network tuning
ნაგულსიხმევად კერნელის კონფიგურაციაში არის უამრავი პარამეტრი, რომლებიც ტუნინგს ანუ ქართულად რომ ვთქვათ მომართვას ექვემდებარებიან. ქვემოთ ჩამოთვლილი იქნება რამოდენიმე პარამეტრი, რომლეთა მნიშვნელობა უნდა განსაზღვროთ თქვენი აპარატურული შესაძლებლობების მიხევით, ამ პარამეტრების მნიშვენლობები არ წარმოადგენს მაგიურ ციფრებს, თუ სწორად მოვმართავთ რამოდენიმე Newtork პარამეტრს შესაძელბელია :
1.ნახევრად ღია კავშირების რაოდენობის გაზრდა;
2.ESTABLISHED მდგომარეობაში მყოფი კავშირებსი გაზრდა;
3.ნახევრად-ღია კავშირების ადრე დახურვა; (time-out შემცირება);
4.ლოკალური პორტების დიაპაზონის გაზრდა;
5.TCP ნაკადის მეხსიერბეის ბუფერის გაზრდა;
ვხსნით საყვარელ ტექსტურ რედაქტორში ფაილს: /etc/sysctl.conf
შეგვყავს ქვემოთ ჩამოთვლილი პარამეტრები, ვანიჭებთ სასურველ მნიშვნელობას ან ვტოვებთ უცვლელად.
(ეს პარამეტრები ოპტიმიზირებულია სერვერისთვის, რომლის მეხსიერბა არის 8GB და CPU არის 8-ბირთვიანი)
ვინახავთ და თუ არ გვსურს გადატვირთვა ვუშვებთ ბრძანებას:
sysctl -p
ამის შემდეგ ახალი მნიშვნელობები შევა ძალაში. [Pasuxi][Cit]|
3. PaNaMa
[Adm] (Off) [ 16 Sep 2013, 12:24 ]
თავდაცვა II - iptables rules
syn-flooding პირდაპირი შეტევების დროს, როდესაც რეალური სორსიდან ცდილობენ შეტევას ამ შეთხვევაში ძალიან ეფექტურია iptables თავისი recent და hashlimit მოდულებით, იდეა შემდეგია: თუ შემტევი დაამაყარებს 200 კავშირს სერვერთან ერთი წამის განმავლობაში, მაქსიმალური საწყისი პაკეტების რაოდენობა, რომლებიც დაემთხვევა ამ წესს და ტოლი იქნება 4-ის დაიდროპება 15 წუთის განმავლობაში, ასევე დალოგირდება შემტევის IP მისამართები
iptables -N LOGDROP
iptables -A LOGDROP -j LOG --log-prefix "SYN Flood Detected:" --log-level 7
iptables -A LOGDROP -j DROP
iptables -A INPUT -i eth0 -m recent --name blacklist --rcheck --seconds 900 -j DROP
iptables -A INPUT -i eth0 -p tcp --syn -m hashlimit --hashlimit 200/sec \
--hashlimit-burst 4 --hashlimit-htable-expire 300000 --hashlimit-mode srcip \
--hashlimit-name testlimit -j ACCEPT
iptables -A INPUT -i eth0 -m recent --name blacklist --set -j LOGDROP
ამ დროს იბლიოკება მხოლოდ ის IP მისამართები საიდანაც შეტევის მცდელობები იყო განხორციელებული, ჩვეულებრივი IP მისამართებისთვის სერვერი განაგრძობს მომსახურებას შეუფერხებლად. [Pasuxi][Cit]|
6. PaNaMa
[Adm] (Off) [ 23 Sep 2013, 4:40 ]
mod_evasive არის აპაჩე მოდული რომელიც უზუნველყოფს HTTP DoS ან DDoS თავდასხმას სერვერზე .
მისი ინსტალაცია და კონფიგურაცია ძალიან მარტივია თუმცა ყველა დეტალს დაწვრილებით ავხსნით..
მე პირადად ძირითადად შეხება მაქვს მხოლოდ Centos Oპერაციულ სისიტემაზე და დღესდღეობით ყველაზე კარგია მგონი ვიდრე სხვა დანარჩენები debian fedora და ა.შ . ნუ თუ ვინმე სხვას იყენებს და დაგაინტერესებთ დაწერეთ და იქაც გასწავლით თუ როგორ უნდა დაყენოთ...
შევდივათ ჩვენი სერვერის მართვის პანელში SSH ში და ვიწერთ ფაილს
ამის შემდეგ გაიხსნება readme ფაილი. თუ როგორ უნდა დააყენოთ სხვადასხვა სახის სერვერებთან . მაგრამ ამ შემთხვეავში ჩვენ ვაყენებთ ცენტოს სისტემაზე სადაც გაშვებულია აპაჩე 2.0 და კონტროლ პანელი ცპანელ... მივყვებით შემდეგ ინსტრუქციას
/usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
ეს არის ის პარამეტრი თუ რამდენ კავშირზე და რა ზომის შეტევაზე გვინდა დაიბლოკოს მომხამრებლის იპ. და ასევე რა დროის განმავლობაში. სადაც უკვე ტქვენი მაილია მითითებული სერვერზე თავდასხმის დროს მაილზე მიიღებთ შეტყობინებას რომ თქვენც მოახდინოთ რაიმე სახის რეაგირება...
კიდევ არის რამოდენიმე აპაჩეს პროქსი პორტები რომელიც გვეხმარება თავიდან ავიცილოთ შეტევა და ამასაც ცოტახანში დავწერ. თუ ვინმე დაინტერესდებით ოდესმე იმედი მაქვს გამოგადგებათ [Pasuxi][Cit]|
7. Lasha(Off) [ 23 Sep 2013, 4:46 ] ციტატა: PaNaMa ასე ადვილი თუ არის მაგის თავიდან აცილება ქართულ სერვერებს რატო ექმნებათ ხოლმე მაგის რობლემა? [Pasuxi][Cit]|
ბევრი მეთოდი არსებობს შეტევის თუმცა ქართულ ჰოსტინგზებზე არც ისე დიდი შეტევები არ უნდა დაფიქსირდეს შედარებით ვიდრე უცხოურზე. რადგანაც დიდი ინტერესი არ არის საქართველოს მიმართ უბრალოდ ბევრი ჰოსტინგის მფლობელი მიანხავს როდესაც თავისი უცოდინარობის გამო სერვერი გაეთიშება და მომხმარებელს თავს აცოდებს გვდოსავენო
თუ ხარ საკმაოდ ჭკვიანი და ყურადღებიანი დამიჯერე საქართველოს დონეზე გადოსვა ურბალოდ ტეხავს
დღესაც არის ინტერნეტში გავრცელებული უფასო დოსერები და იმით ჩამოკიდებს ნებისმიერი 14 წლის ბავშვი ერთერთ უდიდეს და საქართველOში გიგანტ ჰოსტინგ პროვაიდერს ... [Pasuxi][Cit]|