Заштита Линук сервера. Шта прво урадити

Заштита Линук сервера. Шта прво урадити
Хабиб М'хенни/Викимедиа Цоммонс, ЦЦ БИ-СА

Данас је подизање сервера на хостингу ствар пар минута и неколико кликова мишем. Али одмах након лансирања, он се налази у непријатељском окружењу, јер је отворен за цео Интернет као невина девојка у рокерској дискотеци. Скенери ће га брзо пронаћи и открити хиљаде аутоматски скриптираних ботова који претражују мрежу тражећи рањивости и погрешне конфигурације. Постоји неколико ствари које треба да урадите одмах након покретања да бисте осигурали основну заштиту.

Садржина

Не-роот корисник

Први корак је да креирате не-роот корисника за себе. Поента је да корисник root апсолутне привилегије у систему, а ако му дозволите удаљену администрацију, онда ћете обавити пола посла за хакера, остављајући му важеће корисничко име.

Због тога морате да креирате другог корисника и да онемогућите удаљену администрацију преко ССХ за роот.

Наредбом се покреће нови корисник useradd:

useradd [options] <username>

Затим се за њега додаје лозинка са командом passwd:

passwd <username>

Коначно, овог корисника треба додати у групу која има право да извршава повишене команде sudo. У зависности од Линук дистрибуције, то могу бити различите групе. На пример, у ЦентОС-у и Ред Хат-у, корисник је додат у групу wheel:

usermod -aG wheel <username>

У Убунту-у се додаје у групу sudo:

usermod -aG sudo <username>

Кључеви уместо ССХ лозинки

Груба сила или цурење лозинке су стандардни вектор напада, тако да је најбоље да онемогућите аутентификацију лозинке у ССХ-у (Сецуре Схелл) и уместо тога користите проверу аутентичности кључем.

Постоје разни програми за имплементацију ССХ протокола, као нпр лсх и Дропбеар, али најпопуларнији је ОпенССХ. Инсталирање ОпенССХ клијента на Убунту:

sudo apt install openssh-client

Инсталација сервера:

sudo apt install openssh-server

Покретање ССХ демона (ссхд) на Убунту серверу:

sudo systemctl start sshd

Аутоматски покрените демон при сваком покретању:

sudo systemctl enable sshd

Треба напоменути да серверски део ОпенССХ-а укључује и клијентски део. То јест, кроз openssh-server можете се повезати са другим серверима. Штавише, са ваше клијентске машине можете покренути ССХ тунел од удаљеног сервера до хоста треће стране, а затим ће хост треће стране сматрати удаљени сервер извором захтева. Веома згодна функција за маскирање вашег система. За детаље погледајте чланак „Практични савети, примери и ССХ тунели“.

На клијентској машини обично нема смисла инсталирати пуноправни сервер како би се спречила могућност даљинског повезивања са рачунаром (из безбедносних разлога).

Дакле, за вашег новог корисника, прво морате да генеришете ССХ кључеве на рачунару са којег ћете приступити серверу:

ssh-keygen -t rsa

Јавни кључ се чува у датотеци .pub и изгледа као низ насумичних знакова који почиње са ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Затим, испод роот-а, креирајте ССХ директоријум на серверу у корисничком кућном директоријуму и додајте ССХ јавни кључ у датотеку authorized_keys, користећи уређивач текста као што је Вим:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Коначно, поставите исправне дозволе за датотеку:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

и промени власништво на овог корисника:

chown -R username:username /home/username/.ssh

На страни клијента, потребно је да наведете локацију тајног кључа за аутентификацију:

ssh-add DIR_PATH/keylocation

Сада се можете пријавити на сервер под корисничким именом користећи овај кључ:

ssh [username]@hostname

Након ауторизације, можете користити команду сцп за копирање датотека, услужни програм ссхфс да даљински монтирате систем датотека или директоријуме.

Препоручљиво је да направите неколико резервних копија приватног кључа, јер ако онемогућите аутентификацију лозинке и изгубите је, онда уопште нећете имати начина да се пријавите на сопствени сервер.

Као што је горе поменуто, у ССХ-у морате да онемогућите аутентификацију за роот (ово је разлог зашто смо покренули новог корисника).

На ЦентОС/Ред Хат-у налазимо линију PermitRootLogin yes у конфигурационој датотеци /etc/ssh/sshd_config и промените га:

PermitRootLogin no

На Убунту додајте линију PermitRootLogin no у конфигурациони фајл 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

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

На ЦентОС/Ред Хат-у налазимо линију PasswordAuthentication yes у конфигурационој датотеци /etc/ssh/sshd_config и промените га овако:

PasswordAuthentication no

На Убунту додајте линију PasswordAuthentication no да поднесе 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

За упутства о омогућавању двофакторске аутентификације путем ССХ-а, погледајте овде.

Ватрени зид

Заштитни зид обезбеђује да само саобраћај на портовима који директно дозволите иде на сервер. Ово штити од експлоатације портова који су случајно омогућени другим сервисима, што у великој мери смањује површину напада.

