Линукс дээрх галт хана нь компьютерийн системийг хамгаалахад чухал үүрэг гүйцэтгэдэг. Энэ нь системийг зөвшөөрөлгүй нэвтрэх, халдлага болон бусад аюулаас хамгаалахын тулд сүлжээний урсгалыг хянаж, шүүж, хаалт болж ажилладаг. Зөв тохируулагдсан Галт хана байхгүй бол сервер нь янз бүрийн төрлийн кибер халдлагад өртөж, мэдээллийн аюулгүй байдал, нууцлалд ноцтой үр дагаварт хүргэж болзошгүй юм.
Энэ нийтлэлд бид Linux Firewall-ийг тохируулах хоёр үндсэн хэрэгслийг авч үзэх болно: галт хана болон iptables. Бид тэдгээрийн онцлог, функциональ байдал, давуу талуудын харьцуулсан дүн шинжилгээ хийх болно. Нэмж дурдахад бид эдгээр хэрэгслүүд тус бүрийг тохируулах, ашиглах дэлгэрэнгүй зааварчилгааг өгөхөөс гадна Линукс платформ дээрх Галт ханаар системээ хамгаалах шилдэг туршлагуудыг хэлэлцэх болно. Бүх үйлдлийг a дээр үзүүлнэ Виртуал сервер үндэс хандалттай.
Линукс дээр галт ханыг тохируулж байна
Firewalld (Firewall Daemon) нь Линукс үйлдлийн систем дэх галт ханыг удирдах программ юм. Энэ нь галт ханын дүрмийг тохируулах, сүлжээний програмуудын холболтыг зөвшөөрөх эсвэл хориглох хэрэглэгчийн интерфейсээр хангадаг. Энэ нь ихэнх серверийн түгээлтүүдэд анхдагчаар урьдчилан суулгагдсан байдаг. Хэрэв Firewalld-г урьдчилан суулгаагүй бол түгээлтийн албан ёсны репозитороос бие даан суулгаж болно.
Red Hat системүүдийн хувьд (RHEL, CentOS, Fedora гэх мэт) суулгацыг дараах тушаалаар гүйцэтгэдэг.
yum install firewalld
Debian/Ubuntu-ийн хувьд:
apt-get install firewalld
Суулгасны дараа үүнийг дараах тушаалаар шууд эхлүүлж, идэвхжүүлж болно.
systemctl start firewalld
Дараа нь та үйлчилгээг эхлүүлэхэд нэмэх хэрэгтэй:
systemctl enable firewalld

Энэ үед галт хана эсвэл iptables-тэй энэ хэрэгслийг нэгэн зэрэг ашиглахыг зөвлөдөггүй тул бид ufw-г идэвхгүй болгохыг зөвлөж байна. Статусыг шалгана уу:
systemctl status ufw

