Како да го обезбедите вашиот Linux сервер со fail2ban
Со fail2ban
, вашиот компјутер со Linux автоматски ги блокира IP адресите што имаат премногу неуспеси во врската. Тоа е саморегулирачка безбедност! Ќе ви покажеме како да го користите.
Безбедност Безбедност Безбедност
Војвотката од Виндзор, Волис Симпсон, еднаш славно рече: „Никогаш не можете да бидете премногу богати или премногу слаби“. Го ажуриравме ова за нашиот модерен, меѓусебно поврзан свет: никогаш не можете да бидете премногу внимателни или премногу безбедни.
Ако вашиот компјутер прифаќа дојдовни барања за поврзување, како што се конекции за безбедна школка (SSH), или делува како веб-сервер или е-пошта, треба да го заштитите од напади со брутална сила и од погодување лозинки.
За да го направите тоа, ќе треба да ги следите барањата за поврзување што не успеваат да влезат во сметка. Доколку тие постојано не успеат да се автентицираат во краток период, треба да им се забрани да прават понатамошни обиди.
Единствениот начин на кој ова може практично да се постигне е да се автоматизира целиот процес. Со малку едноставна конфигурација, fail2ban
ќе управува со следењето, забраната и дебанирањето за вас.
fail2ban
се интегрира со заштитниот ѕид на Linux iptables
. Ги спроведува забраните за сомнителните IP адреси со додавање правила на заштитниот ѕид. За да го задржиме ова објаснување непречено, користиме iptables
со празен пакет правила.
Се разбира, ако сте загрижени за безбедноста, веројатно имате заштитен ѕид конфигуриран со добро населено множество правила. fail2ban
само додава и отстранува свои правила - вашите редовни функции на заштитен ѕид ќе останат недопрени.
Можеме да го видиме нашето празно множество правила користејќи ја оваа команда:
sudo iptables -L
Се инсталира fail2ban
Инсталирањето на fail2ban
е едноставно на сите дистрибуции што ги користевме за истражување на овој напис. На Ubuntu 20.04, командата е како што следува:
sudo apt-get install fail2ban
На Fedora 32, напишете:
sudo dnf install fail2ban
На Manjaro 20.0.1, користевме pacman
:
sudo pacman -Sy fail2ban
Се конфигурира fail2ban
Инсталацијата fail2ban
содржи стандардна конфигурациска датотека наречена jail.conf. Оваа датотека се препишува кога fail2ban
се надградува, така што ќе ги изгубиме нашите промени ако направиме прилагодувања на оваа датотека.
Наместо тоа, ќе ја копираме датотеката jail.conf во онаа наречена jail.local. Со ставање на нашите конфигурациски промени во jail.local, тие ќе продолжат со надградбите. Двете датотеки автоматски се читаат од fail2ban
.
Еве како да ја копирате датотеката:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Сега отворете ја датотеката во вашиот омилен уредувач. Ќе користиме gedit
:
sudo gedit /etc/fail2ban/jail.local
Ќе бараме два дела во датотеката: [DEFAULT] и [sshd]. Сепак, внимавајте да ги пронајдете вистинските делови. Тие етикети исто така се појавуваат блиску до врвот во делот што ги опишува, но тоа не е она што го сакаме.
Ќе го најдете делот [СТАНДИРАНО] некаде околу линијата 40. Тоа е долг дел со многу коментари и објаснувања.
Скролувајте надолу до линијата 90 и ќе ги најдете следните четири поставки за кои треба да знаете:
- ignoreip: Бела листа на IP адреси што никогаш нема да бидат забранети. Тие имаат постојана картичка Free Out of Jail Free. IP адресата на локалниот хост (
127.0.0.1
) е стандардно во списокот, заедно со нејзиниот еквивалент IPv6 (::1
). Ако има други IP адреси за кои знаете дека никогаш не треба да бидат забранети, додајте ги на оваа листа и оставете празно место помеѓу секоја од нив. - bantime: Времетраењето за кое IP адресата е забранета („m“ значи минути). Ако внесете вредност без „m“ или „h“ (со часови), таа ќе се третира како секунди. Вредноста -1 трајно ќе ја забрани IP адресата. Бидете внимателни да не се заклучите трајно.
- findtime: Времето во кое премногу неуспешни обиди за поврзување ќе резултираат со забрана на IP адреса.
- maxretry: Вредноста за „премногу неуспешни обиди“.
Ако врската од истата IP адреса прави maxretry
неуспешни обиди за поврзување во периодот findtime
, тие се забранети за времетраењето на bantime
. Единствен исклучок се IP адресите во листата ignoreip
.
fail2ban
ги става IP-адресите во затвор одреден временски период. fail2ban
поддржува многу различни затвори и секој од нив претставува задржување на поставките кои се применуваат на еден тип на врска. Ова ви овозможува да имате различни поставки за различни типови конекции. Или можете да имате монитор на fail2ban
само избран сет на типови на поврзување.
Можеби сте го погодиле од името на секцијата [СТАНДИРАНО], но поставките што ги разгледавме се стандардни. Сега, ајде да ги погледнеме поставките за затворот SSH.
Конфигурирање на затвор
Затворите ви дозволуваат да ги преместувате типовите на врски во и надвор од надгледувањето fail2bans
. Ако стандардните поставки не се совпаѓаат со оние што сакате да ги примените во затворот, можете да поставите одредени вредности за bantime
, findtime
и maxretry
.
Скролувајте надолу до линијата 280 и ќе го видите делот [sshd].
Ова е местото каде што можете да поставите вредности за затворот за поврзување SSH. За да го вклучиме овој затвор во следењето и забраната, треба да ја напишеме следната линија:
enabled = true
Ја пишуваме и оваа линија:
maxretry = 3
Стандардната поставка беше пет, но сакаме да бидеме повнимателни со SSH конекциите. Ја спуштивме на три, а потоа ја зачувавме и ја затворивме датотеката.
Го додадовме овој затвор во мониторингот fail2bans
и надминавме една од стандардните поставки. Затворот може да користи комбинација од стандардни и специфични поставки за затворот.
Овозможување fail2ban
Досега го инсталиравме fail2ban
и го конфигуриравме. Сега, треба да овозможиме да работи како услуга за автоматско стартување. Потоа, треба да го тестираме за да се увериме дека работи како што се очекуваше.
За да овозможиме fail2ban
како услуга, ја користиме командата systemctl
:
sudo systemctl enable fail2ban
Ние исто така го користиме за да ја стартуваме услугата:
sudo systemctl start fail2ban
Можеме да го провериме статусот на услугата користејќи systemctl
, исто така:
sudo systemctl status fail2ban.service
Сè изгледа добро - имаме зелено светло, така што сè е добро.
Ајде да видиме дали fail2ban
се согласува:
sudo fail2ban-client status
Ова го одразува она што го поставивме. Овозможивме единствен затвор, именуван [sshd]. Ако го вклучиме името на затворот со нашата претходна команда, можеме подлабоко да го разгледаме:
sudo fail2ban-client status sshd
Ова го наведува бројот на неуспеси и забранети IP адреси. Се разбира, сите статистички податоци во моментов се нула.
Тестирање на нашиот затвор
На друг компјутер, ќе поднесеме барање за поврзување SSH на нашата машина за тестирање и намерно погрешно ќе ја впишеме лозинката. Добивате три обиди да ја добиете лозинката точно при секој обид за поврзување.
Вредноста maxretry
ќе се активира по три неуспешни обиди за поврзување, а не по три неуспешни обиди за лозинка. Значи, треба да напишеме неточна лозинка три пати за да не успее обидот за поврзување.
Потоа ќе направиме уште еден обид за поврзување и ќе ја напишеме лозинката погрешно уште три пати. Првиот неточен обид за лозинка на третото барање за поврзување треба да активира fail2ban.
По првата неточна лозинка на третото барање за поврзување, не добиваме одговор од далечинскиот уред. Не добиваме никакво објаснување; само го добиваме студеното рамо.
Мора да притиснете Ctrl+C за да се вратите во командната линија. Ако се обидеме уште еднаш, ќе добиеме различен одговор:
ssh dave@ubuntu20-04.local
Претходно, пораката за грешка беше „Дозволата е одбиена“. Овој пат врската е целосно одбиена. Ние сме персона нон грата. Бевме забранети.
Ајде повторно да ги погледнеме деталите за [sshd] затворот:
sudo fail2ban-client status sshd
Имаше три неуспеси, а една IP адреса (192.168.4.25) беше забранета.
Како што споменавме претходно, fail2ban
спроведува забрани со додавање правила во множеството правила на заштитниот ѕид. Ајде уште еднаш да го погледнеме пакетот правила (претходно беше празен):
sudo iptables -L
Додадено е правило во политиката INPUT, што испраќа SSH сообраќај во ланецот f2b-sshd
. Правилото во ланецот f2b-sshd
ги отфрла SSH врските од 192.168.4.25. Не ја сменивме стандардната поставка за bantime
, така што, за 10 минути, таа IP адреса ќе се отфрли и ќе може да прави нови барања за поврзување.
Ако поставите подолго времетраење на забраната (како неколку часа), но сакате да дозволите IP-адресата да направи друго барање за поврзување порано, можете да ја ослободите предвреме.
За да го направите ова, го пишуваме следново:
sudo fail2ban-client set sshd unbanip 192.168.5.25
На нашиот оддалечен компјутер, ако направиме друго барање за поврзување SSH и ја напишеме точната лозинка, ќе ни биде дозволено да се поврземе:
ssh dave@ubuntu20-04.local
Едноставно и ефективно
Поедноставното е обично подобро, а fail2ban
е елегантно решение за незгоден проблем. Потребна е многу мала конфигурација и речиси не наметнува никакви оперативни трошоци - на вас или на вашиот компјутер.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts