Quickstart
Αυτός ο οδηγός περιγράφει την εκτέλεση του Abusive HTTP Watch έναντι ενός πραγματικού access log σε σύστημα OpenBSD. Η ίδια ροή λειτουργεί σε FreeBSD και Linux με μικρές προσαρμογές.
1. Εγκατάσταση του script
Τοποθέτηση του script σε μια θέση συστήματος και κάνε το εκτελέσιμο.
doas install -m 0755 abusive_http_watch.pl /usr/local/sbin/abusive_http_watchΟ daemon δεν έχει εξωτερικές Perl εξαρτήσεις — μόνο τη standard
library (Fcntl, IO::Handle, Sys::Syslog, Socket). Αν το
perl είναι στο σύστημα, το script τρέχει.
2. Δημιουργία καταλόγου runtime
Ο daemon γράφει τη blocklist σε ένα μόνο αρχείο. Διάλεξε μια διαδρομή που θα διαβάζει το firewall σου.
doas mkdir -p /var/www/run
doas chown _www:_www /var/www/runΤο αρχείο blocklist (/var/www/run/abusive_http_hosts ως
προεπιλογή) δημιουργείται κατά την πρώτη εκτέλεση αν δεν
υπάρχει.
3. Δοκιμή σε πρόσφατο log
Πριν συνδεθεί ο daemon στο σύστημα, τρέξε τον απευθείας ενάντια σε ένα access log για να δεις τη συμπεριφορά του.
ABUSIVE_DEBUG=1 abusive_http_watch /var/www/logs/access.logΗ debug έξοδος ([dbg] ip=…, [dbg] token match ip=…,
[dbg] count ip=… N/3) επιτρέπει την παρατήρηση του matcher σε
πραγματικό χρόνο. Όταν μια IP υπερβεί το κατώφλι hits (default
3), εμφανίζεται [added] <ip> -> /var/www/run/abusive_http_hosts.
Ctrl-C για παύση. Έλεγξε τη blocklist:
cat /var/www/run/abusive_http_hostsΘα έπρεπε να δεις μια σύντομη λίστα IP — τους πιο θορυβώδεις ανιχνευτές στο παρατηρούμενο παράθυρο.
4. Σύνδεση firewall με τη blocklist
Στο OpenBSD, πρόσθεσε έναν πίνακα <abusive> που φορτώνει από
το αρχείο:
table <abusive> persist file "/var/www/run/abusive_http_hosts"
block in quick on egress from <abusive> label abusiveΕπαναφόρτωση pf:
doas pfctl -f /etc/pf.confΟ πίνακας μπλοκάρει τώρα τα πάντα από αυτές τις IP στο firewall — καμία CPU web server δεν ξοδεύεται πια γι’ αυτές.
Για να εισάγονται νέες εγγραφές αυτόματα, επαναφόρτωσε τον πίνακα σε σύντομο διάστημα. Απλή προσέγγιση cron:
*/2 * * * * /sbin/pfctl -t abusive -T replace -f /var/www/run/abusive_http_hostsΣτο Linux, το αντίστοιχο είναι ένα nftables set ή ipset που
επαναφορτώνεται από το ίδιο αρχείο μέσω παρόμοιου cron.
5. Εκτέλεση ως daemon
Εγκατάσταση του rc.d script (βλ.
Λειτουργία
για το script). Ενεργοποίηση και εκκίνηση:
doas rcctl enable abusive_http_watch
doas rcctl start abusive_http_watchΟ daemon παρακολουθεί τώρα συνεχώς το log και γράφει τη
blocklist. Το tail -f /var/log/daemon (ή η διαμορφωμένη
facility syslog) δείχνει τα added events ζωντανά.
6. Επαλήθευση
Περίμενε λίγα λεπτά, μετά έλεγξε:
wc -l /var/www/run/abusive_http_hosts
doas pfctl -t abusive -T show | wc -lΟι αριθμοί πρέπει να συμφωνούν. Αν συμφωνούν, τελείωσες — ο daemon τρέχει, η blocklist μεγαλώνει, το firewall φιλτράρει.
Αν το αρχείο blocklist παραμείνει άδειο μετά από μία ή δύο ώρες σε δημόσιο web server, το access log σου είναι ασυνήθιστα καθαρό (συγχαρητήρια) ή ο daemon δεν διαβάζει τη διαδρομή που νομίζεις. Δες Λειτουργία για troubleshooting.