Линукс дээрх галт хана нь компьютерийн системийг хамгаалахад чухал үүрэг гүйцэтгэдэг. Энэ нь системийг зөвшөөрөлгүй нэвтрэх, халдлага болон бусад аюулаас хамгаалахын тулд сүлжээний урсгалыг хянаж, шүүж, хаалт болж ажилладаг. Зөв тохируулагдсан Галт хана байхгүй бол сервер нь янз бүрийн төрлийн кибер халдлагад өртөж, мэдээллийн аюулгүй байдал, нууцлалд ноцтой үр дагаварт хүргэж болзошгүй юм.
Энэ нийтлэлд бид Linux Firewall-г тохируулах хоёр үндсэн хэрэгслийг авч үзэх болно: firewalld болон iptables. Бид тэдгээрийн онцлог, үйл ажиллагаа, давуу талуудын харьцуулсан дүн шинжилгээ хийх болно. Нэмж дурдахад бид эдгээр хэрэгслүүдийг тохируулах, ашиглах талаар дэлгэрэнгүй зааварчилгаа өгөхөөс гадна Linux платформ дээр Firewall ашиглан системийг аюулгүй болгох шилдэг туршлагуудыг хэлэлцэх болно. Бүх үйлдлийг root хандалттай виртуал сервер дээр харуулах болно.
Линукс дээр галт ханыг тохируулж байна
Firewalld (Firewall Daemon) нь Linux үйлдлийн систем дэх галт ханыг удирдах програм юм. Энэ нь галт ханын дүрмийг тохируулах, сүлжээний програмуудын холболтыг зөвшөөрөх эсвэл хаах хэрэглэгчийн интерфэйсийг хангадаг. Энэ нь ихэнх серверийн тархацуудад анхдагчаар урьдчилан суулгагдсан байдаг. Хэрэв 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
нь дүрмийн төрөл (жишээ нь, порт, үйлчилгээ, баян дүрэм гэх мэт), харин нь дүрмийн өөрийнх нь тодорхойлолт юм.
Галт хананы тохиргоонд өөрчлөлт оруулсны дараа тэдгээрийг хадгалах, хэрэглэх шаардлагатай. Өөрчлөлтүүдийг хадгалахын тулд дараах тушаалыг ашиглана уу.
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 нь filter, nat, mangle, болон raw гэсэн дөрвөн үндсэн хүснэгттэй . Хүснэгт бүр нь тодорхой төрлийн пакетуудыг боловсруулахад зориулагдсан бөгөөд өөрийн гэсэн дүрмийн гинжтэй байдаг:
- шүүлтүүр: Энэ бол пакет шүүх дүрмийг агуулсан хамгийн түгээмэл хэрэглэгддэг хүснэгт юм. Энэ нь пакетуудыг зөвшөөрөх эсвэл татгалзах шийдвэр гаргахад ашиглагддаг.
- nat: Энэ хүснэгтийг багц дахь сүлжээний хаяг болон портуудыг өөрчлөхөд ашигладаг. Үүнийг ихэвчлэн хувиргах (NAT) тохируулахад ашигладаг.
- зэрэмдэглэсэн: Энэ хүснэгтэд та багцын толгой хэсгийг өөрчлөх боломжтой. Энэ нь тэмдэглэгээ гэх мэт тусгай багцын үйл ажиллагаанд ашиглагддаг.
- түүхий эд: Энэ хүснэгтийг холболтын хяналтын системээр дамжихаас өмнө дагаж мөрдөх дүрмийг тохируулахад ашигладаг. Энэ нь ихэвчлэн тодорхой хаягаас пакетуудыг буулгах гэх мэт хяналтын системээр өөрчлөх ёсгүй дүрмийг тогтооход ашиглагддаг.
Хүснэгт бүр гинжний багцыг агуулдаг. Гинж нь дарааллаар шалгагдсан дүрэм журмын дараалал юм. Урьдчилан тодорхойлсон гурван хэлхээ байдаг:
- INPUT (ирж байгаа). Энэ гинжин хэлхээний дүрмүүд нь ирж буй пакетуудыг юу хийхийг тодорхойлдог.
- OUTPUT (гардаг). Энэ хэлхээ нь таны компьютер бусад төхөөрөмж эсвэл сүлжээнд байгаа компьютерт илгээдэг бүх багцад хамаарна.
- Урагшаа (дамжуулах). Энэ гинжин хэлхээний дүрмүүд нь дамжуулагдсан пакетуудыг юу хийхийг зааж өгдөг.
Эцэст нь, гинж бүр тодорхой үйлдлийг (зорилтот) эзэмшдэг. Практикт 5 үндсэн үйлдлийг ашигладаг.
- АЖИЛЛАГАА: Пакетийг галт ханаар нэвтрүүлэхийг зөвшөөрнө.
- дусал: Багцаас татгалзаж, ямар ч хариу өгөхгүйгээр устгана уу.
- ТАЙЛБАР: Пакетийг татгалзаж, илгээгчид ICMP алдааны мессежийг илгээнэ үү.
- LOG: Системийн бүртгэлд пакетыг бүртгэж, өөр үйлдлийг гүйцэтгэнэ (жишээ нь: ACCEPT эсвэл DROP).
- МЭДҮҮЛЭГ: Одоогийн гинжин хэлхээний дүрмийг шалгахаа зогсоож, дуудлагын сүлжээ рүү буцна уу (хэрэв байгаа бол).
Тохиргоог эхлүүлэхийн тулд одоо байгаа дүрмийн жагсаалтыг дараах тушаалаар нээнэ үү.
iptables -L
Iptables-ийг тохируулах гарын авлага болгон хамгийн түгээмэл хэрэглэгддэг командуудын практик жишээг харцгаая. Тохиромжтой болгох үүднээс бид жишээнүүдийг тодорхой хэлхээнээс хамааран 3 бүлэгт хуваана.
Гинжингийн ОРОЛТ :
- 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
Гинжийг урагшлуулах :
- Тодорхой хүрээний 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 дүрмүүд нь систем эсвэл үйлчилгээг дахин ачаалсны дараа автоматаар хадгалагдахгүй. Дүрмүүдийг хадгалахын тулд тэдгээрийг тохиргооны файлд нэмж, дахин ачаалсны дараа сэргээх шаардлагатай. iptables-save болон iptables-restore хэрэгслүүд үүнд тусалж чадна. Дүрмүүдийг хадгалахын тулд дараах командыг оруулна уу:
iptables-save > /etc/iptables/rules.v4
Энэ нь одоогийн iptables дүрмийг rule.v4 файлд хадгалдаг. Дахин ачаалсны дараа сэргээхийн тулд дараахыг оруулна уу:
iptables-restore < /etc/iptables/rules.v4
Энэ тушаал нь rule.v4 файлаас дүрмийг сэргээдэг.
Дүгнэлт
Галт хана эсвэл iptables ашиглан Линукс дээр галт ханыг тохируулах нь серверийн аюулгүй байдлыг хангах чухал тал юм. Энэ хоёр хэрэгсэл нь сүлжээний урсгалыг удирдах, системийг зөвшөөрөлгүй хандалт, кибер халдлагаас хамгаалах найдвартай арга хэрэгслийг санал болгодог. Галт хана болон iptables-ийн хоорондох сонголт нь тэдний өөр өөр функциональ байдал, давуу талыг харгалзан хэрэглэгчийн тодорхой хэрэгцээ, сонголтоос хамаарна.