Perlindungan pelayan Linux. Apa yang perlu dilakukan dahulu

Perlindungan pelayan Linux. Apa yang perlu dilakukan dahulu
Habib M'henni/Wikimedia Commons, CC BY-SA

Pada masa kini, menaikkan pelayan pada pengehosan memerlukan beberapa minit dan beberapa klik tetikus. Tetapi sejurus selepas pelancaran, dia mendapati dirinya berada dalam persekitaran yang bermusuhan, kerana dia terbuka kepada seluruh Internet seperti seorang gadis yang tidak bersalah dalam disko rocker. Pengimbas akan mencarinya dengan cepat dan mengesan beribu-ribu bot skrip automatik yang menjelajah rangkaian mencari kelemahan dan salah konfigurasi. Terdapat beberapa perkara yang perlu anda lakukan sejurus selepas pelancaran untuk memastikan perlindungan asas.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Pengguna bukan root

Langkah pertama ialah mencipta pengguna bukan root untuk diri sendiri. Maksudnya ialah pengguna root keistimewaan mutlak dalam sistem, dan jika anda membenarkan dia pentadbiran jauh, maka anda akan melakukan separuh kerja untuk penggodam, meninggalkan nama pengguna yang sah untuknya.

Oleh itu, anda perlu mencipta pengguna lain, dan melumpuhkan pentadbiran jauh melalui SSH untuk root.

Pengguna baharu dimulakan dengan arahan useradd:

useradd [options] <username>

Kemudian kata laluan ditambah untuknya dengan arahan passwd:

passwd <username>

Akhir sekali, pengguna ini perlu ditambah kepada kumpulan yang mempunyai hak untuk melaksanakan arahan yang dinaikkan sudo. Bergantung pada pengedaran Linux, ini mungkin kumpulan yang berbeza. Contohnya, dalam CentOS dan Red Hat, pengguna ditambahkan pada kumpulan wheel:

usermod -aG wheel <username>

Dalam Ubuntu ia ditambahkan pada kumpulan sudo:

usermod -aG sudo <username>

Kunci bukannya kata laluan SSH

Brute force atau kebocoran kata laluan ialah vektor serangan standard, jadi lebih baik untuk melumpuhkan pengesahan kata laluan dalam SSH (Secure Shell) dan sebaliknya menggunakan pengesahan kunci.

Terdapat pelbagai program untuk melaksanakan protokol SSH, seperti lsh ΠΈ dropbear, tetapi yang paling popular ialah OpenSSH. Memasang klien OpenSSH pada Ubuntu:

sudo apt install openssh-client

Pemasangan pelayan:

sudo apt install openssh-server

Memulakan daemon SSH (sshd) pada pelayan Ubuntu:

sudo systemctl start sshd

Mulakan daemon secara automatik pada setiap but:

sudo systemctl enable sshd

Perlu diingatkan bahawa bahagian pelayan OpenSSH termasuk bahagian klien. Iaitu, melalui openssh-server anda boleh menyambung ke pelayan lain. Selain itu, dari mesin pelanggan anda, anda boleh memulakan terowong SSH dari pelayan jauh ke hos pihak ketiga, dan kemudian hos pihak ketiga akan menganggap pelayan jauh sebagai sumber permintaan. Ciri yang sangat berguna untuk menutup sistem anda. Lihat artikel untuk butiran "Petua Praktikal, Contoh dan Terowong SSH".

Pada mesin pelanggan, biasanya tidak masuk akal untuk memasang pelayan lengkap untuk mengelakkan kemungkinan sambungan jauh ke komputer (atas sebab keselamatan).

Jadi, untuk pengguna baharu anda, anda perlu menjana kekunci SSH pada komputer dari mana anda akan mengakses pelayan:

ssh-keygen -t rsa

Kunci awam disimpan dalam fail .pub dan kelihatan seperti rentetan aksara rawak yang bermula dengan ssh-rsa.

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

Kemudian, dari bawah akar, buat direktori SSH pada pelayan dalam direktori rumah pengguna dan tambah kunci awam SSH pada fail authorized_keys, menggunakan editor teks seperti Vim:

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

