INHOUDSOPGAWE:

Framboos Pi4 Firewall: 12 stappe
Framboos Pi4 Firewall: 12 stappe

Video: Framboos Pi4 Firewall: 12 stappe

Video: Framboos Pi4 Firewall: 12 stappe
Video: How to network monitor using Raspberry PI | Zabbix | NETVN 2024, Junie
Anonim
Framboos Pi4 Firewall
Framboos Pi4 Firewall

Met die nuwe Raspbery Pi 4 (RPi4) wat pas vrygestel is, het ek besluit om vir myself 'n firewall te maak. Nadat ek op die internet gestruikel het, het ek 'n wonderlike artikel hieroor gevind deur Guillaume Kaddouch (https://networkfilter.blogspot.com/2012/08/building-your-piwall-gateway-firewall.html). Die artikel is ongelooflik, en u moet dit lees voordat u verder gaan-dit sal die proses wat hier beskryf word, makliker maak. Die ding is dat die artikel in 2012 geskryf is en gebaseer is op die ArchLinux -distro. Niks teen ArchLinux nie, maar ek wou dit maak met die meer algemene Raspbian -build. Die RPi4 kan die verwerkingsvereistes hanteer. So, dankie, Guillaume, vir die inspirasie !! Hierdie instruksie verwys na die oorspronklike plasing van Guillaume (kortliks "GK"); u sal waarskynlik albei bladsye in u blaaier wil oopmaak.

'N Paar belangrike dinge oor my firewall:

  • Ek het die ingeboude ethernet-aansluiting (eth0) na die LAN
  • Die ISP -router is op die TRENDnet -adapter (eth1)
  • Ek het die draadlose adapter (wlan0) aktief uitgeskakel
  • Dit is nie gewaarborg om u 100% daar te kry nie … hopelik ten minste 99%:), gee asseblief terugvoer/kommentaar
  • Dit is my eerste opdrag. Jammer vir enigiets wat nie die toepaslike instruksienorme volg nie.

Nou, laat ons bietjie pret hê …

Voorrade

  • Framboos Pi 4

    • Ek het die 4GB -weergawe gebruik, probeer gerus 'n ander weergawe
    • Case (ek hou van die FLIRC, maar dit is jou oproep)
    • Kragadapter
  • MicroSD -kaart, 32 GB of meer (ek het 'n 64GB -kaart gebruik)
  • TRENDnet USB3.0 Gigabit Ethernet Dongle (Model: TU3-ETG)
  • 'N Paar RJ45 -netwerkkabels
  • USB -sleutelbord en muis
  • 'N Mikro-HDMI na HDMI-kabel (wat op 'n HDMI-monitor gekoppel is)

Die sleutelbord, video en muis kan verwyder word sodra u SSH en VNC aan die gang kan kry.

Stap 1: Aanvanklike RPi -opstelling

Aanvanklike RPi -opstelling
Aanvanklike RPi -opstelling

Die eerste ding om te doen is om u RPi4 aan die gang te kry as 'n nuwe stelsel. Laai die volledige verspreiding van Raspbian af en installeer dit (Raspbian Buster met lessenaar en aanbevole sagteware). U moet 'n paar keer herlaai sodat dit kan uitbrei en voordeel kan trek uit die volledige MicroSD -kaart.

Terwyl dit begin, moet u vrae oor die ligging, netwerk, sleutelbord en muis beantwoord. Koppel aan 'n netwerk en laat dit opdateer.

Laat ons ook bevestig dat alles behoorlik bygewerk is, en kry 'n paar hulpmiddels wat later kan help om foutopsporing te vind:

$ sudo apt-get update

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

Ek het NIE vim geïnstalleer nie, en ook nie een van GK se stap 8 nie (konfigureer vim). Ek het pas die vi -redakteur gebruik, aangesien dit in elk geval die meeste van die funksies het. Dit het ook tyd en moeite bespaar.

