Көмек

Fail2ban көмегімен SSH-ты құпиясөзді іріктеуден қорғау

Серверіңізді брутфорс сияқты шабуылдардан қорғау үшін құпиясөздің орнына кілт арқылы аутентификацияны баптап, пайдалану ұсынылады.

Қорғаудың тағы бір тәсілі — Fail2ban құралын пайдалану. Fail2ban сервердегі қызметтердің журналдарын талдайды және күдікті әрекетті анықтаған кезде ықтимал шабуылдаушылардың IP-мекенжайларын автоматты түрде бұғаттайды. Fail2ban-ды Apache, FTP, dovecot және басқа да көптеген қызметтерді қорғау үшін қолдануға болады.

Бұл мақалада SSH қызметін құпиясөзді іріктеу шабуылдарынан қорғауға арналған Fail2ban-ның базалық баптауын қарастырамыз.

Fail2ban-ды Ubuntu/Debian жүйесіне орнату үшін келесі командаларды орындаңыз:

sudo apt update
sudo apt install fail2ban -y

CentOS жүйесіне орнату үшін:

sudo yum update && yum install epel-release
sudo yum install fail2ban

Содан кейін Fail2ban-ды автожүктеуге қосыңыз:

sudo systemctl enable fail2ban

Ubuntu жүйесінде SSH қорғауы орнатудан кейін бірден іске қосылады. Әдепкі бойынша, егер 10 минут ішінде аутентификацияның 5 сәтсіз әрекеті жасалса, Fail2ban IP-мекенжайларды 10 минутқа бұғаттайды.

Құралдың осы және басқа да жұмыс параметрлерін оның конфигурациялық файлдарында баптауға болады.

Fail2ban конфигурациялық файлы

Fail2ban баптаулары /etc/fail2ban/jail.conf конфигурациялық файлында сақталады.

Баптаулар бөлімдерге бөлінген. [DEFAULT] бөлімінде барлық қызметтерге қолданылатын жалпы параметрлер көрсетілген. Нақты қызметтерге арналған арнайы баптаулар [sshd], [apache-auth], [vsftpd] сияқты тиісті бөлімдерде жазылады.

Параметрлерді тікелей jail.conf файлында өзгертпеу ұсынылады. Оның орнына сол каталогта jail.local файлын жасап, өзгерістерді соған енгізіңіз.

Бастапқы файлды көшіре аласыз:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Немесе жаңа бос файл жасай аласыз:

sudo touch /etc/fail2ban/jail.local

Содан кейін jail.local файлына тек өзгерткіңіз келетін баптауларды енгізіңіз. Қалған параметрлер мәндерін jail.conf файлынан мұраға алады.

SSH қорғауын баптау

jail.local файлын өңдеуге ашыңыз:

sudo nano /etc/fail2ban/jail.local

Төмендегі мысал файлға енгізуге болатын ықтимал баптауларды көрсетеді:

[DEFAULT]
ignoreip = 95.111.123.21
[sshd]  
enabled  = true  
findtime = 120  
maxretry = 3  
bantime = 43200

Бұл баптаулардың мағынасы мынадай: егер ерекшеліктер тізіміне кірмейтін IP-мекенжайдан 2 минут ішінде аутентификацияның 3 сәтсіз әрекеті болса, Fail2ban бұл мекенжайды автоматты түрде 12 сағатқа бұғаттайды.

DEFAULT секциясы бұғаттау ұзақтығы (bantime), әрекеттердің ең көп саны (maxretry) және т.б. сияқты баптауларды ұсынады. Бұл нұсқаулықта баптаулардың көпшілігін SSH-қа арналған жеке секцияда сипаттаймыз, ал DEFAULT бөлімінде тек ignoreip параметрін қалдырамыз:

  • ignoreip — сәтсіз кіру әрекеттері кезінде автоматты түрде бұғатталмайтын IP-мекенжайлардың "ақ тізімі". Мұнда серверге әдетте қосылатын өз IP-мекенжайыңызды (егер ол динамикалық емес, статикалық болса) қоса аласыз. Сондай-ақ бірнеше мекенжайды бос орын арқылы бөліп немесе ішкі желі маскаларын көрсетуге болады.

