Obsah:

Firewall Raspberry Pi4: 12 krokov
Firewall Raspberry Pi4: 12 krokov

Video: Firewall Raspberry Pi4: 12 krokov

Video: Firewall Raspberry Pi4: 12 krokov
Video: Firewall For Your Home Or Office - For Free! How To Set Up Ipfire On Raspberry Pi. ipfire vs pfsense 2024, Jún
Anonim
Firewall Raspberry Pi4
Firewall Raspberry Pi4

S novým vydaním Raspbery Pi 4 (RPi4) som sa rozhodol urobiť zo seba firewall pre domáce použitie. Keď som narazil na internet, našiel som skvelý článok na túto tému od Guillauma Kaddoucha (https://networkfilter.blogspot.com/2012/08/building-your-piwall-gateway-firewall.html). Tento článok je úžasný a mali by ste si ho prečítať predtým, ako budete pokračovať-zjednoduší tu popísaný proces. Ide o to, že tento článok bol napísaný v roku 2012 a je založený na distribúcii ArchLinux. Nič proti ArchLinuxu, ale chcel som to vytvoriť pomocou bežnejšej zostavy Raspbian. RPi4 zvládne požiadavky na spracovanie. Takže, Guillaume, ďakujem za inšpiráciu !! Tento pokyn bude odkazovať späť na pôvodný príspevok Guillaume (skrátene „GK“), pravdepodobne budete chcieť mať vo svojom prehliadači otvorené obe stránky.

Niekoľko kľúčových vecí o mojom firewalle:

  • Mám vstavaný ethernetový konektor (eth0), ktorý smeruje do siete LAN
  • Router ISP je na adaptéri TRENDnet (eth1)
  • Aktívne som deaktivoval bezdrôtový adaptér (wlan0)
  • Nie je zaručené, že sa tam dostanete na 100% … dúfajme, že aspoň na 99%:) preto poskytnite spätnú väzbu/komentáre
  • Toto je môj prvý návod. Ospravedlňujeme sa za všetko, čo nie je v súlade s príslušnými normami pokynov.

Teraz sa pobavíme…

Zásoby

  • Raspberry Pi 4

    • Použil som 4 GB verziu, pokojne vyskúšajte inú verziu
    • Case (FLIRC sa mi páči, ale to je na vás)
    • Nabíjačka
  • Karta MicroSD, 32 GB alebo väčšia (použil som 64 GB kartu)
  • Gigabitový ethernetový kľúč TRENDnet USB3.0 (model: TU3-ETG)
  • Pár sieťových káblov RJ45
  • USB klávesnica a myš
  • Kábel Micro-HDMI na HDMI (zapojený do monitora HDMI)

Klávesnicu, video a myš je možné odstrániť, akonáhle budete môcť spustiť SSH a VNC.

Krok 1: Počiatočné nastavenie RPi

Počiatočné nastavenie RPi
Počiatočné nastavenie RPi

Prvá vec, ktorú musíte urobiť, je uviesť váš RPi4 do prevádzky ako nový systém. Stiahnite si a nainštalujte úplnú distribúciu Raspbian (Raspbian Buster s počítačom a odporúčaným softvérom). Budete musieť reštartovať počítač niekoľkokrát, aby sa mohol rozšíriť a využívať výhody celej karty MicroSD.

Pri zavádzaní systému budete musieť odpovedať na otázky týkajúce sa lokality, siete, klávesnice a myši. Pripojte sa k sieti a nechajte ju aktualizovať.

Umožňuje tiež potvrdiť, že sa všetko aktualizovalo správne, a získať niekoľko nástrojov, ktoré môžu neskôr pomôcť pri ladení:

$ sudo apt-get aktualizácia

$ sudo apt-get dist-upgrade $ sudo apt-get install htop $ sudo apt-get install tcpdump

Nainštaloval som vim, ani žiadny z krokov 8 GK (konfigurácia vim). Práve som použil editor vi, pretože napriek tomu má väčšinu týchto funkcií. To tiež ušetrilo čas a námahu.

Akonáhle je to hotové, nastavme RPi4 tak, aby sme mohli pripojiť monitor za chodu. Mojím cieľom bolo, aby to bežalo bez hlavy, ale keby som potreboval zapojiť monitor, bolo by to rozpoznateľné.

$ sudo vi /boot/config.txt

V tom súbore:

odkomentujte (odstráňte predný #-symbol): hdmi_force_hotplug = 1

odkomentujte: hdmi_drive = 2

voliteľne pridajte: enable_hdmi_sound

Krok 2: Siete

Siete
Siete
Siete
Siete

Ak sledujete stránku GK, je to krok 3. Ale majte na pamäti, že som veľa jeho prvých krokov nesledoval v presnom poradí.

Keď som to prvýkrát spustil, pripojil som RPi priamo k svojmu routeru ISP („vedľa mojej existujúcej siete“). To mi umožnilo hrať s konfiguráciou bez ovplyvnenia siete. Pripojte vstavaný RJ45 RPi4 k smerovaču (alebo ak chcete, bezdrôtovo). V prípade Raspbian je najľahšie to urobiť pomocou GUI. Na pracovnej ploche kliknite na ikonu Raspberry> Predvoľby> Konfigurácia Raspberry Pi. Nezabudnite povoliť SSH a VNC. Tým sa nainštaluje serverový klient Real-VNC. Zistil som, že ak sa pokúsite spojiť s klientom Tight VNC, bude to vyhovovať a bude to vyžadovať ďalšiu konfiguráciu. V tomto mieste teda nainštalujte klienta Real-VNC na svoju primárnu plochu/prenosný počítač (nie na svoj RPi4).

SSH nebude fungovať ihneď po vybalení (krok 7 GK). Musíme upraviť niektoré konfigurácie. Najprv upravte konfiguračný súbor ssh. Tu sú zmeny, ktoré som vykonal. Majte na pamäti, že som tu neštudoval vplyv každej zmeny. Urobil som, čo navrhla stránka GK. Niektoré z týchto zmien NIE SÚ povinné.

$ sudo vi/etc/ssh/sshd_config

V tomto súbore odkomentujte nasledujúce riadky:

HostKey/etc/ssh/ssh_host_rsa_keyHostKey/etc/ssh/ssh_host_ecdsa_keySyslogFacility AUTHLogLevel INFOStrictModes yesPubkeyAuthentication yesHostBasedAuthentication nie

Ignorovať Rhosts áno

PrintMotd noPrintLastLog ánoTCPKeepAlive áno

A pridajte nasledujúce riadky:

Protokol 2 PoužitiePrivilegeOddelenie ánoKeyRegenerationInterval 3600ServerKeyBits 768RSAAuthentication yesRhostsRSAAuthentication no

A upravte nasledujúce riadky:

Port 15507Prihlásiť saGraceTime 60Povoliť koreňPrihlásiť sa č

Porozprávajme sa rýchlo o tej prvej úprave … portu 15507. SSH bežne beží na porte 22. GK ho presunul na 15507-neviem prečo. Môžete to buď zmeniť, alebo nie … Ak sa to rozhodnete zmeniť, budete musieť pridať "-p 15507" do akéhokoľvek príkazu SSH, s ktorým sa pokúšate spojiť. Ak sa ho rozhodnete preskočiť, dávajte pozor na ďalšie miesta, ktoré v týchto pokynoch uvádzajú 15507, a ignorujte ich, najmä pravidlá brány firewall!

Nakoniec pre tento krok získajme IP adresu RPi4, aby sme vedeli, k čomu sa pripojiť:

$ ipconfig -a

Nájdite aktívne sieťové pripojenie (pravdepodobne na eth0 alebo wlan0) a zapíšte si túto IP adresu. Teraz máte to, čo potrebujete na vzdialené pripojenie k RPi4. Pred pokračovaním reštartujeme:

$ sudo reštart

Krok 3: Ďalší používateľ

Ďalší používateľ
Ďalší používateľ

Najlepšie je nepoužívať predvolené používateľské meno RPi (pi) a heslo by ste si určite mali zmeniť. Aby sme boli v bezpečí, umožníme pridať ďalšie používateľské konto, ktoré sa dá použiť na vzdialené pripojenie, a pokračovať v ňom (krok 6 GK). Späť na RPi, umožníme pridať nového používateľa a nastaviť mu oprávnenia na SSH a zadať príkaz sudo:

$ sudo useradd -m -g users -G sudo, netdev -s /bin /bash [USERNAME]

$ sudo passwd [USERNAME]

Neváhajte sa odhlásiť alebo reštartovať a používať tento novovytvorený účet.

Krok 4: Súbor Syctl

Súbor Syctl
Súbor Syctl

Ďalším krokom je úprava súboru /etc/sysctl.conf (krok GK 9). Tento súbor sa používa na zmenu niekoľkých nastavení jadra. Budeme robiť presne to, čo hovorí GK. Tu je zjednodušená sada krokov.

$ sudo vi /etc/sysctl.conf

V tomto súbore odkomentujte nasledujúce riadky:

net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.all.rp_filter = 1net.ipv4.tcp_syncookies = 1

net.ipv4.ip_forward = 1

net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.all.accept_source_route = 0net.ipv4.conf.all.log_martians = 1

A pridajte nasledujúce riadky:

net.ipv4.icmp_echo_ignore_broadcasts = 1net.ipv4.icmp_ignore_bogus_error_responses = 1net.ipv4.conf.eth0.accept_redirects = 0vm.min_free_kbytes = 8192

Reštartujte službu s týmito novými nastaveniami a reštartujte počítač:

$ sudo sysctl -p

$ sudo reštart

Krok 5: DHCP a DNS (časť 1)

DHCP a DNS (časť 1)
DHCP a DNS (časť 1)

Tento proces mal pre mňa dve bolestivé časti … Nastavenie DHCP a DNS a nastavenie pravidiel brány firewall. Takže, ideme na prvú časť. Ak sledujete stránky GK, nachádzame sa v kroku 10.

Na to budete potrebovať niekoľko informácií z routera ISP (alebo aktuálneho firewallu):

  • Interná adresa IP smerovača
  • IP adresa, ktorú môžete použiť pre rozhranie RPi4 k smerovaču
  • IP adresy pre menný server (alebo dva)
  • Názov rozhrania pre pripojenie LAN (napr. Eth0 alebo eth1)
  • Názov rozhrania pre pripojenie ISP (napr. Čokoľvek, čo ste nepoužili pre LAN)

Možno budete musieť tiež upraviť nastavenia smerovača, aby mala RPi4 statickú IP adresu (odrážka 2, vyššie). Aspoň to som urobil.

Najprv upravte súbor dhcpcd.conf…

$ sudo vi /etc/dhcpcd.conf

Odkomentujte tieto riadky:

persistentoption rapid_commitoption domain_name_servers, domain_name, domain_search, host_nameoption interface_mtu

Pre každé sieťové rozhranie musíte nastaviť podrobnosti o sieti. Mali by vyzerať asi takto:

# Statické pre rozhranie k ISP

interface eth1 static ip_address = 192.168.1.static routery = 192.168.1.254 static domain_name_servers = 8.8.8.8 8.8.4.4 metric 100 # Statické pre rozhranie k rozhraniu LAN eth0 static ip_address = 10.210.212.static routery = 10.210.212.1 static domain_name_servers = 8.8.8.8 8.8.4.4 #interface wlan0 #static ip_address = 10.210.212. #static routery = 10.210.212.1 #static domain_name_servers = 8.8.8.8 #Odkomentujte túto sekciu, ak chcete na zariadení vynútiť IP adresu. Názov za hostiteľom #nemá pre systém žiadny význam. Zadajte MAC adresu zariadenia a tiež požadovanú #IP adresu. Uistite sa, že je mimo rozsah dhcp. Opakujte podľa potreby. #host [Čokoľvek] { # hardvér ethernet xx: xx: xx: xx: xx: xx; # pevná adresa 10.210.212.250; #}

Uistite sa, že používate čísla, ktoré vám vyhovujú. Vyššie uvedené IP adresy sú pre moju sieť, s výnimkou názvových serverov, ktoré sú Google. Všimnite si toho, že som tiež nastavil metriku pre ISP na 100, aby vynútil, aby to bol predvolený prvý pokus o sieťovú prevádzku. Tiež som konkrétne neurobil nič svojmu bezdrôtovému adaptéru (wlan0). Mám v úmysle úplne vypnúť toto rozhranie, takže mi to dávalo zmysel.

Ak chcete zariadeniu (napríklad NAS) vnucovať adresu IP, použite túto spodnú časť. Zadajte hostiteľovi meno, ktoré je pre vás zmysluplné, ale vedzte, že ho nikdy nič nepoužije. Nezabudnite na bodkočiarky.

Krok 6: DHCP a DNS (časť 2)

DHCP a DNS (časť 2)
DHCP a DNS (časť 2)

Ďalším krokom je úprava súboru dnsmasq.conf…

$ sudo vi /etc/dnsmasq.conf

Musíme odkomentovať niekoľko riadkov a niekoľko riadkov upraviť. Tiež budete musieť skopírovať niekoľko nastavení zo súboru dhcpcd.conf. Dve ďalšie otázky, ktoré si musíte zodpovedať sami, sú:

Potrebuje interná sieť LAN (napr. Eth0) DHCP a DNS? Aký rozsah DHCP chcete pre svoju sieť LAN a ako dlho by mal byť každý prenájom?

Na začiatku odkomentujte niekoľko riadkov:

falošný-privno-dhcp-interface = wlan0bind-interfacesdhcp-name-match = set: wpad-ignore, wpaddhcp-ignore-names = tag: wpad-ignore

Nastavte si menný server. Vyhľadajte riadok, ktorý začína na „server =“, a urobte z neho niečo ako „server = 8.8.8.8“.

Nastavte rozsah DHCP. Existuje mnoho spôsobov, ako to urobiť. Rozhodol som sa poskytnúť dve IP koncových bodov, masku a dĺžku prenájmu. Môj dosah bol 10.210.212.20-10.210.212.240, s maskou siete 255.255.255.0 a dobou prenájmu 12 hodín. Odporúčame vám ponechať niektoré adresy IP v hornej a dolnej časti rozsahu, ak by ste niekedy potrebovali niečomu poskytnúť statickú adresu IP.

Nastavte rozhranie, ktoré bude získavať DNS a DHCP (LAN), úpravou riadka „interface =“na niečo ako „interface = eth0). Všimnite si toho, že som mu výslovne povedal, aby NEZADÁVALI mojej bezdrôtovej sieti adresu IP DHCP. Opäť mám v úmysle úplne vypnúť toto rozhranie, takže mi to dávalo zmysel.