vim /home/user_name/.ssh/authorized_keys

Akhir sekali, tetapkan kebenaran yang betul untuk fail:

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

dan tukar pemilikan kepada pengguna ini:

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

Di sisi pelanggan, anda perlu menentukan lokasi kunci rahsia untuk pengesahan:

ssh-add DIR_PATH/keylocation

Kini anda boleh log masuk ke pelayan di bawah nama pengguna menggunakan kekunci ini:

ssh [username]@hostname

Selepas kebenaran, anda boleh menggunakan arahan scp untuk menyalin fail, utiliti sshfs untuk melekapkan sistem fail atau direktori dari jauh.

Adalah dinasihatkan untuk membuat beberapa salinan sandaran kunci peribadi, kerana jika anda melumpuhkan pengesahan kata laluan dan kehilangannya, maka anda tidak akan mempunyai sebarang cara untuk log masuk ke pelayan anda sendiri sama sekali.

Seperti yang dinyatakan di atas, dalam SSH anda perlu melumpuhkan pengesahan untuk root (inilah sebab kami memulakan pengguna baharu).

Pada CentOS/Red Hat kita dapati baris PermitRootLogin yes dalam fail konfigurasi /etc/ssh/sshd_config dan mengubahnya:

PermitRootLogin no

Pada Ubuntu tambah baris PermitRootLogin no ke fail konfigurasi 10-my-sshd-settings.conf:

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

Selepas mengesahkan bahawa pengguna baharu mengesahkan dengan kunci mereka, anda boleh melumpuhkan pengesahan kata laluan untuk menghapuskan risiko kebocoran kata laluan atau kekerasan. Kini, untuk mengakses pelayan, penyerang perlu mendapatkan kunci peribadi.

Pada CentOS/Red Hat kita dapati baris PasswordAuthentication yes dalam fail konfigurasi /etc/ssh/sshd_config dan ubah seperti ini:

PasswordAuthentication no

Pada Ubuntu tambah baris PasswordAuthentication no untuk memfailkan 10-my-sshd-settings.conf:

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

Untuk arahan tentang mendayakan pengesahan dua faktor melalui SSH, lihat di sini.

tembok api

Firewall memastikan bahawa hanya trafik pada port yang anda benarkan secara langsung akan pergi ke pelayan. Ini melindungi daripada eksploitasi port yang didayakan secara tidak sengaja dengan perkhidmatan lain, yang sangat mengurangkan permukaan serangan.

Sebelum memasang tembok api, anda perlu memastikan bahawa SSH disertakan dalam senarai pengecualian dan tidak akan disekat. Jika tidak, selepas memulakan tembok api, kami tidak akan dapat menyambung ke pelayan.

Pengedaran Ubuntu disertakan dengan Firewall Tidak Rumit (ufw), dan dengan CentOS/Red Hat - firewalld.

Membenarkan SSH dalam firewall pada Ubuntu:

sudo ufw allow ssh

Pada CentOS/Red Hat gunakan arahan firewall-cmd:

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

Selepas prosedur ini, anda boleh memulakan firewall.

Pada CentOS/Red Hat, mulakan perkhidmatan systemd untuk firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Di Ubuntu kami menggunakan arahan berikut:

sudo ufw enable

Fail2Ban

Perkhidmatan Fail2Ban menganalisis log pada pelayan dan mengira bilangan percubaan capaian daripada setiap alamat IP. Tetapan menentukan peraturan untuk bilangan percubaan akses yang dibenarkan untuk selang waktu tertentu - selepas itu alamat IP ini disekat untuk tempoh masa tertentu. Sebagai contoh, mari kita benarkan 5 percubaan pengesahan SSH yang gagal dalam masa 2 jam, kemudian sekat alamat IP yang diberikan selama 12 jam.

Memasang Fail2Ban pada CentOS dan Red Hat:

sudo yum install fail2ban

Pemasangan pada Ubuntu dan Debian:

sudo apt install fail2ban

Pelancaran:

systemctl start fail2ban
systemctl enable fail2ban

