|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
20-07-2009, 10:58 AM | #1 |
Guest
Trả Lời: n/a
|
Phân tích, ngăn chặn một cuộc tấn công , DOS, DDOS
Phân tích, ngăn chặn một cuộc tấn công DOS, DDOS
Một bữa đẹp trời đang ngồi nghiên cứu cái joomla thì anh cutynhangheo quăng cho cái này thấy hay wa save liền trong máy. Nhưng mà tài liệu này bằng tiếng Anh , với trình độ anh văn kém cỏi toàn bị anh khuong_dx shock không ,nên quyết định ngồi dịch cái này cho anh em cùng tham khảo ,nếu thấy trình độ English của LK kém quá đừng cười nha !!! Cố Gắng Dừng DDOS Một Router bị vô hiệu hóa do một IP nào đó trên Router hoạt động không bình thường . Nó được giải đáp nhanh do : 1) Nó bị j chệch trong một cuộc tấn công thật 2) Nó không có vấn đề gì , chỉ là một bài tập đơn giản A) Phát hiện tấn công 1) Sử dụng dòng lệnh “netstat” Ta có thể dùng câu lệnh “netstat” để phát hiện xâm nhập với cấu trúc câu lệnh dưới ; Code: Select all netstat -an | grep :80 | sortCode: Select all netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'Code: Select all netstat -n -p|grep SYN_REC | wc -lCode: Select all netstat -lpn|grep :80 |awk '{print $5}'|sortCode: Select all netstat -an | grep :80 | awk '{ print $5 }' | awk -F: '{ print $1 }' | sort | uniq -c | sort -nAttack example SYN_RECV or SYN Flooding to the Apache (port 80). Code: Select all tcp 0 0 192.168.0.3:80 192.168.0.5:60808 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60761 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60876 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60946 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60763 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60955 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60765 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60961 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60923 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61336 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61011 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60911 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60758 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60828 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61114 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61074 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60826 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60959 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60900 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60940 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60920 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60825 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60945 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60913 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61009 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60755 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60904 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61583 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60910 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60915 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60827 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61458 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60908 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61007 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60927 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60951 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60942 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61113 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60909 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60822 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60894 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60952 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60928 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60936 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60906 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61466 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60919 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60914 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60926 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60939 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60931 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60831 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60823 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60954 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60916 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60963 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60947 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61006 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60933 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60950 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60895 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60917 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61480 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60935 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60960 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60767 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60918 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60821 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61077 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60905 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61517 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60893 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60953 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60903 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61439 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61337 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61545 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61299 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61010 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60930 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60744 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60929 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60754 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61008 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61116 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60811 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60807 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60938 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60764 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60873 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60817 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61550 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60748 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60956 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60753 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61115 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60741 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61075 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60948 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60829 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60943 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61338 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60762 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60824 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60830 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61535 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60898 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60815 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60962 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60957 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60944 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60921 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60759 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60897 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61518 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60958 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60922 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60937 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60875 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60766 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60751 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60768 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60743 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:61076 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60912 SYN_RECV tcp 0 0 192.168.0.3:80 192.168.0.5:60816 SYN_RECV Ở trên là một ví dụ của việc SYN-Attack đến Apache 2)Xem xét trạng thái server của apache Nếu như chúng ta nhìn vào trạng thái Server của Apache thì chúng ta sẽ thấy các kết nối trong trạng thái ‘Reading’(‘R’ Reading Request).Vấn đề xảy ra khi con số của kết nối ‘Reading’ đầy trong ‘Maxclient’ của Apache thì Apache sẽ không đồng ý với các yêu cầu kết nối mới của các client mới , mặc dù các yêu cầu đó hợp lệ nhưng nó vẫn không kết nối. Chúng ta có thể tăng giá trị của ’MaxClients’ để cho các đường yêu cầ kết nối không bị đầy và lúc này các yêu cầu của tất cả client đều được chấp nhận. Một cách đánh giá khác là ta có thể giảm giá trị của ‘Timeout’ của Apache để các yêu cầu ‘Reading’ chúng sẽ ngắt kết nối của các yêu cầu nhanh chóng trước khi MaxClient bị đầy. 3)Xem xét logs của mod_evasive Nếu như nó là dạng Distributed DOS (DDOS) một dạng tấn công từ chối dich vụ phân phối thì chúng ta sẽ thấy trong logs có rất nhiều địa chỉ IP khác nhau yêu cầu kếu nối đến Apache 4)Xem xét logs của syslog (của kernel) Ta tìm dòng : -possible SYN flooding on port 80. -Sending cookies."Sending Cookies" - nếu như chúng được bật trong /etc/sysctl.conf # Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1. - Đôi khi tốt hơn nếu chúng được tắt đi: net.ipv4.tcp_syncookies = 0 . -Đường này chúng ta có thể thấy được Ip’s của attack: May 17 1424 lan kernel -ip_conntrack : table full, droping packet.Full Table. Chúng có vấn đề bởi vì chúng không chấp nhận nhiều kết nối mặc dù chúng hợp pháp. Chúng ta có thể tăng giá trị của ‘chart’ nếu như mạng chúng ta cho nhiều hơn. Directly: echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max Để giá trij được lưu và không bị mất khi khởi đọng lại máy chúng ta cần tăng thêm giá trị của chúng bên trong sysctl.conf net.ipv4.ip_conntrack_max = 65535remembers to restart the net to apply the changes in the / proc (service network restart). -Martian packages: Aug 31 1229 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1207 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1257 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1255 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 13:08:12 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1303 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1338 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1338 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1342 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1318 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1354 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1432 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1408 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1442 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1405 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1405 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 1458 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 15:05:27 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 15:06:14 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Aug 31 15:09:08 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0 Chúng không mong muốn các packages đó đến đường ,nơi mà chúng không thể đến nơi nhận thấy vấn đề của sự cản trở(cracker).Sử dụng các packages giống nhau có thể giúp attacker tấn công bên trong stacks TCP/IP 5)Xem xét trên đồ thiij của MRTG,RRDtool Nếu như bạn thấy lưu lượng (traffic) đi về tăng lên đến 100mbps . Chắc hẳn họ đang muốn làm j` bạn đây ,hihi B)Cố gắng dừng tấn công DDOS 1) - mod_evasive Web Oficial: http://www.nuclearelephant.com/projects/mod_evasive/ Chúng ta cân nhắc rằng nếu 50 kết nối trên 2 giây đến 2 trang ,nếu như đã đủ vậy thì tôi sẽ chặn IP đó lại. Tương tự như vậy nhưng 50 yêu cầu trong 1 giây đến một trang thì ta cũng block Ip đá lại. Nếu như bạn muốn chặn(block) Ip làm flood (tràn ngập) thì bạn có thể sử dụng iptables DOSSystemCommand "sudo -u root -c '/sbin/iptables -A INPUT -s %s -j DROP"To remember to look at the syslog for if there are possible positive reinforcements (ip's that didn't make flood). Tránh những xác thực sai Để cho mod_evasive làm việc chính xác bạn cần phải điều chỉnh : MaxRequestsPerChild 0To put a high but never limitless value (0). MaxRequestsPerChild 10000Config example: http://www.eth0.us/mod_evasive 2)mod_security Vấn đề của mod_security là bạn cần phải đổi tham số để phát hiện cược tấn công nhỏ nhất. Trong một ví dụ chúng ta sử dụng trong http_referer và User Agent để phát hiện DDOS 3)Tcplimit,Ipdrop,IPblock Sử dụng dynamic firewalls 4)Tối ưu hóa và đảm bảo cho mạng của bạn với sysctl.conf cat /proc/sys/net/ipv4/tcp_syncookies # Enable IP spoofing protection, turn on Source Address Verification net.ipv4.conf.all.rp_filter = 1 # Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1 # Enable ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts = 1 a) Activate SynCookies protection : Nó làm việc bằng cách gửi ra ngoài ‘syncookies’ khi syn sắp xếp dự trữ của socket bị tràn b) Disable source routing c) Reverse Path Filtering: Bác bỏ các packets đi vào nếu như địa chỉ IP nguồn không phù hợp với network interface d) Log RP filter dropped packets (martians) e) Maximal number of remembered connection requests => /sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=256 ). f) How may times to retry before killing TCP connection (default 7 on most systems) => /sbin/sysctl -w net.ipv4.tcp_orphan_retries=47). g) Number of SYN packets the kernel will send before giving up => /sbin/sysctl -w net.ipv4.tcp_syn_retries=5 8). h) Disable broadcast icmp reply => /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 i) Disable ICMP redirect j) Disable timestamps k)Reduce DOS ability by reducing timeouts. Danh sach của tất cả cái có thể thay đổi được của TCP http://ipsysctl-tutorial.frozentux.n...variables.html Danh sach của tất cả cái có thể thay đổi được của / proc/sys/net/ipv4 / * (with default varlores(bình ổn) and explanations(giải thích)) http://ipsysctl-tutorial.frozentux.n.../ip-sysctl.txt 5) APF Firewall with the module anti-ddos http://www.rfxnetworks.com/downloads/apf-current.tar.gz tar xvzf apf-current.tar.gz cd apf-0.9.6-1/ ./install.shservice apf start /usr/local/sbin/apf –s Cấu hình file : /etc/apf/conf .apf - After making the tests leave: DEVEL_MODE="0" - If it leaves us a similar error to this:: apf(9413): unable to load iptables module (ip_tables), aborting.We change this: SET_MONOKERN="1" -Ports that we want to open up (inbound) IG_TCP_CPORTS="21,22,25,53,80,110" -If you want to block the whole exit traffic puts it in 1 (outbound): EGF="0" - If we want to use the module antddos to put at 1: USE_AD="0" Log: /var/log/apf_log To see the packages: LOG_DROP="1"will keep it in the syslog, example: remembers that to use the antidos you should add the cron job: */8 * * * * root /etc/apf/ad/antidos -a >> /dev/null 2>&1 http://www.r-fx.org/apf/README.antidos KISS My Firewall is an alternative. Script PHP http://www.prism-hosting.com/AntiDoS 6) To stop the botnet ZmbScap - Zombie Scapper - Stoopt DDoS Programs http://www.metaeye.org/projects/zmbscap/ Tracking Botnets - Bot-Commands http://www.honeynet.org/papers/bots/...-commands.html Tracking Botnets http://www.honeynet.org/papers/bots/ Tracking Botnets - DDoS-attacks http://www.honeynet.org/papers/bots/botnet-ddos.html Phatbot Trojan Analysis http://www.lurhq.com/phatbot.html F-Bot by f-secure - it Eliminates the Agobot and all their variants http://www.f-secure.com/tools/f-bot.zip Nepenthes - Autoinfecarse without danger to analyze http://nepenthes.mwcollect.org/ honeytrap – trap attacks against tcp services http://honeytrap.sourceforge.net/ 7 - using rules of the iptables 8 - using the mod_throttle http://www.snert.com/Software/mod_throttle/ Others: Mod_Throttle, mod_bandwidth, mod_iplimit, mod_tsunami, mod_limitipconn.c ForApache 2: mod_cband Code: Select all <IfModule mod_throttle.c> ThrottlePolicy Volume 10G 30d </IfModule> <Location /throttle-me> SetHandler throttle-me </Location> http://www.webhostgear.com/160.html C) References (Tham khảo) - Syctl.conf Hardening http://www.eth0.us/sysctl - Ipsysctl tutorial 1.0.4 http://ipsysctl-tutorial.frozentux.n...-tutorial.html - Hardening the TCP/IP stack to SYN attacks http://www.securityfocus.com/infocus/1729 - DDOS and SYN_Recv Attacks And some SOlutions http://www.vbulletin.com/forum/showthread.php?t=126699 - Distributed Reflection Denial of Service http://www.grc.com/dos/drdos.htm - Dynamic iptables firewalls http://www-128.ibm.com/developerworks/library/l-fw/ - Preventing DDoS Attacks http://www.linuxsecurity.com/content/view/121960/49/ - Distributed Denial of Service (DDoS) Attacks/tools http://staff.washington.edu/dittrich/misc/ddos/ - Linux firewall rulesets and snippets of rule sets http://www.gotroot.com/tiki-index.ph...rewall%20rules Enjoy! (translate by luongkhiem - ) |
|
|