Үүнийг зогсоохын тулд дараах тушаалыг оруулна уу:
systemctl stop ufw
Бүрэн идэвхгүй болгохын тулд:
ufw disable
Эдгээр үйлдлүүдийн дараа та галт ханын тохиргоог үргэлжлүүлж болно.
Нэгдүгээрт, итгэлцлийн бүсийг тодорхойлох шаардлагатай. Firewalld сүлжээний интерфэйсүүдийн итгэлцлийн түвшинг тодорхойлохдоо бүсийн тухай ойлголтыг ашигладаг. Интерфейс бүрд нэг бүс хуваарилагдсан бөгөөд бүсээс хамаарч галт ханын дүрмийг хэрэгжүүлдэг. Бүх боломжтой бүсүүдийн жагсаалтыг дараах тушаалаар нээнэ.
firewall-cmd --get-zones
Ихэвчлэн 4 үндсэн бүсийг ашигладаг.
- Олон нийтийн: Энэ бүс нь таны аюултай гэж үзсэн сүлжээнүүдэд зориулагдсан;
- Хувийн: Гэрийн сүлжээ эсвэл бусад итгэмжлэгдсэн сүлжээний холболтод хамаарна;
- Дотоод: Байгууллага, корпорацийн сүлжээ гэх мэт дотоод сүлжээнд ашигладаг;
- DMZ: Энэ бүс нь ихэвчлэн интернетээс хандах боломжтой серверүүдийг байрлуулдаг.
Гэсэн хэдий ч энэ бол зөвхөн нэг жишээ юм. Та дараах тушаалыг ашиглан өөрийн бүсээ нэмж болно.
firewall-cmd --permanent --new-zone=nameyourzone
Нэмсний дараа дахин ачаалах шаардлагатай:
firewall-cmd --reload
Бүсийг устгахын тулд ижил төстэй аргыг ашигладаг
firewall-cmd --permanent --delete-zone=nameyourzone
Бүсүүдийг тодорхойлсны дараа шаардлагатай үйлчилгээ, портуудын урсгалыг зөвшөөрөх шаардлагатай. Тодорхой үйлчилгээг зөвшөөрөхийн тулд дараах тушаалыг ашиглана уу:
firewall-cmd --zone=public --add-service=name
хаана нэр үйлчилгээний нэр юм. Жишээлбэл, Apache-ийн урсгалыг зөвшөөрөхийн тулд:
firewall-cmd --zone=public --add-service=http
Зөвшөөрөгдсөн портуудыг тодорхойлохын тулд дараах тушаалыг ашиглана уу.
firewall-cmd --zone=public --add-port=number/protocol
Жишээлбэл, SSH-ийн стандарт 22 порт дараах байдалтай байна.
firewall-cmd --zone=public --add-port=22/tcp
Энэ үе шатанд үндсэн дүрмүүд аль хэдийн бий болсон. Дараа нь эх сурвалж, очих газар, порт болон бусад шалгуураас хамааран урсгалыг хэрхэн боловсруулахыг тодорхойлно. Дүрэм нэмэхийн тулд ( олон нийтийн жишээ болгон бүс):
firewall-cmd --zone=public rule
Жишээлбэл, 80 (HTTP) порт руу дурын эх үүсвэрээс ирж буй урсгалыг зөвшөөрөхийн тулд:
firewall-cmd --zone=public --add-port=80/tcp --permanent
Дүрмийг арилгахын тулд:
firewall-cmd --permanent --remove-rule=rule_specification
хаана дүрэм нь дүрмийн төрөл (жишээ нь: порт, үйлчилгээ, rich-дүрэм гэх мэт), болон дүрмийн_тодорхойлолт нь дүрмийн өөрийнх нь тодорхойлолт юм.
Галт хананы тохиргоонд өөрчлөлт оруулсны дараа тэдгээрийг хадгалах, хэрэглэх шаардлагатай. Өөрчлөлтүүдийг хадгалахын тулд дараах тушаалыг ашиглана уу.
firewall-cmd --runtime-to-permanent
Өөрчлөлтийг хэрэгжүүлэхийн тулд:
firewall-cmd --reload
Тохиргоог хийж дууссаны дараа та бүх дүрмийн жагсаалтыг нээж сонгосон параметрүүдийг шалгаж болно.
firewall-cmd --list-all

