
, 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-serverUbuntu сервер дээр SSH дэмоныг (sshd) эхлүүлэх:
sudo systemctl start sshdАчаалах бүрт демоныг автоматаар эхлүүлэх:
sudo systemctl enable sshd OpenSSH серверийн хэсэг нь үйлчлүүлэгчийн хэсгийг агуулдаг гэдгийг тэмдэглэх нь зүйтэй. Энэ нь дамжуулан openssh-server Та бусад серверүүдтэй холбогдож болно. Нэмж дурдахад, та өөрийн клиент машинаас 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_keysvim /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 командыг ашиглан файлуудыг хуулах боломжтой файлын систем эсвэл санг алсаас холбоход зориулагдсан.
Хувийн түлхүүрийн хэд хэдэн нөөц хуулбарыг хийхийг зөвлөж байна, учир нь хэрэв та нууц үгийн баталгаажуулалтыг идэвхгүй болгоод алдсан тохиолдолд өөрийн серверт нэвтрэх боломжгүй болно.
Дээр дурдсанчлан, 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.confSSH-ээр дамжуулан хоёр хүчин зүйлийн баталгаажуулалтыг хэрхэн идэвхжүүлэх тухай зааврыг үзнэ үү .
Галт хана
Галт хана нь зөвхөн таны шууд зөвшөөрөгдсөн портууд дээрх траффик сервер рүү очихыг баталгаажуулдаг. Энэ нь бусад үйлчилгээнүүдийн санамсаргүйгээр идэвхжүүлсэн портуудыг ашиглахаас хамгаалдаг бөгөөд энэ нь халдлагын гадаргууг ихээхэн хэмжээгээр бууруулдаг.
Галт ханыг суулгахаасаа өмнө SSH нь хасагдах жагсаалтад орсон бөгөөд хаагдахгүй эсэхийг шалгах хэрэгтэй. Үгүй бол галт ханыг ажиллуулсны дараа бид серверт холбогдох боломжгүй болно.
Ubuntu түгээлт нь төвөггүй галт хана (), мөн CentOS/Red Hat-тай - .
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 firewalldUbuntu дээр бид дараах тушаалыг ашигладаг.
sudo ufw enable
Fail2Бан
үйлчилгээ серверийн бүртгэлд дүн шинжилгээ хийж, IP хаяг бүрээс нэвтрэх оролдлогын тоог тоолдог. Тохиргоонууд нь тодорхой интервалд хэдэн удаа нэвтрэх оролдлого хийхийг зөвшөөрдөг дүрмийг зааж өгдөг бөгөөд үүний дараа энэ IP хаягийг тодорхой хугацаанд блоклодог. Жишээлбэл, бид 5 цагийн дотор SSH-ээр дамжуулан баталгаажуулах 2 амжилтгүй оролдлогыг зөвшөөрч, дараа нь энэ IP хаягийг 12 цагийн турш блоклодог.
CentOS болон Red Hat дээр Fail2Ban суулгаж байна:
sudo yum install fail2banUbuntu болон 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 дээр та програмыг суулгах хэрэгтэй болон таймерыг асаана уу:
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)-ийг орлох зорилгоор бүтээгдсэн тул программын зохиогч нь Тату Илтонен юм. , мөн үүнийг IANA баталсан.
Мэдээжийн хэрэг, бүх халдагч SSH аль порт дээр ажиллаж байгааг мэддэг бөгөөд програм хангамжийн хувилбарыг олж мэдэх, стандарт root нууц үгээ шалгах гэх мэт бусад стандарт портуудтай хамт сканнердаж байна.
Стандарт портуудыг хэд хэдэн удаа солих нь төөрөгдөл, хог хаягдлын хэмжээ, бүртгэлийн хэмжээ, сервер дээрх ачааллыг бууруулж, халдлагын гадаргууг бууруулдаг. Хэдийгээр зарим нь (харанхуйгаар дамжуулан аюулгүй байдал). Үүний шалтгаан нь энэ техник нь суурьтай зөрчилддөг . Тиймээс, тухайлбал, АНУ-ын Стандарт, технологийн үндэсний хүрээлэн Энэ нь нээлттэй серверийн архитектурын хэрэгцээг харуулж байна: "Системийн аюулгүй байдал нь түүний бүрэлдэхүүн хэсгүүдийн хэрэгжилтийн нууцад найдах ёсгүй" гэж баримт бичигт дурджээ.
Онолын хувьд анхдагч портуудыг өөрчлөх нь нээлттэй архитектурын практикт харшлах болно. Гэвч бодит байдал дээр хортой урсгалын хэмжээ буурч байгаа тул энэ нь энгийн бөгөөд үр дүнтэй арга хэмжээ юм.
Портын дугаарыг удирдамжийг өөрчлөх замаар тохируулж болно Port 22 тохиргооны файлд . Энэ нь мөн параметрээр тодорхойлогддог -p <port> в . SSH үйлчлүүлэгч ба програмууд мөн параметрийг дэмждэг -p <port>.
Үзүүлэлт -p <port> командыг ашиглан холбогдох үед портын дугаарыг зааж өгөхөд ашиглаж болно ssh Линукс дээр. IN и scp параметрийг ашигладаг -P <port> (том P). Үүнийг командын мөрөөс зааж өгснөөр тохиргооны файлууд дахь аливаа утгыг дарна.
Хэрэв олон сервер байгаа бол Линукс серверийг хамгаалах эдгээр бараг бүх үйлдлийг скрипт дээр автоматжуулж болно. Гэхдээ хэрэв зөвхөн нэг сервер байгаа бол процессыг гараар хянах нь дээр.
Сурталчилгааны эрх
Захиалга өгөөд шууд ажиллаж эхлээрэй! ямар ч тохиргоо болон ямар ч үйлдлийн системтэй нэг минутын дотор. Хамгийн их тохиргоо нь танд тэсрэлт хийх боломжийг олгоно - 128 CPU цөм, 512 ГБ RAM, 4000 ГБ NVMe. Ёстой баатарлаг :)
Эх сурвалж: www.habr.com