Program ini mempunyai dua fail konfigurasi: /etc/fail2ban/fail2ban.conf ΠΈ /etc/fail2ban/jail.conf. Sekatan larangan dinyatakan dalam fail kedua.

Penjara untuk SSH didayakan secara lalai dengan tetapan lalai (5 percubaan, selang 10 minit, larangan selama 10 minit).

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

Selain SSH, Fail2Ban boleh melindungi perkhidmatan lain pada pelayan web nginx atau Apache.

Kemas kini keselamatan automatik

Seperti yang anda ketahui, kelemahan baharu sentiasa ditemui dalam semua program. Selepas maklumat diterbitkan, eksploitasi ditambahkan pada pek eksploitasi yang popular, yang digunakan secara besar-besaran oleh penggodam dan remaja apabila mengimbas semua pelayan berturut-turut. Oleh itu, adalah sangat penting untuk memasang kemas kini keselamatan sebaik sahaja ia muncul.

Pada pelayan Ubuntu, kemas kini keselamatan automatik didayakan secara lalai, jadi tiada tindakan lanjut diperlukan.

Pada CentOS/Red Hat anda perlu memasang aplikasi dnf-automatik dan hidupkan pemasa:

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

Semakan pemasa:

sudo systemctl status dnf-automatic.timer

Menukar port lalai

SSH dibangunkan pada tahun 1995 untuk menggantikan telnet (port 23) dan ftp (port 21), jadi pengarang program, Tatu Iltonen port 22 yang dipilih secara lalai, dan telah diluluskan oleh IANA.

Sememangnya, semua penyerang mengetahui port SSH yang sedang dijalankan - dan mengimbasnya bersama-sama dengan port standard yang lain untuk mengetahui versi perisian, untuk menyemak kata laluan root standard, dan sebagainya.

Menukar port standard - kekeliruan - beberapa kali mengurangkan jumlah trafik sampah, saiz log dan beban pada pelayan, dan juga mengurangkan permukaan serangan. Walaupun beberapa mengkritik kaedah "perlindungan melalui ketidakjelasan" ini (keselamatan melalui ketidakjelasan). Sebabnya ialah teknik ini bertentangan dengan asas perlindungan seni bina. Oleh itu, sebagai contoh, Institut Piawaian dan Teknologi Kebangsaan AS di "Panduan Keselamatan Pelayan" menunjukkan keperluan untuk seni bina pelayan terbuka: "Keselamatan sistem tidak seharusnya bergantung pada kerahsiaan pelaksanaan komponennya," kata dokumen itu.

Secara teorinya, menukar port lalai adalah bertentangan dengan amalan seni bina terbuka. Tetapi dalam amalan, jumlah trafik berniat jahat sebenarnya dikurangkan, jadi ini adalah langkah yang mudah dan berkesan.

Nombor port boleh dikonfigurasikan dengan menukar arahan Port 22 dalam fail konfigurasi / etc / ssh / sshd_config. Ia juga ditunjukkan oleh parameter -p <port> Π² SSHD. Pelanggan dan program SSH sftp juga menyokong pilihan -p <port>.

Parameter -p <port> boleh digunakan untuk menentukan nombor port apabila menyambung dengan arahan ssh dalam linux. DALAM sftp ΠΈ scp parameter digunakan -P <port> (modal P). Arahan baris perintah mengatasi sebarang nilai dalam fail konfigurasi.

Jika terdapat banyak pelayan, hampir semua tindakan untuk melindungi pelayan Linux ini boleh diautomasikan dalam skrip. Tetapi jika terdapat hanya satu pelayan, maka lebih baik untuk mengawal proses secara manual.

Sebagai iklan

Pesan dan mulakan segera! Penciptaan VDS sebarang konfigurasi dan dengan mana-mana sistem pengendalian dalam masa seminit. Konfigurasi maksimum akan membolehkan anda tampil sepenuhnya - 128 teras CPU, 512 GB RAM, 4000 GB NVMe. Epik πŸ™‚

Perlindungan pelayan Linux. Apa yang perlu dilakukan dahulu

Sumber: www.habr.com