Вступ
											
										
																			
											
												Крок 1: PF (брандмауер)
											
										
																			
											
												Крок 2: Чорний список
											
										
																			
											
												Крок 3: SSH
											
										
																			
											
												Завершальний крок
											
										
																	
												
Вступ
Будь-який сервіс, підключений до Інтернету, є потенційною мішенню для атак грубої сили або невиправданого доступу. Існують такі інструменти, як fail2banабо sshguard, але вони функціонально обмежені, оскільки вони аналізують лише файли журналів. Blacklistd використовує інший підхід. Модифіковані демони, такі як SSH, можуть підключатися безпосередньо до чорного списку, щоб додати нові правила брандмауера.
Крок 1: PF (брандмауер)
Якорь — це набір правил, який нам потрібен у нашій конфігурації PF. Щоб створити мінімальний набір правил, відредагуйте /etc/pf.confйого так:
set skip on lo0
scrub in on vtnet0 all fragment reassemble
anchor "blacklistd/*" in on vtnet0
block in all
pass out all keep state
antispoof for vtnet0 inet
pass in quick on vtnet0 inet proto icmp all icmp-type echoreq
pass in quick on vtnet0 proto tcp from any to vtnet0 port 22
Тепер увімкніть PFавтоматичний запуск, відредагуйте /etc/rc.conf:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
Однак є ще одна річ, яку ви можете зробити спочатку: перевірити свої правила, щоб переконатися, що все правильно. Для цього скористайтеся такою командою:
pfctl -vnf /etc/pf.conf
Якщо ця команда повідомляє про помилки, поверніться назад і спочатку виправте їх!
Бажано переконатися, що все працює належним чином, перезавантаживши сервер зараз: shutdown -r now
Крок 2: Чорний список
IP-адреси заблоковані на 24 години. Це значення за замовчуванням, яке можна змінити в /etc/blacklistd:
# Blacklist rule
# adr/mask:port type    proto   owner           name    nfail   disable
[local]
ssh             stream  *       *               *       3       24h
Редагувати, /etc/rc.confщоб увімкнути чорний список:
blacklistd_enable="YES"
blacklistd_flags="-r"
Запустіть Blacklistd за допомогою такої команди: 
service blacklistd start
Крок 3: SSH
Останнє, що нам потрібно зробити, це сказати sshdсповістити blacklistd. Додайте UseBlacklist yesдо свого /etc/ssh/sshd_configфайлу. Тепер перезапустіть SSH за допомогою service sshd restart.
Завершальний крок
Нарешті, спробуйте увійти на свій сервер з недійсним паролем. 
Щоб отримати всі заблоковані IP-адреси, скористайтеся однією з наступних команд:
blacklistctl dump -bw
        address/ma:port id      nfail   last access
 150.x.x.x/32:22        OK      3/3     2017/x/x 04:43:03
 115.x.x.x/32:22        OK      3/3     2017/x/x 04:45:40
  91.x.x.x/32:22        OK      3/3     2017/x/x 07:51:16
  54.x.x.x/32:22        OK      3/3     2017/x/x 12:05:57
pfctl -a blacklistd/22 -t port22 -T show
   54.x.x.x
   91.x.x.x
  115.x.x.x
  150.x.x.x
Щоб видалити заблокований IP, необхідно скористатися командою pfctl. Наприклад:
pfctl -a blacklistd/22 -t port22 -T delete <IP>
Зауважте, що blacklistctlIP-адреса все одно відображатиметься як заблокована! Це нормальна поведінка і, сподіваємося, буде вилучено в наступних випусках.