Пре инсталирања заштитног зида, потребно је да се уверите да је ССХ укључен на листу искључења и да неће бити блокиран. У супротном, након покретања заштитног зида, нећемо моћи да се повежемо са сервером.

Убунту дистрибуција долази са некомпликованим заштитним зидом (уфв), и са ЦентОС/Ред Хат-ом - фиреваллд.

Омогућавање ССХ-а у заштитном зиду на Убунту-у:

sudo ufw allow ssh

На ЦентОС/Ред Хат користите команду firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Након ове процедуре, можете покренути заштитни зид.

На ЦентОС/Ред Хат-у покрените системд услугу за фиреваллд:

sudo systemctl start firewalld
sudo systemctl enable firewalld

На Убунту-у користимо следећу команду:

sudo ufw enable

Фаил2Бан

Сервис Фаил2Бан анализира логове на серверу и броји број покушаја приступа са сваке ИП адресе. Подешавања одређују правила колико је покушаја приступа дозвољено у одређеном интервалу - након чега се ова ИП адреса блокира на одређени временски период. На пример, дозволимо 5 неуспешних покушаја ССХ аутентификације у року од 2 сата, а затим блокирамо дату ИП адресу на 12 сати.

Инсталирање Фаил2Бан на ЦентОС и Ред Хат:

sudo yum install fail2ban

Инсталација на Убунту и Дебиан:

sudo apt install fail2ban

Лансирање:

systemctl start fail2ban
systemctl enable fail2ban

Програм има две конфигурационе датотеке: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Ограничења забране су наведена у другом фајлу.

Јаил за ССХ је подразумевано омогућен са подразумеваним подешавањима (5 покушаја, интервал 10 минута, забрана на 10 минута).

[ДЕФАУЛТ] игнорецомманд=бантиме=10м финдтиме=10м макретри=5

Поред ССХ-а, Фаил2Бан може заштитити и друге услуге на нгинк или Апацхе веб серверу.

Аутоматска безбедносна ажурирања

Као што знате, нове рањивости се стално налазе у свим програмима. Након објављивања информација, популарним пакетима експлоатације се додају експлоатације које масовно користе хакери и тинејџери када скенирају све сервере заредом. Због тога је веома важно да инсталирате безбедносна ажурирања чим се појаве.

Убунту Сервер има подразумевано омогућена аутоматска безбедносна ажурирања, тако да нису потребне додатне радње.

На ЦентОС/Ред Хат-у морате да инсталирате апликацију днф-аутоматиц и укључите тајмер:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Провера тајмера:

sudo systemctl status dnf-automatic.timer

Промена подразумеваних портова

ССХ је развијен 1995. да замени телнет (порт 23) и фтп (порт 21), па је аутор програма Тату Илтонен подразумевано изабран порт 22, а одобрила га је ИАНА.

Наравно, сви нападачи су свесни на ком порту ради ССХ - и скенирају га заједно са осталим стандардним портовима да би сазнали верзију софтвера, проверили стандардне роот лозинке и тако даље.

Промена стандардних портова – замагљивање – неколико пута смањује количину смећа саобраћаја, величину логова и оптерећење на серверу, а такође смањује површину напада. Иако неки критикују овај метод "заштите кроз мрачност" (безбедност кроз таму). Разлог је тај што је ова техника супротна основној архитектонска заштита. Стога, на пример, амерички национални институт за стандарде и технологију у „Водич за безбедност сервера“ указује на потребу за отвореном серверском архитектуром: „Безбедност система не треба да се ослања на тајност имплементације његових компоненти“, каже се у документу.

Теоретски, промена подразумеваних портова је против праксе отворене архитектуре. Али у пракси се количина злонамерног саобраћаја заправо смањује, тако да је ово једноставна и ефикасна мера.

Број порта се може конфигурисати променом директиве Port 22 у конфигурационој датотеци / етц / ссх / ссхд_цонфиг. Такође је назначено параметром -p <port> в ссхд. ССХ клијент и програми сфтп такође подржавају опцију -p <port>.

Параметар -p <port> може се користити за одређивање броја порта приликом повезивања са командом ssh у линуксу. ИН сфтп и scp параметар се користи -P <port> (велико П). Инструкције командне линије замењују било коју вредност у конфигурационим датотекама.

Ако постоји много сервера, скоро све ове радње за заштиту Линук сервера могу се аутоматизовати у скрипти. Али ако постоји само један сервер, онда је боље ручно контролисати процес.

О правима оглашавања

Наручите и почните одмах! Стварање ВДС-а било коју конфигурацију и са било којим оперативним системом у року од једног минута. Максимална конфигурација ће вам омогућити да изађете у потпуности - 128 ЦПУ језгара, 512 ГБ РАМ-а, 4000 ГБ НВМе. Епско 🙂

Заштита Линук сервера. Шта прво урадити

Извор: ввв.хабр.цом