Fail2ban (Polski) - ArchWiki

Jump to content

# Fail2ban (Polski)

From ArchWiki

Related articles

- sshguard
- Security

Fail2ban skanuje pliki dziennika (np. `/var/log/httpd/error_log`) i banuje adresy IP wykazujące podejrzane działania, takie jak zbyt wiele nieudanych prób uwierzytelnienia, skanowanie w poszukiwaniu podatności itp. Zazwyczaj Fail2ban jest używany do aktualizacji reguł firewall w celu odrzucania adresów IP na określony czas, chociaż można również skonfigurować dowolną inną akcję (np. wysłanie e-maila).]

Warning

- Użycie oprogramowania blokującego adresy IP zatrzyma trywialne ataki, ale wymaga dodatkowego demona i prawidłowego rejestrowania zdarzeń.
- Zwykle nie ma sensu używać fail2ban z sshd, gdy włączone jest tylko uwierzytelnianie za pomocą klucza publicznego lub podobne.
- Nie zastępuje on sieci VPN. Nie udostępniaj swoich usług w Internecie, chyba że jest to konieczne.
- Dodatkowo, jeśli atakujący zna Twój adres IP, może wysłać pakiety ze sfałszowanym nagłówkiem źródła i doprowadzić do zablokowania Twojego adresu IP. Upewnij się, że określiłeś swój adres IP w `ignoreip`.

## Instalacja

Install pakiet fail2ban

## Używanie

Configure Fail2ban and enable/start `fail2ban.service`.

### fail2ban-client

Fail2ban-client pozwala monitorować jails (reload, restart, status, itp.). Aby wyświetlić wszystkie dostępne polecenia:

    $ fail2ban-client

Aby wyświetlić wszystkie włączone jails:

    # fail2ban-client status

Aby sprawdzić status jail, np. dla „sshd”:

    # fail2ban-client status sshd

    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 1
    |  |- Total failed:     9
    |  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
    `- Actions
       |- Currently banned: 1
       |- Total banned:     1
       `- Banned IP list:   0.0.0.0

Kompaktowa wersja dla wszystkich jail, w tym zablokowanych IP:

    # fail2ban-client banned

    [{'sshd': ['192.168.100.50']}, {'apache-auth': []}]

## Konfiguracja

This article or section needs expansion.

Reason: Add a note about `dbpurgeage`, see [1]. (Discuss in Talk:Fail2ban (Polski))

Ze względu na możliwość utworzenia Pacnew and Pacsave files dla `/etc/fail2ban/jail.conf` podczas upgrade, jail.conf(5) § CONFIGURATION FILES FORMAT zaleca użytkownikom create pliku `/etc/fail2ban/jail.local` w celu „ułatwienia aktualizacji”.

Na przykład, aby zmienić domyślny czas bana na 1 dzień:

    /etc/fail2ban/jail.local

    [DEFAULT]
    bantime = 1d

Możesz też utworzyć osobne pliki `name.local` w katalogu `/etc/fail2ban/jail.d`, np. `/etc/fail2ban/jail.d/sshd.local`.

Reload `fail2ban.service`, aby zastosować zmiany konfiguracji.

### Włączanie jails

Domyślnie wszystkie jail są wyłączone. Append `enabled = true` do jail, który chcesz użyć, na przykład aby włączyć jail OpenSSH:

    /etc/fail2ban/jail.local

    [sshd]
    enabled = true

Zobacz #Custom SSH jail.

### Otrzymaj powiadomienie e-mailem

Jeśli chcesz otrzymywać wiadomość e-mail po zablokowaniu użytkownika, musisz skonfigurować klienta SMTP (np. msmtp) i zmienić domyślne działanie, jak opisano poniżej.

    /etc/fail2ban/jail.local

    [DEFAULT]
    destemail = yourname@example.com
    sender = yourname@example.com

    # to ban & send an e-mail with whois report to the destemail.
    action = %(action_mw)s

    # same as action_mw but also send relevant log lines
    #action = %(action_mwl)s

### Firewall i usługi

Domyślnie Fail2ban używa iptables. Jednak konfiguracja większości firewall i usług jest prosta. Na przykład, aby użyć nftables:

    /etc/fail2ban/jail.local

    [DEFAULT]
    banaction = nftables
    banaction_allports = nftables[type=allports]

Zobacz `/etc/fail2ban/action.d/`, aby zapoznać się z innymi przykładami, np. ufw.conf.

