Линукс серверийн хамгаалалт. Эхлээд юу хийх вэ

Линукс серверийн хамгаалалт. Эхлээд юу хийх вэ
Хабиб М'хенни/Викимедиа Commons, CC BY-SA

Өнөө үед хостинг дээр сервер тохируулах нь хэдхэн минут, хулганаар хэдхэн товшилт хийхэд хангалттай. Гэвч хөөргөснөөс хойш тэр даруй рокер диско дээр сууж байгаа гэнэн охин шиг интернетэд нээлттэй байдаг учраас тэр өөрийгөө дайсагнасан орчинд олдог. Сканнерууд үүнийг хурдан олж, сүлжээний эмзэг байдал, буруу тохиргоог хайж олохын тулд автоматаар бичигдсэн мянга мянган роботуудыг олох болно. Үндсэн хамгаалалтыг хангахын тулд хөөргөсний дараа нэн даруй хийх ёстой хэд хэдэн зүйл байдаг.

Агуулга

Root бус хэрэглэгч

Таны хийх ёстой хамгийн эхний зүйл бол root бус хэрэглэгч үүсгэх явдал юм. Гол нь хэрэглэгч root систем дэх үнэмлэхүй давуу эрх, хэрэв та түүнд алсаас удирдахыг зөвшөөрвөл та хакерын ажлын хагасыг хийж, түүнд хүчинтэй хэрэглэгчийн нэр үлдээх болно.

Тиймээс та өөр хэрэглэгч үүсгэж, root-д зориулсан SSH-ээр дамжуулан алсын удирдлагаа идэвхгүй болгох хэрэгтэй.

Шинэ хэрэглэгчийг тушаалаар үүсгэнэ useradd:

useradd [options] <username>

Дараа нь тушаалаар нууц үг нэмнэ passwd:

passwd <username>

Эцэст нь, энэ хэрэглэгчийг өндөр эрх бүхий тушаалуудыг гүйцэтгэх эрхтэй бүлэгт нэмэх шаардлагатай. sudo. Линуксийн тархалтаас хамааран эдгээр нь өөр өөр бүлгүүд байж болно. Жишээлбэл, 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

Дараа нь root болгон сервер дээр хэрэглэгчийн гэрийн директорт SSH директор үүсгээд SSH нийтийн түлхүүрийг файлд нэмнэ үү. authorized_keysVim шиг текст засварлагч ашиглан:

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-д та root-ийн баталгаажуулалтыг идэвхгүй болгох хэрэгтэй (энэ шалтгаанаар бид шинэ хэрэглэгч үүсгэсэн).

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 цагийн дотор SSH-ээр дамжуулан баталгаажуулах 2 амжилтгүй оролдлогыг зөвшөөрч, дараа нь энэ 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-д зориулсан шорон нь анхдагч тохиргоогоор (5 оролдлого, интервал 10 минут, 10 минутын турш хориг) идэвхждэг.

[DEFAULT] үл тоомсорлох команд = bantime = 10м олох хугацаа = 10м maxretry = 5

SSH-ээс гадна Fail2Ban нь nginx эсвэл Apache вэб сервер дээрх бусад үйлчилгээг хамгаалах боломжтой.

Аюулгүй байдлын автомат шинэчлэлтүүд

Та бүхний мэдэж байгаагаар бүх програмуудад шинэ сул талууд байнга олддог. Мэдээлэл нийтлэгдсэний дараа бүх серверүүдийг дараалан сканнердахдаа хакерууд болон өсвөр насныхан өргөн ашигладаг түгээмэл exploit багцуудад эксплойтууд нэмэгддэг. Тиймээс аюулгүй байдлын шинэчлэлтүүдийг боломжтой болмогц суулгах нь маш чухал юм.

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 аль порт дээр ажиллаж байгааг мэддэг бөгөөд програм хангамжийн хувилбарыг олж мэдэх, стандарт root нууц үгээ шалгах гэх мэт бусад стандарт портуудтай хамт сканнердаж байна.

Стандарт портуудыг хэд хэдэн удаа солих нь төөрөгдөл, хог хаягдлын хэмжээ, бүртгэлийн хэмжээ, сервер дээрх ачааллыг бууруулж, халдлагын гадаргууг бууруулдаг. Хэдийгээр зарим нь Энэ "харанхуйгаар хамгаалах" аргыг шүүмжил (харанхуйгаар дамжуулан аюулгүй байдал). Үүний шалтгаан нь энэ техник нь суурьтай зөрчилддөг архитектурын хамгаалалт. Тиймээс, тухайлбал, АНУ-ын Стандарт, технологийн үндэсний хүрээлэн "Серверийн аюулгүй байдлын гарын авлага" Энэ нь нээлттэй серверийн архитектурын хэрэгцээг харуулж байна: "Системийн аюулгүй байдал нь түүний бүрэлдэхүүн хэсгүүдийн хэрэгжилтийн нууцад найдах ёсгүй" гэж баримт бичигт дурджээ.

Онолын хувьд анхдагч портуудыг өөрчлөх нь нээлттэй архитектурын практикт харшлах болно. Гэвч бодит байдал дээр хортой урсгалын хэмжээ буурч байгаа тул энэ нь энгийн бөгөөд үр дүнтэй арга хэмжээ юм.

Портын дугаарыг удирдамжийг өөрчлөх замаар тохируулж болно Port 22 тохиргооны файлд /etc/ssh/sshd_config. Энэ нь мөн параметрээр тодорхойлогддог -p <port> в sshd. SSH үйлчлүүлэгч ба програмууд sftp мөн параметрийг дэмждэг -p <port>.

Үзүүлэлт -p <port> командыг ашиглан холбогдох үед портын дугаарыг зааж өгөхөд ашиглаж болно ssh Линукс дээр. IN sftp и scp параметрийг ашигладаг -P <port> (том P). Үүнийг командын мөрөөс зааж өгснөөр тохиргооны файлууд дахь аливаа утгыг дарна.

Хэрэв олон сервер байгаа бол Линукс серверийг хамгаалах эдгээр бараг бүх үйлдлийг скрипт дээр автоматжуулж болно. Гэхдээ хэрэв зөвхөн нэг сервер байгаа бол процессыг гараар хянах нь дээр.

Сурталчилгааны эрх

Захиалга өгөөд шууд ажиллаж эхлээрэй! VDS үүсгэх ямар ч тохиргоо болон ямар ч үйлдлийн системтэй нэг минутын дотор. Хамгийн их тохиргоо нь танд тэсрэлт хийх боломжийг олгоно - 128 CPU цөм, 512 ГБ RAM, 4000 ГБ NVMe. Ёстой баатарлаг :)

Линукс серверийн хамгаалалт. Эхлээд юу хийх вэ

Эх сурвалж: www.habr.com