გზავნილი
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 მისამართს რამდენი კავშირი აქვს გახსნილი სერვერთან აკრიფეთ შემდეგი:

netstat -ntu | tail -n +3 | awk '{print $5}' | sed -e 's/::ffff://g' \
|cut -d: -f1 | sort | uniq -c | sort -n

ყურადღება მიაქციეთ თითოეულ 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
[ like 4 ]
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-ბირთვიანი)


net.ipv4.ip_local_port_range = 1024 61000
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
net.ipv4.tcp_fin_timeout = 40
net.core.netdev_max_backlog = 5000
net.core.somaxconn = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 6144
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_sack = 0
net.ipv4.tcp_syncookies = 0


ვინახავთ და თუ არ გვსურს გადატვირთვა ვუშვებთ ბრძანებას:
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]|
4. [GURULO] (Off)
[ 16 Sep 2013, 12:35 ]
yochag! plusi shens temas! metad sachiro ramea dacva tan yvelaze magari isaa shens postshi rom dawvrilebit gaqvs yvelaperi axsnili, ise rom, verafers daamatebs kaci.
[Pasuxi][Cit]|
5. vaso.ge (Off)
[ 16 Sep 2013, 13:29 ]
kargi temaa.
[Pasuxi][Cit]|
6. PaNaMa [Adm] (Off)
[ 23 Sep 2013, 4:40 ]
mod_evasive არის აპაჩე მოდული რომელიც უზუნველყოფს HTTP DoS ან DDoS თავდასხმას სერვერზე .

მისი ინსტალაცია და კონფიგურაცია ძალიან მარტივია თუმცა ყველა დეტალს დაწვრილებით ავხსნით..


მე პირადად ძირითადად შეხება მაქვს მხოლოდ Centos Oპერაციულ სისიტემაზე და დღესდღეობით ყველაზე კარგია მგონი ვიდრე სხვა დანარჩენები debian fedora და ა.შ . ნუ თუ ვინმე სხვას იყენებს და დაგაინტერესებთ დაწერეთ და იქაც გასწავლით თუ როგორ უნდა დაყენოთ...


შევდივათ ჩვენი სერვერის მართვის პანელში SSH ში და ვიწერთ ფაილს

wget http://www.zdziarski.com/bl...ive_1.10.1.tar.gz

ამოვაარქივებთ

tar zxvf mod_evasive_1.10.1.tar.gz

შევცვალოთ დირექტორია

cd mod_evasive

ამის შემდეგ გაიხსნება readme ფაილი. თუ როგორ უნდა დააყენოთ სხვადასხვა სახის სერვერებთან . მაგრამ ამ შემთხვეავში ჩვენ ვაყენებთ ცენტოს სისტემაზე სადაც გაშვებულია აპაჩე 2.0 და კონტროლ პანელი ცპანელ... მივყვებით შემდეგ ინსტრუქციას

/usr/local/apache/bin/apxs -i -a -c mod_evasive20.c

/usr/local/cpanel/bin/apache_conf_distiller –update

ამის შემდეგ ფაილში ვცვლით პარამეტრებს თუ როგორ გვინდა დაყენდეს ის. ვხსნით ფაილს

vim /usr/local/apache/conf/includes/post_virtualhost_2.conf

და მასში შეგვყავს ჩვენი პარამეტრები მაგალითად ესე

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 3600
DOSEmailNotify shenimaili@mail.ge
</IfModule>

სულ ბოლოს კი ვარესტარტებთ აპაჩეს

service httpd restart

ეს არის ის პარამეტრი თუ რამდენ კავშირზე და რა ზომის შეტევაზე გვინდა დაიბლოკოს მომხამრებლის იპ. და ასევე რა დროის განმავლობაში. სადაც უკვე ტქვენი მაილია მითითებული სერვერზე თავდასხმის დროს მაილზე მიიღებთ შეტყობინებას რომ თქვენც მოახდინოთ რაიმე სახის რეაგირება...

კიდევ არის რამოდენიმე აპაჩეს პროქსი პორტები რომელიც გვეხმარება თავიდან ავიცილოთ შეტევა და ამასაც ცოტახანში დავწერ. :) თუ ვინმე დაინტერესდებით ოდესმე იმედი მაქვს გამოგადგებათ
[Pasuxi][Cit]|
7. Lasha (Off)
[ 23 Sep 2013, 4:46 ]
ციტატა: PaNaMa ასე ადვილი თუ არის მაგის თავიდან აცილება ქართულ სერვერებს რატო ექმნებათ ხოლმე მაგის რობლემა?
[Pasuxi][Cit]|
8. PaNaMa [Adm] (Off)
[ 23 Sep 2013, 4:52 ]
ციტატა: Lasha

ბევრი მეთოდი არსებობს შეტევის თუმცა ქართულ ჰოსტინგზებზე არც ისე დიდი შეტევები არ უნდა დაფიქსირდეს შედარებით ვიდრე უცხოურზე. რადგანაც დიდი ინტერესი არ არის საქართველოს მიმართ უბრალოდ ბევრი ჰოსტინგის მფლობელი მიანხავს როდესაც თავისი უცოდინარობის გამო სერვერი გაეთიშება და მომხმარებელს თავს აცოდებს გვდოსავენო :)

თუ ხარ საკმაოდ ჭკვიანი და ყურადღებიანი დამიჯერე საქართველოს დონეზე გადოსვა ურბალოდ ტეხავს :)


დღესაც არის ინტერნეტში გავრცელებული უფასო დოსერები და იმით ჩამოკიდებს ნებისმიერი 14 წლის ბავშვი ერთერთ უდიდეს და საქართველOში გიგანტ :D ჰოსტინგ პროვაიდერს ...
[Pasuxi][Cit]|

<<wina. | shemdegi>>
1,2

პასუხი თემაზე
მთავარ გვერდზე
Save .txt

პლიუსი თემას