Sodra dit voltooi is, kan ons die RPi4 instel sodat ons 'n monitor kan aansluit. My doel was om dit sonder kop te laat loop, maar as ek 'n monitor moet aansluit, sal dit erken word.

$ sudo vi /boot/config.txt

In die lêer:

uncomment (verwyder die voorste #-simbool): hdmi_force_hotplug = 1

kommentaar: hdmi_drive = 2

voeg opsioneel by: enable_hdmi_sound

Stap 2: Netwerk

Netwerk
Netwerk
Netwerk
Netwerk

As u op GK se webwerf volg, is dit stap 3. Maar hou in gedagte dat ek nie baie van sy eerste stappe in presiese volgorde gevolg het nie.

Toe ek dit die eerste keer begin, het ek die RPi direk aan my ISP -router gekoppel ("langs my bestaande netwerk"). Dit het my in staat gestel om met die konfigurasie te speel sonder om die netwerk te beïnvloed. Koppel die ingeboude RP45 RP45 aan u router (of draadloos, as u wil). Met Raspbian is die maklikste manier om dit te doen die gebruik van die GUI. Klik op die lessenaar op die Framboos -ikoon> Voorkeure> Raspberry Pi -konfigurasie. Maak seker dat u SSH en VNC inskakel. Dit sal die Real-VNC-bedienerkliënt installeer. Ek het agtergekom dat as u probeer om met die Tight VNC -kliënt in verbinding te tree, dit pas en 'n paar ekstra konfigurasies benodig. Installeer dus op hierdie stadium die Real-VNC-kliënt op u primêre lessenaar/skootrekenaar (nie u RPi4 nie).

SSH werk nie out-of-the-box nie (GK se stap 7). Ons moet 'n paar konfigurasies verander. Laat ons eers die ssh -konfigurasielêer verander. Hier is die veranderinge wat ek aangebring het. Hou in gedagte dat ek nie die impak van elke verandering hier bestudeer het nie. Ek het gedoen wat GK se webwerf voorgestel het. Sommige van hierdie veranderinge mag NIE nodig wees nie.

$ sudo vi/etc/ssh/sshd_config

Los die volgende reëls op in die lêer:

HostKey/etc/ssh/ssh_host_rsa_keyHostKey/etc/ssh/ssh_host_ecdsa_keySyslogFacility AUTHLogLevel INFOStrictModes jaPubkeyAuthentication jaHostBasedAuthentication no

Ignoreer Rhosts ja

PrintMotd noPrintLastLog jaTCPKeepAlive ja

En voeg die volgende reëls by:

Protokol 2GebruikPrivilegieSkeiding jaSleutelRegenerasieInterval 3600ServerKeyBits 768RSAAuthentication jaRhostsRSAAuthentication no

En wysig die volgende reëls:

Poort 15507LoginGraceTime 60PermitRootLog no

Kom ons praat vinnig oor die eerste wysiging … poort 15507. SSH loop gewoonlik op poort 22. GK het dit na 15507 geskuif-weet nie hoekom nie. U kan dit verander of nie … As u kies om dit te verander, moet u "-p 15507" byvoeg by enige SSH-opdrag waarmee u probeer skakel. As u besluit om dit oor te slaan, moet u die ander plekke waar 15507 in hierdie instruksies genoem word, dophou en dit ignoreer, veral die firewallreëls!

Laastens, vir hierdie stap, kan ons die IP -adres van die RPi4 kry, sodat ons weet waarmee ons moet skakel:

$ ipconfig -a

Soek die aktiewe netwerkverbinding (waarskynlik op eth0 of wlan0) en skryf die IP -adres neer. Nou het u wat u nodig het om op afstand aan te sluit op die RPi4. Laat ons herlaai voordat ons aangaan:

$ sudo herlaai

Stap 3: 'n Ander gebruiker

Nog 'n gebruiker
Nog 'n gebruiker

Dit is die beste om nie die standaard RPi -gebruikersnaam (pi) te gebruik nie, en u moet beslis die wagwoord verander. Om veilig te wees, kan u 'n ander gebruikersrekening byvoeg wat u kan gebruik om op afstand te skakel en voort te gaan met (stap 6 van GK). Met die RPi kan ons 'n nuwe gebruiker byvoeg en toestemmings vir die gebruiker instel op SSH en die sudo -opdrag uitreik:

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

$ sudo passwd [USERNAME]

Meld u gerus af of herlaai en gebruik die nuutgeskepte rekening vorentoe.

Stap 4: Syctl -lêer

Syctl lêer
Syctl lêer

Die volgende stap is om die /etc/sysctl.conf -lêer (GK se stap 9) te verander. Hierdie lêer word gebruik om 'n paar kerninstellings te verander. Ons gaan presies doen wat GK sê om te doen. Hier is 'n vereenvoudigde stel stappe.

$ sudo vi /etc/sysctl.conf

Los die volgende reëls op in die lêer:

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

En voeg die volgende reëls by:

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

Herbegin die diens met hierdie nuwe instellings en herlaai:

$ sudo sysctl -p

$ sudo herlaai

Stap 5: DHCP en DNS (deel 1)

DHCP en DNS (deel 1)
DHCP en DNS (deel 1)

Vir my was daar twee pynlike dele van hierdie proses … Die opstel van DHCP en DNS en die opstel van die firewallreëls. So, hier gaan ons met die eerste deel. As u op GK se webwerf volg, is ons op stap 10.

Om dit te kan doen, benodig u 'n paar inligting van u ISP -router (of huidige firewall):

  • Die interne IP -adres van die router
  • 'N IP -adres wat u kan gebruik vir die RPi4 -koppelvlak van die router
  • Die IP's vir 'n naambediener (of twee)
  • Die koppelvlaknaam vir die LAN -verbinding (bv. Eth0 of eth1)
  • Die koppelvlaknaam vir die ISP -verbinding (bv. Alles wat u nie vir die LAN gebruik het nie)

Miskien moet u ook die router se instellings verander om die RPi4 'n statiese IP -adres te gee (bullet 2 hierbo). Dit is ten minste wat ek gedoen het.

Laat ons eers die dhcpcd.conf -lêer verander …

$ sudo vi /etc/dhcpcd.conf

Los hierdie reëls op:

persistentoption rapid_commitoption domain_name_servers, domain_name, domain_search, host_nameoption interface_mtu

Vir elke netwerk -koppelvlak moet u die netwerkbesonderhede opstel. Hulle moet so lyk:

# Staties vir die koppelvlak met die ISP

koppelvlak 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 metric 100 # Static for the interface to the LAN interface eth0 static ip_address = 10.210.212.static routers = 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 routers = 10.210.212.1 #static domain_name_servers = 8.8.8.8 #Kommenteer hierdie afdeling as u 'n IP -adres op 'n toestel wil forseer. Die naam na 'gasheer' #is betekenisloos vir die stelsel. Voer die MAC -adres van die toestel sowel as die gewenste #IP -adres in. Maak seker dat dit buite die dhcp -reeks is. Herhaal soos nodig. #host [ALLES] { # hardeware -ethernet xx: xx: xx: xx: xx: xx; # vaste adres 10.210.212.250; #}

Maak seker dat u getalle gebruik wat vir u werk. Die IP's hierbo is vir my netwerk, met die uitsondering van die naambedieners wat Google is. Let op dat ek ook die metriek vir die ISP op 100 gestel het om die eerste poging vir netwerkverkeer te dwing. Ek het ook spesifiek niks aan my draadlose adapter (wlan0) gedoen nie. Ek is van plan om die koppelvlak heeltemal uit te skakel, so dit was vir my sinvol.

As u ook 'n IP -adres op 'n toestel wil dwing (soos 'n NAS), gebruik dan die onderste gedeelte. Gee die gasheer 'n naam wat vir jou betekenisvol is, maar weet dat dit nooit deur iets gebruik word nie. Moenie die puntkomma vergeet nie.

Stap 6: DHCP en DNS (deel 2)

DHCP en DNS (deel 2)
DHCP en DNS (deel 2)

Die volgende stap is om die dnsmasq.conf -lêer aan te pas …

$ sudo vi /etc/dnsmasq.conf

Ons moet 'n paar reëls ontmerk en 'n paar reëls wysig. U moet ook 'n paar instellings uit die dhcpcd.conf -lêer kopieer. Twee ander vrae wat u self moet beantwoord, is:

Het die interne LAN (bv. Eth0) DHCP en DNS nodig? Watter DHCP -reeks wil u vir u LAN hê, en hoe lank moet elke huurkontrak duur?

Begin met 'n paar reëls:

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

Stel u naambediener in. Soek die reël wat 'server =' begin en maak iets soos 'server = 8.8.8.8'.

Stel u DHCP -reeks in. Daar is baie maniere om dit te doen. Ek het gekies om die twee eindpunte -IP's, die masker en die lengte van die huurkontrak, te verstrek. My reeks was 10.210.212.20-10.210.212.240, met 'n netmasker van 255.255.255.0 en huurtyd van 12 uur. Ek beveel aan dat u 'n paar IP's bo en onder in u reeks laat, as u ooit 'n statiese IP moet gee.

Stel die koppelvlak in wat DNS en DHCP (die LAN) kry deur die reël 'interface =' te verander tot iets soos 'interface = eth0). Let op dat ek dit spesifiek gesê het om NIE 'n DHCP IP -adres aan my draadlose netwerk toe te ken nie. Weereens, ek is van plan om die koppelvlak heeltemal uit te skakel, so dit was vir my sinvol.

Stap 7: DHCP en DNS (deel 3)

DHCP en DNS (deel 3)
DHCP en DNS (deel 3)

'N Afwyking van GK se instruksies vir hierdie laaste stap …

Toe ek op hierdie stadium my RPi begin herlaai, was die dnsmasq -proses nie aktief nie. Ek het 'n bietjie rondgekyk en ek het agtergekom dat my eth0- en eth1 -netwerk -koppelvlakke nie albei aktief was voordat dnsmasq begin is nie, so dnsmasq sou met die begin misluk. Ek moet 'n sleutelbord en muis aan die RPi koppel en dnsmasq handmatig herlaai. Dit is nie ideaal met 'n koplose opstelling nie. Ek het 'n klomp plasings gelees wat gesê het dat ek verskillende instellings moet verander (bv. Bind-koppelvlak uitskakel) en ander dinge. Niks daarvan het gewerk nie. Uiteindelik het ek besluit om eenvoudig 'n dopskrif te skryf wat elke 2 minute sal loop en die status van dnsmasq te kontroleer. As dit nie werk nie, begin dit. Ek neem aan dat hierdie situasie nie vir my uniek is nie. Hier is wat u moet doen:

Maak die volgende kode in 'n lêer genaamd 'dns_masq_keepalive.sh' op u RPi.

#!/bin/bash

# Lêer: dns_masq_keepalive.sh # Augustus 2019 # Gebruik dit saam met crontab -e (*/2 * * * * /etc/dns_masq_keepalive.sh) om seker te maak dat dnsmasq loop. Die diens sal homself stop as # al die koppelvlakke wat in dhcpcd.conf genoem word, nie op is voordat dit begin nie. Dit los die probleem op. # Hierdie volgende reël gee alle aktiewe werkgeleenthede terug met die woord 'dnsmasq' daarin. Moet dus nie 'dnsmasq' in die naam van hierdie # lêer insluit nie, anders sal dit elke keer terugkeer en sal u nooit weer begin nie. dns_running = $ (ps -e | grep dnsmasq) echo $ dns_running as [-z "$ dns_running"] dan #echo Geen DNSMasq sudo /etc/init.d/dnsmasq herlaai #else #echo DNSMasq Running fi

Knip en plak dit indien nodig. Wat u ook al doen, moenie 'dnsmasq' in die naam insluit nie. Die script soek na die woord 'dnsmasq', en as die script dit in die naam het, neem dit aan dat die diens werk. Hernoem ook die lêer sodat dit eindig met '.sh'. Intructables laat my nie toe om 'n '.sh'-lêer op te laai nie-dit is goed. Die oorblywende instruksies neem aan dat die lêer bestaan op: /etc/dns_masq_keepalive.sh.

Tweedens, stel toestemmings vir die lêer in sodat dit uitgevoer kan word:

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

Nou sal ons die crontab -stelsel gebruik om die program elke 2 minute van elke dag te laat loop. Begin crontab:

$ sudo crontab -e

Dit moet u vra om te wysig met behulp van vi of iets anders. Enige sal werk. Sodra u dit kan wysig, voeg die volgende by aan die einde van die lêer:

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

Geen spasies in die '*/2' nie, maar spasies tussen die sterretjies. Stoor en hou op. Dit moet u vertel dat die werk geskeduleer is, of iets dergeliks.

Stap 8: Die firewall

Die Firewall
Die Firewall

Die volgende pynlike proses is die firewall (GK se stap 11). Raspbian gebruik die bekende iptables -stelsel. GK se blog bied drie lêers om u daar te help… firewall.simple, firewall.advanced en firewall.flows. Alle respek vir GK, maar maak dit maklik vir jouself en gaan net met firewall.simple. Ek het baie tyd daaraan bestee om die iptables -stelsel en -reëls uit te vind. Ek is bly dat ek dit gedoen het, maar dit was pynlik. Ek gee u dus die aangehegte twee lêers om u te help … firewall.simple en firewall.clear. Kopieer albei hierdie lêers na u /etc -gids en verander die regte om dit uitvoerbaar te maak:

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

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

Sluit 'n lessenaar/skootrekenaar aan by u RPi eth0 -poort voordat u enige firewallreëls instel en bevestig dat dit 'n IP -adres kry en dat DNS werk. Die maklikste manier om dit te doen is om 'n generiese webwerf en dan 'n bekende IP -adres te ping. Ping ook u RPi- en ISP -router. As u resultate kry, is dit goed en die netwerkprobleme wat u ondervind, is waarskynlik die gevolg van firewall -probleme.

Die eerste lêer wat verskaf is, het oorspronklik begin as GK se firewall.simple -lêer (dankie, weereens, GK!). Ek het 'n klomp veranderings aangebring om dit vir hierdie stelsel te laat werk. Dit moet ten minste HTTP, HTTPS, DNS, DHCP, ping, interne SSH, interne VNC en plex moontlik maak. Plex het moontlik nie al die oop poorte vir elke moontlike toestel nie, maar daar is 'n klomp poste om dit reg te stel. Bo -aan die lêer is waardes wat u na u netwerkopstelling moet verander.

Die tweede lêer, firewall.clear, is bedoel om gebruik te word tydens die toets van u firewall -reëls. As u 'sudo /etc/firewall.clear' gebruik, word alle firewallreëls uitgevee en moet die stelsel volledig aan die internet gekoppel wees. As u dus nie 'n netwerkdiens (soos dns) kan laat werk met die firewall nie. Eenvoudige reëls, maar dit begin werk nadat u firewall.clear uitgevoer het, weet u dat u 'n reëlprobleem het. Dit sal eintlik net van kritieke belang wees as u u reëls toets.

Ons het die firewall -reëls daar, ons moet dit laat begin wanneer die RPi begin. Om dit te doen, sal ons die /etc/rc.local lêer wysig:

$ sudo vi /etc/rc.local

Voeg die volgende by die einde van die lêer:

eggo “Laai iptables -reëls”/etc/firewall.simple >>/dev/null

As u besluit om die opsporingstelsel vir snorkindringing by te voeg, moet u hierdie lêer weer wysig. Stoor dit nou en begin weer.

$ sudo herlaai

Stap 9: Syslog

Syslog
Syslog

Twee treë oor…

Dit is 'n maklike een. As u nog steeds daar is en saam met GK se blog volg, is dit stap 12. U moet presies doen wat hy sê met betrekking tot die syslog -lêer. Hier is die verkorte stappe:

Hou syslog -data ter waarde van 2 maande …

$ sudo vi /etc/logrotate.conf

Ons moet dit vertel om 'een week' as 'n meting te gebruik en dan 12 daarvan te hou. U benodig die volgende twee reëls in hierdie lêer. Ek glo dat u die bestaande lyne moet verander.

weeklikse draai 12

Spaar dit.

Stap 10: Inbraakopsporing met snork

Inbraakopsporing met snork
Inbraakopsporing met snork

Die laaste ding wat GK instel, is die snortstelsel. Ek beveel dit ook aan. U kan sy reëls volg, en ek gaan dit nie almal hier kopieer nie, met 'n paar klein wysigings. Sy instruksies is vir die ArchLinux distro. Hier is die paar veranderinge vir die Raspbian -verspreiding wat ons hier gebruik. Die res van die instruksies werk goed.

Gebruik eers nie sudo pacman -S snort om snort af te laai en te installeer nie. Doen die volgende:

$ sudo apt-get install snort

Tweedens, u kan nie snork met sudo snort -versie verifieer nie. Verifieer die installasie met:

$ sudo snork -V

Ten slotte, om dit by die begin te laat werk, moet u nie die rc.conf -lêer verander nie, maar die rc.local -lêer (weer) wysig …

$ sudo vi /etc/rc.local

Voeg die volgende reëls by die einde van die lêer:

eggo "Laai snork"

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

Nou, herlaai, en dit moet alles op 'n magiese manier werk.

$ sudo herlaai

Stap 11: Geniet dit

Geniet dit
Geniet dit

Dit behoort dit te wees!

In die eerste plek kan ek Guillaume Kaddouch nie genoeg bedank nie! Hy het dit geïnspireer.

Tweedens, as u nog nie u sleutelbord, video en muis ontkoppel het nie, kan u dit doen. Gebruik SSH en VNC om weer in te kom, indien nodig.

Ten slotte is dit moontlik nie 100% perfek nie. Plaas asseblief terug met veranderinge/voorstelle/aanbevelings. My doelwit is dat dit die begin van bespreking is en baie mense geniet!

Dankie !!

PS … Die foto is 'n RPi4 in 'n FLIRC-aluminiumkas met 'n ou Intel-waaier wat effens aangepas is en aan die bokant vasgemaak is. Daar is ook termiese pasta onder die waaier, net as u wonder. Ek het iets soortgelyks op die internet gevind (https://www.reddit.com/r/raspberry_pi/comments/9bdgrr/it_turns_out_putting_a_heatsink_on_the_flirc_case/) en besluit om dit self te probeer.

Stap 12: Wysigingslys

Aangesien hierdie instruksies verander word, sal ek dit hier dokumenteer. As u 'n probleem ondervind, kyk hier of u ou instruksies of lêers gekry het.

25 September 2019:

  • Vaste DHCP -reëls in firewall.simple
  • Vaste DHCP -reeks in instruksies (lêers was korrek)
  • Het vaste IP-opdragte by DHCP-instruksies gevoeg

13 Oktober 2019

  • Veelvuldige tikfoute reggestel
  • Ek het 'n tweede pi geskep sodat ek 'n toets -SD -kaart sou kon ruil, indien nodig

Aanbeveel: