Sisukord:

Vaarika Pi4 tulemüür: 12 sammu
Vaarika Pi4 tulemüür: 12 sammu

Video: Vaarika Pi4 tulemüür: 12 sammu

Video: Vaarika Pi4 tulemüür: 12 sammu
Video: BigTreeTech - Manta - M8P - Basics 2024, Juuni
Anonim
Vaarika Pi4 tulemüür
Vaarika Pi4 tulemüür

Kuna äsja ilmus uus Raspbery Pi 4 (RPi4), otsustasin teha endale kodukasutuseks mõeldud tulemüüri. Pärast Internetis komistamist leidsin Guillaume Kaddouchi sel teemal suurepärase artikli (https://networkfilter.blogspot.com/2012/08/building-your-piwall-gateway-firewall.html). Artikkel on hämmastav ja enne edasiliikumist peaksite selle läbi lugema-see lihtsustab siin kirjeldatud protsessi. Asi on selles, et see artikkel on kirjutatud 2012. aastal ja põhineb ArchLinuxi distributsioonil. Mitte midagi ArchLinuxi vastu, kuid ma tahtsin seda teha, kasutades tavalisemat Raspbiani ehitust. RPi4 saab hakkama töötlemisnõuetega. Niisiis, aitäh, Guillaume, inspiratsiooni eest !! See juhis viitab Guillaume'i (lühidalt "GK") algsele postitusele, tõenäoliselt soovite, et mõlemad lehed oleksid teie brauseris avatud.

Paar olulist asja minu tulemüüri kohta:

  • Mul on LAN-i sisseehitatud Etherneti pistik (eth0)
  • Interneti -teenuse pakkuja ruuter on TRENDneti adapteril (eth1)
  • Olen traadita adapteri (wlan0) aktiivselt keelanud
  • See ei garanteeri teid 100% kohale … loodetavasti vähemalt 99%:) nii et palun andke tagasisidet/kommentaare
  • See on minu esimene juhendatav. Vabandame kõige eest, mis ei järgi asjakohaseid juhendatavaid norme.

Nautigem nüüd natuke …

Tarvikud

  • Vaarika Pi 4

    • Kasutasin 4GB versiooni, proovige julgelt teist versiooni
    • Juhtum (mulle meeldib FLIRC, aga see on teie kõne)
    • Toiteadapter
  • MicroSD -kaart, 32 GB või rohkem (kasutasin 64 GB kaarti)
  • TRENDnet USB3.0 Gigabit Ethernet Dongle (mudel: TU3-ETG)
  • Paar RJ45 võrgukaablit
  • USB -klaviatuur ja hiir
  • Micro-HDMI-HDMI-kaabel (mis on ühendatud HDMI-monitoriga)

Klaviatuuri, video ja hiire saab eemaldada, kui saate SSH ja VNC käivitada.

Samm: RPi esialgne seadistamine

RPi esialgne seadistamine
RPi esialgne seadistamine

Esimese asjana tuleb oma RPi4 uue süsteemina tööle panna. Laadige alla ja installige Raspbiani täielik jaotus (Raspbian Buster koos töölaua ja soovitatud tarkvaraga). Peate paar korda taaskäivitama, et see saaks laiendada ja kasutada täielikku MicroSD -kaarti.

Käivitamisel peate vastama küsimustele asukoha, võrgu, klaviatuuri ja hiire kohta. Looge ühendus võrguga ja laske sellel värskendada.

Kinnitame ka, et kõik on korralikult värskendatud, ja hankime paar utiliiti, mis võivad hiljem silumist aidata.

$ sudo apt-get update

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

Ma EI installinud vimi ega ühtegi GK 8. sammu (vim seadistamine). Kasutasin just vi redaktorit, kuna sellel on niikuinii enamik neist funktsioonidest. See säästis ka aega ja vaeva.

Kui see on lõpule jõudnud, seadistame RPi4 nii, et saaksime monitori kuumalt ühendada. Minu eesmärk oli panna see peata töötama, kuid kui mul on vaja monitori ühendada, tunneb see ära.