Krok 7: DHCP a DNS (časť 3)

DHCP a DNS (časť 3)
DHCP a DNS (časť 3)

Odklon od pokynov GK pre tento posledný krok …

Keď som v tomto mieste išiel reštartovať svoje RPi, proces dnsmasq nebol aktívny. Trochu som pošťuchoval a zistil som, že moje sieťové rozhrania eth0 a eth1 neboli pred spustením dnsmasq aktívne, takže dnsmasq pri štarte zlyhal. K RPi by som musel pripojiť klávesnicu a myš a manuálne reštartovať dnsmasq. S nastavením bez hlavy to nie je ideálne. Čítal som veľa príspevkov, ktoré údajne robili rôzne zmeny v nastaveniach (napríklad zakázali rozhranie väzby) a ďalších veciach. Nič z toho nefungovalo Nakoniec som sa rozhodol jednoducho napísať shell skript, ktorý sa spustí každé 2 minúty a skontroluje stav dnsmasq. Ak nebeží, spustite ho. Predpokladám, že táto situácia nie je pre mňa jedinečná. Tu je teda to, čo musíte urobiť:

Na zariadení RPi vytvorte nasledujúci kód do súboru s názvom „dns_masq_keepalive.sh“.

#!/bin/bash

# Súbor: dns_masq_keepalive.sh # August 2019 # Použite to s crontab -e (*/2 * * * * /etc/dns_masq_keepalive.sh), aby ste sa presvedčili, že dnsmasq beží. Služba sa sama zastaví, ak # všetky rozhrania uvedené v dhcpcd.conf nebudú spustené skôr, ako sa začnú. Tým sa problém vyrieši. # Tento nasledujúci riadok vráti všetky aktívne úlohy so slovom „dnsmasq“. Nezahrňte „dnsmasq“do názvu tohto # súboru, v opačnom prípade ho vráti zakaždým a už nebudete musieť reštartovať. dns_running = $ (ps -e | grep dnsmasq) echo $ dns_running if [-z "$ dns_running"] then #echo No DNSMasq sudo /etc/init.d/dnsmasq restart #else #echo DNSMasq Running fi

