Брандмаўэр у Linux гуляе важную ролю ў абароне кампутарнай сістэмы. Ён дзейнічае як бар'ер, кантралюючы і фільтруючы сеткавы трафік для абароны сістэмы ад несанкцыянаванага доступу, нападаў і іншых пагроз. Без правільна настроенага брандмаўэра сервер можа быць уразлівым да розных тыпаў кібератак, што прывядзе да сур'ёзных наступстваў для бяспекі і канфідэнцыяльнасці даных.
У гэтым артыкуле мы разгледзім два асноўныя інструменты для наладжвання брандмаўэра Linux: firewalld і iptables. Правядзем параўнальны аналіз іх характарыстык, функцыянальнасці і пераваг. Акрамя таго, мы дамо падрабязныя інструкцыі па наладжванні і выкарыстанні кожнага з гэтых інструментаў, а таксама абмяркуем найлепшыя метады абароны вашай сістэмы з дапамогай брандмаўэра на платформе Linux. Усе дзеянні будуць дэманстравацца на а віртуальныя серверы з каранёвым доступам.
Настройка брандмаўэра ў Linux
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
На дадзены момант мы рэкамендуем адключыць ufw, бо адначасовае выкарыстанне гэтага інструмента з firewalld або iptables не рэкамендуецца. Праверце статус:
systemctl status ufw
Каб спыніць яго, увядзіце каманду:
systemctl stop ufw
Для поўнай дэактывацыі:
ufw disable
Пасля гэтых дзеянняў можна пераходзіць да налады брандмаўэра.
Па-першае, неабходна вызначыць зоны даверу. Firewalld выкарыстоўвае канцэпцыю зон для вызначэння ўзроўню даверу для сеткавых інтэрфейсаў. Кожнаму інтэрфейсу прызначаецца адна зона, і на аснове зоны прымяняюцца правілы брандмаўэра. Спіс усіх даступных зон адкрываецца камандай:
firewall-cmd --get-zones
Як правіла, выкарыстоўваюцца 4 асноўныя зоны:
- грамадскага: Гэтая зона прызначана для сетак, якія вы лічыце небяспечнымі;
- прыватны: прымяняецца да хатніх сетак або іншых давераных сеткавых злучэнняў;
- Унутраны: Выкарыстоўваецца для ўнутраных сетак, напрыклад, унутры арганізацыі або карпаратыўнай сеткі;
- ДМЗ: У гэтай зоне звычайна размяшчаюцца серверы, якія павінны быць даступныя з Інтэрнэту.
Аднак гэта толькі адзін прыклад. Вы можаце дадаць сваю ўласную зону з дапамогай каманды:
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
Напрыклад, стандартны 22 порт для SSH будзе выглядаць так:
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
Дзе кіраваць гэта тып правіла (напрыклад, порт, абслугоўванне, багатае правіла і г.д.), і спецыфікацыя_правіла гэта спецыфікацыя самога правіла.
Пасля ўнясення змяненняў у канфігурацыю Firewalld іх неабходна захаваць і прымяніць. Каб захаваць змены, скарыстайцеся камандай:
firewall-cmd --runtime-to-permanent
Каб прымяніць змены:
firewall-cmd --reload
Пасля завяршэння налады вы можаце праверыць выбраныя параметры, адкрыўшы спіс усіх правілаў:
firewall-cmd --list-all
Пры ўзнікненні праблем праверце журналы Firewalld з дапамогай каманды:
journalctl -u firewalld
Заўвага: мы разгледзелі толькі агульны алгарытм наладжвання злучэння. Інструмент валодае шырокім функцыяналам. Для атрымання поўнай інфармацыі аб усіх даступных варыянтах вы можаце выкарыстоўваць афіцыйная дакументацыя або адкрыць дапамогу:
firewall-cmd --help
Настройка iptables на Linux
У адрозненне ад Firewalld, iptables - гэта стары, але ўсё яшчэ шырока выкарыстоўваны інструмент у Linux для кіравання брандмаўэрам. Ён забяспечвае больш прамы і гнуткі падыход да правілаў фільтрацыі пакетаў на ўзроўні ядра 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).
- мангравыя зараснікі: У гэтай табліцы вы можаце змяняць загалоўкі пакетаў. Ён выкарыстоўваецца для спецыялізаваных аперацый з пакетамі, такіх як маркіроўка.
- сыравіна: Гэтая табліца выкарыстоўваецца для канфігурацыі правілаў, якія прымяняюцца да таго, як яны праходзяць праз сістэму адсочвання злучэнняў. Звычайна ён выкарыстоўваецца для наладжвання правілаў, якія не павінны быць зменены сістэмай адсочвання, такіх як адкідванне пакетаў з пэўных адрасоў.
Кожная табліца змяшчае набор ланцугоў. Ланцужкі - гэта паслядоўнасць правілаў, якія паслядоўна правяраюцца. Ёсць тры загадзя вызначаныя ланцужкі:
- INPUT (уваходны). Правілы ў гэтым ланцужку вызначаюць, што рабіць з уваходнымі пакетамі.
- ВЫХОД (выходны). Гэты ланцужок прымяняецца да ўсіх пакетаў, якія ваш кампутар адпраўляе на іншыя прылады або кампутары ў сетцы.
- FORWARD (перасылка). Правілы ў гэтым ланцужку вызначаюць, што рабіць з перасланымі пакетамі.
Нарэшце, кожны ланцужок валодае нейкім дзеяннем (мэтай). На практыцы выкарыстоўваюцца 5 асноўных дзеянняў:
- ACCEPT: Дазвольце пакету прайсці праз брандмаўэр.
- DROP: Адхіліць пакет і адкінуць яго без адказу.
- АДКАЗАЦЬ: Адхіліць пакет і адправіць адпраўніку паведамленне пра памылку ICMP.
- УВАХОД: Запішыце пакет у сістэмны журнал і выканайце іншае дзеянне (напрыклад, ПРЫНЯЦЬ ці АДПУСНІЦЬ).
- Зварот: Спыніце праверку правілаў у бягучым ланцужку і вярніцеся да ланцужка выкліку (калі ёсць).
Каб пачаць наладу, адкрыйце спіс існуючых правілаў камандай:
iptables -L
У якасці кіраўніцтва па канфігурацыі Iptables давайце разгледзім практычныя прыклады найбольш часта выкарыстоўваюцца каманд. Для зручнасці падзелім прыклады на 3 групы ў залежнасці ад канкрэтнай ланцужкі.
ланцуг УВАХОД:
- Дазволіць уваходны трафік праз пратакол TCP на порт 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Дазволіць уваходны трафік праз пратакол UDP на порт 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Блакуйце ўваходны трафік з пэўнага IP-адраса:
iptables -A INPUT -s 192.168.1.100 -j DROP
ланцуг ВЫХАД:
- Дазволіць выходны трафік праз пратакол TCP на порт 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Дазволіць выходны трафік праз пратакол UDP на порт 80:
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
Напрыклад, калі вы хочаце выдаліць правіла нумар 1 з ланцужка INPUT, каманда будзе выглядаць так:
iptables -D INPUT 1
Каб выдаліць усе правілы адной камандай:
iptables -F
Важная заўвага: правілы iptables не захоўваюцца аўтаматычна пасля перазагрузкі сістэмы або службы. Каб захаваць правілы, іх трэба дадаць у файл канфігурацыі і аднавіць пасля перазагрузкі. The iptables-захаваць і iptables-аднаўленне утыліты могуць дапамагчы ў гэтым. Каб захаваць правілы, увядзіце каманду:
iptables-save > /etc/iptables/rules.v4
Гэта захоўвае бягучыя правілы iptables у файл rules.v4. Каб аднавіць пасля перазагрузкі, увядзіце:
iptables-restore < /etc/iptables/rules.v4
Гэтая каманда аднаўляе правілы з файла rules.v4.
Conclusion
Налада брандмаўэра ў Linux з дапамогай firewalld або iptables з'яўляецца важным аспектам забеспячэння бяспекі сервера. Абодва інструменты прапануюць надзейныя сродкі кіравання сеткавым трафікам і абароны сістэмы ад несанкцыянаванага доступу і кібератак. Выбар паміж firewalld і iptables залежыць ад канкрэтных патрэбаў і пераваг карыстальніка, улічваючы іх розныя функцыянальныя магчымасці і моцныя бакі.