Amddiffyn gweinydd Linux. Beth i'w wneud yn gyntaf

Amddiffyn gweinydd Linux. Beth i'w wneud yn gyntaf
Habib M'henni/Comin Wikimedia, CC BY-SA

Y dyddiau hyn, mae codi gweinydd ar westeiwr yn fater o ychydig funudau ac ychydig o gliciau llygoden. Ond yn syth ar ôl ei lansio, mae'n cael ei hun mewn amgylchedd gelyniaethus, oherwydd ei fod yn agored i'r Rhyngrwyd gyfan fel merch ddiniwed mewn disgo rocer. Bydd sganwyr yn dod o hyd iddo'n gyflym ac yn canfod miloedd o fotiau wedi'u sgriptio'n awtomatig sy'n sgwrio'r rhwydwaith yn chwilio am wendidau a chamgyfluniadau. Mae yna ychydig o bethau y dylech eu gwneud yn iawn ar ôl lansio i sicrhau amddiffyniad sylfaenol.

Cynnwys

Defnyddiwr nad yw'n gwraidd

Y cam cyntaf yw creu defnyddiwr nad yw'n gwraidd i chi'ch hun. Y pwynt yw bod y defnyddiwr root breintiau absoliwt yn y system, ac os ydych chi'n caniatáu gweinyddiaeth bell iddo, yna byddwch chi'n gwneud hanner y gwaith i'r haciwr, gan adael enw defnyddiwr dilys iddo.

Felly, mae angen i chi greu defnyddiwr arall, ac analluogi gweinyddu o bell trwy SSH ar gyfer gwraidd.

Dechreuir defnyddiwr newydd gan y gorchymyn useradd:

useradd [options] <username>

Yna ychwanegir cyfrinair ar ei gyfer gyda'r gorchymyn passwd:

passwd <username>

Yn olaf, mae angen ychwanegu'r defnyddiwr hwn at grŵp sydd â'r hawl i weithredu gorchmynion uchel sudo. Yn dibynnu ar y dosbarthiad Linux, gall y rhain fod yn grwpiau gwahanol. Er enghraifft, yn CentOS a Red Hat, mae'r defnyddiwr yn cael ei ychwanegu at y grŵp wheel:

usermod -aG wheel <username>

Yn Ubuntu mae'n cael ei ychwanegu at y grŵp sudo:

usermod -aG sudo <username>

Allweddi yn lle cyfrineiriau SSH

Mae grym cryf neu ollyngiadau cyfrinair yn fector ymosodiad safonol, felly mae'n well analluogi dilysu cyfrinair yn SSH (Secure Shell) a defnyddio dilysiad allweddol yn lle hynny.

Mae yna raglenni amrywiol ar gyfer gweithredu'r protocol SSH, megis lsh и diferyn, ond y mwyaf poblogaidd yw OpenSSH. Gosod y cleient OpenSSH ar Ubuntu:

sudo apt install openssh-client

Gosod gweinydd:

sudo apt install openssh-server

Dechrau'r daemon SSH (sshd) ar y gweinydd Ubuntu:

sudo systemctl start sshd

Cychwynnwch yr ellyll ar bob cist yn awtomatig:

sudo systemctl enable sshd

Dylid nodi bod rhan gweinydd OpenSSH yn cynnwys rhan y cleient. Hynny yw, drwodd openssh-server gallwch gysylltu â gweinyddwyr eraill. Ar ben hynny, o'ch peiriant cleient, gallwch chi gychwyn twnnel SSH o weinydd pell i westeiwr trydydd parti, ac yna bydd y gwesteiwr trydydd parti yn ystyried y gweinydd pell fel ffynhonnell y ceisiadau. Nodwedd ddefnyddiol iawn ar gyfer cuddio'ch system. Gweler yr erthygl am fwy o fanylion "Awgrymiadau Ymarferol, Enghreifftiau, a Thwneli SSH".

Ar beiriant cleient, fel arfer nid yw'n gwneud unrhyw synnwyr i osod gweinydd cyflawn er mwyn atal y posibilrwydd o gysylltiad o bell â chyfrifiadur (am resymau diogelwch).

Felly, ar gyfer eich defnyddiwr newydd, yn gyntaf mae angen i chi gynhyrchu allweddi SSH ar y cyfrifiadur y byddwch chi'n cyrchu'r gweinydd ohono:

ssh-keygen -t rsa

Mae'r allwedd gyhoeddus yn cael ei storio mewn ffeil .pub ac mae'n edrych fel cyfres o gymeriadau ar hap sy'n dechrau ssh-rsa.

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

Yna, o dan wraidd, creu cyfeiriadur SSH ar y gweinydd yng nghyfeiriadur cartref y defnyddiwr ac ychwanegu'r allwedd gyhoeddus SSH i'r ffeil authorized_keys, gan ddefnyddio golygydd testun fel Vim:

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

vim /home/user_name/.ssh/authorized_keys

Yn olaf, gosodwch y caniatâd cywir ar gyfer y ffeil:

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

a newid perchnogaeth i'r defnyddiwr hwn:

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

Ar ochr y cleient, mae angen i chi nodi lleoliad yr allwedd gyfrinachol ar gyfer dilysu:

ssh-add DIR_PATH/keylocation

Nawr gallwch chi fewngofnodi i'r gweinydd o dan yr enw defnyddiwr gan ddefnyddio'r allwedd hon:

ssh [username]@hostname

Ar ôl awdurdodi, gallwch ddefnyddio'r gorchymyn scp i gopïo ffeiliau, y cyfleustodau sshfs i osod system ffeiliau neu gyfeiriaduron o bell.

Fe'ch cynghorir i wneud sawl copi wrth gefn o'r allwedd breifat, oherwydd os byddwch yn analluogi dilysu cyfrinair a'i golli, yna ni fydd gennych unrhyw ffordd i fewngofnodi i'ch gweinydd eich hun o gwbl.

Fel y soniwyd uchod, yn SSH mae angen i chi analluogi dilysu gwraidd (dyma'r rheswm pam y dechreuon ni ddefnyddiwr newydd).

Ar CentOS/Red Hat rydym yn dod o hyd i'r llinell PermitRootLogin yes yn y ffeil ffurfweddu /etc/ssh/sshd_config a'i newid:

PermitRootLogin no

Ar Ubuntu ychwanegwch y llinell PermitRootLogin no i'r ffeil ffurfweddu 10-my-sshd-settings.conf:

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

Ar ôl gwirio bod y defnyddiwr newydd yn dilysu gyda'i allwedd, gallwch analluogi dilysu cyfrinair i ddileu'r risg o ollyngiad cyfrinair neu rym 'n Ysgrublaidd. Nawr, er mwyn cyrchu'r gweinydd, bydd angen i ymosodwr gael allwedd breifat.

Ar CentOS/Red Hat rydym yn dod o hyd i'r llinell PasswordAuthentication yes yn y ffeil ffurfweddu /etc/ssh/sshd_config a'i newid fel hyn:

PasswordAuthentication no

Ar Ubuntu ychwanegwch y llinell PasswordAuthentication no i ffeilio 10-my-sshd-settings.conf:

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

Am gyfarwyddiadau ar alluogi dilysu dau ffactor trwy SSH, gweler yma.

wal dân

Mae'r wal dân yn sicrhau mai dim ond y traffig ar y porthladdoedd rydych chi'n eu caniatáu yn uniongyrchol fydd yn mynd i'r gweinydd. Mae hyn yn amddiffyn rhag ecsbloetio porthladdoedd sy'n cael eu galluogi'n ddamweiniol gyda gwasanaethau eraill, sy'n lleihau'r wyneb ymosodiad yn fawr.

Cyn gosod wal dân, mae angen i chi sicrhau bod SSH wedi'i gynnwys yn y rhestr wahardd ac na fydd yn cael ei rwystro. Fel arall, ar ôl cychwyn y wal dân, ni fyddwn yn gallu cysylltu â'r gweinydd.

Daw dosbarthiad Ubuntu gyda Mur Tân Syml (ufw), a gyda CentOS/Red Hat - firewalld.

Caniatáu SSH yn y wal dân ar Ubuntu:

sudo ufw allow ssh

Ar CentOS/Red Hat defnyddiwch y gorchymyn firewall-cmd:

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

Ar ôl y weithdrefn hon, gallwch chi gychwyn y wal dân.

Ar CentOS/Red Hat, dechreuwch y gwasanaeth systemd ar gyfer firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ar Ubuntu rydym yn defnyddio'r gorchymyn canlynol:

sudo ufw enable

Fail2Ban

Gwasanaeth Fail2Ban yn dadansoddi logiau ar y gweinydd ac yn cyfrif nifer yr ymgeisiau mynediad o bob cyfeiriad IP. Mae'r gosodiadau'n nodi'r rheolau ar gyfer faint o ymdrechion mynediad a ganiateir am gyfnod penodol - ac ar ôl hynny mae'r cyfeiriad IP hwn yn cael ei rwystro am gyfnod penodol o amser. Er enghraifft, gadewch i ni ganiatáu 5 ymgais ddilysu SSH a fethwyd o fewn 2 awr, yna rhwystrwch y cyfeiriad IP a roddwyd am 12 awr.

Gosod Fail2Ban ar CentOS a Red Hat:

sudo yum install fail2ban

Gosod ar Ubuntu a Debian:

sudo apt install fail2ban

Lansio:

systemctl start fail2ban
systemctl enable fail2ban

Mae gan y rhaglen ddwy ffeil ffurfweddu: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Mae cyfyngiadau gwaharddiad wedi'u nodi yn yr ail ffeil.

Mae carchar ar gyfer SSH wedi'i alluogi yn ddiofyn gyda gosodiadau diofyn (5 ymgais, egwyl 10 munud, gwaharddiad am 10 munud).

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

Yn ogystal â SSH, gall Fail2Ban amddiffyn gwasanaethau eraill ar weinydd gwe nginx neu Apache.

Diweddariadau diogelwch awtomatig

Fel y gwyddoch, mae gwendidau newydd i'w cael yn gyson ym mhob rhaglen. Ar ôl i'r wybodaeth gael ei chyhoeddi, mae campau'n cael eu hychwanegu at becynnau ecsbloetio poblogaidd, sy'n cael eu defnyddio'n aruthrol gan hacwyr a phobl ifanc yn eu harddegau wrth sganio pob gweinydd yn olynol. Felly, mae'n bwysig iawn gosod diweddariadau diogelwch cyn gynted ag y byddant yn ymddangos.

Ar weinydd Ubuntu, mae diweddariadau diogelwch awtomatig yn cael eu galluogi yn ddiofyn, felly nid oes angen unrhyw gamau pellach.

Ar CentOS/Red Hat mae angen i chi osod y rhaglen dnf-awtomatig a throwch yr amserydd ymlaen:

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

Gwiriad amserydd:

sudo systemctl status dnf-automatic.timer

Newid y pyrth rhagosodedig

Datblygwyd SSH ym 1995 i ddisodli telnet (porthladd 23) a ftp (porthladd 21), felly awdur y rhaglen, Tatu Iltonen porthladd dethol 22 yn ddiofyn, ac wedi ei gymeradwyo gan IANA.

Yn naturiol, mae pob ymosodwr yn ymwybodol o ba borthladd y mae SSH yn rhedeg arno - a'i sganio ynghyd â gweddill y porthladdoedd safonol i ddarganfod y fersiwn meddalwedd, i wirio cyfrineiriau gwraidd safonol, ac ati.

Mae newid porthladdoedd safonol - obfuscation - sawl gwaith yn lleihau faint o draffig sbwriel, maint y logiau a'r llwyth ar y gweinydd, a hefyd yn lleihau'r wyneb ymosodiad. Er bod rhai beirniadu'r dull hwn o "amddiffyn trwy ebargofiant" (diogelwch trwy ebargofiant). Y rheswm yw bod y dechneg hon yn wrthwynebus i'r sylfaenol amddiffyniad pensaernïol. Felly, er enghraifft, Sefydliad Cenedlaethol Safonau a Thechnoleg yr Unol Daleithiau yn "Canllaw Diogelwch Gweinyddwr" yn nodi'r angen am saernïaeth gweinydd agored: “Ni ddylai diogelwch system ddibynnu ar gyfrinachedd gweithredu ei gydrannau,” dywed y ddogfen.

Yn ddamcaniaethol, mae newid y porthladdoedd rhagosodedig yn groes i'r arfer o bensaernïaeth agored. Ond yn ymarferol, mae swm y traffig maleisus yn cael ei leihau mewn gwirionedd, felly mae hwn yn fesur syml ac effeithiol.

Gellir ffurfweddu rhif y porthladd trwy newid y gyfarwyddeb Port 22 yn y ffeil ffurfweddu / etc / ssh / sshd_config. Fe'i nodir hefyd gan y paramedr -p <port> в ssh. cleient a rhaglenni SSH sftp cefnogi'r opsiwn hefyd -p <port>.

Paramedr -p <port> gellir ei ddefnyddio i nodi rhif y porthladd wrth gysylltu â'r gorchymyn ssh yn linux. YN sftp и scp paramedr yn cael ei ddefnyddio -P <port> (cyfalaf P). Mae cyfarwyddyd llinell orchymyn yn diystyru unrhyw werth mewn ffeiliau ffurfweddu.

Os oes llawer o weinyddion, gellir awtomeiddio bron pob un o'r camau hyn i amddiffyn y gweinydd Linux mewn sgript. Ond os mai dim ond un gweinydd sydd, yna mae'n well rheoli'r broses â llaw.

Ar Hawliau Hysbysebu

Archebwch a dechreuwch ar unwaith! Creu VDS unrhyw ffurfweddiad a chydag unrhyw system weithredu o fewn munud. Bydd y cyfluniad uchaf yn caniatáu ichi ddod i ffwrdd i'r eithaf - creiddiau 128 CPU, 512 GB RAM, 4000 GB NVMe. Epig 🙂

Amddiffyn gweinydd Linux. Beth i'w wneud yn gyntaf

Ffynhonnell: hab.com