V prípade potreby ho vystrihnite a prilepte. Nech robíte čokoľvek, neuvádzajte v názve „dnsmasq“. Skript hľadá slovo „dnsmasq“a ak ho má skript v názve, bude predpokladať, že služba je spustená. Súbor tiež premenujte tak, aby končil príponou „.sh“. Nezničiteľné položky mi nedovolili nahrať súbor „.sh“-čo je dobré. Zostávajúce pokyny predpokladajú, že súbor existuje na adrese /etc/dns_masq_keepalive.sh.

Za druhé, nastavte povolenia pre súbor, aby ho bolo možné vykonať:

$ sudo chmod u+x /etc/dns_masq_keepalive.sh

Teraz použijeme systém crontab na spustenie programu každé 2 minúty každý deň. Spustiť crontab:

$ sudo crontab -e

Malo by vás to vyzvať k úprave pomocou vi alebo niečoho iného. Akékoľvek bude fungovať. Keď ho budete môcť upraviť, pridajte na koniec súboru nasledujúce položky:

*/2 * * * * sudo /etc/dns_masq_keepalive.sh

V medzere „*/2“nie sú medzery, ale medzery medzi hviezdičkami. Uložiť a ukončiť. Malo by vám to povedať, že práca je naplánovaná alebo niečo podobné.

