Заштитни зид на Линук-у игра виталну улогу у обезбеђивању рачунарског система. Делује као баријера, контролише и филтрира мрежни саобраћај како би заштитио систем од неовлашћеног приступа, напада и других претњи. Без правилно конфигурисаног заштитног зида, сервер би могао бити рањив на различите врсте сајбер напада, што доводи до озбиљних последица по безбедност и поверљивост података.
У овом чланку ћемо погледати два главна алата за конфигурисање Линукс заштитног зида (Firewalld): firewalld и iptables. Спровешћемо упоредну анализу њихових карактеристика, функционалности и предности. Поред тога, пружићемо детаљна упутства за подешавање и коришћење сваког од ових алата, као и размотрити најбоље праксе за обезбеђивање вашег система помоћу заштитног зида (Firewall) на Линукс платформи. Све радње ће бити демонстриране на виртуелном серверу са root приступом.
Конфигурисање фиреваллд-а на Линук-у
Firewalld (Firewall Daemon) је програм за управљање заштитним зидом (firewall daemon) у Linux оперативним системима. Он пружа кориснички интерфејс за конфигурисање правила заштитног зида (firewall), дозвољавање или блокирање веза мрежних апликација. Подразумевано је унапред инсталиран у већини серверских дистрибуција. Ако Firewalld није унапред инсталиран, може се инсталирати независно из званичних репозиторијума дистрибуције.
За Ред Хат системе (као што су РХЕЛ, ЦентОС, Федора) инсталација се изводи командом:
yum install firewalld
За Дебиан/Убунту:
apt-get install firewalld
Након инсталације, може се одмах покренути и активирати командом:
systemctl start firewalld
Затим морате да додате услугу за покретање:
systemctl enable firewalld
У овом тренутку препоручујемо да онемогућите уфв, јер се не препоручује истовремена употреба овог алата са фиреваллд-ом или иптаблес-ом. Проверите статус:
systemctl status ufw
Да бисте га зауставили, унесите команду:
systemctl stop ufw
За потпуну деактивацију:
ufw disable
Након ових радњи, можете наставити са конфигурисањем фиреваллд-а.
Прво, потребно је дефинисати зоне поверења. Фиреваллд користи концепт зона да одреди ниво поверења за мрежне интерфејсе. Сваком интерфејсу је додељена једна зона, а правила заштитног зида се примењују на основу зоне. Листа свих доступних зона отвара се командом:
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 порт за ССХ би изгледао овако:
firewall-cmd --zone=public --add-port=22/tcp
У овој фази, главна правила су већ креирана. Затим, одредите како ће се саобраћај обрађивати у зависности од извора, одредишта, порта и других критеријума. Да бисте додали правило (користећи јавну зону као пример):
firewall-cmd --zone=public rule
На пример, да бисте дозволили долазни саобраћај из било ког извора на порт 80 (ХТТП):
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
Ако дође до било каквих проблема, проверите евиденцију Фиреваллд-а помоћу наредбе:
journalctl -u firewalld
Напомена: Обрадили смо само општи алгоритам за подешавање везе. Алат има широку функционалност. За потпуне информације о свим доступним опцијама, можете користити званичну документацију или отворити помоћ:
firewall-cmd --help
Конфигурисање иптаблес-а на Линук-у
За разлику од Фиреваллд-а, иптаблес је старији, али још увек широко коришћен алат у Линук-у за управљање заштитним зидом. Пружа директнији и флексибилнији приступ правилима филтрирања пакета на нивоу Линук кернела. Међутим, иптаблес захтева напредније знање и искуство у поређењу са Фиреваллд-ом, што га чини мање доступним за почетнике. Проверите унапред инсталирану верзију алата командом:
iptables -V
Ако алат није инсталиран, мораће да се инсталира. Команда за инсталацију на Убунту, Дебиан:
apt install iptables
За Ред Хат системе (нпр. ЦентОС, Федора):
yum install iptables
Команда за активацију након инсталације:
systemctl start iptables
Да бисте додали у покретање, извршите:
systemctl enable iptables
Пре него што започнете конфигурацију иптаблес-а, важно је разумети како она функционише. Томе помаже синтакса програма. изгледа овако:
iptables -t table action chain additional_parameters
Хајдемо дубље у сваку ставку.
Iptables има четири главне табеле: filter, nat, mangle и raw . Свака је дизајнирана за обраду одређених типова пакета и има своје ланце правила:
- филтер: Ово је најчешће коришћена табела, која садржи правила филтрирања пакета. Користи се за доношење одлука о томе да ли да дозволите или одбијете пакете.
- нат: Ова табела се користи за модификацију мрежних адреса и портова у пакетима. Често се користи за подешавање маскирања (НАТ).
- мангле: У овој табели можете да мењате заглавља пакета. Користи се за специјализоване пакетне операције, као што је обележавање.
- сиров: Ова табела се користи за конфигурисање правила која се примењују пре него што прођу кроз систем за праћење везе. Обично се користи за подешавање правила која систем за праћење не би требало да мења, као што је испуштање пакета са одређених адреса.
Свака табела садржи скуп ланаца. Ланци су низ правила која се проверавају узастопно. Постоје три унапред дефинисана ланца:
- ИНПУТ (долазни). Правила у овом ланцу одређују шта да се ради са долазним пакетима.
- ИЗЛАЗ (одлазни). Овај ланац се примењује на све пакете које ваш рачунар шаље другим уређајима или рачунарима на мрежи.
- ФОРВАРД (прослеђивање). Правила у овом ланцу одређују шта да се ради са прослеђеним пакетима.
Коначно, сваки ланац поседује неку акцију (циљ). У пракси се користи 5 главних радњи:
- АЦЦЕПТ: Дозволите пакету да прође кроз заштитни зид.
- ДРОП: Одбаците пакет и одбаците га без икаквог одговора.
- ОДБИТИ: Одбијте пакет и пошаљите пошиљаоцу ИЦМП поруку о грешци.
- ЛОГ: Евидентирајте пакет у системски дневник и извршите другу радњу (нпр. ПРИХВАТИ или ОДБАЦИ).
- ПОВРАТАК: Зауставите проверу правила у тренутном ланцу и вратите се у ланац позивања (ако је применљиво).
Да бисте покренули подешавање, отворите листу постојећих правила командом:
iptables -L
Као водич за конфигурисање Иптаблес-а, погледајмо практичне примере најчешће коришћених команди. Ради практичности, поделићемо примере у 3 групе, у зависности од специфичног ланца.
УЛАЗ ланца :
- Дозволите долазни саобраћај преко ТЦП протокола на порту 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Дозволите долазни саобраћај преко УДП протокола на порту 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Блокирајте долазни саобраћај са одређене ИП адресе:
iptables -A INPUT -s 192.168.1.100 -j DROP
ИЗЛАЗ ланца :
- Дозволи одлазни саобраћај преко ТЦП протокола на порту 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Дозволите одлазни саобраћај преко УДП протокола на порту 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Блокирајте одлазни саобраћај ка одређеном порту (на пример, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Ланац НАПРЕД :
- Блокирајте прослеђени саобраћај са одређеног опсега ИП адреса:
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 из ИНПУТ ланца, команда ће изгледати овако:
iptables -D INPUT 1
Да бисте избрисали сва правила једном командом:
iptables -F
Важна напомена : iptables правила се не чувају аутоматски након поновног покретања система или сервиса. Да бисте сачували правила, потребно их је додати у конфигурациону датотеку и вратити их након поновног покретања. Услужни програми iptables-save и iptables-restore могу вам помоћи у томе. Да бисте сачували правила, унесите команду:
iptables-save > /etc/iptables/rules.v4
Ово чува тренутна иптаблес правила у датотеци рулес.в4. Да бисте вратили након поновног покретања, унесите:
iptables-restore < /etc/iptables/rules.v4
Ова команда враћа правила из датотеке рулес.в4.
Закључак
Конфигурисање заштитног зида на Линук-у помоћу фиреваллд-а или иптаблес-а је важан аспект обезбеђивања безбедности сервера. Оба алата нуде поуздана средства за управљање мрежним саобраћајем и заштиту система од неовлашћеног приступа и сајбер напада. Избор између фиреваллд-а и иптаблес-а зависи од специфичних потреба и преференција корисника, с обзиром на њихову различиту функционалност и снагу.