Sadržaj:

Vatrozid Raspberry Pi4: 12 koraka
Vatrozid Raspberry Pi4: 12 koraka

Video: Vatrozid Raspberry Pi4: 12 koraka

Video: Vatrozid Raspberry Pi4: 12 koraka
Video: Raspberry Pi | С ЧЕГО НАЧАТЬ?! | КАК УСТАНОВИТЬ ОС? 🍓 2024, Lipanj
Anonim
Raspberry Pi4 vatrozid
Raspberry Pi4 vatrozid

S upravo objavljenim novim Raspbery Pi 4 (RPi4), odlučio sam si napraviti vatrozid za kućnu upotrebu. Nakon što sam posrnuo po internetu, pronašao sam sjajan članak na tu temu Guillaumea Kaddoucha (https://networkfilter.blogspot.com/2012/08/building-your-piwall-gateway-firewall.html). Članak je nevjerojatan i trebali biste ga pročitati prije nego nastavite-olakšat će ovdje opisani proces. Činjenica je da je taj članak napisan 2012. godine i temelji se na distribuciji ArchLinux. Ništa protiv ArchLinux -a, ali htio sam to učiniti korištenjem uobičajenije Raspbian gradnje. RPi4 može podnijeti zahtjeve obrade. Dakle, hvala, Guillaume, na inspiraciji !! Ovo uputstvo će se odnositi na Guillaumeov (skraćeno "GK") izvorni post, vjerojatno ćete željeti da obje stranice budu otvorene u vašem pregledniku.

Nekoliko ključnih stvari o mom vatrozidu:

  • Imam ugrađen ethernet priključak (eth0) koji ide na LAN
  • ISP usmjerivač je na TRENDnet adapteru (eth1)
  • Aktivno sam onemogućio bežični adapter (wlan0)
  • Ovo ne jamči da ćete doći 100% tamo… nadajmo se barem 99%:) pa vas molimo da date povratne informacije/komentare
  • Ovo je moje prvo uputstvo. Žao mi je zbog svega što ne slijedi odgovarajuće instruktivne norme.

Ajmo sad malo se zabaviti…

Pribor

  • Malina Pi 4

    • Koristio sam verziju od 4 GB, slobodno isprobajte drugu verziju
    • Futrola (sviđa mi se FLIRC, ali to je vaš poziv)
    • Adapter za napajanje
  • MicroSD kartica, 32 GB ili veća (koristio sam karticu od 64 GB)
  • TRENDnet USB3.0 Gigabitni Ethernet ključ (model: TU3-ETG)
  • Par mrežnih kabela RJ45
  • USB tipkovnica i miš
  • Kabel Micro-HDMI-HDMI (koji je priključen na HDMI monitor)

Ta tipkovnica, video i miš mogu se ukloniti kada uspijete pokrenuti SSH i VNC.

Korak 1: Početno postavljanje RPi -ja

Početna postavka RPi
Početna postavka RPi

Prvo što trebate učiniti je pokrenuti svoj RPi4 kao novi sustav. Preuzmite i instalirajte Raspbian potpunu distribuciju (Raspbian Buster sa radnom površinom i preporučenim softverom). Morat ćete ponovno pokrenuti sustav nekoliko puta kako bi se mogao proširiti i iskoristiti potpunu MicroSD karticu.

Dok se pokreće, morat ćete odgovoriti na pitanja o lokaciji, mreži, tipkovnici i mišu. Povežite se s mrežom i dopustite joj ažuriranje.

Potvrđujemo i da je sve ispravno ažurirano te nabavimo nekoliko uslužnih programa koji bi kasnije mogli pomoći u otklanjanju pogrešaka:

$ sudo apt-get ažuriranje

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

NISAM instalirao vim, niti bilo koji od GK -ovih koraka 8 (konfiguriranje vim -a). Upravo sam upotrijebio vi editor jer on ionako ima većinu tih značajki. To je također uštedjelo vrijeme i trud.

