Инсталирайте Fail2ban и го свържете със SSH и Nginx

Когато сме монтирали сървър с Linux и искаме да го управляваме от интернет чрез SSH дистанционно управление, може да се случи да започнем да получаваме атаки с цел да влезем в системата и да можем да я контролираме за нейните цели. Тези атаки обикновено се извършват от компютърни програми (ботове), които дълго време се опитват да получат достъп до системата, използвайки груба сила.

В предишни публикации говорих за това как да конфигурирам SSH услугата, но някои усъвършенствани ботове не влизат в услугата, но могат да убият SSH услугата на сървъра, като деактивират отдалечения достъп.

Пълно ръководство за SSH (Secure Shell)

Можем да го избегнем, като използваме fail2ban инструмент, е много практичен и предлага голяма граница на безопасност. Да обясня малко как работи. Той е в състояние да създава iptables преди неуспешен опит за влизане повече от 5 пъти подред, като отхвърля всякакъв вид връзка, след като бъде забранен.

Инсталирайте Fail2ban


Инсталацията може да се извърши директно от apt. Първо актуализираме системата и след това инсталираме Fail2ban.
 apt-get update && apt-get -y ъпгрейд
 apt-get install fail2ban
Това не само инсталира програмата, но и я оставя да работи и да започне със системата.

Конфигуриране на Fail2ban


Услугата Fail2ban има своите настройки в директорията / etc / fail2ban. Имате някои предварително конфигурирани опции в jail.conf, най -доброто в този случай е да копирате файла и да не правите промените директно в него, при актуализиране на fail2ban тези файлове се презаписват и можете да загубите всички направени преди това промени.

В този случай копираме файла и го кръщаваме jail.local, за да може да го намери.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
След като бъде копиран, можем да го отворим и да видим как работи.
 vim /etc/fail2ban/jail.local
Вътре във файла имаме няколко параметъра, които можем да коригираме. Всеки параметър, който е под маркера [DEFAULT], ще бъде приложен към всички услуги, активирани от Fail2ban като SSH, NGINX, APACHE, ще го наречем глобален, след което ще имаме конкретни секции за всяка услуга.

Ще започнем с добавяне на параметри към глобалния раздел.

 ignoreip = 127.0.0.1
Ние добавяме нашия localhost по този начин, той ще игнорира целия локален трафик, можем да добавим допълнителни адреси, разделящи ги с интервал.
 време на бантинг = 600
Времето за изпълнение е периодът от време, през който клиентът ще бъде забранен, след като бъде блокиран. Единицата е за секунди 600 секунди ще бъде 10 минути е стойността по подразбиране.
 findtime = 600 maxretry = 3
След това имаме време за намиране и макс. Те са отговорни за установяването на условия за клиент да бъде забранен по подразбиране, може да се прочете, че всеки потребител с повече от 3 неуспешни опита за по -малко от 10 минути ще бъде забранен.
 destemail = root @ localhost sendername = Fail2Ban mta = sendmail
Ако искаме да създаваме сигнали за забранени потребители, тези 3 параметъра са необходими, ще определим дестинацията, до която да изпратим имейла с предупреждение, кой ще отговаря за изпращането му, и накрая mta, за да определим каква имейл услуга ще използваме .
 действие = $ (действие_) s
Тук ще определим какви действия да предприемете, когато се изисква забрана. Стойността action_ е действието по подразбиране се основава на отхвърляне на всеки трафик на клиент до изтичане на времето за забрана.

Ако искаме да изпратим сигнал по пощата, трябва да променим стойността на action_mw, но ако искаме също така да прикачи редове от дневника в тялото на пощата, ще използваме action_mwl. Трябва да сме сигурни, че настройките за поща са правилни, преди да промените тази стойност.

Настройки по услуга


След като глобалните конфигурации бъдат завършени, ще добавим параметрите, които ще се прилагат изключително към

SSH услуга, не забравяме да добавим опциите под маркера [SSH].

 активиран = вярно
По подразбиране услугата SSH е активирана, но можем да я променим, ако е необходимо в тази опция.

Целият този раздел може да работи със стойностите, които ще опиша по -късно, но можете да промените, за да го адаптирате към вашите нужди или да ги оставите всички по подразбиране.

Друга от конфигурациите са филтрите, които показват дали влизането е било правилно или не и могат да бъдат добавени за други услуги, например имаме сървър с nginx и част от страницата е защитена с парола, но клиент атакува с груба сила , можем да спрем това, като добавим следното под маркера [nginx-http-auth].

 [nginx-http-auth] активиран = истински филтър = nginx-http-auth порт = http, https logpath = /var/log/nginx/error.log
Сега, ако потребителят има повече от 3 неуспешни опита за влизане, той се отразява в регистрационните файлове и fail2ban ще действа и ще блокира целия потребителски трафик.

Тестова среда


След като разбрахме основите, ще направим малка тестова среда, където ще защитим SSH и Nginx чрез Fail2ban, като създадем политика за забрана, която ще ни уведомява за IP, който е забранен.

Първо ще инсталираме Nginx, ако не е инсталиран

 apt-get инсталирайте nginx
ще инсталираме пощенска услуга за известия, тя може да бъде sendmail
 apt-get install sendmail
накрая искаме нашите iptables да бъдат постоянни след зареждане, можем или да създадем скрипт rc.0, или да инсталираме пакета iptables-persistent.
 apt-get install iptables-persistent
Той ще бъде инсталиран.

Създаване на нашата защитна стена


След като инсталираме горното, трябва да внедрим защитна стена, така че да може да блокира трафика. Ще създам основна защитна стена в по -късни публикации. Ще говоря повече за iptables.

Ще разрешим установени връзки, сървърния трафик като актуализации и трафик, предназначен за SSH и Nginx портове. Целият оставащ трафик ще бъде отказан.

 sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate УСТАНОВЕН, СВЪРЗАН -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP
Можем да видим промените с:
 iptables -S
Той трябва да даде подобен резултат.
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate СВЪРЗАНИ, УСТАНОВЕНИ -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -ssh -j ВРЪЩАНЕ

Регулиране на настройките на Fail2ban


Сега трябва да конфигурираме файла jail.local при наше удобство.
 vi /etc/fail2ban/jail.local
Можем да удължим времето за забрана на потребителя за поне 30 минути, не забравяйте да зададете стойността в секунди.
 време на бантинг = 1800
Трябва да конфигурираме имейл, който получава всички сигнали за забрана на fail2ban, нека да потърсим стойността на имейла във файла и да поставим имейла.
 destemail = [email protected]
Можем да променим подателя, който ще изпраща предупреждението, което обикновено поставям с името fail2ban, за да можем по -добре да филтрираме между всички регистрационни файлове.

След като трябва да променим стойността на действието, имаме 2 възможности:

  • action_mw: изпраща сигнал с доклад, подобен на командата whois на забранения клиент.
  • action_mwl: изпратете много по -подробно предупреждение, като включите дневник в тялото на съобщението.

В това ще използваме втория вариант:

 действие =% (action_mwl) s 
След това ще отидем в секцията [SSH] и можем да редактираме максималния брой опити преди забраната, ще я оставим на 5:
 maxretry = 5
Ако имаме SSH услуга на порт, различен от 22, което е силно препоръчително, трябва да споменем неговия порт.
 порт = 45024
След това ще потърсим маркера [nginx-http-auth], ще го оставим такъв, какъвто е.
 [nginx-http-auth] enabled = true
Свършихме и можем да запишем и затворим файла.

Рестартиране на услугата Fail2ban


За да бъдат приложени всички промени, препоръчвам да спрете услугата.
 услуга fail2ban стоп 
След това можем да ги стартираме отново
 услуга fail2ban старт
Това ще отнеме известно време, след около 5 минути отново можем да видим нашите правила
 iptables -S
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -nginx -http -auth -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban -nginx -http -auth -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate СВЪРЗАН, УСТАНОВЕН -j ACCEPT -A INPUT -p tcp -m tcp - -dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -nginx -http -auth -j ВРЪЩАНЕ -A fail2ban -ssh -j ВРЪЩАНЕ
Виждаме как fail2ban е добавил нови правила, може да варира в зависимост от конфигурацията, която сте дефинирали в /etc/fail2ban/jail.local.

ИзводиИнсталирахме fail2ban и конфигурирахме да работи със SSH и NGINX в случай на APACHE трябва да сменим етикетите и директорията на регистрационните файлове, но това е много подобно на nginx. Ние сме конфигурирали само основите, можете да създавате филтри и много по -разширени правила, препоръчвам да прочетете малко тяхната страница с хора, конфигурационните файлове са добре коментирани, препоръчвам малко по малко да откриете всичките му функции.

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave