Δημοσιεύτηκε: 07 Μάιος 2019, 21:57
από xXx
Lighttpd σε RaspberryPi με χρήση fail2ban:
Δεν γνωρίζω από πόσο παλιά δεν λειτουργεί η υπηρεσία fail2ban σε debian διανομές
με την χρήση lighttpd ως εξυπηρετητή, αλλά σίγουρα δεν λειτουργεί σε διανομές βασισμένες
σε debian stretch. Στην περίπτωση αυτού του οδηγού, μιλάμε για Raspbian stretch lite.
Το πρόβλημα:
Παρότι η προστασία ssh λειτουργεί χωρίς καμμία σχεδόν παρέμβαση στις ρυθμίσεις fail2ban,
αυτό δεν ισχύει για την περίπτωση lighttpd με προστατευόμενες σελίδες - διευθύνσεις.
Όσες δηλαδή αποτυχημένες προσπάθεις κι αν κάνει ένας επιτιθέμενος στις σελίδες μας,
δεν εντοπίζεται από την υπηρεσία fail2ban ώστε να του στερηθεί η πρόσβαση από το τείχος
προστασίας (iptables). Η υπηρεσία fail2ban φαίνεται να τρέχει, και να μας προστατεύει,
αναφέροντας πως δεν εντόπισε καμμία αποτυχημένη προσπάθεια εισόδου στις προστατευόμενες
με κωδικό σελίδες μας. Αυτό όμως δεν ισχύει καθόλου, και είναι τρομερά σοβαρό!
Αποτέλεσμα:
Ένας κακόβουλος χρήστης, μπορεί να κάνει άπειρες απόπειρες εισαγωγής, μέχρι που τελικά
να βρει τα ανόματα χρηστών - κωδικούς πρόσβασης που έχουμε ορίσει για τις σελίδες μας.
Γιατί συμβαίνει αυτό;
Γιατί τα πάντα είναι ρυθμισμένα λάθος, και οδηγούν σε λάθος σημεία. Πιθανότατα παλιότερα
να ίσχυαν οι τοποθεσίες που αναφέρονται, αλλά αυτό δεν ισχύει πλέον.
Η λύση:
Εγκαταστήστε τα απαραίτητα προγράμματα, αν δεν το έχετε κάνει ήδη:
Κώδικας: Επιλογή όλων
sudo apt-get install fail2ban php7.0-fpm lighttpd

Ρυθμίστε την php7.0-fpm τον lighttpd και τις προστατευόμενες σελίδες σας κατά βούλησιν.
Στο παράδειγμα που ακολουθεί, χρησιμοποιώ 2345 θύρα για την υπηρεσία ssh, και 6789 για
τον lighttpd. Οπότε, για να έχετε προστασία από επιθέσεις, ρυθμίστε τα παρακάτω ως εξής:
Κώδικας: Επιλογή όλων
sudo nano /etc/fail2ban/jail.local

Και προσθέστε τα παρακάτω περιεχόμενα:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 3
backend = auto

[sshd]
enabled = true
port = 2345
logpath = %(sshd_log)s
backend = %(sshd_backend)s


[lighttpd-auth]
enabled = true
port = 6789,https
logpath = %(lighttpd_error_log)s

Αμέσως μετά ρυθμίστε τις λανθασμένες οδηγίες στα αρχεία:
Κώδικας: Επιλογή όλων
sudo nano /etc/fail2ban/paths-common.conf

Αλλάξτε την γραμμή που αναφέρεται στον lighttpd ως εξής:
lighttpd_error_log = /var/log/lighttpd/access.log

Και ρυθμίστε και το παρακάτω αρχείο:
Κώδικας: Επιλογή όλων
sudo nano /etc/fail2ban/filter.d/lighttpd-auth.conf

Κάντε κόμεντ (#) την υπάρχουσα failregex γραμμή, και βάλτε από κάτω μία νέα, ως εξής:
failregex = ^<HOST> .* "(GET|POST|HEAD) [^"]+" 401

Κάντε ρηστάρτ lighttpd php και fail2ban:
Κώδικας: Επιλογή όλων
sudo systemctl restart lighttpd
sudo systemctl restart php7.0-fpm
sudo systemctl restart fail2ban

Κάντε 3 αποτυχημένες προσπάθειες (έχοντας κι άλλον τρόπο να εισέλθετε στο σύστημα)
με ssh και στις προστευόμενες σελίδες σας, για να σιγουρευτείτε πως όλα λειτούργησαν.
Πάντα ελέγχετε ότι όλα λειτουργούν, πριν αφεθείτε στις προεπιλεγμένες ρυθμίσεις/αναφορές.
Ελπίζω να φανεί χρήσιμος ο οδηγός σε κάποιους Έλληνες εκεί έξω.