$ sudo vi /boot/config.txt

Selles failis:

uncomment (eemaldage eesmine #-sümbol): hdmi_force_hotplug = 1

kommentaar: hdmi_drive = 2

soovi korral lisage: enable_hdmi_sound

2. samm: võrgustike loomine

Võrgustikutöö
Võrgustikutöö
Võrgustikutöö
Võrgustikutöö

Kui jälgite GK veebisaiti, on see samm 3. Kuid pidage meeles, et ma ei järginud palju tema esimesi samme täpses järjekorras.

Kui ma seda esimest korda alustasin, ühendasin RPi otse oma Interneti -teenuse pakkuja ruuteriga ("minu olemasoleva võrgu kõrval"). See võimaldas mul konfiguratsiooniga mängida ilma võrku mõjutamata. Ühendage RPi4 sisseehitatud RJ45 oma ruuteriga (või traadita, kui soovite). Raspbiani puhul on lihtsaim viis seda teha GUI kasutamine. Klõpsake töölaual Raspberry Icon> Preferences> Raspberry Pi Configuration. Kindlasti lubage SSH ja VNC. See installib Real-VNC serveri kliendi. Leidsin, et kui proovite luua ühenduse Tight VNC kliendiga, lööb see kokku ja nõuab täiendavat konfigureerimist. Niisiis installige praegusel hetkel Real-VNC klient oma peamisele töölauale/sülearvutile (mitte oma RPi4-le).

SSH ei tööta kohe (GK samm 7). Peame mõningaid konfiguratsioone muutma. Esiteks muudame ssh konfiguratsioonifaili. Siin on minu tehtud muudatused. Pidage meeles, et ma ei uurinud siin iga muudatuse mõju. Tegin seda, mida GK sait soovitas. Mõnda neist muudatustest EI OLE vaja teha.

$ sudo vi/etc/ssh/sshd_config

Tühjendage selles failis järgmised read:

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

Ignoreeri Rhosti jah

PrintMotd noPrintLastLog jahTCPKeepAlive jah

Ja lisage järgmised read:

Protokoll 2Kasuta privileegide eraldamine jahKeyRegenerationInterval 3600ServerKeyBits 768RSAA Autentimine jahRhostid

Ja muutke järgmisi ridu:

Port 15507LoginGraceTime 60PermitRootLogin nr

Räägime kiiresti sellest esimesest muudatusest … port 15507. SSH töötab tavaliselt pordis 22. GK teisaldas selle aadressile 15507-ei tea miks. Saate seda muuta ükskõik kuidas või mitte … Kui otsustate seda muuta, peate lisama "-p 15507" igale SSH-käsule, millega proovite ühendust luua. Kui otsustate selle vahele jätta, jälgige teisi kohti, mida 15507 on käesolevas juhendis mainitud, ja ignoreerige neid, eriti tulemüüri reegleid!

Lõpuks saate selle sammu jaoks hankida RPi4 IP -aadressi, et me teaksime, millega ühenduse luua:

$ ipconfig -a

Leidke aktiivne võrguühendus (tõenäoliselt eth0 või wlan0) ja kirjutage see IP -aadress üles. Nüüd on teil RPi4 -ga kaugühenduse loomiseks vajalik. Enne jätkamist taaskäivitame:

$ sudo taaskäivitamine

Samm: teine kasutaja

Teine kasutaja
Teine kasutaja

Parim on mitte kasutada RPi vaikenime (pi) ja kindlasti peaksite parooli muutma. Turvalisuse huvides lisame teise kasutajakonto, mida saate kasutada kaugühenduse loomiseks ja jätkamiseks (GK 6. samm). Tagasi RPi juurde, lubame lisada uue kasutaja ja määrata kasutajale SSH -le õigused ning anda välja sudo käsu:

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

$ sudo passwd [USERNAME]

Logige välja või taaskäivitage ja kasutage seda vastloodud kontot edaspidi.

Samm: Syctl -fail

Syctl -fail
Syctl -fail

Järgmine samm on faili /etc/sysctl.conf muutmine (GK samm 9). Seda faili kasutatakse mõne kerneli sätte muutmiseks. Me teeme täpselt seda, mida GK ütleb. Siin on lihtsustatud sammude komplekt.

$ sudo vi /etc/sysctl.conf

Tühjendage selles failis järgmised read:

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

Ja lisage järgmised read:

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

Taaskäivitage teenus nende uute sätetega ja taaskäivitage:

$ sudo sysctl -p

$ sudo taaskäivitamine

5. samm: DHCP ja DNS (1. osa)

DHCP ja DNS (1. osa)
DHCP ja DNS (1. osa)

Minu jaoks oli selles protsessis kaks valusat osa … DHCP ja DNS -i seadistamine ning tulemüüri reeglite seadistamine. Niisiis, alustame esimese osaga. Kui jälgite GK veebisaiti, oleme 10. sammus.

Selleks vajate oma Interneti -teenuse pakkuja ruuterist (või praegusest tulemüürist) mõnda teavet:

  • Ruuteri sisemine IP -aadress
  • IP -aadress, mida saate kasutada RPi4 ruuteriga liideseks
  • Nimeserveri (või kahe) IP -aadressid
  • LAN -ühenduse liidese nimi (nt eth0 või eth1)
  • Interneti -teenuse pakkuja ühenduse liidese nimi (nt kõik, mida te LAN -i jaoks ei kasutanud)

Samuti peate võib -olla muutma ruuteri seadeid, et anda RPi4 -le staatiline IP -aadress (punkt 2, ülal). Vähemalt nii ma tegin.

Esiteks, muudame faili dhcpcd.conf …

$ sudo vi /etc/dhcpcd.conf

Tühjendage need read:

püsiv valik kiire_kohustusvalik domeeninime_serverid, domeeninimi, domeeniotsing, hosti_nimi valiku liides_mtu

Iga võrguliidese jaoks peate määrama võrgu üksikasjad. Need peaksid välja nägema umbes sellised:

# Staatiline Interneti -teenuse pakkuja liidese jaoks

liides eth1 staatiline ip_address = 192.168.1.static ruuterid = 192.168.1.254 staatiline domeeninimi_serverid = 8.8.8.8 8.8.4.4 meetric 100 # staatiline LAN -liidese liidese jaoks eth0 staatiline ip_address = 10.210.212.static ruuterid = 10.210.212.1 staatiline domain_name_servers = 8.8.8.8 8.8.4.4 #interface wlan0 #static ip_address = 10.210.212. #staatilised ruuterid = 10.210.212.1 #static domain_name_servers = 8.8.8.8 #Kommenteerige seda jaotist, kui soovite seadmesse IP -aadressi sundida. Nimi „host” #on süsteemi jaoks mõttetu. Sisestage seadme MAC -aadress ja soovitud #IP -aadress. Veenduge, et see oleks dhcp vahemikust väljas. Vajadusel korrake. #host [MIDAGI] { # riistvara Ethernet xx: xx: xx: xx: xx: xx; # fikseeritud aadress 10.210.212.250; #}

Kasutage kindlasti enda jaoks sobivaid numbreid. Ülaltoodud IP -d on minu võrgu jaoks, välja arvatud Google'i nimeserverid. Pange tähele, et määrasin ka Interneti -teenuse pakkuja mõõdikuks 100, et sundida see olema võrguliikluse esimene vaikeproov. Samuti ei teinud ma midagi oma traadita adapteriga (wlan0). Kavatsen selle liidese täielikult välja lülitada, nii et see oli minu jaoks mõistlik.

Kui soovite seadmesse (näiteks NAS -i) IP -aadressi sundida, kasutage seda alumist jaotist. Andke võõrustajale teile tähenduslik nimi, kuid teadke, et seda ei kasuta kunagi. Ärge unustage semikooloneid.

6. samm: DHCP ja DNS (2. osa)

DHCP ja DNS (2. osa)
DHCP ja DNS (2. osa)

Järgmine samm on faili dnsmasq.conf muutmine …

$ sudo vi /etc/dnsmasq.conf

Peame mõned read tühistama ja mõned read muutma. Samuti peate kopeerima mõned seaded failist dhcpcd.conf. Veel kaks küsimust, millele peate ise vastama, on järgmised:

Kas sisemine kohtvõrk (nt eth0) vajab DHCP -d ja DNS -i? Millist DHCP -vahemikku soovite oma kohtvõrgu jaoks ja kui pikk peaks iga rendileping olema?

Alustuseks tühistage paar rida:

bogus-privno-dhcp-interface = wlan0bind-interfacesdhcp-name-match = set: wpad-ignore, wpaddhcp-ignore-names = tag: wpad-ignore

Määrake oma nimeserver. Otsige rida, mis algab 'server =' ja tehke sellest midagi sellist nagu 'server = 8.8.8.8'.

Määrake oma DHCP vahemik. Selleks on palju võimalusi. Otsustasin esitada kaks lõpp -punkti IP -d, maski ja rendilepingu pikkuse. Minu vahemik oli 10.210.212.20-10.210.212.240, võrgumask 255.255.255.0 ja rendiaeg 12 tundi. Soovitan jätta mõned IP -d vahemiku üla- ja alaossa, juhuks, kui teil on kunagi vaja anda midagi staatilist IP -d.

Määrake liides, mis saab DNS -i ja DHCP -d (LAN), muutes rea „interface =” selliseks nagu „interface = eth0”. Pange tähele, et ma ütlesin talle, et EI määra traadita võrgule DHCP IP -aadressi. Jällegi kavatsen selle liidese täielikult välja lülitada, nii et see oli minu jaoks mõistlik.

Samm 7: DHCP ja DNS (3. osa)

DHCP ja DNS (3. osa)
DHCP ja DNS (3. osa)

Kõrvalekaldumine GK juhistest selle viimase sammu jaoks…

Kui ma läksin oma RPi sel hetkel taaskäivitama, ei olnud dnsmasq protsess aktiivne. Natuke ringi tuhnides leidsin, et minu eth0 ja eth1 võrguliidesed ei olnud mõlemad enne dnsmasq käivitamist aktiivsed, nii et dnsmasq ebaõnnestub alguses. Peaksin RPi -ga klaviatuuri ja hiire ühendama ning dnsmasq käsitsi taaskäivitama. Peata seadistuse korral pole see ideaalne. Lugesin hunnikut postitusi, milles öeldi, et tuleb teha erinevaid muudatusi seadetes (nt keelata sidumisliides) ja muid asju. Ükski sellest ei töötanud. Lõpuks otsustasin lihtsalt kirjutada shelliskripti, mis jookseks iga 2 minuti tagant, ja kontrollida dnsmasq olekut. Kui see ei töötanud, käivitage see. Eeldan, et see olukord pole minu jaoks ainulaadne. Niisiis, mida peate tegema:

Tehke järgmine kood oma RPi failiks nimega „dns_masq_keepalive.sh”.

#!/bin/bash

# Fail: dns_masq_keepalive.sh # August 2019 # Kasutage seda koos crontab -e (*/2 * * * * /etc/dns_masq_keepalive.sh) ja veenduge, et dnsmasq töötab. Teenus peatub iseenesest, kui # kõiki dhcpcd.confis nimetatud liideseid pole enne selle käivitamist üleval. See lahendab probleemi. # See järgmine rida tagastab kõik aktiivsed tööd, milles on sõna „dnsmasq”. Seetõttu ärge lisage selle faili nimele „dnsmasq”, vastasel juhul tagastab see selle iga kord ja te ei saa kunagi taaskäivitust. dns_running = $ (ps -e | grep dnsmasq) echo $ dns_running if [-z "$ dns_running"], siis #echo No DNSMasq sudo /etc/init.d/dnsmasq restart #else #echo DNSMasq Running fi

Vajadusel lõigake ja kleepige see. Mida iganes te teete, ärge lisage nimesse sõna „dnsmasq”. Skript otsib sõna „dnsmasq” ja kui skriptil on see nimes, eeldatakse, et teenus töötab. Samuti nimetage fail ümber nii, et see lõppeks '.sh'. Intructables ei lubanud mul üles laadida.sh-faili-see on hea. Ülejäänud juhised eeldavad, et fail on olemas aadressil /etc/dns_masq_keepalive.sh.

Teiseks määrake failile õigused, et seda saaks käivitada:

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

Nüüd kasutame programmi crontab, et programm töötaks iga päev iga 2 minuti järel. Käivitage crontab:

$ sudo crontab -e

See peaks paluma teil redigeerida, kasutades vi või midagi muud. Igaüks töötab. Kui saate seda redigeerida, lisage faili lõppu järgmine:

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

„*/2” tühikuid ei ole, kuid tärnide vahel on tühikud. Salvestage ja lõpetage. See peaks teile ütlema, et töö on planeeritud või midagi sellist.

Samm: tulemüür

Tulemüür
Tulemüür

Järgmine valus protsess on tulemüür (GK samm 11). Raspbian kasutab tuntud iptablesi süsteemi. GK ajaveeb pakub kolme faili, mis aitavad teil sinna jõuda … firewall.simple, firewall.advanced ja firewall.flows. Kogu lugupidamine GK -le, kuid tehke see endale lihtsaks ja minge lihtsalt tulemüüriga.lihtne. Veetsin palju aega iptablesi süsteemi ja reeglite väljaselgitamiseks. Mul on hea meel, et seda tegin, kuid see oli valus. Niisiis, ma annan teile lisatud kaks faili, mis aitavad teil… firewall.simple ja firewall.clear. Kopeerige mõlemad failid kausta /etc ja muutke õigusi, et muuta need käivitatavaks:

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

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

Enne tulemüüri reeglite seadistamist ühendage laua-/sülearvuti oma RPi eth0 porti ja veenduge, et see saab IP -aadressi ja DNS töötab. Lihtsaim viis seda teha on proovida pingida üldist saiti ja seejärel teadaolevat IP -aadressi. Samuti pingutage oma RPi ja ISP ruuterit. Kui saate tulemusi, on kõik korras ja kõik võrguprobleemid, millega praegu kokku puutute, on tõenäoliselt tulemüüri probleemide tagajärg.

Esimene pakutud fail algas algselt GK tulemüüri.simple failina (aitäh, veelkord GK!). Tegin hulga muudatusi, et see selle süsteemi jaoks toimiks. See peaks võimaldama vähemalt HTTP, HTTPS, DNS, DHCP, ping, sisemine SSH, sisemine VNC ja plex. Plexil ei pruugi olla kõiki avatud seadmeid kõigi võimalike seadmete jaoks, kuid selle parandamiseks on olemas hulk postitusi. Faili ülaosas on väärtused, mida peate oma võrgukonfiguratsiooni muutma.

Teine fail firewall.clear on mõeldud kasutamiseks tulemüüri reeglite testimisel. Kui käivitate käsu 'sudo /etc/firewall.clear', kustutatakse kõik tulemüüri reeglid ja süsteem peaks olema täielikult Internetiga ühendatud. Seega, kui te ei saa panna võrguteenust (nt dns) tulemüüriga tööle. Lihtsad reeglid on paigas, kuid see hakkab tööle pärast tulemüüri käivitamist. Selge, teate, et teil on reegliprobleem. See on tõesti oluline ainult teie reeglite testimisel.

Niisiis, meil on tulemüüri reeglid olemas, peame need käivitama RPi käivitamisel. Selleks muudame faili /etc/rc.local:

$ sudo vi /etc/rc.local

Kui olete sees, lisage faili lõppu järgmine:

kaja "Iptable'i reeglite laadimine" /etc/firewall.simple >>/dev/null

Kui otsustate lisada norskamise sissetungimise tuvastamise süsteemi, peate seda faili uuesti muutma. Praegu salvestage see ja taaskäivitage.

$ sudo taaskäivitamine

9. samm: Syslog

Syslog
Syslog

Kaks sammu jäänud…

See on lihtne. Kui olete endiselt kohal ja jälgite GK ajaveebi, on see samm 12. Peate tegema täpselt seda, mida ta syslog -faili kohta ütleb. Siin on lühendatud sammud:

Säilitage 2 kuu väärtuses syslogi andmed …

$ sudo vi /etc/logrotate.conf

Peame ütlema, et ta kasutaks mõõtmiseks „üks nädal” ja säilitaks siis 12 neist. Selles failis on vaja kahte järgmist rida. Usun, et peate olemasolevaid ridu muutma.

iganädalane pöörlemine 12

Salvesta see.

10. toiming: sissetungimise tuvastamine nuusutamisega

Sissetungimise tuvastamine Snortiga
Sissetungimise tuvastamine Snortiga

Viimane asi, mida GK konfigureerib, on norskamise süsteem. Soovitan ka seda. Võite järgida tema reegleid ja ma ei kavatse neid kõiki siia, koos mõne väikese muudatusega, kopeerida. Tema juhised on mõeldud ArchLinuxi distributsioonile. Siin on mõned muudatused Raspbiani levitamiseks, mida me siin kasutame. Ülejäänud juhised töötavad hästi.

Esiteks, ärge kasutage snorti allalaadimiseks ja installimiseks sudo pacman -S snort. Tehke järgmist.

$ sudo apt-get install snort

Teiseks ei saa te norskamist kontrollida sudo snort -version abil. Kontrollige installimist järgmiselt:

$ sudo norskama -V

Lõpuks, et see käivitamisel käivitada, ärge muutke faili rc.conf, redigeerige rc.local faili (uuesti) …

$ sudo vi /etc/rc.local

Lisage faili lõppu järgmised read:

kaja "Nurru laadimine"

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

Nüüd taaskäivitage ja kõik peaks maagiliselt toimima.

$ sudo taaskäivitamine

Samm 11: naudi

Nautige
Nautige

See peaks nii olema!

Esiteks ei saa ma Guillaume Kaddouchit piisavalt tänada! Ta inspireeris seda.

Teiseks, kui te pole klaviatuuri, videot ja hiirt lahti ühendanud, saate seda teha. Kasutage vajadusel SSH -d ja VNC -d.

Lõpuks ei pruugi see olla 100% täiuslik. Palun postitage muudatuste/ettepanekute/soovitustega tagasi. Minu eesmärk oleks, et see oleks arutelu algus ja paljud inimesed naudiksid!

Aitäh !!

PS… Pilt on RPi4 FLIRC alumiiniumkorpuse sees, vana Inteli ventilaator on veidi modifitseeritud ja tõmblukuga kinni seotud. Ventilaatori all on ka termopasta, igaks juhuks, kui mõtlesite. Leidsin Internetist midagi sarnast (https://www.reddit.com/r/raspberry_pi/comments/9bdgrr/it_turns_out_putting_a_heatsink_on_the_flirc_case/) ja otsustasin seda ise proovida.

12. samm: muudatuste päevik

Kuna selles juhendis tehakse muudatusi, siis dokumenteerin need siin. Probleemi korral kontrollige siit, kas olete haaranud vanad juhised või failid.

25. september 2019:

  • Fikseeritud DHCP reeglid tulemüüris.lihtne
  • Fikseeritud DHCP vahemik juhistes (failid olid õiged)
  • Lisas fikseeritud IP-ülesanded DHCP-juhistele

13. oktoober 2019

  • Parandatud mitu kirjaviga
  • Loonud teise pi, nii et mul oleks vajadusel vahetamiseks test -SD -kaart

Soovitan: