Linux серверін қорғау. Алдымен не істеу керек

Linux серверін қорғау. Алдымен не істеу керек
Хабиб М'хенни/Wikimedia Commons, CC BY-SA

Қазіргі уақытта хостингте серверді көтеру бірнеше минут және тінтуірді бірнеше рет басу мәселесі. Бірақ ұшырылғаннан кейін бірден ол дұшпандық ортада қалады, өйткені ол рокер дискотекасындағы бейкүнә қыз сияқты бүкіл Интернетке ашық. Сканерлер оны тез тауып, осалдықтар мен қате конфигурацияларды іздейтін желіні тексеретін мыңдаған автоматты сценарийленген боттарды анықтайды. Негізгі қорғанысты қамтамасыз ету үшін іске қосқаннан кейін бірден істеу керек бірнеше нәрсе бар.

Мазмұны

Түбірлік емес пайдаланушы

Бірінші қадам - ​​өзіңіз үшін root емес пайдаланушыны жасау. Мәселе мынада, пайдаланушы root Жүйедегі абсолютті артықшылықтар және егер сіз оған қашықтан басқаруға рұқсат етсеңіз, онда сіз хакерге жарамды пайдаланушы атын қалдырып, жұмыстың жартысын жасайсыз.

Сондықтан басқа пайдаланушыны жасау керек және түбір үшін SSH арқылы қашықтан басқаруды өшіру керек.

Жаңа пайдаланушы пәрмен арқылы іске қосылады useradd:

useradd [options] <username>

Содан кейін ол үшін пәрмен арқылы құпия сөз қосылады passwd:

passwd <username>

Соңында, бұл пайдаланушыны жоғары командаларды орындау құқығы бар топқа қосу керек sudo. Linux таратуына байланысты бұл әртүрлі топтар болуы мүмкін. Мысалы, CentOS және Red Hat жүйелерінде пайдаланушы топқа қосылады wheel:

usermod -aG wheel <username>

Ubuntu-да ол топқа қосылады sudo:

usermod -aG sudo <username>

SSH құпия сөздерінің орнына кілттер

Қатал күш немесе құпия сөздің ағып кетуі стандартты шабуыл векторы болып табылады, сондықтан SSH (Secure Shell) жүйесінде құпия сөздің аутентификациясын өшіріп, оның орнына кілт аутентификациясын қолданған дұрыс.

сияқты SSH хаттамасын жүзеге асыру үшін әртүрлі бағдарламалар бар лш и Құлаққап, бірақ ең танымал OpenSSH. Ubuntu жүйесінде OpenSSH клиентін орнату:

sudo apt install openssh-client

Серверді орнату:

sudo apt install openssh-server

Ubuntu серверінде SSH демонын (sshd) іске қосу:

sudo systemctl start sshd

Әрбір жүктеуде демонды автоматты түрде іске қосыңыз:

sudo systemctl enable sshd

Айта кету керек, OpenSSH серверлік бөлігі клиенттік бөлікті қамтиды. Яғни, арқылы openssh-server басқа серверлерге қосылуға болады. Сонымен қатар, клиенттік құрылғыңыздан қашықтағы серверден үшінші тарап хостына SSH туннелін бастауға болады, содан кейін үшінші тарап хосты қашықтағы серверді сұраулар көзі ретінде қарастырады. Жүйені маскировкалауға арналған өте ыңғайлы мүмкіндік. Толық ақпарат алу үшін мақаланы қараңыз «Практикалық кеңестер, мысалдар және SSH туннельдері».

Клиенттік компьютерде компьютерге қашықтан қосылу мүмкіндігін болдырмау үшін (қауіпсіздік мақсатында) әдетте толыққанды серверді орнатудың мағынасы жоқ.

Сонымен, жаңа пайдаланушы үшін алдымен серверге кіретін компьютерде SSH кілттерін жасау керек:

ssh-keygen -t rsa