Kad to dovršimo, postavimo RPi4 tako da možemo vruće priključiti monitor. Cilj mi je bio natjerati ga da radi bez glave, ali ako trebam priključiti monitor, to će se prepoznati.

$ sudo vi /boot/config.txt

U toj datoteci:

raskomentirati (ukloniti prednji #-simbol): hdmi_force_hotplug = 1

komentar: hdmi_drive = 2

opcionalno, dodajte: enable_hdmi_sound

Korak 2: Umrežavanje

Umrežavanje
Umrežavanje
Umrežavanje
Umrežavanje

Ako pratite GK -ovu stranicu, ovo je korak 3. No, imajte na umu da nisam slijedio puno njegovih prvih koraka točnim redoslijedom.

Kad sam ovo tek započeo, spojio sam RPi izravno na svoj ISP usmjerivač ("pored postojeće mreže"). To mi je omogućilo da se igram sa konfiguracijom bez utjecaja na mrežu. Priključite ugrađeni RPi4 RJ45 na usmjerivač (ili bežični, ako želite). Uz Raspbian, najlakši način za to je korištenje grafičkog sučelja. Na radnoj površini kliknite ikonu Raspberry> Postavke> Konfiguracija Raspberry Pi. Uključite SSH i VNC. Time će se instalirati klijent poslužitelja Real-VNC. Otkrio sam da će, ako se pokušate povezati s klijentom Tight VNC, to izazvati poteškoće i zahtijevati dodatnu konfiguraciju. Dakle, u ovom trenutku instalirajte Real-VNC klijent na svoju primarnu radnu površinu/prijenosno računalo (ne na svoj RPi4).

SSH neće raditi "izvan kutije" (GK-ov korak 7). Moramo promijeniti neke konfiguracije. Prvo, izmijenimo konfiguracijsku datoteku ssh. Evo promjena koje sam napravio. Imajte na umu da ovdje nisam proučavao utjecaj svake promjene. Učinio sam ono što je GK -ova stranica predložila. Neke od ovih promjena NEĆE biti potrebne.

$ sudo vi/etc/ssh/sshd_config

U toj datoteci raskomentirajte sljedeće retke:

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

Zanemari duhove da

PrintMotd noPrintLastLog daTCPKeepAlive da

I dodajte sljedeće retke:

Protokol 2UsePrivilegeSeparacija yesKeyRegenerationInterval 3600ServerKeyBits 768RSAAuthentacija daRhostsRSAAuthentication ne

I izmijenite sljedeće retke:

Port 15507LoginGraceTime 60PermitRootLogin br

Hajdemo brzo govoriti o toj prvoj izmjeni … port 15507. SSH obično radi na portu 22. GK ga je premjestio na 15507-ne znam zašto. Možete ga promijeniti na bilo koji način ili ne … Ako ga odlučite izmijeniti, morat ćete dodati "-p 15507" u bilo koju SSH naredbu s kojom se pokušavate povezati. Ako ga odlučite preskočiti, pripazite na druga mjesta koja je 15507 spomenuta u ovim uputama i zanemarite ih, osobito pravila vatrozida!

Na kraju, za ovaj korak, nabavimo IP adresu RPi4 -a kako bismo znali na što se trebamo povezati:

$ ipconfig -a

Pronađite aktivnu mrežnu vezu (vjerojatno na eth0 ili wlan0) i zapišite tu IP adresu. Sada imate sve što vam je potrebno za daljinsko povezivanje s RPi4. Ponovno pokrenimo sistem prije nego nastavimo:

$ sudo ponovno podizanje sustava

Korak 3: Drugi korisnik

Drugi korisnik
Drugi korisnik

Najbolje je ne koristiti zadano korisničko ime za RPi (pi) i svakako biste trebali promijeniti lozinku. Radi sigurnosti, dodajmo još jedan korisnički račun koji možete koristiti za daljinsko povezivanje i nastavak (GK -ov korak 6). Vratimo se na RPi, dopustimo dodavanje novog korisnika i postavljanje dopuštenja za korisnika na SSH i izdavanje naredbe sudo:

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

$ sudo passwd [USERNAME]

Slobodno se odjavite ili ponovno pokrenite i koristite taj novonastali račun za dalje.

Korak 4: Syctl datoteka

Syctl datoteka
Syctl datoteka

Sljedeći korak je izmjena datoteke /etc/sysctl.conf (GK -ov korak 9). Ova se datoteka koristi za promjenu nekoliko postavki jezgre. Učinit ćemo upravo ono što GK kaže. Evo pojednostavljenog skupa koraka.

$ sudo vi /etc/sysctl.conf

U toj datoteci raskomentirajte sljedeće retke:

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

I dodajte sljedeće retke:

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

Ponovo pokrenite uslugu s ovim novim postavkama i ponovno pokrenite sustav:

$ sudo sysctl -p

$ sudo ponovno podizanje sustava

Korak 5: DHCP i DNS (dio 1)

DHCP i DNS (1. dio)
DHCP i DNS (1. dio)

Za mene su postojala dva bolna dijela ovog procesa … Postavljanje DHCP -a i DNS -a i postavljanje pravila vatrozida. Dakle, idemo na prvi dio. Ako pratite na stranici GK -a, mi smo na koraku 10.

Da biste to učinili, trebat će vam nekoliko podataka s vašeg ISP usmjerivača (ili trenutnog vatrozida):

  • Interna IP adresa usmjerivača
  • IP adresa koju možete koristiti za sučelje RPi4 s usmjerivačem
  • IP -ovi za poslužitelj imena (ili dva)
  • Naziv sučelja za LAN vezu (npr. Eth0 ili eth1)
  • Naziv sučelja za ISP vezu (npr. Sve što niste koristili za LAN)

Možda ćete također morati promijeniti postavke usmjerivača kako biste RPi4 dali statičku IP adresu (točka 2, gore). Barem sam ja to učinila.

Prvo, izmijenimo datoteku dhcpcd.conf …

$ sudo vi /etc/dhcpcd.conf

Dekomentirajte ove retke:

persistentoption rapid_commitoption poslužitelji_domena_domena, naziv_domene, pretraživanje_domene, ime_uspje_opcije sučelje_mtu

Za svako mrežno sučelje morate postaviti pojedinosti o mreži. Oni bi trebali izgledati otprilike ovako:

# Statično za sučelje s ISP -om

sučelje eth1 static ip_address = 192.168.1.static routers = 192.168.1.254 static domain_name_servers = 8.8.8.8 8.8.4.4 metrika 100 # Statično za sučelje prema LAN sučelju eth0 static ip_address = 10.210.212.static routers = 10.210.212.1 static poslužitelji_domena_name = 8.8.8.8 8.8.4.4 #sučelje wlan0 #statička ip_adresa = 10.210.212. #statički usmjerivači = 10.210.212.1 #statički poslužitelji_ime_domene = 8.8.8.8 #Izkomentirajte ovaj odjeljak ako želite forsirati IP adresu na uređaju. Naziv nakon 'host' #sustavu nema smisla. Unesite MAC adresu uređaja kao i željenu #IP adresu. Provjerite je li izvan raspona dhcp -a. Ponovite po potrebi. #host [NIŠTA] { # hardverski ethernet xx: xx: xx: xx: xx: xx; # fiksna adresa 10.210.212.250; #}

Svakako upotrijebite brojeve koji vam odgovaraju. Gore navedeni IP -ovi su za moju mrežu, s izuzetkom poslužitelja imena koji su Google. Uočite da sam metriku za ISP -a također postavio na 100 kako bih to bio zadani prvi pokušaj mrežnog prometa. Također nisam ništa učinio sa svojim bežičnim adapterom (wlan0). Namjeravam potpuno isključiti to sučelje, pa mi je to imalo smisla.

Također, ako želite nametnuti IP adresu na uređaju (poput NAS -a), upotrijebite taj donji odjeljak. Dajte domaćinu ime koje vam znači, ali znajte da ga nikada ništa ne koristi. Ne zaboravite točku -zarez.

Korak 6: DHCP i DNS (dio 2)

DHCP i DNS (dio 2)
DHCP i DNS (dio 2)

Sljedeći korak je izmjena datoteke dnsmasq.conf …

$ sudo vi /etc/dnsmasq.conf

Moramo dekomentirati nekoliko redaka i urediti nekoliko redaka. Također ćete morati kopirati nekoliko postavki iz datoteke dhcpcd.conf. Još dva pitanja na koja morate sami sebi odgovoriti su:

Trebaju li internom LAN -u (npr. Eth0) DHCP i DNS? Koji DHCP raspon želite za svoj LAN i koliko dugo treba trajati svaki zakup?

Počnite tako što ćete nekomentirati nekoliko redaka:

lažni-privno-dhcp-interface = wlan0bind-sučeljadhcp-name-match = set: wpad-ignore, wpaddhcp-ignore-names = tag: wpad-ignore

Postavite poslužitelj imena. Potražite redak koji započinje 'server =' i učinite ga nečim poput 'server = 8.8.8.8'.

Postavite svoj DHCP raspon. Postoji mnogo načina za to. Odlučio sam osigurati dva IP -a krajnjih točaka, masku i duljinu najma. Moj raspon je bio 10.210.212.20-10.210.212.240, s mrežnom maskom od 255.255.255.0 i vremenom najma od 12 sati. Preporučujem da ostavite neke IP -ove pri vrhu i dnu raspona u slučaju da ikada trebate nečemu dati statički IP.

Postavite sučelje koje će primati DNS i DHCP (LAN) mijenjanjem retka 'interface =' u nešto poput 'interface = eth0). Uočite da sam vam izričito rekao da NE dodjeljuje DHCP IP adresu svojoj bežičnoj mreži. Opet namjeravam potpuno isključiti to sučelje pa mi je to imalo smisla.

Korak 7: DHCP i DNS (dio 3)

DHCP i DNS (dio 3)
DHCP i DNS (dio 3)

Odstupanje od uputa GK -a za ovaj posljednji korak …

Kad sam u ovom trenutku ponovno pokrenuo svoj RPi, proces dnsmasq nije bio aktivan. Malo sam se razgledao i otkrio sam da moja mrežna sučelja eth0 i eth1 nisu bila aktivna prije pokretanja dnsmasq -a pa dnsmasq neće uspjeti pri pokretanju. Morao bih spojiti tipkovnicu i miša na RPi i ručno ponovo pokrenuti dnsmasq. Ovo nije idealno s postavljanjem bez glave. Pročitao sam hrpu postova u kojima se navodi da se mijenjaju postavke (npr. Onemogućuju povezivanje-sučelje) i druge stvari. Ništa od toga nije uspjelo. Na kraju sam odlučio jednostavno napisati ljuskastu skriptu koja će se pokrenuti svake 2 minute i provjeriti status dnsmasq -a. Ako nije pokrenut, pokrenite ga. Pretpostavljam da ova situacija nije svojstvena samo meni. Dakle, evo što trebate učiniti:

Učinite sljedeći kod u datoteku pod nazivom 'dns_masq_keepalive.sh' na vašem RPi -u.

#!/bin/bash

# Datoteka: dns_masq_keepalive.sh # kolovoz 2019. # Upotrijebite ovo s crontab -e (*/2 * * * * /etc/dns_masq_keepalive.sh) kako biste bili sigurni da se dnsmasq izvodi. Usluga će se sama zaustaviti ako # sva sučelja spomenuta u dhcpcd.conf nisu pokrenuta prije nego što počne. Time se rješava problem. # U sljedećem retku vratit će se svi aktivni poslovi s riječju 'dnsmasq'. Dakle, nemojte uključivati 'dnsmasq' u naziv ove # datoteke, u protivnom će ga vratiti svaki put i nikada nećete imati ponovno pokretanje. dns_running = $ (ps -e | grep dnsmasq) echo $ dns_running if [-z "$ dns_running"] onda #echo Nema DNSMasq sudo /etc/init.d/dnsmasq ponovno pokretanje #else #echo DNSMasq Pokretanje fi

Izrežite ga i zalijepite ako trebate. Što god radili, nemojte uključivati 'dnsmasq' u naziv. Skripta traži riječ 'dnsmasq' i ako je skripta ima u imenu, pretpostavit će da je usluga pokrenuta. Također preimenujte datoteku tako da završava s '.sh'. Neukrotivo mi ne dopuštaju da učitam '.sh' datoteku-što je dobro. Preostale upute pretpostavljaju da datoteka postoji na: /etc/dns_masq_keepalive.sh.

Drugo, postavite dopuštenja za datoteku tako da se može izvršiti:

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

Sada ćemo koristiti sustav crontab kako bismo program pokrenuli svake 2 minute svaki dan. Pokreni crontab:

$ sudo crontab -e

Trebao bi vas zatražiti da uredite pomoću vi ili nečeg drugog. Bilo koji će raditi. Nakon što ga možete urediti, dodajte sljedeće na kraj datoteke:

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

Nema razmaka u '*/2', već razmake između zvjezdica. Spremi i odustani. Trebalo bi vam reći da je posao zakazan ili nešto slično.

Korak 8: Vatrozid

Vatrozid
Vatrozid

Sljedeći bolan proces je vatrozid (GK -ov korak 11). Raspbian koristi dobro poznati sustav iptables. GK -ov blog nudi tri datoteke koje će vam pomoći da dođete do tamo … firewall.simple, firewall.advanced i firewall.flows. Svaka čast GK -u, ali olakšajte sebi i samo idite uz firewall.jednostavno. Proveo sam puno vremena pokušavajući shvatiti iptables sustav i pravila. Drago mi je što jesam, ali bilo je bolno. Dakle, dajem vam dvije priložene datoteke koje će vam pomoći … firewall.simple i firewall.clear. Kopirajte obje ove datoteke u mapu /etc i promijenite dopuštenja kako bi bile izvršne:

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

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

Prije nego postavite bilo koja pravila vatrozida, uključite stolno računalo/prijenosno računalo u svoj RPi eth0 port i potvrdite da dobiva IP adresu i da li je DNS pokrenut. Najlakši način za to je pokušati provjeriti generičku web lokaciju, a zatim poznatu IP adresu. Također pingite svoj RPi i ISP usmjerivač. Ako dobijete rezultate, sve je u redu i svi mrežni problemi s kojima se sada susrećete vjerojatno će biti posljedica problema s vatrozidom.

Prva ponuđena datoteka izvorno je započela kao GK -ova datoteka firewall.simple (hvala, opet, GK!). Napravio sam hrpu promjena kako bi funkcionirao za ovaj sustav. Trebao bi omogućiti barem HTTP, HTTPS, DNS, DHCP, ping, unutarnji SSH, unutarnji VNC i pleks. Plex možda nema sve otvorene portove za svaki mogući uređaj, ali postoji hrpa postova koji to mogu popraviti. Pri vrhu datoteke nalaze se vrijednosti koje ćete morati promijeniti u mrežnu konfiguraciju.

Druga datoteka, firewall.clear, namjerava se koristiti za testiranje pravila vatrozida. Kada pokrenete 'sudo /etc/firewall.clear' sva će se pravila vatrozida izbrisati i sustav bi trebao biti u potpunosti povezan s internetom. Dakle, ako ne možete učiniti da mrežna usluga (poput dns -a) radi s vatrozidom.jednostavna pravila, ali počinje raditi nakon što pokrenete firewall.clear, znate da imate problem s pravilom. To će doista biti kritično samo pri testiranju vaših pravila.

Dakle, tu imamo pravila vatrozida, moramo ih natjerati da se pokrenu kada se pokrene RPi. Da bismo to učinili, uredit ćemo datoteku /etc/rc.local:

$ sudo vi /etc/rc.local

Kad uđete unutra, na kraj datoteke dodajte sljedeće:

echo "Učitavanje iptables pravila" /etc/firewall.simple >>/dev/null

Ako odlučite dodati sustav za otkrivanje upada hrkanja, morat ćete ponovo urediti ovu datoteku. Za sada ga samo spremite i ponovno pokrenite.

$ sudo ponovno podizanje sustava

Korak 9: Syslog

Syslog
Syslog

Još dva koraka…

Ovo je jednostavno. Ako ste još uvijek tamo i pratite GK -ov blog, ovo je korak 12. Morate učiniti točno ono što on kaže u vezi s datotekom syslog. Evo skraćenih koraka:

Čuvajte sistemske podatke u vrijednosti 2 mjeseca…

$ sudo vi /etc/logrotate.conf

Moramo mu reći da koristi 'jedan tjedan' kao mjerenje, a zatim zadržati 12 od njih. U ovoj datoteci potrebna su vam sljedeća dva retka. Vjerujem da ćete morati promijeniti postojeće linije.

rotirati tjedno 12

Spremi.

Korak 10: Otkrivanje upada s hrkanjem

Otkrivanje upada s hrkanjem
Otkrivanje upada s hrkanjem

Posljednje što GK konfigurira je sustav hrkanja. Preporučujem i ovo. Možete se pridržavati njegovih pravila, a ja ih ovdje neću kopirati, s nekoliko manjih izmjena. Njegove upute su za distribuciju ArchLinux. Evo nekoliko promjena za Raspbian distribuciju koje ovdje koristimo. Ostatak uputa dobro radi.

Prvo, nemojte koristiti sudo pacman -S snort za preuzimanje i instaliranje snort. Učinite sljedeće:

$ sudo apt-get install snort

Drugo, ne možete provjeriti hrkanje pomoću sudo snort -verzije. Provjerite instalaciju pomoću:

$ sudo hrkanje -V

Konačno, da biste ga pokrenuli pri pokretanju, nemojte mijenjati datoteku rc.conf, uredite datoteku rc.local (ponovno) …

$ sudo vi /etc/rc.local

Na kraj datoteke dodajte sljedeće retke:

echo "Učitavanje hrkanja"

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

Sada ponovno pokrenite sustav i sve bi trebalo čarobno funkcionirati.

$ sudo ponovno podizanje sustava

Korak 11: Uživajte

Uživati
Uživati

To bi trebalo biti to!

Prije svega, ne mogu dovoljno zahvaliti Guillaumeu Kaddouchu! On je ovo nadahnuo.

Drugo, ako već niste isključili tipkovnicu, video i miš, možete. Koristite SSH i VNC za povratak, kad je potrebno.

Za kraj, ovo možda nije 100% savršeno. Javite se s promjenama/prijedlozima/preporukama. Moj bi cilj bio da ovo bude početak rasprave i da mnogi ljudi uživaju!

Hvala!!

PS … Slika je RPi4 unutar aluminijskog kućišta FLIRC sa starim Intelovim ventilatorom malo izmijenjenim i zatvaračem vezanim za vrh. Ispod ventilatora nalazi se termalna pasta, za slučaj da se pitate. Našao sam nešto slično na internetu (https://www.reddit.com/r/raspberry_pi/comments/9bdgrr/it_turns_out_putting_a_heatsink_on_the_flirc_case/) i odlučio sam to isprobati.

Korak 12: Dnevnik promjena

Kako se budu mijenjale ove upute, dokumentirat ću ih ovdje. U slučaju da imate problem, ovdje provjerite jeste li uzeli stare upute ili datoteke.

25. rujna 2019.:

  • Fiksna DHCP pravila u vatrozidu.jednostavna
  • Fiksni raspon DHCP -a u uputama (datoteke su bile ispravne)
  • DHCP uputama dodani su dodijeljeni fiksni IP

13. listopada 2019

  • Ispravljeno više pravopisnih pogrešaka
  • Napravio sam drugi pi pa bih imao testnu SD karticu za zamjenu, ako je potrebno

Preporučeni: