Linukso-servilo protekto. Kion fari unue

Linukso-servilo protekto. Kion fari unue
Habib M'henni/Vikimedia Komunejo, CC BY-SA

Nuntempe, levi servilon en gastigado estas demando de kelkaj minutoj kaj kelkaj musklakoj. Sed tuj post lanĉo, li trovas sin en malamika medio, ĉar li estas malfermita al la tuta Interreto kiel senkulpa knabino en rokmuzika diskoteko. Skaniloj rapide trovos ĝin kaj detektos milojn da aŭtomate skriptitaj robotoj, kiuj traserĉas la reton serĉante vundeblecojn kaj misagordojn. Estas kelkaj aferoj, kiujn vi devus fari tuj post lanĉo por certigi bazan protekton.

Enhavo

Ne-radika uzanto

La unua paŝo estas krei ne-radikan uzanton por vi mem. La punkto estas ke la uzanto root absolutaj privilegioj en la sistemo, kaj se vi permesas al li fora administrado, tiam vi faros duonon de la laboro por la retpirato, lasante validan uzantnomon por li.

Sekve, vi devas krei alian uzanton, kaj malŝalti foran administradon per SSH por radiko.

Nova uzanto estas komencita per la komando useradd:

useradd [options] <username>

Tiam pasvorto estas aldonita por ĝi kun la komando passwd:

passwd <username>

Fine, ĉi tiu uzanto devas esti aldonita al grupo, kiu havas la rajton efektivigi altigitajn komandojn sudo. Depende de la Linukso-distribuo, ĉi tiuj povas esti malsamaj grupoj. Ekzemple, en CentOS kaj Red Hat, la uzanto estas aldonita al la grupo wheel:

usermod -aG wheel <username>

En Ubuntu ĝi estas aldonita al la grupo sudo:

usermod -aG sudo <username>

Ŝlosiloj anstataŭ SSH-pasvortoj

Bruta forto aŭ pasvortfuĝoj estas norma atakvektoro, do plej bone estas malŝalti pasvortan aŭtentigon en SSH (Secure Shell) kaj uzi ŝlosilan aŭtentikigon anstataŭe.

Ekzistas diversaj programoj por efektivigi la SSH-protokolon, kiel ekzemple lsh и gutoportisto, sed la plej populara estas OpenSSH. Instalante la OpenSSH-klienton sur Ubuntu:

sudo apt install openssh-client

Instalado de servilo:

sudo apt install openssh-server

Lanĉante la SSH-demonon (sshd) sur la Ubuntu-servilo:

sudo systemctl start sshd

Aŭtomate lanĉu la demonon ĉe ĉiu ekkuro:

sudo systemctl enable sshd

Oni devas rimarki, ke la servila parto de OpenSSH inkluzivas la klientparton. Tio estas, tra openssh-server vi povas konektiĝi al aliaj serviloj. Plie, de via klienta maŝino, vi povas komenci SSH-tunelon de fora servilo al triaparta gastiganto, kaj tiam la triaparta gastiganto konsideros la foran servilon kiel la fonton de petoj. Tre oportuna funkcio por maski vian sistemon. Vidu artikolon por detaloj "Praktikaj Konsiloj, Ekzemploj, kaj SSH-Tuneloj".

Sur klienta maŝino, kutime ne havas sencon instali plenrajtan servilon por malhelpi la eblecon de fora konekto al komputilo (por sekurecaj celoj).

Do, por via nova uzanto, vi unue devas generi SSH-ŝlosilojn en la komputilo, de kiu vi aliros la servilon:

ssh-keygen -t rsa

La publika ŝlosilo estas konservita en dosiero .pub kaj aspektas kiel ĉeno de hazardaj signoj, kiu komenciĝas per ssh-rsa.

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

Poste, de sub radiko, kreu SSH-dosierujon sur la servilo en la hejma dosierujo de la uzanto kaj aldonu la publikan ŝlosilon SSH al la dosiero. authorized_keys, uzante tekstredaktilon kiel Vim:

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

vim /home/user_name/.ssh/authorized_keys

