Εξυπηρέτηση πελατών

  1. Βοήθεια
  2. Εγκατάσταση και ρύθμιση του Fail2ban για προστασία από επιθέσεις Brute-Force
  1. Home
  2. Διαχείριση Dedicated / VPS
  3. Εγκατάσταση και ρύθμιση του Fail2ban για προστασία από επιθέσεις Brute-Force

Εγκατάσταση και ρύθμιση του Fail2ban για προστασία από επιθέσεις Brute-Force

Το Fail2ban προστατεύει το Linux VPS σου αποκλείοντας (banning) διευθύνσεις IP που προσπαθούν να αποκτήσουν μη εξουσιοδοτημένη πρόσβαση. Ελέγχει τα αρχεία καταγραφής (logs) του συστήματος, όπως το /var/log/apache/error_log, και αναγνωρίζει IPs που πραγματοποιούν πολλαπλές λανθασμένες προσπάθειες σύνδεσης, exploit scans ή άλλες ύποπτες ενέργειες.

Μπορείς, επίσης, να ρυθμίσεις το Fail2ban ώστε να στέλνει αυτόματα αναφορές σε εσένα και στον διαχειριστή του επιτιθέμενου IP. Το εργαλείο περιλαμβάνει έτοιμα φίλτρα (filters) για πολλές υπηρεσίες όπως Apache, Courier, SSH, Exim, Postfix κ.ά.


Εγκατάσταση Fail2ban

AlmaLinux / Rocky Linux / CentOS Stream

  • Βήμα 1: Ενημέρωσε το VPS σου: sudo dnf -y update
  • Βήμα 2: Το Fail2ban δεν περιλαμβάνεται στο επίσημο repository, αλλά υπάρχει στο EPEL (Extra Packages for Enterprise Linux). Εγκατέστησέ το: sudo dnf -y install epel-release
  • Βήμα 3: Εγκατέστησε το Fail2ban: sudo dnf -y install fail2ban Αν λάβεις σφάλμα, εκτέλεσε ξανά: sudo dnf -y update
  • Βήμα 4: Ενεργοποίησε το Fail2ban να ξεκινά με το VPS και ξεκίνησέ το: sudo systemctl enable fail2ban sudo systemctl start fail2ban

Ubuntu / Debian

  • Βήμα 1: Ενημέρωσε το VPS σου: sudo apt -y update && sudo apt -y upgrade
  • Βήμα 2: Το Fail2ban περιλαμβάνεται στα repositories του Ubuntu: sudo apt -y install fail2ban
  • Βήμα 3: Ενεργοποίησέ το και ξεκίνησέ το: sudo systemctl enable fail2ban sudo systemctl start fail2ban

Ρύθμιση Fail2ban

Από προεπιλογή, το Fail2ban χρησιμοποιεί το αρχείο /etc/fail2ban/jail.conf. Όμως, οι ενημερώσεις μπορούν να το αντικαταστήσουν, επομένως συνιστάται να δημιουργήσεις ένα jail.local το οποίο δεν αντικαθίσταται και υπερισχύει του jail.conf.

Συμπεριέλαβε μόνο τις υπηρεσίες που τρέχουν πραγματικά στο VPS σου (π.χ. Exim ή Postfix, όχι και τα δύο).

Βήμα 1: Δημιουργία αρχείου ρυθμίσεων

sudo nano /etc/fail2ban/jail.local

Βήμα 2: Προσθήκη βασικών ρυθμίσεων

Αντέγραψε και προσαρμόσε το παρακάτω block:

DEFAULT]
# Ban for X amount of time
bantime = 604800
findtime = 3600
sender = fail2ban@example.com
destemail = admin@example.com
action = %(action_mwl)s
banaction = iptables-multiport
maxretry = 3
ignoreip = your.ip.address

[sshd]
enabled = true
port = ssh   # replace ssh with your configured SSH port

[exim]
enabled = true
filter = exim
logpath = /var/log/exim/mainlog
# cPanel: use /var/log/exim_mainlog
# Debian: /var/log/exim4/mainlog