## Porady i wskazówki

### Custom SSH jail

Warning Jeśli atakujący zna Twój adres IP, może wysłać pakiety z fałszywym nagłówkiem źródłowym i spowodować zablokowanie dostępu Twojego adresu IP do serwera. SSH keys stanowią eleganckie rozwiązanie problemu ataku siłowego bez tych problemów.

Edytuj `/etc/fail2ban/jail.d/sshd.local`, dodaj tę sekcję i zaktualizuj listę zaufanych adresów IP w `ignoreip`:

    /etc/fail2ban/jail.d/sshd.local

    [sshd]
    enabled   = true
    filter    = sshd
    banaction = iptables
    backend   = systemd
    maxretry  = 5
    findtime  = 1d
    bantime   = 2w
    ignoreip  = 127.0.0.1/8 ::1

Note

- Może być konieczne ustawienie `LogLevel VERBOSE` w `/etc/ssh/sshd_config`, aby umożliwić pełne monitorowanie fail2ban, w przeciwnym razie nieudane logowania mogą nie być poprawnie logowane.
- Fail2ban obsługuje IPv6 od wersji 0.10. Dostosuj odpowiednio swoją firewall, np. start/enable `ip6tables.service`.
- Podczas korzystania z journal namespaces (poprzez dodanie `LogNamespace=something` do pliku jednostki), możesz skonfigurować fail2ban do odczytywania tych logów, ustawiając `backend` w następujący sposób: `backend = systemd[journalfiles="/var/log/journal/*.something/system.journal"]`.]

.

Tip

- W przypadku korzystania z interfejsów użytkownika iptables, takich jak ufw, można użyć `banaction = ufw` zamiast iptables.
- Używając Shorewall, można użyć `banaction = shorewall` i ustawić `BLACKLIST` na `ALL` w `/etc/shorewall/shorewall.conf`; w przeciwnym razie reguła ban dodana do adresu IP będzie dotyczyć tylko nowych połączeń.

### systemd backend: journald filtering

W przypadku korzystania z zaplecza „systemd” w celu poprawy wydajności, skonfiguruj filtr za pomocą `journalmatch`. Na przykład, aby analizować tylko komunikaty dziennika na poziomie jądra:

    /etc/fail2ban/filter.d/fwdrop.local

    [Definition]
    failregex = ^.*DROP_.*SRC=<ADDR> DST=.*$
    journalmatch = _TRANSPORT=kernel

Zobacz także systemd.journal-fields(7).

### Service hardening

Obecnie Fail2ban musi być uruchamiany jako 'root'. Z tego powodu zaleca się hardening procesu za pomocą systemd.

Create a drop-in file dla `fail2ban.service`:

    /etc/systemd/system/fail2ban.service.d/override.conf

    [Service]
    PrivateDevices=yes
    PrivateTmp=yes
    ProtectHome=read-only
    ProtectSystem=strict
    ReadWritePaths=-/var/run/fail2ban
    ReadWritePaths=-/var/lib/fail2ban
    ReadWritePaths=-/var/log/fail2ban.log
    ReadWritePaths=-/var/spool/postfix/maildrop
    ReadWritePaths=-/run/xtables.lock
    CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW

Parametry `CAP_DAC_READ_SEARCH` zestawu `CapabilityBoundingSet` umożliwią Fail2banowi pełny dostęp do odczytu każdego katalogu i pliku. `CAP_NET_ADMIN` i `CAP_NET_RAW` umożliwiają Fail2banowi działanie na dowolnej zaporze sieciowej z interfejsem command-line shell. Więcej informacji można znaleźć w capabilities(7).

Dzięki użyciu `ProtectSystem=strict` hierarchia filesystem będzie dostępna tylko do odczytu, `ReadWritePaths` umożliwia Fail2banowi dostęp do zapisu na wymaganych ścieżkach.

Na koniec wykonaj polecenie daemon-reload, aby zastosować zmiany w jednostce i restart `fail2ban.service`.

## Zobacz także

- Using a Fail2Ban Jail to Whitelist a User
- Optimising your Fail2Ban filters
- Fail2Ban and sendmail
- Fail2Ban and iptables
- Fail2Ban 0.8.3 Howto
- Monitoring the fail2ban log

Categories:

- Firewalls (Polski)
- Secure Shell (Polski)

Hidden category:

- Pages or sections flagged with Template:Expansion

Fail2ban (Polski)
Add topic