Fine, agordu la ĝustajn permesojn por la dosiero:

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

kaj ŝanĝu la proprieton al ĉi tiu uzanto:

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

Ĉe la kliento, vi devas specifi la lokon de la sekreta ŝlosilo por aŭtentigo:

ssh-add DIR_PATH/keylocation

Nun vi povas ensaluti al la servilo sub la uzantnomo uzante ĉi tiun ŝlosilon:

ssh [username]@hostname

Post rajtigo, vi povas uzi la komandon scp por kopii dosierojn, la ilon sshfs por malproksime munti dosiersistemon aŭ dosierujojn.

Estas konsilinde fari plurajn sekurkopiojn de la privata ŝlosilo, ĉar se vi malŝaltas pasvortan aŭtentikigon kaj perdos ĝin, tiam vi tute ne havos manieron ensaluti en vian propran servilon.

Kiel menciite supre, en SSH vi devas malŝalti aŭtentikigon por radiko (tio estas la kialo, ke ni komencis novan uzanton).

Sur CentOS/Red Hat ni trovas la linion PermitRootLogin yes en la agorda dosiero /etc/ssh/sshd_config kaj ŝanĝu ĝin:

PermitRootLogin no

En Ubuntu aldonu la linion PermitRootLogin no al la agorda dosiero 10-my-sshd-settings.conf:

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

Post kontroli, ke la nova uzanto aŭtentikigas per sia ŝlosilo, vi povas malŝalti pasvortan aŭtentikigon por forigi la riskon de pasvortfuĝo aŭ krudforto. Nun, por aliri la servilon, atakanto devos akiri privatan ŝlosilon.

Sur CentOS/Red Hat ni trovas la linion PasswordAuthentication yes en la agorda dosiero /etc/ssh/sshd_config kaj ŝanĝu ĝin jene:

PasswordAuthentication no

En Ubuntu aldonu la linion PasswordAuthentication no arkivi 10-my-sshd-settings.conf:

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

Por instrukcioj pri ebligado de dufaktora aŭtentigo per SSH, vidu tie.

fajroŝirmilo

La fajroŝirmilo certigas, ke nur la trafiko sur la havenoj, kiujn vi rekte permesas, iros al la servilo. Ĉi tio protektas kontraŭ ekspluatado de havenoj kiuj estas hazarde ebligitaj kun aliaj servoj, kio multe reduktas la ataksurfacon.

Antaŭ ol instali fajroŝirmilon, vi devas certigi, ke SSH estas inkluzivita en la ekskludlisto kaj ne estos blokita. Alie, post komenci la fajroŝirmilon, ni ne povos konektiĝi al la servilo.

Ubuntu-distribuo venas kun Senkomplika fajroŝirmilo (Ŭaŭ), kaj kun CentOS/Red Hat - fajroŝirmilo.

Permesante SSH en la fajroŝirmilo en Ubuntu:

sudo ufw allow ssh

Sur CentOS/Red Hat uzu la komandon firewall-cmd:

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

Post ĉi tiu proceduro, vi povas komenci la fajroŝirmilon.

Sur CentOS/Red Hat, lanĉu la systemd-servon por firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

En Ubuntu ni uzas la jenan komandon:

sudo ufw enable

Fail2Ban

servo Fail2Ban analizas protokolojn sur la servilo kaj kalkulas la nombron da alirprovoj de ĉiu IP-adreso. La agordoj specifas la regulojn por kiom da alirprovoj estas permesitaj por certa intervalo - post kio ĉi tiu IP-adreso estas blokita dum difinita tempodaŭro. Ekzemple, ni permesu 5 malsukcesajn SSH-aŭtentikigprovojn ene de 2 horoj, tiam bloku la donitan IP-adreson dum 12 horoj.

Instalante Fail2Ban sur CentOS kaj Red Hat:

sudo yum install fail2ban

Instalado sur Ubuntu kaj Debian:

sudo apt install fail2ban

Lanĉo:

systemctl start fail2ban
systemctl enable fail2ban

La programo havas du agordajn dosierojn: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Malpermesaj limigoj estas specifitaj en la dua dosiero.