Krok 8: Brána firewall

Firewall
Firewall

Ďalším bolestivým procesom je firewall (krok 11 GK). Raspbian používa známy systém iptables. Blog GK poskytuje tri súbory, ktoré vám pomôžu dostať sa tam … firewall.simple, firewall.advanced a firewall.flows. Všetok rešpekt voči GK, ale uľahčite si to a choďte jednoducho s bránou firewall. Jednoduché. Strávil som veľa času pokusom zistiť systém a pravidlá iptables. Som rád, že som to urobil, ale bolo to bolestivé. Preto vám dávam priložené dva súbory, ktoré vám pomôžu … firewall.simple a firewall.clear. Skopírujte oba tieto súbory do priečinka /etc a zmeňte povolenia tak, aby boli spustiteľné:

$ sudo chmod u+x /etc/firewall.simple

$ sudo chmod u+x /etc/firewall.clear

Pred nastavením akýchkoľvek pravidiel brány firewall zapojte stolný počítač/prenosný počítač do portu RPi eth0 a potvrďte, že získava adresu IP a má spustený server DNS. Najjednoduchší spôsob, ako to urobiť, je skúsiť odoslať príkaz ping na generický server a potom na známu adresu IP. Pingnite aj na svoj smerovač RPi a ISP. Ak získate výsledky, potom je všetko v poriadku a všetky problémy so sieťou, s ktorými sa teraz stretnete, budú pravdepodobne dôsledkom problémov s bránou firewall.

Prvý poskytnutý súbor sa pôvodne začínal ako súbor GK firewall.simple (ešte raz vďaka, GK!). Urobil som veľa zmien, aby to fungovalo pre tento systém. Mal by umožňovať aspoň HTTP, HTTPS, DNS, DHCP, ping, interné SSH, interné VNC a plex. Plex nemusí mať všetky otvorené porty pre všetky možné zariadenia, ale existuje veľa stĺpcov, ktoré to môžu vyriešiť. V hornej časti súboru sú hodnoty, ktoré budete musieť zmeniť v konfigurácii siete.

Druhý súbor firewall.clear je určený na testovanie pravidiel brány firewall. Keď spustíte „sudo /etc/firewall.clear“, všetky pravidlá brány firewall budú vymazané a systém by mal byť plne pripojený k internetu. Ak teda nemôžete zabezpečiť, aby sieťová služba (ako dns) fungovala s bránou firewall. Platia jednoduché pravidlá, ale začne fungovať po spustení brány firewall.clear, viete, že máte problém s pravidlami. Toto bude skutočne dôležité iba pri testovaní vašich pravidiel.

Takže tu máme pravidlá brány firewall, musíme ich spustiť tak, aby sa spustili RPi. Za týmto účelom upravíme súbor /etc/rc.local:

