FreeBSD Eldveggsuppsetning
FreeBSD býður upp á nokkra eldveggi, við munum hér sjá uppsetningu á PF eldveggnum frá OpenBSD.
Eldveggurinn virkjaður
Kveikjum á eldveggnum með því að ganga úr skugga um að eftirfarandi lína sé til staðar í rc.conf:
PF er að leyfa allt, til þess að maður læsi sig ekki úr kerfinu við það eina að kveikja á eldveggnum.
Til þess að hlaða PF einingunni undir eins án endurræsingar getum við keyrt kldload pf.
Stilling eldveggsins
Það fer eftir tilgangi þjónsins, en við viljum líklega breyta sjálfgefnu stillingunni í að banna allt. Áður en við gerum það skulum við vera viss um að við höfum tengingu á þjóninn framhjá eldveggnum, annað hvort beintenging við þjóninn eða fjartengt stjórnborð.
Hægt er að skoða sýnidæmi í /usr/share/examples/pf/. Stillingar pf eru síðan skráðar í /etc/pf.conf. Byrjum á því að skrá netupplýsingar okkar í breytur, þannig að ef t.d. nafn tengildisins eða IP fangið breytist getum við einfaldlega uppfært breytuheitið til að uppfæra allar reglurnar okkar.
Note
Hér nota ég mínar upplýsingar, breyturnar mega heita hvað sem er og skiptið gildunum út fyrir þau í ykkar umhverfi.
- Notið ykkar eigið IP-fang hér
TCP/IP pakkar geta verið brotnir upp í flugi sínu til þjónsins. Notið eftirfarandi reglu til að henda öllum asnalega litlum brotum og skynsamlega endurbyggja aðra pakka. Þetta getur tekið á kerfið en reglur eru byggðar á heilum pökkum o g sé þetta ekki gert gæti kerfið upplifað tengingartruflanir.
Beitum svo PF ekki á tengildið lo0 þar sem það er einungis notað af þjóninum sjálfum til að tala við sjálfan sig.
pub_interface="vtnet0"
wg_interface="wg0"
pub_ip="0.0.0.0"
wg_ip="10.0.0.1"
set skip on lo0
scrub in
pub_interface="vtnet0"
wg_interface="wg0"
pub_ip="0.0.0.0"
wg_ip="10.0.0.1"
set skip on lo0
scrub in
block in
pass out
pass in on $pub_if proto tcp from any to ($pub_if) port 22 # (1)!
pass in on $pub_if proto udp to ($pub_if) port 444 # (2)!
pass in on $pub_if inet proto icmp to ($pub_if) icmp-type { unreach, redir, timex, echoreq } # (3)!
- Þessi regla leyfir SSH tengingar. ($pub_if) þýðir "öll ip-föng á tengildinu pub_if sem við tilgreindum að er vtnet0.
- Hér leyfum við UDP traffík á port 444, þar sem
wireguardhlustar. Hér sleppum við einnig from any stæðunni, það er sjálfgefið, en hægt er að nota það til að sía tengingar. - Grunn-ICMP beiðnir, leyfir m.a. þjóninum að svara ping-i.
Note
Höfum í huga að ólíkt mörgum öðrum eldveggjum þá gildir hér sú regla sem passar seinast, þ.a. block in reglan kemur efst, og reglur á eftir henni hafa forgang.
Eftir að reglurnar okkar hafa verið skrifaðar getum við villuprófað þær með
Ef keyrir hljóðlaust eru engar málfræði- né stafsetningarvillur í skránni, en þetta varar þig ekki við því ef að reglurnar læsa þig úti.Þegar við erum ágætlega viss um að við munum geta talað við þjóninn eftir þessar reglur getum við virkjað þær með
Ef við erum ennþá tengd getum við séð hvaða reglur eru í gildi með pfctl -sr.
Við getum einnig eytt reglunum okkar með pfctl -Fa, en ef ætlunin er að hlaða nýjum reglum frá annarri skrá óvirkjast reglurnar frá gömlu skránni, þannig óþarfi er að eyða núverandi reglum fyrst.
Til villugreiningar getum við notað pflog, virkið það með pflog_enable="YES" í rc.conf
Blacklistd
Nú þegar eldveggurinn er græjaður og þjónninn okkar ekki alveg jafn berrassaður og áður getur verið góð hugmynd að bæta varnir okkar gegn yrkjanetum (e. botnets). Blacklistd er samskonar þjónusta og fail2ban, fyrir þá sem þekkja, en það virkar þannig að þröskuldur er settir á netþjónustur sem þjónninn býður upp á, þannig að ef of örar eða margar tengingartilraunir frá sömu IP tölunni mun banna þá IP tölu. Bætum þeirri virkni við eldvegginn okkar með því að setja eftirfarandi línuna fyrir ofan fyrstu regluna okkar.
Næst þurfum við að segja kerfinu að keyra blacklistd við ræsingu:
Nú mun þjónustan virkjast við næstu endurræsingu eða handvirka ræsingu, nýtum tækifærið og stillum þjónustuna.
Stillingar fara í skrána /etc/blacklistd.conf. Hún hefur tvö svæði, [local] og [remote]. Local svæðið skilgreinir reglur fyrir staðværar þjónustur, t.a.m. SSH og svoleiðis, á meðan Remote skilgreinir reglur fyrir fjarræna hluti, svosem reglur byggðar á ákveðnum IP addressum.
Skipanin er þannig að Local er á undan remote og hver regla er ein lína með 6 gildum, t.d.:
Frá vinstri til hægri erum við með:
- Tengi (e. port) þjónustunnar, hér SSH
- Tengill þjónustunnar,
streamfyrir TCP ogdgramfyrir UDP. Hér má vel nota *. - Samskiptaregla, má vera
tcp,udp,tcp6,udp6ognumeric. Oftast best að nota * sem á við þetta allt. - Eigandi þess sem er keyrandi á tenginu.
- Það "anchor" sem þessi regla á við, það sjálfgefna er
blacklistdsem við settum ípf.confskrána okkar, * notar sjálfgefna gildið. - Hversu margar tilraunir þarf til að banna tenginguna
- Hversu lengi á að banna, sjálfgefna tímaeiningin er sekúnda en nota má m, h og d fyrir mínútur, klukkutíma og daga.
Með þessari reglu eru öll þau sem misheppnast þrisvar að tengjast við SSH bönnuð í 24 tíma, og hvaða beiðnir sem er bannast í mínútu.
Nú getum við skilgreint Remote reglurnar okkar. Við erum klaufar þannig við ætlum að gefa okkur 10 tilraunir í stað þriggja og bönnum okkur einungis í klukkutíma.. Við getum einnig sett lengri banntíma fyrir fólk sem okkur er illa við.
- Notið ykkar eigið IP-fang.
Blacklistd virkar bara ef forritin sem það þjónustar styður það. SSH gerir það, bætið eftirfarandi línu í /etc/ssh/sshd_config:
sshd þjónustuna.