Хэрэв ямар нэгэн асуудал гарвал Firewalld бүртгэлийг дараах тушаалаар шалгана уу.
journalctl -u firewalld
Тайлбар: Бид зөвхөн холболтыг тохируулах ерөнхий алгоритмыг авч үзсэн. Энэ хэрэгсэл нь өргөн хүрээний функцтэй. Боломжтой бүх сонголтуудын талаар бүрэн мэдээлэл авахыг хүсвэл та ашиглаж болно албан ёсны бичиг баримт эсвэл нээлттэй тусламж:
firewall-cmd --help
Линукс дээр iptables тохируулах
Firewalld-аас ялгаатай нь iptables нь хуучин боловч Linux-д галт ханыг удирдахад өргөн хэрэглэгддэг хэрэгсэл юм. Энэ нь Линуксийн цөмийн түвшинд пакет шүүх дүрэмд илүү шууд бөгөөд уян хатан хандлагыг хангадаг. Гэсэн хэдий ч iptables нь Firewalld-тай харьцуулахад илүү дэвшилтэт мэдлэг, туршлага шаарддаг тул эхлэгчдэд үүнийг ашиглах боломжгүй болгодог. Хэрэгслийн урьдчилан суулгасан хувилбарыг дараах тушаалаар шалгана уу.
iptables -V
Хэрэв багажийг суулгаагүй бол суулгах шаардлагатай болно. Ubuntu, Debian дээр суулгах тушаал:
apt install iptables
Red Hat системүүдийн хувьд (жишээ нь, CentOS, Fedora):
yum install iptables
Суулгасны дараа идэвхжүүлэх тушаал:
systemctl start iptables
Эхлүүлэхэд нэмэхийн тулд дараахыг гүйцэтгэнэ:
systemctl enable iptables
Iptables тохиргоог эхлүүлэхийн өмнө энэ нь хэрхэн ажилладагийг ойлгох нь чухал юм. Үүнд програмын синтакс тусалдаг. Энэ нь дараах байдлаар харагдаж байна.
iptables -t table action chain additional_parameters
Зүйл бүрийг илүү нарийвчлан авч үзье.
IPtables нь дөрвөн үндсэн хүснэгттэй: шүүлтүүр, nat, mangle, raw. Тус бүр нь тодорхой төрлийн пакетуудыг боловсруулахад зориулагдсан бөгөөд өөрийн гэсэн дүрэмтэй байдаг.
- шүүлтүүр: Энэ бол пакет шүүх дүрмийг агуулсан хамгийн түгээмэл хэрэглэгддэг хүснэгт юм. Энэ нь пакетуудыг зөвшөөрөх эсвэл татгалзах шийдвэр гаргахад ашиглагддаг.
- nat: Энэ хүснэгтийг багц дахь сүлжээний хаяг болон портуудыг өөрчлөхөд ашигладаг. Үүнийг ихэвчлэн хувиргах (NAT) тохируулахад ашигладаг.
- зэрэмдэглэсэн: Энэ хүснэгтэд та багцын толгой хэсгийг өөрчлөх боломжтой. Энэ нь тэмдэглэгээ гэх мэт тусгай багцын үйл ажиллагаанд ашиглагддаг.
- түүхий эд: Энэ хүснэгтийг холболтын хяналтын системээр дамжихаас өмнө дагаж мөрдөх дүрмийг тохируулахад ашигладаг. Энэ нь ихэвчлэн тодорхой хаягаас пакетуудыг буулгах гэх мэт хяналтын системээр өөрчлөх ёсгүй дүрмийг тогтооход ашиглагддаг.
Хүснэгт бүр гинжний багцыг агуулдаг. Гинж нь дарааллаар шалгагдсан дүрэм журмын дараалал юм. Урьдчилан тодорхойлсон гурван хэлхээ байдаг:
- INPUT (ирж байгаа). Энэ гинжин хэлхээний дүрмүүд нь ирж буй пакетуудыг юу хийхийг тодорхойлдог.
- OUTPUT (гардаг). Энэ хэлхээ нь таны компьютер бусад төхөөрөмж эсвэл сүлжээнд байгаа компьютерт илгээдэг бүх багцад хамаарна.
- Урагшаа (дамжуулах). Энэ гинжин хэлхээний дүрмүүд нь дамжуулагдсан пакетуудыг юу хийхийг зааж өгдөг.
Эцэст нь, гинж бүр тодорхой үйлдлийг (зорилтот) эзэмшдэг. Практикт 5 үндсэн үйлдлийг ашигладаг.
- АЖИЛЛАГАА: Пакетийг галт ханаар нэвтрүүлэхийг зөвшөөрнө.
- дусал: Багцаас татгалзаж, ямар ч хариу өгөхгүйгээр устгана уу.
- ТАЙЛБАР: Пакетийг татгалзаж, илгээгчид ICMP алдааны мессежийг илгээнэ үү.
- LOG: Системийн бүртгэлд пакетыг бүртгэж, өөр үйлдлийг гүйцэтгэнэ (жишээ нь: ACCEPT эсвэл DROP).
- МЭДҮҮЛЭГ: Одоогийн гинжин хэлхээний дүрмийг шалгахаа зогсоож, дуудлагын сүлжээ рүү буцна уу (хэрэв байгаа бол).
Тохиргоог эхлүүлэхийн тулд одоо байгаа дүрмийн жагсаалтыг дараах тушаалаар нээнэ үү.
iptables -L

Iptables-ийг тохируулах гарын авлага болгон хамгийн түгээмэл хэрэглэгддэг командуудын практик жишээг харцгаая. Тохиромжтой болгох үүднээс бид жишээнүүдийг тодорхой хэлхээнээс хамааран 3 бүлэгт хуваана.
Зочид буудлуудын сүлжээ INPUT:
- 80 порт дээрх TCP протоколоор орж ирж буй урсгалыг зөвшөөрөх:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. 22-р порт дээр UDP протоколоор орж ирж буй урсгалыг зөвшөөрөх:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Тодорхой IP хаягаас ирж буй урсгалыг блоклох:
iptables -A INPUT -s 192.168.1.100 -j DROP
Зочид буудлуудын сүлжээ ГАРАЛТ:
- 443 порт дээр TCP протоколоор дамжуулж буй урсгалыг зөвшөөрөх:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. 80-р порт дээр UDP протоколоор гадагш гарах урсгалыг зөвшөөрөх:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Тодорхой порт руу гарах урсгалыг блоклох (жишээ нь, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Зочид буудлуудын сүлжээ FORWARD:
- Тодорхой хүрээний IP хаягаас дамжуулсан урсгалыг блоклох:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Тодорхой сүлжээний интерфэйсээс пакет дамжуулахыг блоклох:
iptables -A FORWARD -i eth1 -j DROP
3. Тодорхой портын нэгэн зэрэг холболтын тоог хязгаарлах (энэ жишээнд 10-р порт дээр минутанд 80 холболт):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Таны харж байгаагаар тусдаа тохиолдол бүрт нэмэлт аргумент (тушаал) ашиглагддаг. Боломжит аргументуудын бүрэн жагсаалт болон хэрэгслийн үйл ажиллагааны ерөнхий дэмжлэгийг авахын тулд дараахыг оруулна уу:
iptables -h

Тохиргоо зөв эсэхийг шалгахын тулд дүрмийн жагсаалтыг харахын тулд тушаалыг дахин оруулна уу:
iptables -L

Тодорхой дүрмийг устгахын тулд дараах тушаалыг ашиглана уу.
iptables -D chain rule_number
Жишээлбэл, хэрэв та INPUT хэлхээнээс 1-р дүрмийг устгахыг хүсвэл тушаал дараах байдалтай харагдана.
iptables -D INPUT 1
Бүх дүрмийг нэг тушаалаар устгахын тулд:
iptables -F
Чухал тэмдэглэл: систем эсвэл үйлчилгээг дахин ачаалсны дараа iptables дүрэм автоматаар хадгалагдахгүй. Дүрмүүдийг хадгалахын тулд тэдгээрийг тохиргооны файлд нэмж, дахин ачаалсны дараа сэргээх шаардлагатай. The iptables-хадгалах болон iptables-сэргээх хэрэгслүүд үүнд тусалж чадна. Дүрмийг хадгалахын тулд дараах тушаалыг оруулна уу:
iptables-save > /etc/iptables/rules.v4
Энэ нь одоогийн iptables дүрмийг rule.v4 файлд хадгалдаг. Дахин ачаалсны дараа сэргээхийн тулд дараахыг оруулна уу:
iptables-restore < /etc/iptables/rules.v4
Энэ тушаал нь rule.v4 файлаас дүрмийг сэргээдэг.
Дүгнэлт
Галт хана эсвэл iptables ашиглан Линукс дээр галт ханыг тохируулах нь серверийн аюулгүй байдлыг хангах чухал тал юм. Энэ хоёр хэрэгсэл нь сүлжээний урсгалыг удирдах, системийг зөвшөөрөлгүй хандалт, кибер халдлагаас хамгаалах найдвартай арга хэрэгслийг санал болгодог. Галт хана болон iptables-ийн хоорондох сонголт нь тэдний өөр өөр функциональ байдал, давуу талыг харгалзан хэрэглэгчийн тодорхой хэрэгцээ, сонголтоос хамаарна.