Ανθεκτικότητα σε Denial-of-Service και Έλεγχος Εξάντλησης Πόρων — DedSec Project
Ανθεκτικότητα σε Denial-of-Service και Έλεγχος Εξάντλησης Πόρων Denial of Service (DoS) είναι κάθε κατάσταση όπου νόμιμοι χρήστες δεν μπορούν να λάβουν την απαιτούμενη υπηρεσία. Αιτία…
Denial of Service (DoS) είναι κάθε κατάσταση όπου νόμιμοι χρήστες δεν μπορούν να λάβουν την απαιτούμενη υπηρεσία. Αιτία μπορεί να είναι κακόβουλη κίνηση, bug, dependency failure, υπερφόρτωση ουρών, CPU/memory pressure, storage exhaustion ή λανθασμένη ρύθμιση. Η αμυντική προσέγγιση είναι resilience engineering και ελεγχόμενο capacity testing, όχι flooding τρίτων συστημάτων.
Όριο εξουσιοδότησης: Μην παράγεις μεγάλο ή διαταρακτικό traffic προς δημόσια ή κοινόχρηστα συστήματα. Load/resource tests γίνονται μόνο σε απομονωμένο περιβάλλον με σαφή όρια, monitoring, stop conditions και άδεια ιδιοκτήτη.
Μαθησιακοί στόχοι
- Να εντοπίζεις bottlenecks σε CPU, memory, connections, threads, queues, disk και dependencies.
- Να ξεχωρίζεις volumetric, protocol και application-layer resource exhaustion.
- Να κατανοείς rate limits, quotas, backpressure, timeouts και circuit breakers.
- Να σχεδιάζεις ασφαλή capacity tests και recovery.
Η διαθεσιμότητα ως ιδιότητα ολόκληρου συστήματος
Ένα frontend μπορεί να φαίνεται υγιές ενώ έχει εξαντληθεί το database connection pool. Ένα API μπορεί να απαντά γρήγορα ενώ ένα asynchronous queue μεγαλώνει χωρίς όριο. Χαρτογράφησε όλη τη διαδρομή ενός request και κατέγραψε κάθε πεπερασμένο resource.
Κατηγορίες εξάντλησης
Υπολογιστική ισχύς
Ακριβά regex, parsing, compression, cryptography, image processing ή algorithms χωρίς όρια μπορούν να εξαντλήσουν CPU.
Μνήμη
Unbounded request bodies, caches, queues, decompression ή υπερβολικά sessions μπορούν να οδηγήσουν σε memory pressure ή OOM.
Connections και file descriptors
Sockets, workers και connection pools είναι πεπερασμένα. Ακόμη και χαμηλού bandwidth clients μπορούν να κρατήσουν resources δεσμευμένα για μεγάλο διάστημα.
Storage και logs
Μεγάλα uploads, temporary files, database growth ή υπερβολικό logging μπορούν να γεμίσουν storage. Ένας αμυντικός μηχανισμός που καταγράφει υπερβολικά πολλά δεδομένα μπορεί να δημιουργήσει ο ίδιος DoS.
Dependencies
DNS, IdP, databases, third-party APIs και queues μπορούν να καθυστερήσουν ή να αποτύχουν. Timeouts, retry budgets και jitter καθορίζουν αν το πρόβλημα θα παραμείνει τοπικό ή θα εξελιχθεί σε cascading failure.
Αμυντικοί έλεγχοι
Χρησιμοποίησε quotas ανά identity/resource, bounded body sizes, connection/execution timeouts, queue limits, backpressure, circuit breakers, caching όπου είναι ασφαλές, graceful degradation και monitoring για saturation/latency/errors. Τα rate limits πρέπει να επιλέγουν σωστό key· ένα μόνο source IP μπορεί να αντιπροσωπεύει πολλούς νόμιμους χρήστες πίσω από NAT.
Ασφαλές load testing
Ξεκίνα από baseline. Αύξησε σταδιακά κανονικό traffic μέσα σε προκαθορισμένο μέγιστο rate/concurrency και παρακολούθησε CPU, memory, latency, errors, connections και queue depth. Όρισε αυτόματο stop threshold και σχέδιο rollback. Στόχος είναι να εντοπίσεις πού αρχίζει η υποβάθμιση και αν τα controls λειτουργούν.
Detection και recovery
Χρήσιμα signals: απότομη αλλαγή request rate, endpoint mix, identity/source distribution, connection states, error rate, queue depth, cache hit ratio και dependency latency. Μην θεωρείς κάθε spike επίθεση—release, backup ή bug μπορεί να μοιάζουν παρόμοια. Μετά το συμβάν έλεγξε backlog, data consistency και επαναφορά dependencies.
Συνηθισμένα λάθη
- Δοκιμή production χωρίς σαφή όρια.
- Μέτρηση μόνο requests/second.
- Αγνόηση queues και dependencies.
- Ανεξέλεγκτα retries.
- Υπερβολικό logging υπό πίεση.
- Αντιμετώπιση του autoscaling σαν απεριόριστη προστασία.
Καθοδηγούμενο εργαστήριο
Σε localhost δημιούργησε μια μικρή υπηρεσία με περιορισμένο worker pool ή queue. Αύξησε αργά τον αριθμό φυσιολογικών requests μέσα σε χαμηλό, ασφαλές όριο. Κατέγραψε latency, errors και resource usage και παρατήρησε πότε εμφανίζεται backpressure. Σταμάτησε πριν επηρεαστεί οποιοδήποτε άλλο σύστημα.
Έλεγχος γνώσεων
- Γιατί η διαθεσιμότητα εξαρτάται από dependencies;
- Ποια η διαφορά μεταξύ rate limit και quota;
- Γιατί τα retries μπορούν να επιδεινώσουν outage;
- Ποια telemetry χρειάζεσαι σε capacity test;
- Τι σημαίνει graceful degradation;
Καθοδηγούμενη μελέτη
Χρησιμοποίησε τη Μεθοδολογία Μελέτης. Κάθε load test πρέπει να έχει όριο, telemetry και stop condition πριν ξεκινήσει.
Συνέχισε με
Προτεινόμενα επόμενα modules: 19, 23, 47, 48, 51.