$ sudo vi /etc/rc.local

Akonáhle ste vo vnútri, pridajte na koniec súboru nasledujúce položky:

echo „Načítavanie pravidiel iptables“/etc/firewall.simple >>/dev/null

Ak sa rozhodnete pridať systém detekcie narušenia chrápania, budete tento súbor musieť znova upraviť. Zatiaľ to uložte a reštartujte.

$ sudo reštart

Krok 9: Syslog

Syslog
Syslog

Zostávajú dva kroky…

Toto je ľahké. Ak ste stále tam a sledujete blog GK, je to krok 12. Musíte urobiť presne to, čo hovorí o súbore syslog. Tu sú skrátené kroky:

Uchovávajte údaje syslog v hodnote 2 mesiace…

$ sudo vi /etc/logrotate.conf

Musíme mu povedať, aby na meranie používal „jeden týždeň“, a potom ich ponechať 12. V tomto súbore potrebujete nasledujúce dva riadky. Verím, že budete musieť zmeniť existujúce riadky.

týždenná rotácia 12

Ulož to.

Krok 10: Detekcia narušenia pomocou Snort

Detekcia prieniku pomocou Snortu
Detekcia prieniku pomocou Snortu

Posledná vec, ktorú GK konfiguruje, je snort systém. Odporúčam aj toto. Môžete sa riadiť jeho pravidlami a nejdem ich sem skopírovať s niekoľkými drobnými úpravami. Jeho pokyny sú pre distro ArchLinux. Tu je niekoľko zmien pre distribúciu Raspbian, ktorú tu používame. Ostatné pokyny fungujú dobre.

Po prvé, nepoužívajte sudo pacman -S snort na sťahovanie a inštaláciu snortu. Postupujte nasledovne:

$ sudo apt-get install snort

Za druhé, nemôžete verifikovať frčanie pomocou sudo snort -version. Inštaláciu overte pomocou:

$ sudo snort -V

Nakoniec, aby sa spustil pri spustení, neupravujte súbor rc.conf, upravte súbor rc.local (znova) …

$ sudo vi /etc/rc.local

Na koniec súboru pridajte nasledujúce riadky:

echo „Načítava sa smrk“

#/usr/sbin/snort -D -u snort -g snort -c /etc/snort/snort.conf -i eth0 -l/var/log/snort

Teraz reštartujte počítač a všetko by malo magicky fungovať.

$ sudo reštart

Krok 11: Užite si to

Užite si to
Užite si to

To by malo byť!

V prvom rade nemôžem Guillaume Kaddouchovi dostatočne poďakovať! Toto ho inšpirovalo.

Za druhé, ak ste ešte neodpojili klávesnicu, video a myš, môžete. V prípade potreby sa pomocou SSH a VNC vráťte späť.

Nakoniec to nemusí byť stopercentné. Pošlite nám prosím späť so zmenami/návrhmi/odporúčaniami. Mojím cieľom by bolo, aby to bol začiatok diskusie a aby sa veľa ľudí tešilo!

Vďaka!!

PS … Obrázok je RPi4 vo vnútri hliníkového puzdra FLIRC so starým ventilátorom Intel mierne upraveným a pripevneným na vrchu na zips. Len pre prípad, že by vás to zaujímalo, je pod ventilátorom aj tepelná pasta. Niečo podobné som našiel na internete (https://www.reddit.com/r/raspberry_pi/comments/9bdgrr/it_turns_out_putting_a_heatsink_on_the_flirc_case/) a rozhodol som sa to skúsiť sám.

Krok 12: Zoznam zmien

Keďže sa v tomto návode vykonávajú zmeny, zdokumentujem ich tu. Ak máte problém, skontrolujte tu, či ste neporanili staré pokyny alebo súbory.

25. september 2019:

  • Opravené pravidlá DHCP vo firewalle. Jednoduché
  • Opravený rozsah DHCP v pokynoch (súbory boli správne)
  • K pokynom DHCP boli pridané priradenia pevnej IP

13. október 2019

  • Opravené viac preklepov
  • Vytvoril som druhé pi, aby som v prípade potreby nechal vymeniť testovaciu kartu SD

Odporúča: