Како да се заштити SSH со fail2ban на CentOS 6


Статус: застарен

Оваа статија опфаќа верзија на CentOS која повеќе не е поддржана. Ако моментално управувате со сервер со CentOS 6, топло ви препорачуваме надградба или мигрирање на поддржана верзија на CentOS.

Причина:

Видете наместо тоа:

Следното упатство за DigitalOcean може да биде од непосреден интерес, бидејќи наведува како да се заштити демонот на услугата SSH со fail2ban на серверот CentOS 7:

  • Како да се заштити SSH со Fail2Ban на CentOS 7

За Fail2Ban

Серверите не постојат изолирано, а оние сервери со само најосновна конфигурација на SSH можат да бидат ранливи на напади со брутална сила. fail2ban обезбедува начин за автоматска заштита на серверот од малициозни знаци. Програмата работи со скенирање низ датотеките за евиденција и реагирање на навредливи дејства како што се повторени неуспешни обиди за најавување.

Чекор еден - Инсталирајте Fail2Ban

Бидејќи fail2ban не е достапен од CentOS, треба да започнеме со преземање на складиштето EPEL:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Следете со инсталирање fail2ban:

yum install fail2ban

Чекор два - копирајте ја конфигурациската датотека

Стандардната конфигурациска датотека fail2ban е локација на /etc/fail2ban/jail.conf. Меѓутоа, конфигурациската работа не треба да се врши во таа датотека, и наместо тоа треба да направиме локална копија од неа.

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

Откако ќе се копира датотеката, можете да ги направите сите ваши промени во новата датотека jail.local. Многу од можните услуги на кои можеби им е потребна заштита се веќе во датотеката. Секој од нив се наоѓа во свој дел, конфигуриран и исклучен.

Чекор три - Конфигурирајте ги стандардните вредности во Jail.Local

Отворете ја новата конфигурациска датотека fail2ban:

vi /etc/fail2ban/jail.local

Првиот дел од стандардните ги опфаќа основните правила што ќе ги следи fail2ban. Ако сакате да поставите повеќе нијансирана заштита за вашиот виртуелен приватен сервер, можете да ги приспособите деталите во секој дел.

Можете да го видите стандардниот дел подолу.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

Напишете ја вашата лична IP адреса во линијата ignoreip. Можете да ја одделите секоја адреса со празно место. IgnoreIP ви овозможува бела листа на одредени IP адреси и бидете сигурни дека тие не се заклучени од вашиот VPS. Вклучувањето на вашата адреса ќе гарантира дека нема случајно да се забраните себеси од вашиот сопствен виртуелен приватен сервер.

Следниот чекор е да се одлучи за bantime, бројот на секунди што домаќинот би бил блокиран од серверот доколку се утврди дека тие прекршуваат некое од правилата. Ова е особено корисно во случај на ботови, кои штом ќе бидат забранети, едноставно ќе преминат на следната цел. Стандардно е поставено за 10 минути - ако сакате, може да го зголемите на еден час (или повеќе).

Maxretry е количината на неточни обиди за најавување што може да ги има домаќинот пред да бидат забранети за времетраењето на забраната.

Findtime се однесува на времето во кое домаќинот треба да се најави. Стандардната поставка е 10 минути; тоа значи дека ако домаќинот се обиде, и не успее, да се најави повеќе од максималниот број пати во назначените 10 минути, тој ќе биде забранет.

Чекор четири (опционално) - Конфигурирајте го делот ssh-iptables во Jail.Local

Делот за детали за SSH е само малку подолу во конфигурацијата, и тој е веќе поставен и вклучен. Иако не треба да се бара од вас да правите промени во овој дел, можете да ги најдете деталите за секоја линија подолу.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

Овозможено едноставно се однесува на фактот дека заштитата на SSH е вклучена. Можете да го исклучите со зборот \неточно\.

филтерот, стандардно поставен на sshd, се однесува на конфигурациската датотека што ги содржи правилата што fail2banuses да се најдат совпаѓања. Името е скратена верзија на наставката на датотеката. На пример, sshd се однесува на /etc/fail2ban/filter.d/sshd.conf.

Акција ги опишува чекорите што ќе ги преземе fail2ban за да ја забрани соодветната IP адреса. Исто како и записот за филтер, секое дејство се однесува на датотека во директориумот action.d. Стандардното дејство за забрана, \iptables\ може да се најде на /etc/fail2ban/action.d/iptables.conf.

Во деталите за \iptables\, можете дополнително да го приспособите fail2ban. На пример, ако користите нестандардна порта, можете да го промените бројот на портата во заградите за да одговара, правејќи линијата да изгледа повеќе вака:

 eg. iptables[name=SSH, port=30000, protocol=tcp]

Можете да го промените протоколот од TCP во UDP и во оваа линија, во зависност од тоа кој сакате да го следи fail2ban.

Ако имате поставено сервер за пошта на вашиот виртуелен приватен сервер, Fail2Ban може да ви е-пошта кога забранува IP адреса. Во стандардниот случај, sendmail-whois се однесува на дејствата лоцирани на /etc/fail2ban/action.d/sendmail-whois.conf.

патеката за евиденција се однесува на локацијата на дневникот што ќе ја следи fail2ban.

Линијата max retry во делот SSH ја има истата дефиниција како стандардната опција. Меѓутоа, ако сте овозможиле повеќе услуги и сакате да имате специфични вредности за секоја од нив, можете да го поставите новиот максимален износ за повторно обид за SSH овде.

Чекор пет - рестартирајте го Fail2Ban

Откако ќе направите какви било промени во конфигурацијата fail2ban, секогаш не заборавајте да го рестартирате Fail2Ban:

sudo service fail2ban restart

Можете да ги видите правилата што fail2ban ги става на сила во IP табелата:

iptables -L