Malliberejo por SSH estas ebligita defaŭlte kun defaŭltaj agordoj (5 provoj, intervalo 10 minutoj, malpermeso dum 10 minutoj).

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

Krom SSH, Fail2Ban povas protekti aliajn servojn sur la retservilo nginx aŭ Apache.

Aŭtomataj sekurecaj ĝisdatigoj

Kiel vi scias, novaj vundeblecoj estas konstante trovitaj en ĉiuj programoj. Post kiam la informoj estas publikigitaj, ekspluataĵoj estas aldonitaj al popularaj ekspluatpakaĵoj, kiuj estas amase uzataj de retpiratoj kaj adoleskantoj dum skanado de ĉiuj serviloj en vico. Tial, estas tre grave instali sekurecajn ĝisdatigojn tuj kiam ili aperas.

Sur la Ubuntu-servilo, aŭtomataj sekurecaj ĝisdatigoj estas ebligitaj defaŭlte, do ne necesas plua ago.

Sur CentOS/Red Hat vi devas instali la aplikaĵon dnf-aŭtomata kaj ŝaltu la tempigilon:

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

Kontrolo de temporizilo:

sudo systemctl status dnf-automatic.timer

Ŝanĝante la defaŭltajn havenojn

SSH estis evoluigita en 1995 por anstataŭigi telnet (haveno 23) kaj ftp (haveno 21), do la verkinto de la programo, Tatu Iltonen elektita haveno 22 defaŭlte, kaj estis aprobita de IANA.

Kompreneble, ĉiuj atakantoj konscias pri kiu haveno SSH funkcias - kaj skanu ĝin kune kun la ceteraj normaj havenoj por ekscii la programaran version, por kontroli normajn radikajn pasvortojn ktp.

Ŝanĝi normajn havenojn - malklarigado - plurfoje reduktas la kvanton de rubotrafiko, la grandeco de la ŝtipoj kaj la ŝarĝo sur la servilo, kaj ankaŭ reduktas la ataksurfacon. Kvankam iuj kritiku ĉi tiun metodon de "protekto per obskureco" (sekureco per obskureco). La kialo estas, ke ĉi tiu tekniko estas kontraŭa al la fundamenta arkitektura protekto. Tial, ekzemple, la Usona Nacia Instituto pri Normoj kaj Teknologio en "Gvidilo pri Sekureca Servilo" indikas la bezonon de malferma servila arkitekturo: "La sekureco de sistemo ne devus fidi je la sekreteco de la efektivigo de ĝiaj komponantoj," diras la dokumento.

Teorie, ŝanĝi la defaŭltajn havenojn estas kontraŭ la praktiko de malferma arkitekturo. Sed praktike, la kvanto de malica trafiko efektive malpliiĝas, do ĉi tio estas simpla kaj efika mezuro.

La havena numero povas esti agordita ŝanĝante la direktivon Port 22 en la agorda dosiero / etc / ssh / sshd_config. Ĝi ankaŭ estas indikita per la parametro -p <port> в ssh. SSH-kliento kaj programoj sftp ankaŭ subtenu la opcion -p <port>.

Parametro -p <port> uzeblas por specifi la pordan numeron kiam konekto kun la komando ssh en linukso. EN sftp и scp parametro estas uzata -P <port> (P majusklo). Komandlinia instrukcio superregas ajnan valoron en agordaj dosieroj.

Se estas multaj serviloj, preskaŭ ĉiuj ĉi tiuj agoj por protekti la Linuksan servilon povas esti aŭtomatigitaj en skripto. Sed se ekzistas nur unu servilo, tiam estas pli bone kontroli la procezon permane.

Pri la Rajtoj de Reklamado

Mendu kaj komencu tuj! Kreado de VDS ajna agordo kaj kun ajna operaciumo ene de minuto. La maksimuma agordo permesos vin plene - 128 CPU-kernoj, 512 GB RAM, 4000 GB NVMe. Epopeo 🙂

Linukso-servilo protekto. Kion fari unue

fonto: www.habr.com