Ашық кілт файлда сақталады .pub деп басталатын кездейсоқ таңбалар тізбегіне ұқсайды ssh-rsa.

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

Содан кейін, түбірден пайдаланушының үй каталогындағы серверде SSH каталогын жасаңыз және файлға SSH ашық кілтін қосыңыз. authorized_keys, Vim сияқты мәтіндік редакторды пайдалану:

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

Авторизациядан кейін файлдарды, қызметтік бағдарламаны көшіру үшін scp пәрменін пайдалануға болады sshfs файлдық жүйені немесе каталогтарды қашықтан орнату үшін.

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

Жоғарыда айтылғандай, SSH жүйесінде түбірлік аутентификацияны өшіру керек (бұл жаңа пайдаланушыны іске қосудың себебі).

CentOS/Red Hat жүйесінде біз сызықты табамыз PermitRootLogin yes конфигурация файлында /etc/ssh/sshd_config және оны өзгертіңіз:

PermitRootLogin no

Ubuntu жүйесінде жолды қосыңыз PermitRootLogin no конфигурация файлына 10-my-sshd-settings.conf:

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

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

CentOS/Red Hat жүйесінде біз сызықты табамыз PasswordAuthentication yes конфигурация файлында /etc/ssh/sshd_config және оны келесідей өзгертіңіз:

PasswordAuthentication no

Ubuntu жүйесінде жолды қосыңыз PasswordAuthentication no файлға 10-my-sshd-settings.conf:

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

SSH арқылы екі факторлы аутентификацияны қосу туралы нұсқауларды қараңыз осында.

Брандмауэр

Брандмауэр серверге тікелей рұқсат беретін порттардағы трафиктің ғана өтуін қамтамасыз етеді. Бұл басқа қызметтермен кездейсоқ қосылған порттарды пайдаланудан қорғайды, бұл шабуыл бетін айтарлықтай азайтады.

Брандмауэрді орнатпас бұрын, SSH ерекшеліктер тізіміне енгізілгеніне және бұғатталмайтынына көз жеткізуіңіз керек. Әйтпесе, желіаралық қалқанды іске қосқаннан кейін серверге қосыла алмаймыз.

Ubuntu дистрибуциясы күрделі емес брандмауэрмен бірге келеді (ufw) және CentOS/Red Hat көмегімен - firewalld.

Ubuntu жүйесіндегі брандмауэрде SSH рұқсат беру:

sudo ufw allow ssh

CentOS/Red Hat жүйесінде пәрменді пайдаланыңыз firewall-cmd:

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

Осы процедурадан кейін брандмауэрді іске қосуға болады.

CentOS/Red Hat жүйесінде брандмауэр үшін systemd қызметін іске қосыңыз:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu жүйесінде біз келесі пәрменді қолданамыз:

sudo ufw enable

Fail2Бан

қызмет көрсету Fail2Бан сервердегі журналдарды талдайды және әрбір IP мекенжайынан кіру әрекеттерінің санын есептейді. Параметрлер белгілі бір аралықта қанша қол жеткізу әрекетіне рұқсат етілген ережелерді анықтайды - содан кейін бұл IP мекенжайы белгілі бір уақыт кезеңіне блокталады. Мысалы, 5 сағат ішінде 2 сәтсіз SSH аутентификация әрекетіне рұқсат етейік, содан кейін берілген IP мекенжайын 12 сағатқа блоктаңыз.

CentOS және Red Hat жүйелерінде Fail2Ban орнату:

sudo yum install fail2ban

Ubuntu және Debian жүйесінде орнату:

sudo apt install fail2ban

Іске қосу:

systemctl start fail2ban
systemctl enable fail2ban

Бағдарламада екі конфигурация файлы бар: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Тыйым салу шектеулері екінші файлда көрсетілген.

SSH үшін Jail әдепкі бойынша әдепкі параметрлермен қосылады (5 әрекет, 10 минут аралығы, 10 минутқа тыйым салу).

[DEFAULT] ignorecommand=bantime=10m findtime=10m maxretry=5

SSH-ден басқа, Fail2Ban nginx немесе Apache веб-серверіндегі басқа қызметтерді қорғай алады.

Автоматты қауіпсіздік жаңартулары

Өздеріңіз білетіндей, барлық бағдарламаларда жаңа осалдықтар үнемі кездеседі. Ақпарат жарияланғаннан кейін эксплоиттер танымал эксплойт бумаларына қосылады, оларды хакерлер мен жасөспірімдер қатардағы барлық серверлерді сканерлеу кезінде жаппай пайдаланады. Сондықтан қауіпсіздік жаңартуларын олар пайда болған бойда орнату өте маңызды.

Ubuntu серверінде автоматты қауіпсіздік жаңартулары әдепкі бойынша қосылады, сондықтан қосымша әрекет қажет емес.

CentOS/Red Hat жүйесінде қолданбаны орнату керек dnf-автоматты және таймерді қосыңыз:

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

Таймерді тексеру:

sudo systemctl status dnf-automatic.timer

Әдепкі порттарды өзгерту

SSH 1995 жылы telnet (23 порт) және ftp (21 порт) ауыстыру үшін әзірленді, сондықтан бағдарлама авторы Тату Илтонен әдепкі бойынша таңдалған порт 22, және IANA мақұлдаған.

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

Стандартты порттарды өзгерту – күңгірттеу – қоқыс трафигінің көлемін, журналдар өлшемін және сервердегі жүктемені бірнеше есе азайтады, сонымен қатар шабуыл бетін азайтады. Кейбір болса да бұл «түсініксіздік арқылы қорғау» әдісін сынау (түсініксіздік арқылы қауіпсіздік). Себебі, бұл техника іргеліге қарсы сәулет қорғау. Сондықтан, мысалы, АҚШ Ұлттық стандарттар және технологиялар институты «Сервер қауіпсіздік нұсқаулығы» ашық сервер архитектурасының қажеттілігін көрсетеді: «Жүйенің қауіпсіздігі оның құрамдас бөліктерінің іске асырылу құпиясына сенбеуі керек», - делінген құжатта.

Теориялық тұрғыдан әдепкі порттарды өзгерту ашық архитектура тәжірибесіне қайшы келеді. Бірақ іс жүзінде зиянды трафик көлемі іс жүзінде азаяды, сондықтан бұл қарапайым және тиімді шара.

Порт нөмірін директиваны өзгерту арқылы конфигурациялауға болады Port 22 конфигурация файлында / etc / ssh / sshd_config. Ол сондай-ақ параметр арқылы көрсетіледі -p <port> в sshd. SSH клиенті және бағдарламалары sftp опцияны да қолдайды -p <port>.

Параметр -p <port> пәрменімен қосылу кезінде порт нөмірін көрсету үшін пайдаланылуы мүмкін ssh Linux жүйесінде. IN sftp и scp параметрі қолданылады -P <port> (бас P). Пәрмен жолы нұсқауы конфигурация файлдарындағы кез келген мәнді қайта анықтайды.

Егер серверлер көп болса, Linux серверін қорғауға арналған осы әрекеттердің барлығы дерлік сценарийде автоматтандырылуы мүмкін. Бірақ егер бір ғана сервер болса, онда процесті қолмен басқарған дұрыс.

Жарнама құқықтары туралы

Тапсырыс беріп, бірден бастаңыз! VDS құру кез келген конфигурациямен және кез келген операциялық жүйемен бір минут ішінде. Максималды конфигурация сізге толықтай шығуға мүмкіндік береді - 128 процессорлық ядро, 512 ГБ жедел жады, 4000 ГБ NVMe. Эпикалық 🙂

Linux серверін қорғау. Алдымен не істеу керек

Ақпарат көзі: www.habr.com