[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
failregex = \[<HOST>]: 535 Incorrect authentication data
logpath = /var/log/maillog

[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/maillog

Προσαρμόσε τα πεδία sender, destemail και ignoreip στα δικά σου δεδομένα και ενεργοποίησε μόνο τις υπηρεσίες που χρησιμοποιείς.

Αν χρησιμοποιείς Exim, πρόσθεσε επιπλέον γραμμή στο φίλτρο:

sudo nano /etc/fail2ban/filter.d/exim.conf

Στο block [Definition], πρόσθεσε:

\[<HOST>\]: 535 Incorrect authentication data

Αποθήκευσε και κλείσε (Ctrl + X → Y → Enter).

Τέλος, επανεκκίνησε το Fail2ban για να εφαρμοστούν οι αλλαγές:

sudo systemctl restart fail2ban

Προχωρημένες ρυθμίσεις: Κλιμακούμενος χρόνος αποκλεισμού (escalating bans)

Για να αποφύγεις το μόνιμο μπλοκάρισμα ενός νόμιμου χρήστη μετά από ένα μικρό λάθος, μπορείς να ορίσεις σταδιακή αύξηση του χρόνου αποκλεισμού (π.χ. 1 ώρα → 1 ημέρα → 1 εβδομάδα).

  • Δημιούργησε νέο φίλτρο:
sudo nano /etc/fail2ban/filter.d/f2b-repeat.conf
  • Πρόσθεσε:
[INCLUDES]
before = common.conf
[Definition]
failregex = (?i)\]\s+ban\s+<HOST>
ignoreregex = (?i)\[f2b-repeat.*\]\s+ban\s+<HOST>
  • Στο jail.local, πρόσθεσε μεταξύ [DEFAULT] και [sshd]:
[DEFAULT]
# Ban for X amount of time
bantime = 3600
findtime = 86400
sender = fail2ban@example.com
destemail = admin@example.com
action = %(action_mwl)s
banaction = iptables-multiport
maxretry = 3
ignoreip = your.ip.address

[f2b-repeat2]
enabled = true
filter = f2b-repeat
bantime = 86400
findtime = 604800
logpath = /var/log/fail2ban.log
maxretry = 3

[f2b-repeat3]
enabled = true
filter = f2b-repeat
bantime = 604800
findtime = 2592000
logpath = /var/log/fail2ban.log
maxretry = 3

[f2b-repeat4]
enabled = true
filter = f2b-repeat
bantime = 2592000
findtime = 15552000
logpath = /var/log/fail2ban.log
maxretry = 3
  • Δημιούργησε το log αρχείο:
sudo touch /var/log/fail2ban.log
  • Επανεκκίνησε την υπηρεσία:
sudo systemctl restart fail2ban

Πρόσθετα φίλτρα και jails

  • Δες όλα τα διαθέσιμα φίλτρα: ls /etc/fail2ban/filter.d/
  • Άνοιξε το jail.local: sudo nano /etc/fail2ban/jail.local
  • Πρόσθεσε νέο jail: [apache-auth] enabled = true filter = apache-auth logpath = /var/log/apache2/error.log

Το πεδίο filter αντιστοιχεί στο όνομα του αρχείου φίλτρου χωρίς την κατάληξη .conf, και το logpath στο αρχείο log που παρακολουθεί το Fail2ban.

fail2ban jails overview

Χρήσιμες εντολές

  • Έλεγχος κατάστασης:
    sudo fail2ban-client status
  • Προβολή logs:
    sudo cat /var/log/fail2ban.log
  • Έλεγχος υπηρεσίας:
    sudo systemctl status fail2ban
  • Επανεκκίνηση μετά από αλλαγές:
    sudo systemctl restart fail2ban

Χειροκίνητο ban / unban IP

  • Ban IP:
    sudo fail2ban-client set JAIL banip xxx.xxx.xxx.xxx
  • Unban IP:
    sudo fail2ban-client set JAIL unbanip xxx.xxx.xxx.xxx
  • Προβολή διαθέσιμων jails:
    sudo fail2ban-client status

Η εγκατάσταση και ρύθμιση του Fail2ban στο VPS σου ολοκληρώθηκε! Το σύστημά σου είναι πλέον προστατευμένο από επιθέσεις brute-force και κακόβουλες προσπάθειες σύνδεσης.


Δεν έχετε βρει αυτό που ψάχνετε?

Επικοινωνήστε με τους ειδικούς μας, θα χαρούν να σας βοηθήσουν!

Επικοινωνήστε μαζί μας