Егер ақ тізімді пайдалану қажет болмаса, жолдың басына # таңбасын қосып, оны жай ғана түсініктемеге айналдыра аласыз.

[sshd] бөлімінде Fail2ban-ның нақты қызметті — SSH-ты өңдеуіне арналған баптауларды көрсете аласыз. Жүйеге байланысты бөлім [sshd], [ssh] немесе [ssh-iptables] сияқты әртүрлі атауларға ие болуы мүмкін (мұны jail.conf файлынан тексеруге болады).

Есте сақтаңыз: егер конфигурация файлында қандай да бір параметр болмаса, Fail2ban әдепкі мәндерді пайдаланады. Сондықтан тек өзгерту қажет параметрлерді ғана көрсету керек.

Мұнда баптауға арналған параметрлерді келтіреміз:

  • enabled — осы секцияның қосылуын немесе өшірілуін анықтайтын міндетті параметр. Қосу үшін бұл параметрдің мәні true болуы керек, ол әдепкі бойынша орнатылған. CentOS жүйесінде бұл параметр бастапқыда түсініктемеге айналдырылғанын ескеріңіз. Егер негізгі jail.conf файлының көшірмесін өңдеп жатсаңыз, секцияны қосу үшін осы параметрдің алдындағы # таңбасын алып тастағаныңызға көз жеткізіңіз;
  • bantime — секундпен берілген бұғаттау ұзақтығы, яғни күдікті IP-мекенжай бұғатталатын кезең;
  • maxretryfindtime кезеңі ішіндегі сәтсіз әрекеттер саны, одан кейін бұғаттау орындалады;
  • findtime — бұғаттау орындалмас бұрын оқиға (бұл жағдайда — сәтсіз қосылу әрекеті) белгілі бір рет (maxretry) қайталануы тиіс секундпен берілген кезең.

Бұдан басқа, баптауға болатын басқа да параметрлер бар, мысалы:

  • port — осы қызмет, мысалы, SSH пайдаланатын порт. Егер SSH стандартты емес портты (22 емес) пайдаланса, оны осы жерде көрсетіңіз. Стандартты порт пайдаланылған жағдайда бұл параметрді көрсету міндетті емес;
  • logpath — Fail2ban талдайтын лог-файлдың жолы. Әдепкі бойынша бұл — SSH логтарының стандартты жолы;
  • action — IP-мекенжайды бұғаттау кезінде орындалатын әрекет. Әдепкі бойынша бұл — iptables ережелері арқылы IP-мекенжайды бұғаттау.
    Осы IP-мекенжай үшін барлық порттарды бұғаттау үшін мынаны пайдалануға болады: action = iptables-allports.
    Егер серверіңізде firewalld немесе ufw бапталған болса, action: firewallcmd-ipset немесе ufw үшін тиісінше сәйкес мәндерді көрсетуіңіз керек.
    Қолжетімді әрекеттердің толық тізімін /etc/fail2ban/action.d каталогынан табуға болады.

Енгізілген өзгерістерді сақтағаннан кейін Fail2ban-ды қайта іске қосыңыз:

sudo systemctl restart fail2ban.service

Тексеру

Fail2ban-ды баптағаннан кейін оның жұмысын тексеру ұсынылады. Нәтижелер көрнекірек болуы үшін тексеруді баптауларды сақтағаннан кейін бірден емес, біраз уақыт өткен соң жүргізген дұрыс.

Бұғатталған IP-мекенжайларды iptables ережелерінен көруге болады:

sudo iptables -L

Fail2ban көмегімен SSH-ты құпиясөзді іріктеуден қорғау

Сондай-ақ Fail2ban жұмысының журналдарын көруге болады:

sudo tail /var/log/fail2ban.log

Fail2ban көмегімен SSH-ты құпиясөзді іріктеуден қорғау

Қосымша ақпаратты Fail2ban интерфейсі арқылы алуға болады:

sudo fail2ban-client status sshd

Fail2ban көмегімен SSH-ты құпиясөзді іріктеуден қорғау

Сұрақтарыңыз бар болса, жазыңыз