Fajroŝirmilo en Linukso ludas esencan rolon en sekurigado de komputila sistemo. Ĝi funkcias kiel baro, kontrolante kaj filtrante retan trafikon por protekti la sistemon kontraŭ neaŭtorizita aliro, atakoj kaj aliaj minacoj. Sen konvene agordita Fajromuro, la servilo povus esti vundebla al diversaj specoj de ciberatakoj, kondukante al gravaj sekvoj por datumsekureco kaj konfidenco.
En ĉi tiu artikolo, ni rigardos du ĉefajn ilojn por agordi la Linuksan Fajromuron: firewalld kaj iptables. Ni faros komparan analizon de iliaj trajtoj, funkcioj kaj avantaĝoj. Plie, ni provizos detalajn instrukciojn por agordi kaj uzi ĉiun el ĉi tiuj iloj, kaj ankaŭ diskutos plej bonajn praktikojn por sekurigi vian sistemon per Fajromuro sur la Linuksa platformo. Ĉiuj agoj estos montritaj sur virtuala servilo kun administra aliro.
Agordante firewalld sur Linukso
Firewalld (Firewall Daemon) estas programo por administri la fajromuron en Linuksaj operaciumoj. Ĝi provizas uzantinterfacon por agordi fajromurajn regulojn, permesi aŭ bloki konektojn de retaj aplikaĵoj. Ĝi estas antaŭinstalita defaŭlte en plej multaj servilaj distribuaĵoj. Se Firewalld ne estas antaŭinstalita, ĝi povas esti instalita sendepende de la oficialaj deponejoj de la distribuaĵo.
Por Red Hat-sistemoj (kiel RHEL, CentOS, Fedora) la instalado estas farita per la komando:
yum install firewalld
Por Debian/Ubuntu:
apt-get install firewalld
Post instalado, ĝi povas esti komencita kaj aktivigita tuj per la komando:
systemctl start firewalld
Poste, vi devas aldoni la servon al lanĉo:
systemctl enable firewalld
Je ĉi tiu punkto, ni rekomendas malŝalti ufw, ĉar la samtempa uzo de ĉi tiu ilo kun firewalld aŭ iptables ne estas rekomendita. Kontrolu la staton:
systemctl status ufw
Por haltigi ĝin, enigu la komandon:
systemctl stop ufw
Por kompleta malaktivigo:
ufw disable
Post ĉi tiuj agoj, vi povas agordi firewalld.
Unue, necesas difini fidajn zonojn. Firewalld uzas la koncepton de zonoj por determini la nivelon de fido por retaj interfacoj. Ĉiu interfaco ricevas unu zonon, kaj fajromurreguloj estas aplikataj surbaze de la zono. La listo de ĉiuj disponeblaj zonoj estas malfermita per la komando:
firewall-cmd --get-zones
Kutime, 4 ĉefaj zonoj estas uzataj:
- publikajn: Ĉi tiu zono estas por retoj, kiujn vi konsideras nesekuraj;
- privata: validas por hejmaj retoj aŭ aliaj fidindaj retaj konektoj;
- interna: Uzite por internaj retoj, kiel tiuj ene de organizo aŭ kompania reto;
- DMZ: Ĉi tiu zono estas kie kutime estas metitaj serviloj kiuj devus esti alireblaj de la interreto.
Tamen, ĉi tio estas nur unu ekzemplo. Vi povas aldoni vian propran zonon uzante la komandon:
firewall-cmd --permanent --new-zone=nameyourzone
Post aldonado, reŝargi estas bezonata:
firewall-cmd --reload
Por forigi zonon oni uzas similan metodon
firewall-cmd --permanent --delete-zone=nameyourzone
Post difini zonojn, necesas permesi trafikon por la bezonataj servoj kaj havenoj. Por permesi certan servon, uzu la komandon:
firewall-cmd --zone=public --add-service=name
Kie nomo estas la nomo de la servo. Ekzemple, por permesi trafikon por Apache:
firewall-cmd --zone=public --add-service=http
Por difini permeseblajn havenojn, uzu la komandon:
firewall-cmd --zone=public --add-port=number/protocol
Ekzemple, la norma 22-haveno por SSH aspektus jene:
firewall-cmd --zone=public --add-port=22/tcp
En ĉi tiu etapo, la ĉefaj reguloj jam estas kreitaj. Poste, determinu kiel trafiko estos prilaborita depende de la fonto, celloko, haveno kaj aliaj kriterioj. Por aldoni regulon (uzante la publikan zonon kiel ekzemplon):
firewall-cmd --zone=public rule
Ekzemple, por permesi alvenantan trafikon de iu ajn fonto al haveno 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Por forigi regulon:
firewall-cmd --permanent --remove-rule=rule_specification
Kie regulo estas la tipo de regulo (ekz., haveno, servo, riĉa-regulo, ktp.), kaj regulo_specifo estas la specifo de la regulo mem.
Post fari ŝanĝojn al la agordo de Firewalld, necesas konservi kaj apliki ilin. Por konservi ŝanĝojn, uzu la komandon:
firewall-cmd --runtime-to-permanent
Por apliki ŝanĝojn:
firewall-cmd --reload
Fininte la agordon, vi povas kontroli la elektitajn parametrojn malfermante la liston de ĉiuj reguloj:
firewall-cmd --list-all
Se aperas iuj problemoj, kontrolu la protokolojn de Firewalld per la komando:
journalctl -u firewalld
Noto: Ni nur traktis la ĝeneralan algoritmon por starigi la konekton. La ilo havas ampleksan funkciecon. Por plenaj informoj pri ĉiuj disponeblaj opcioj, vi povas uzi la oficialan dokumentaron aŭ malfermi helpon:
firewall-cmd --help
Agordante iptables en Linukso
Male al Firewalld, iptables estas pli malnova sed ankoraŭ vaste uzata ilo en Linukso por administri la fajroŝirmilon. Ĝi provizas pli rektan kaj flekseblan aliron al pakaj filtraj reguloj ĉe la Linuksa kerno. Tamen, iptables postulas pli altnivelan scion kaj sperton kompare kun Firewalld, igante ĝin malpli alirebla por komencantoj. Kontrolu la antaŭinstalitan version de la ilo per la komando:
iptables -V
Se la ilo ne estas instalita, ĝi devos esti instalita. La komando por instalado sur Ubuntu, Debian:
apt install iptables
Por Red Hat-sistemoj (ekz. CentOS, Fedora):
yum install iptables
La komando por aktivigo post instalado:
systemctl start iptables
Por aldoni al lanĉo, ekzekutu:
systemctl enable iptables
Antaŭ ol komenci la agordon de iptables, gravas kompreni kiel ĝi funkcias. Tion helpas la sintakso de la programo. Ĝi aspektas jene:
iptables -t table action chain additional_parameters
Ni profundiĝu en ĉiu objekto.
Iptables havas kvar ĉefajn tabelojn: filter, nat, mangle, kaj raw . Ĉiu estas destinita por prilabori certajn specojn de pakaĵoj kaj havas siajn proprajn ĉenojn de reguloj:
- filtrilo: Ĉi tiu estas la plej ofte uzata tabelo, enhavanta regulojn pri pakaĵeto. Ĝi estas uzata por fari decidojn ĉu permesi aŭ nei pakaĵetojn.
- nat: Ĉi tiu tabelo estas uzata por modifi retajn adresojn kaj pordojn en pakaĵoj. Ĝi estas ofte uzata por agordi maskeradon (NAT).
- mangle: En ĉi tiu tabelo, vi povas modifi pakajn kapliniojn. Ĝi estas uzata por specialaj pakaj operacioj, kiel markado.
- kruda: Ĉi tiu tabelo estas uzata por agordi regulojn, kiuj validas antaŭ ol ili trapasas la konektan spursistemon. Ĝi estas kutime uzata por starigi regulojn, kiuj ne devus esti modifitaj de la spursistemo, kiel faligi pakaĵetojn de certaj adresoj.
Ĉiu tablo enhavas aron da ĉenoj. Ĉenoj estas sekvenco de reguloj kiuj estas kontrolitaj sinsekve. Estas tri antaŭdifinitaj ĉenoj:
- ENIGO (envenanta). La reguloj en ĉi tiu ĉeno determinas kion fari kun envenantaj pakoj.
- ELIGRO (elira). Ĉi tiu ĉeno validas por ĉiuj pakoj, kiujn via komputilo sendas al aliaj aparatoj aŭ komputiloj en la reto.
- FORWARD (plusendado). La reguloj en ĉi tiu ĉeno specifas kion fari kun plusenditaj pakaĵoj.
Fine, ĉiu ĉeno posedas iun agon (celon). En la praktiko, 5 ĉefaj agoj estas uzataj:
- Akcepti: Permesu la pakaĵon trapasi la fajroŝirmilon.
- GUTI: Forĵetu la pakaĵon kaj forĵetu ĝin sen ajna respondo.
- REJEKTO: Malakceptu la pakaĵon kaj sendu al la sendinto erarmesaĝon de ICMP.
- LOG: Ensalutu la pakaĵeton en la sistema protokolo kaj faru alian agon (ekz., AKCEPTI aŭ FORIGI).
- REVENO: Ĉesu kontroli la regulojn en la nuna ĉeno kaj revenu al la voka ĉeno (se aplikeble).
Por komenci la aranĝon, malfermu la liston de ekzistantaj reguloj per la komando:
iptables -L
Kiel gvidilo por agordi Iptables, ni rigardu praktikajn ekzemplojn de la plej ofte uzataj komandoj. Por komforto, ni dividos la ekzemplojn en 3 grupojn, depende de la specifa ĉeno.
Ĉena ENIGO :
- Permesu alvenantan trafikon per TCP-protokolo sur haveno 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Permesu alvenantan trafikon per UDP-protokolo sur haveno 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Bloku envenantan trafikon de specifa IP-adreso:
iptables -A INPUT -s 192.168.1.100 -j DROP
Ĉena ELIGADO :
- Permesu elirantan trafikon per TCP-protokolo sur haveno 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Permesu elirantan trafikon per UDP-protokolo sur haveno 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Bloku elirantan trafikon al specifa haveno (ekzemple, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Ĉeno ANTAŬEN :
- Bloki plusendita trafiko de specifa gamo da IP-adresoj:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Bloku la plusendon de pakaĵoj de specifa retinterfaco:
iptables -A FORWARD -i eth1 -j DROP
3. Limigu la nombron da samtempaj konektoj por specifa haveno (en ĉi tiu ekzemplo, 10 konektoj je minuto sur haveno 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Kiel vi povas vidi, en ĉiu aparta kazo, aldona argumento (komando) estas uzata. Por ricevi plenan liston de eblaj argumentoj kaj ĝeneralan subtenon por la funkcieco de la ilo, enigu:
iptables -h
Por certigi, ke la agordoj estas ĝustaj, reenigu la komandon por vidi la liston de reguloj:
iptables -L
Por forigi specifan regulon, uzu la komandon:
iptables -D chain rule_number
Ekzemple, se vi volas forigi regulon numero 1 de la INPUT-ĉeno, la komando aspektos jene:
iptables -D INPUT 1
Por forigi ĉiujn regulojn per unu komando:
iptables -F
Grava noto : iptables-reguloj ne estas aŭtomate konservitaj post restartiĝo de la sistemo aŭ servo. Por konservi la regulojn, ili devas esti aldonitaj al agordodosiero kaj restarigitaj post restartiĝo. La iloj iptables-save kaj iptables-restore povas helpi pri tio. Por konservi la regulojn, enigu la komandon:
iptables-save > /etc/iptables/rules.v4
Ĉi tio konservas la nunajn regulojn de iptables en la dosiero rules.v4. Por restarigi post rekomenco, enigu:
iptables-restore < /etc/iptables/rules.v4
Ĉi tiu komando restarigas la regulojn el la dosiero rules.v4.
konkludo
Agordi Fajrmuron en Linukso uzante firewalld aŭ iptables estas grava aspekto por certigi servilan sekurecon. Ambaŭ iloj ofertas fidindajn rimedojn por administri retan trafikon kaj protekti la sistemon kontraŭ neaŭtorizita aliro kaj ciberatakoj. La elekto inter firewalld kaj iptables dependas de la specifaj bezonoj kaj preferoj de la uzanto, konsiderante iliajn malsamajn funkciecon kaj fortojn.