nickjj.fail2ban
Czym jest ansible-fail2ban? 
To rola ansible służąca do instalacji i konfiguracji fail2ban.
Jaki problem rozwiązuje i dlaczego jest przydatna?
Bezpieczeństwo jest ważne, a fail2ban to doskonałe narzędzie do wzmocnienia zabezpieczeń serwera przy minimalnej lub zerowej konfiguracji.
Zmienne roli
Poniżej znajduje się lista domyślnych wartości wraz z opisem ich funkcji.
# Na jakim poziomie powinny być zapisywane logi?
# 1 = BŁĄD, 2 = OSTRZEŻENIE, 3 = INFO, 4 = DEBUG
fail2ban_loglevel: 3
# Gdzie powinny być wysyłane logi?
# SYSLOG, STDERR, STDOUT, plik
fail2ban_logtarget: /var/log/fail2ban.log
# Gdzie powinien być tworzony socket?
fail2ban_socket: /var/run/fail2ban/fail2ban.sock
# Który adres IP, znak CIDR lub host DNS powinny być ignorowane?
fail2ban_ignoreip: 127.0.0.1/8
# Jak długo w sekundach ban powinien trwać?
fail2ban_bantime: 600
# Ile razy mogą spróbować przed zbanowaniem?
fail2ban_maxretry: 6
# Jak powinny być wykrywane zmiany w plikach?
# gamin, polling, auto
fail2ban_backend: polling
# Gdzie powinny być wysyłane raporty e-mail?
fail2ban_destemail: root@localhost
# Jak powinno być stosowane zbanowanie?
# iptables, iptables-new, iptables-multiport, shorewall, itd.
fail2ban_banaction: iptables-multiport
# Jaką akcję e-mail powinno używać?
# sendmail lub mail
fail2ban_mta: sendmail
# Jaki powinien być domyślny protokół?
fail2ban_protocol: tcp
# Do którego łańcucha powinny być dodawane JUMP-y w iptables-*?
fail2ban_chain: INPUT
# Jaka powinna być domyślna akcja banowania?
# action_, action_mw, action_mwl
fail2ban_action: action_
# Jakie usługi powinny być monitorowane przez fail2ban?
# Możesz zdefiniować fail2ban_services jako pusty ciąg, aby nie monitorować niczego.
# Możesz zdefiniować wiele usług jako standardową listę YAML.
fail2ban_services:
# Nazwa usługi
# WYMAGANE.
- name: ssh
# Czy jest włączona?
# OPCJONALNE: Domyślnie "true" (musi być ciągiem).
enabled: "true"
# Z którego portu korzysta usługa?
# Oddziel wiele portów przecinkiem, bez spacji.
# WYMAGANE.
port: ssh
# Jakiego protokołu używa usługa?
# OPCJONALNE: Domyślnie protokół podany powyżej.
protocol: tcp
# Jakiego filtra powinna użyć?
# WYMAGANE.
filter: sshd
# Jaka ścieżka loga powinna być monitorowana?
# WYMAGANE.
logpath: /var/log/auth.log
# Ile razy mogą spróbować przed zbanowaniem?
# OPCJONALNE: Domyślnie maxretry podane powyżej.
maxretry: 6
# Jaka powinna być domyślna akcja banowania?
# OPCJONALNE: Domyślnie akcja podana powyżej.
action: action_
# Jak powinno być stosowane zbanowanie?
# OPCJONALNE: Domyślnie banaction podane powyżej.
banaction: iptables-multiport
# Czas w sekundach na caching apt-update.
apt_cache_valid_time: 86400
Przykład playbooka
Dla tego przykładu załóżmy, że masz grupę o nazwie app i typowy plik site.yml
.
Aby użyć tej roli, edytuj swój plik site.yml
, aby wyglądał mniej więcej tak:
---
- name: zapewnij, że serwery aplikacji są skonfigurowane
- hosts: app
roles:
- { role: nickjj.fail2ban, sudo: true, tags: fail2ban }
Powiedzmy, że chcesz edytować kilka wartości, możesz to zrobić, otwierając lub tworząc group_vars/app.yml
, który znajduje się w katalogu relatywnym do twojego katalogu inventory
, a następnie sprawiając, aby wyglądał mniej więcej tak:
---
fail2ban_services:
- name: ssh
port: ssh
filter: sshd
logpath: /var/log/auth.log
- name: postfix
port: smtp,ssmtp
filter: postfix
logpath: /var/log/mail.log
Instalacja
$ ansible-galaxy install nickjj.fail2ban
Wymagania
Testowano na Ubuntu 12.04 LTS, ale powinno działać na podobnych wersjach.
Ansible galaxy
Możesz go znaleźć na oficjalnej ansible galaxy, jeśli chcesz go ocenić.
Licencja
MIT
ansible-galaxy install nickjj.fail2ban