
Да имате Linux сървър, изложен на мрежата, е по същество като да пуснете магнит за ботове. Ако не сте конфигурирали никакви мерки за сигурност, вероятно вече имате хиляди неуспешни опити за влизане в лог файловете си; има автоматизирани машини, които постоянно опитват комбинации от потребителско име и парола, за да се опитат да поемат контрола над вашата машина чрез атаки с груба сила.
Тук се намесва Fail2ban, инструмент, който действа като неуморен пазач. Той не е защитна стена в най-строгия смисъл на думата, а по-скоро анализира системните лог файлове и когато засече, че някой се опитва да проникне, затръшва вратата пред лицето му, като блокира IP адреса му с помощта на инструменти като iptables или nftables. Нека видим как да го конфигурирате, за да направите сървъра си корав орех за счупване.
Какво точно е Fail2ban и как работи?
Казано по-просто, Fail2ban е демон, който непрекъснато следи лог файловете на вашите услуги. Когато открие подозрителни модели, които съответстват на предварително дефинирани правила, наречени филтри , той започва да брои неуспехите. Ако даден IP адрес достигне лимита на разрешените опити в рамките на определено време, програмата изпълнява действие , което обикновено включва добавяне на този IP адрес към черния списък на защитната стена.
Тези конфигурации са организирани в така наречените „джейлове“ . Джейлът е основно набор от правила, прилагани към конкретна услуга (като SSH, Apache или MySQL). По този начин можете да имате много строга политика за отдалечен достъп и по-разрешителна такава за уеб сървъра, като гарантирате, че нарушителите се блокират автоматично, без да се налага ръчно да проверявате лог файловете на всеки пет минути.

Инсталация според вашата Linux дистрибуция
В зависимост от това коя система използвате, командата за инсталирането ѝ варира леко, но като цяло е достъпна в почти всички официални хранилища.
- В Ubuntu и Debian: Много е просто, просто трябва да бягаш
sudo apt updateпоследвано отsudo apt install fail2ban. - В Rocky Linux или AlmaLinux: Тъй като това са Enterprise дистрибуции, първо трябва да активирате EPEL хранилището с
sudo dnf install epel-releaseи след това инсталирайте пакета сsudo dnf install fail2ban fail2ban-firewalld. - В Alpine Linux: Използвайте APK мениджъра с
sudo apk add fail2banИ тъй като използва OpenRC, трябва да го активирате сsudo rc-update add fail2ban defaultи започнете сsudo rc-service fail2ban start.

Главна конфигурация: Тайната на .local файла
Много често срещана грешка е директното редактиране на файла. jail.confНе го правете! Този файл може да бъде презаписан, когато актуализирате системата. Златното правило е да създадете копие, наречено jail.localВсички параметри, които добавите към този втори файл, ще имат предимство пред оригинала и промените ви ще бъдат презаписани. защитен от актуализации.
За начало можете да клонирате оригиналния файл с sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local и след това го отворете с любимия си редактор, като например nano или vim. В секцията [ПО ПОДРАЗБИРАНЕ] Тук определяте цялостното поведение на системата:
- време за забрана: Продължителността на времето, през което злонамереният IP адрес ще остане замразен. Това може да бъде в секунди или с помощта на „m“ за минути (напр. 10 м).
- време за намиране: Интервалът от време, в който Fail2ban проверява за грешки. Ако някой се провали 5 пъти за един час, но времето за намиране е 10 минути, той няма да бъде баннат.
- макс. повторен опит: Броят на неуспешните опити, разрешени преди системата да каже Стига и блокирай IP адреса..
- игнорирай ip: Важно е да избегнете самозабраняване. Тук трябва да въведете вашето публичен IP адрес или вашия VPN диапазон.
Защита на специфични услуги стъпка по стъпка
След като общите настройки са конфигурирани, е време да активирате затворите за услугите, които ви засягат най-много. За да работи защитата, трябва да настроите enabled = true в съответния му раздел в рамките на jail.local.
SSH достъп (най-критичната точка)
Порт 22 е цел номер едно. Една стабилна конфигурация би определила maxretry = 3 и bantime = 3600 (един час). Fail2ban ще прочете файла. /var/log/auth.log (в Debian/Ubuntu) или / Var / дневник / сигурна (на CentOS/RHEL) за откриване на грешки при удостоверяване и затваряне на достъпа на нападателя.
Уеб сървъри (Apache и Nginx)
Ако имате уебсайт или онлайн магазин, ботовете ще се опитат да получат достъп до чувствителни маршрути, като например /wp-admin o /login.phpМожете да създавате персонализирани филтри в /etc/fail2ban/filter.d/ да открие тези модели. Например, за да Защитете WordPressГрешки 403 или неуспешни опити се наблюдават в wp-login.php, блокирайки IP адреса, ако той надвишава ограниченията, зададени в затвора на Apache или Nginx.
Бази данни и FTP
За MySQL можете да следите лога на грешките за фразата Достъпът е отказан за потребителяВ случай на FTP (като ProFTPD), е жизненоважно да се гарантира, че logpath съпоставете действителния път с вашите лог файлове, защото ако Fail2ban не може да намери лог файла, защитата просто няма да работи.
Разширено управление с fail2ban-client
Не винаги е необходимо да редактирате файлове и да рестартирате услугата, за да правите бързи промени. Командата fail2ban-client Това ви позволява да управлявате системата в движение от конзолата.
За да видите кои затвори са активни и колко IP адреса са блокирани, използвайте sudo fail2ban-client statusАко искате да се задълбочите в услуга, като например SSH, изпълнете sudo fail2ban-client status sshdОсвен това, ако по погрешка Блокирахте колега Или можете бързо да освободите IP адреса сами с командата sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
Поддръжка и отстраняване на неизправности
Ако забележите, че Fail2ban не блокира както би трябвало, първото място, където трябва да погледнете, е собственият лог файл на инструмента. /var/log/fail2ban.log. Използвайки tail -f Можете да видите в реално време кой е баннат и защо.
Не забравяйте, че Fail2ban съхранява състоянието на заключване в SQLite база данни в /var/lib/fail2ban/fail2ban.sqlite3Следователно, ако рестартирате сървъра, забранените IP адреси ще бъдат отменени. ще остане блокиран докато изтече периодът на наказанието. Винаги, когато правите промени в конфигурационните файлове, не забравяйте да приложите промените с sudo systemctl restart fail2ban.
Внедряването на този инструмент трансформира вашия сървър от лесна мишена в автоматизирана крепост, намалявайки натоварването на процесора, като отхвърля злонамерен трафик на мрежовото ниво и ви позволява да спите спокойно, знаейки, че ботовете няма да могат да проникнат чрез груба сила. Чрез комбиниране на използването на .local файлове, управлението на специфични jail-ове и постоянно наблюдение на лог файловете, вие постигате система за дълбока защита, необходима за всеки Linux системен администратор.
