Πίνακας περιεχομένων:

Raspberry Pi4 Firewall: 12 βήματα
Raspberry Pi4 Firewall: 12 βήματα

Βίντεο: Raspberry Pi4 Firewall: 12 βήματα

Βίντεο: Raspberry Pi4 Firewall: 12 βήματα
Βίντεο: Engineer Explains: Raspberry Pi is FINALLY Dead, Here's Why 2024, Ιούνιος
Anonim
Τείχος προστασίας Raspberry Pi4
Τείχος προστασίας Raspberry Pi4

Με το νέο Raspbery Pi 4 (RPi4) που μόλις κυκλοφόρησε, αποφάσισα να κάνω τον εαυτό μου τείχος προστασίας οικιακής χρήσης. Αφού μπήκα στο Διαδίκτυο, βρήκα ένα υπέροχο άρθρο για το θέμα του Guillaume Kaddouch (https://networkfilter.blogspot.com/2012/08/building-your-piwall-gateway-firewall.html). Το άρθρο είναι εκπληκτικό και πρέπει να το διαβάσετε πριν προχωρήσετε-θα διευκολύνει τη διαδικασία που περιγράφεται εδώ. Το θέμα είναι ότι το άρθρο γράφτηκε το 2012 και βασίζεται στη διανομή ArchLinux. Τίποτα ενάντια στο ArchLinux, αλλά ήθελα να το κάνω χρησιμοποιώντας την πιο κοινή κατασκευή Raspbian. Το RPi4 μπορεί να χειριστεί τις απαιτήσεις επεξεργασίας. Ευχαριστώ λοιπόν, Γκιγιόμ, για την έμπνευση !! Αυτό το διδακτικό θα αναφέρεται στην αρχική ανάρτηση του Guillaume ("GK" για συντομία), πιθανότατα θα θέλετε να έχετε και τις δύο σελίδες ανοιχτές στο πρόγραμμα περιήγησής σας.

Δύο βασικά πράγματα για το τείχος προστασίας μου:

  • Έχω την ενσωματωμένη υποδοχή Ethernet (eth0) που πηγαίνει στο LAN
  • Ο δρομολογητής ISP βρίσκεται στον προσαρμογέα TRENDnet (eth1)
  • Έχω απενεργοποιήσει ενεργά τον ασύρματο προσαρμογέα (wlan0)
  • Αυτό δεν είναι εγγυημένο ότι θα σας οδηγήσει 100% εκεί… ελπίζω τουλάχιστον 99%:) οπότε δώστε σχόλια/σχόλια
  • Αυτό είναι το πρώτο μου διδακτικό. Λυπούμαστε για οτιδήποτε δεν ακολουθεί τις κατάλληλες προδιαγραφές.

Τώρα, ας διασκεδάσουμε…

Προμήθειες

  • Raspberry Pi 4

    • Χρησιμοποίησα την έκδοση 4 GB, μη διστάσετε να δοκιμάσετε μια διαφορετική έκδοση
    • Θήκη (μου αρέσει το FLIRC, αλλά αυτή είναι η κλήση σας)
    • Προσαρμογέας ρεύματος
  • Κάρτα MicroSD, 32 GB ή μεγαλύτερη (χρησιμοποίησα κάρτα 64 GB)
  • TRENDnet USB3.0 Gigabit Ethernet Dongle (Μοντέλο: TU3-ETG)
  • Ένα ζεύγος καλωδίων δικτύου RJ45
  • Πληκτρολόγιο USB και ποντίκι
  • Καλώδιο Micro-HDMI σε HDMI (συνδεδεμένο σε οθόνη HDMI)

Αυτό το πληκτρολόγιο, το βίντεο και το ποντίκι μπορούν να αφαιρεθούν μόλις μπορέσετε να ενεργοποιήσετε τα SSH και VNC.

Βήμα 1: Αρχική ρύθμιση RPi

Αρχική ρύθμιση RPi
Αρχική ρύθμιση RPi

Το πρώτο πράγμα που πρέπει να κάνετε είναι να ενεργοποιήσετε το RPi4 ως νέο σύστημα. Κατεβάστε και εγκαταστήστε την πλήρη διανομή Raspbian (Raspbian Buster με επιτραπέζιο και προτεινόμενο λογισμικό). Θα χρειαστεί να κάνετε επανεκκίνηση μερικές φορές, ώστε να επεκταθεί και να επωφεληθεί από την πλήρη κάρτα MicroSD.

Καθώς εκκινεί, θα πρέπει να απαντήσετε σε ερωτήσεις σχετικά με την τοποθεσία, το δίκτυο, το πληκτρολόγιο και το ποντίκι. Συνδεθείτε σε ένα δίκτυο και αφήστε το να ενημερωθεί.

Επιτρέψτε επίσης να επιβεβαιώσετε ότι όλα ενημερώθηκαν σωστά και λάβετε μερικά βοηθητικά προγράμματα που μπορεί να σας βοηθήσουν να διορθώσετε σφάλματα αργότερα:

$ sudo apt-get ενημέρωση

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

ΔΕΝ εγκατέστησα το vim, ούτε το βήμα 8 του GK (διαμόρφωση vim). Μόλις χρησιμοποίησα τον επεξεργαστή vi, καθώς έτσι κι αλλιώς έχει τις περισσότερες από αυτές τις δυνατότητες. Αυτό εξοικονόμησε επίσης λίγο χρόνο και προσπάθεια.

Μόλις ολοκληρωθεί αυτό, ας ρυθμίσουμε το RPi4 έτσι ώστε να μπορούμε να συνδέσουμε θερμά μια οθόνη. Ο στόχος μου ήταν να το κάνω να λειτουργήσει ακέφαλο, αλλά αν χρειαστεί να συνδέσω μια οθόνη, θα αναγνωριζόταν.

$ sudo vi /boot/config.txt

Σε αυτό το αρχείο:

χωρίς σχόλιο (αφαιρέστε το μπροστινό #-σύμβολο): hdmi_force_hotplug = 1

χωρίς σχόλιο: hdmi_drive = 2

προαιρετικά, προσθέστε: enable_hdmi_sound

Βήμα 2: Δικτύωση

Δικτύωση
Δικτύωση
Δικτύωση
Δικτύωση

Αν ακολουθείτε τον ιστότοπο του GK, αυτό είναι το βήμα 3. Αλλά λάβετε υπόψη ότι δεν ακολούθησα πολλά από τα πρώτα του βήματα με ακριβή σειρά.

Όταν ξεκίνησα για πρώτη φορά, συνέδεσα το RPi απευθείας στον δρομολογητή ISP ("δίπλα στο υπάρχον δίκτυό μου"). Αυτό μου επέτρεψε να παίξω με τη διαμόρφωση χωρίς να επηρεάσω το δίκτυο. Συνδέστε το RPi4 ενσωματωμένο RJ45 στο δρομολογητή σας (ή ασύρματο, αν θέλετε). Με το Raspbian, ο ευκολότερος τρόπος για να γίνει αυτό είναι η χρήση του GUI. Από την επιφάνεια εργασίας, κάντε κλικ στο εικονίδιο Raspberry> Preferences> Raspberry Pi Configuration. Βεβαιωθείτε ότι έχετε ενεργοποιήσει τα SSH και VNC. Αυτό θα εγκαταστήσει τον πελάτη διακομιστή Real-VNC. Διαπίστωσα ότι εάν προσπαθήσετε να συνδεθείτε με το πρόγραμμα -πελάτη Tight VNC, αυτό θα προσαρμοστεί και θα απαιτήσει κάποια πρόσθετη διαμόρφωση. Έτσι, σε αυτό το σημείο εγκαταστήστε το πρόγραμμα-πελάτη Real-VNC στην κύρια επιφάνεια εργασίας/φορητό υπολογιστή σας (όχι το RPi4).

Το SSH δεν θα λειτουργήσει εκτός πλαισίου (βήμα 7 του GK). Πρέπει να τροποποιήσουμε ορισμένες διαμορφώσεις. Αρχικά, ας τροποποιήσουμε το αρχείο διαμόρφωσης ssh. Εδώ είναι οι αλλαγές που έκανα. Λάβετε υπόψη ότι δεν μελέτησα τον αντίκτυπο κάθε αλλαγής εδώ. Έκανα αυτό που πρότεινε ο ιστότοπος του GK. Ορισμένες από αυτές τις αλλαγές ΔΕΝ απαιτούνται.

$ sudo vi/etc/ssh/sshd_config

Σε αυτό το αρχείο, αποσυνδέστε τις ακόλουθες γραμμές:

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

Αγνοήστε τους Rhosts ναι

PrintMotd noPrintLastLog yesTCPKeepAlive ναι

Και προσθέστε τις ακόλουθες γραμμές:

Πρωτόκολλο 2UsePrivilegeSeparation yesKeyRegenerationInterval 3600ServerKeyBits 768RSAΑυτόματοποίηση ναιRhostsRSAΑυτόματος αριθ.

Και τροποποιήστε τις ακόλουθες γραμμές:

Port 15507LoginGraceTime 60PermitRootΛογίνης αρ

Ας μιλήσουμε γρήγορα για την πρώτη τροποποίηση… θύρα 15507. Το SSH λειτουργεί κανονικά στη θύρα 22. Η GK το μετέφερε στο 15507-δεν ξέρω γιατί. Μπορείτε είτε να το τροποποιήσετε είτε όχι… Εάν επιλέξετε να το τροποποιήσετε, θα πρέπει να προσθέσετε "-p 15507" σε οποιαδήποτε εντολή SSH με την οποία προσπαθείτε να συνδεθείτε. Εάν αποφασίσετε να το παραλείψετε, προσέξτε τα άλλα μέρη που αναφέρεται το 15507 σε αυτές τις οδηγίες και αγνοήστε τα, ιδιαίτερα τους κανόνες του τείχους προστασίας!

Τέλος, για αυτό το βήμα, ας λάβουμε τη διεύθυνση IP του RPi4, ώστε να γνωρίζουμε σε τι πρέπει να συνδεθούμε:

$ ipconfig -a

Βρείτε την ενεργή σύνδεση δικτύου (πιθανότατα σε eth0 ή wlan0) και γράψτε αυτήν τη διεύθυνση IP. Τώρα έχετε ό, τι χρειάζεστε για να συνδεθείτε από απόσταση στο RPi4. Ας κάνουμε επανεκκίνηση πριν συνεχίσουμε:

$ sudo επανεκκίνηση

Βήμα 3: Ένας άλλος χρήστης

Άλλος Χρήστης
Άλλος Χρήστης

Είναι καλύτερο να μην χρησιμοποιήσετε το προεπιλεγμένο όνομα χρήστη RPi (pi) και σίγουρα θα πρέπει να αλλάξετε τον κωδικό πρόσβασης. Για να είστε ασφαλείς, αφήστε να προσθέσετε έναν άλλο λογαριασμό χρήστη που μπορείτε να χρησιμοποιήσετε για απομακρυσμένη σύνδεση και συνεχίστε (βήμα 6 του GK). Επιστρέφοντας στο RPi, μπορείτε να προσθέσετε έναν νέο χρήστη και να ορίσετε δικαιώματα για τον χρήστη στο SSH και να εκδώσετε την εντολή sudo:

$ sudo useradd -m -g χρήστες -G sudo, netdev -s /bin /bash [USERNAME]

$ sudo passwd [USERNAME]

Μη διστάσετε να αποσυνδεθείτε ή να επανεκκινήσετε και να χρησιμοποιήσετε αυτόν τον πρόσφατα δημιουργημένο λογαριασμό στο μέλλον.

Βήμα 4: Αρχείο Syctl

Αρχείο Syctl
Αρχείο Syctl

Το επόμενο βήμα είναι η τροποποίηση του αρχείου /etc/sysctl.conf (βήμα 9 του GK). Αυτό το αρχείο χρησιμοποιείται για την αλλαγή ορισμένων ρυθμίσεων πυρήνα. Θα κάνουμε ακριβώς αυτό που λέει η GK να κάνει. Ακολουθεί ένα απλοποιημένο σύνολο βημάτων.

$ sudo vi /etc/sysctl.conf

Σε αυτό το αρχείο, αποσυνδέστε τις ακόλουθες γραμμές:

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

Και προσθέστε τις ακόλουθες γραμμές:

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

Επανεκκινήστε την υπηρεσία με αυτές τις νέες ρυθμίσεις και επανεκκινήστε:

$ sudo sysctl -p

$ sudo επανεκκίνηση

Βήμα 5: DHCP & DNS (μέρος 1)

DHCP & DNS (μέρος 1)
DHCP & DNS (μέρος 1)

Για μένα, υπήρχαν δύο επώδυνα μέρη σε αυτήν τη διαδικασία … Ρύθμιση DHCP & DNS και ρύθμιση κανόνων τείχους προστασίας. Λοιπόν, εδώ πάμε με το πρώτο μέρος. Εάν παρακολουθείτε τον ιστότοπο της GK, είμαστε στο βήμα 10.

Για να το κάνετε αυτό, θα χρειαστείτε μερικές πληροφορίες από τον δρομολογητή ISP (ή το τρέχον τείχος προστασίας):

  • Η εσωτερική διεύθυνση IP του δρομολογητή
  • Μια διεύθυνση IP που μπορείτε να χρησιμοποιήσετε για τη διεπαφή του RPi4 στο δρομολογητή
  • Οι IP για διακομιστή ονομάτων (ή δύο)
  • Το όνομα διεπαφής για τη σύνδεση LAN (π.χ., eth0 ή eth1)
  • Το όνομα διεπαφής για τη σύνδεση ISP (π.χ., ό, τι δεν χρησιμοποιήσατε για το LAN)

Μπορεί επίσης να χρειαστεί να τροποποιήσετε τις ρυθμίσεις του δρομολογητή για να δώσετε στο RPi4 μια στατική διεύθυνση IP (κουκκίδα 2, παραπάνω). Τουλάχιστον, αυτό έκανα.

Αρχικά, ας τροποποιήσουμε το αρχείο dhcpcd.conf…

$ sudo vi /etc/dhcpcd.conf

Αποσυνδέστε αυτές τις γραμμές:

επίμονη επιλογή quick_commitoption domain_name_servers, domain_name, domain_search, host_nameoption interface_mtu

Για κάθε διεπαφή δικτύου, πρέπει να ορίσετε τις λεπτομέρειες του δικτύου. Θα πρέπει να μοιάζουν κάπως έτσι:

# Στατική για τη διεπαφή με τον ISP

διεπαφή 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 #Μην σχολιάσετε αυτήν την ενότητα εάν θέλετε να επιβάλλετε μια διεύθυνση IP σε μια συσκευή. Το όνομα μετά τον «κεντρικό υπολογιστή» #δεν έχει νόημα για το σύστημα. Εισαγάγετε τη διεύθυνση MAC της συσκευής καθώς και την επιθυμητή διεύθυνση #IP. Βεβαιωθείτε ότι είναι εκτός του εύρους dhcp. Επαναλάβετε όπως είναι απαραίτητο. #host [ΤΙΠΟΤΑ] { # hardware ethernet xx: xx: xx: xx: xx: xx; # σταθερή διεύθυνση 10.210.212.250; #}

Βεβαιωθείτε ότι χρησιμοποιείτε αριθμούς που σας ταιριάζουν. Οι παραπάνω IP είναι για το δίκτυό μου, με εξαίρεση τους διακομιστές ονομάτων που είναι Google. Παρατηρήστε ότι έθεσα επίσης τη μέτρηση για τον ISP στο 100 ώστε να επιβληθεί να είναι η προεπιλεγμένη πρώτη δοκιμή για κυκλοφορία δικτύου. Επίσης, δεν έκανα τίποτα συγκεκριμένα στον ασύρματο προσαρμογέα μου (wlan0). Σκοπεύω να απενεργοποιήσω εντελώς αυτήν τη διεπαφή, οπότε ήταν λογικό για μένα.

Επίσης, εάν θέλετε να επιβάλλετε μια διεύθυνση IP σε μια συσκευή (όπως ένα NAS), χρησιμοποιήστε αυτήν την κάτω ενότητα. Δώστε στον οικοδεσπότη ένα όνομα που έχει νόημα για εσάς, αλλά να ξέρετε ότι δεν χρησιμοποιείται ποτέ από τίποτα. Μην ξεχνάτε τα ερωτηματικά.

Βήμα 6: DHCP & DNS (μέρος 2)

DHCP & DNS (μέρος 2)
DHCP & DNS (μέρος 2)

Το επόμενο βήμα είναι η τροποποίηση του αρχείου dnsmasq.conf…

$ sudo vi /etc/dnsmasq.conf

Πρέπει να σχολιάσουμε μερικές γραμμές και να επεξεργαστούμε μερικές γραμμές. Θα χρειαστεί επίσης να αντιγράψετε μερικές ρυθμίσεις από το αρχείο dhcpcd.conf. Δύο άλλες ερωτήσεις που πρέπει να απαντήσετε μόνοι σας είναι:

Το εσωτερικό LAN (π.χ. eth0) χρειάζεται DHCP και DNS; Τι εύρος DHCP θέλετε για το LAN σας και πόσο καιρό πρέπει να είναι κάθε μίσθωση;

Ξεκινήστε σχολιάζοντας μερικές γραμμές:

ψεύτικο-ιδιωτικό-dhcp-interface = wlan0bind-interfacesdhcp-name-match = set: wpad-ignore, wpaddhcp-ignore-names = tag: wpad-ignore

Ορίστε το διακομιστή ονομάτων σας. Αναζητήστε τη γραμμή που ξεκινά "διακομιστής =" και κάντε την ως "διακομιστής = 8.8.8.8".

Ορίστε το εύρος DHCP. Υπάρχουν πολλοί τρόποι για να γίνει αυτό. Επέλεξα να παράσχω τις δύο τελικές διευθύνσεις IP, τη μάσκα και το μήκος της μίσθωσης. Το εύρος μου ήταν 10.210.212.20-10.210.212.240, με μάσκα δικτύου 255.255.255.0, και χρόνο μίσθωσης 12 ώρες. Σας συνιστώ να αφήσετε ορισμένες IP στο επάνω και στο κάτω μέρος της εμβέλειάς σας σε περίπτωση που χρειαστεί ποτέ να δώσετε κάτι στατικό IP.

Ορίστε τη διεπαφή που θα λάβει DNS και DHCP (το LAN) τροποποιώντας τη γραμμή 'interface =' ώστε να είναι κάτι σαν 'interface = eth0). Παρατηρήστε ότι του είπα συγκεκριμένα να ΜΗΝ αντιστοιχίσει μια διεύθυνση IP DHCP στο ασύρματο δίκτυό μου. Και πάλι, σκοπεύω να απενεργοποιήσω εντελώς αυτήν τη διεπαφή, οπότε ήταν λογικό για μένα.

Βήμα 7: DHCP & DNS (μέρος 3)

DHCP & DNS (μέρος 3)
DHCP & DNS (μέρος 3)

Μια εκτροπή από τις οδηγίες της GK για αυτό το τελευταίο βήμα…

Όταν πήγα για επανεκκίνηση του RPi μου σε αυτό το σημείο, η διαδικασία dnsmasq δεν ήταν ενεργή. Λίγο σπρώχνοντας και διαπίστωσα ότι οι διεπαφές δικτύου eth0 και eth1 δεν ήταν και οι δύο ενεργές πριν από την έναρξη του dnsmasq, οπότε το dnsmasq θα αποτύχει στην αρχή. Θα πρέπει να συνδέσω ένα πληκτρολόγιο και ένα ποντίκι στο RPi και να κάνω επανεκκίνηση του dnsmasq με μη αυτόματο τρόπο. Αυτό δεν είναι ιδανικό με μια ρύθμιση χωρίς κεφάλι. Διάβασα μια δέσμη αναρτήσεων που έλεγαν ότι κάνουν διάφορες αλλαγές στις ρυθμίσεις (π.χ., απενεργοποίηση σύνδεσης-διασύνδεσης) και άλλα πράγματα. Τίποτα από αυτά δεν λειτούργησε. Στο τέλος, αποφάσισα να γράψω απλά ένα σενάριο κελύφους που θα εκτελείται κάθε 2 λεπτά και θα ελέγχει την κατάσταση του dnsmasq. Εάν δεν ήταν σε λειτουργία, ξεκινήστε το. Υποθέτω ότι αυτή η κατάσταση δεν είναι μοναδική για μένα. Λοιπόν, εδώ είναι αυτό που πρέπει να κάνετε:

Μετατρέψτε τον ακόλουθο κώδικα σε ένα αρχείο που ονομάζεται 'dns_masq_keepalive.sh' στο RPi σας.

#!/bin/bash

# Αρχείο: dns_masq_keepalive.sh # Αύγουστος 2019 # Χρησιμοποιήστε αυτό με το crontab -e (*/2 * * * * /etc/dns_masq_keepalive.sh) για να βεβαιωθείτε ότι εκτελείται το dnsmasq. Η υπηρεσία θα σταματήσει μόνη της εάν # όλες οι διεπαφές που αναφέρονται στο dhcpcd.conf δεν είναι ενεργοποιημένες πριν ξεκινήσει. Αυτό διορθώνει το πρόβλημα. # Αυτή η επόμενη γραμμή θα επιστρέψει όλες τις ενεργές εργασίες με τη λέξη "dnsmasq" σε αυτές. Έτσι, μην συμπεριλάβετε το 'dnsmasq' στο όνομα αυτού του αρχείου #, διαφορετικά θα το επιστρέφει κάθε φορά και δεν θα έχετε ποτέ επανεκκίνηση. dns_running = $ (ps -e | grep dnsmasq) echo $ dns_running if [-z "$ dns_running"] then #echo No DNSMasq sudo /etc/init.d/dnsmasq επανεκκίνηση #else #echo DNSMasq Running fi

Κόψτε και επικολλήστε το αν χρειαστεί. Ό, τι κι αν κάνετε, μην συμπεριλάβετε το 'dnsmasq' στο όνομα. Το σενάριο αναζητά τη λέξη "dnsmasq" και εάν το σενάριο το έχει στο όνομα, θα υποθέσει ότι η υπηρεσία εκτελείται. Επίσης, μετονομάστε το αρχείο ώστε να τελειώσει με '.sh'. Οι άφθαρτοι δεν θα με αφήσουν να ανεβάσω ένα αρχείο.sh-το οποίο είναι καλό. Οι υπόλοιπες οδηγίες υποθέτουν ότι το αρχείο υπάρχει στη διεύθυνση: /etc/dns_masq_keepalive.sh.

Δεύτερον, ορίστε δικαιώματα στο αρχείο ώστε να μπορεί να εκτελεστεί:

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

Τώρα θα χρησιμοποιήσουμε το σύστημα crontab για να κάνουμε το πρόγραμμα να λειτουργεί κάθε 2 λεπτά κάθε μέρα. Έναρξη crontab:

$ sudo crontab -e

Θα πρέπει να σας ζητήσει να επεξεργαστείτε χρησιμοποιώντας vi ή κάτι άλλο. Οποιοσδήποτε θα λειτουργήσει. Μόλις μπορέσετε να το επεξεργαστείτε, προσθέστε τα ακόλουθα στο τέλος του αρχείου:

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

Δεν υπάρχουν κενά στο '*/2', αλλά κενά μεταξύ των αστερίσκων. Αποθήκευση και έξοδος. Θα πρέπει να σας πει ότι η δουλειά είναι προγραμματισμένη ή κάτι τέτοιο.

Βήμα 8: Το τείχος προστασίας

Το τείχος προστασίας
Το τείχος προστασίας

Η επόμενη επώδυνη διαδικασία είναι το τείχος προστασίας (βήμα 11 του GK). Το Raspbian χρησιμοποιεί το γνωστό σύστημα iptables. Το ιστολόγιο του GK παρέχει τρία αρχεία για να σας βοηθήσει να φτάσετε εκεί … firewall.simple, firewall.advanced και firewall.flows. Με σεβασμό στο GK, αλλά διευκολύνετε τον εαυτό σας και απλώς χρησιμοποιήστε το τείχος προστασίας. Απλό. Πέρασα πολύ χρόνο προσπαθώντας να καταλάβω το σύστημα και τους κανόνες iptables. Χαίρομαι που το έκανα, αλλά ήταν επώδυνο. Έτσι, σας δίνω τα συνημμένα δύο αρχεία για να σας βοηθήσω… firewall.simple και firewall.clear. Αντιγράψτε και τα δύο αυτά αρχεία στο φάκελό σας /etc και αλλάξτε τα δικαιώματα για να τα κάνετε εκτελέσιμα:

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

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

Πριν ρυθμίσετε κανόνες τείχους προστασίας, συνδέστε έναν επιτραπέζιο/φορητό υπολογιστή στη θύρα RPi eth0 και επιβεβαιώστε ότι λαμβάνει μια διεύθυνση IP και ότι λειτουργεί DNS. Ο ευκολότερος τρόπος για να γίνει αυτό είναι να δοκιμάσετε να κάνετε ping σε μια γενική τοποθεσία και στη συνέχεια σε μια γνωστή διεύθυνση IP. Επίσης, κάντε ping στο δρομολογητή RPi και ISP. Εάν έχετε αποτελέσματα, τότε όλα είναι καλά και τυχόν προβλήματα δικτύου που αντιμετωπίζετε τώρα πιθανότατα θα είναι αποτέλεσμα ζητημάτων τείχους προστασίας.

Το πρώτο αρχείο που παρέχεται αρχικά ξεκίνησε ως απλό αρχείο τείχους προστασίας του GK (ευχαριστώ, πάλι, GK!). Έκανα πολλές αλλαγές για να λειτουργήσει σε αυτό το σύστημα. Θα πρέπει να επιτρέπει τουλάχιστον HTTP, HTTPS, DNS, DHCP, ping, εσωτερικό SSH, εσωτερικό VNC και plex. Το Plex μπορεί να μην έχει όλες τις ανοιχτές θύρες για κάθε πιθανή συσκευή, αλλά υπάρχουν πολλές αναρτήσεις για να το διορθώσετε. Στο επάνω μέρος του αρχείου υπάρχουν τιμές που θα χρειαστεί να αλλάξετε στη διαμόρφωση του δικτύου σας.

Το δεύτερο αρχείο, firewall.clear, προορίζεται να χρησιμοποιηθεί κατά τη δοκιμή των κανόνων του τείχους προστασίας. Όταν εκτελείτε το 'sudo /etc/firewall.clear' όλοι οι κανόνες τείχους προστασίας θα διαγραφούν και το σύστημα θα πρέπει να είναι πλήρως συνδεδεμένο στο Διαδίκτυο. Έτσι, εάν δεν είστε σε θέση να κάνετε μια υπηρεσία δικτύου (όπως το dns) να λειτουργεί με το τείχος προστασίας. Εφαρμόζονται απλοί κανόνες, αλλά αρχίζει να λειτουργεί αφού εκτελέσετε το τείχος προστασίας. Clear, γνωρίζετε ότι έχετε πρόβλημα κανόνα. Αυτό θα είναι πραγματικά κρίσιμο μόνο όταν δοκιμάζετε τους κανόνες σας.

Έτσι, έχουμε τους κανόνες του τείχους προστασίας εκεί, πρέπει να τους κάνουμε να ξεκινούν όταν ξεκινά το RPi. Για να το κάνουμε αυτό, θα επεξεργαστούμε το αρχείο /etc/rc.local:

$ sudo vi /etc/rc.local

Μόλις μπείτε μέσα προσθέστε τα παρακάτω στο τέλος του αρχείου:

ηχώ "Φόρτωση κανόνων iptables" /etc/firewall.simple >>/dev/null

Εάν επιλέξετε να προσθέσετε το σύστημα ανίχνευσης εισβολής snort, θα πρέπει να επεξεργαστείτε ξανά αυτό το αρχείο. Προς το παρόν απλά αποθηκεύστε το και επανεκκινήστε.

$ sudo επανεκκίνηση

Βήμα 9: Syslog

Syslog
Syslog

Δύο βήματα απομένουν…

Αυτό είναι ένα εύκολο. Εάν είστε ακόμα εκεί και ακολουθείτε το blog του GK, αυτό είναι το βήμα 12. Πρέπει να κάνετε ακριβώς αυτό που λέει σχετικά με το αρχείο syslog. Ακολουθούν τα συντομευμένα βήματα:

Διατηρήστε δεδομένα syslog αξίας 2 μηνών…

$ sudo vi /etc/logrotate.conf

Πρέπει να του πούμε να χρησιμοποιήσει τη «μία εβδομάδα» ως μέτρηση και στη συνέχεια να κρατήσει 12 από αυτές. Χρειάζεστε τις ακόλουθες δύο γραμμές σε αυτό το αρχείο. Πιστεύω ότι θα χρειαστεί να αλλάξετε τις υπάρχουσες γραμμές.

εβδομαδιαία περιστροφή 12

Σώσε το.

Βήμα 10: Ανίχνευση εισβολής με Snort

Ανίχνευση εισβολής με Snort
Ανίχνευση εισβολής με Snort

Το τελευταίο πράγμα που διαμορφώνει το GK είναι το σύστημα snort. Το προτείνω και αυτό. Μπορείτε να ακολουθήσετε τους κανόνες του και δεν πρόκειται να τους αντιγράψω όλους εδώ, με μερικές μικρές τροποποιήσεις. Οι οδηγίες του είναι για τη διανομή ArchLinux. Εδώ είναι οι λίγες αλλαγές για τη διανομή Raspbian που χρησιμοποιούμε εδώ. Οι υπόλοιπες οδηγίες λειτουργούν άψογα.

Πρώτον, μην χρησιμοποιείτε sudo pacman -S snort για λήψη και εγκατάσταση snort. Κάντε τα εξής:

$ sudo apt-get install snort

Δεύτερον, δεν μπορείτε να επαληθεύσετε το snort με sudo snort -version. Επαληθεύστε την εγκατάσταση με:

$ sudo snort -V

Τέλος, για να το εκτελέσετε κατά την εκκίνηση, μην τροποποιήσετε το αρχείο rc.conf, επεξεργαστείτε το αρχείο rc.local (ξανά)…

$ sudo vi /etc/rc.local

Προσθέστε τις ακόλουθες γραμμές στο τέλος του αρχείου:

ηχώ "Loading snort"

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

Τώρα, επανεκκινήστε και θα πρέπει όλα να λειτουργήσουν μαγικά.

$ sudo επανεκκίνηση

Βήμα 11: Απολαύστε

Απολαμβάνω
Απολαμβάνω

Αυτό θα έπρεπε να είναι!

Πρώτα απ 'όλα, δεν μπορώ να ευχαριστήσω αρκετά τον Guillaume Kaddouch! Το ενέπνευσε αυτό.

Δεύτερον, εάν δεν έχετε αποσυνδέσει ήδη το πληκτρολόγιο, το βίντεο και το ποντίκι σας, μπορείτε. Χρησιμοποιήστε SSH και VNC για να επιστρέψετε, όταν χρειάζεται.

Τέλος, αυτό μπορεί να μην είναι 100% τέλειο. Παρακαλώ δημοσιεύστε ξανά με αλλαγές/προτάσεις/προτάσεις. Ο στόχος μου θα ήταν αυτό να είναι η αρχή της συζήτησης και πολλοί άνθρωποι να το απολαύσουν!

Ευχαριστώ!!

ΥΓ… Η εικόνα είναι ένα RPi4 μέσα σε μια θήκη αλουμινίου FLIRC με έναν παλιό ανεμιστήρα Intel ελαφρώς τροποποιημένο και φερμουάρ στο επάνω μέρος. Υπάρχει επίσης θερμική πάστα κάτω από τον ανεμιστήρα, για την περίπτωση που αναρωτιέστε. Βρήκα κάτι παρόμοιο στο Διαδίκτυο (https://www.reddit.com/r/raspberry_pi/comments/9bdgrr/it_turns_out_putting_a_heatsink_on_the_flirc_case/) και αποφάσισα να το δοκιμάσω μόνος μου.

Βήμα 12: Changelog

Καθώς γίνονται αλλαγές σε αυτό το διδακτικό, θα τις τεκμηριώσω εδώ. Σε περίπτωση που έχετε πρόβλημα, ελέγξτε εδώ για να δείτε αν έχετε πάρει παλιές οδηγίες ή αρχεία.

25 Σεπτεμβρίου 2019:

  • Διορθώθηκαν κανόνες DHCP στο firewall.simple
  • Διορθώθηκε το εύρος DHCP στις οδηγίες (τα αρχεία ήταν σωστά)
  • Προστέθηκαν αντιστοιχίσεις σταθερού IP στις οδηγίες DHCP

13 Οκτωβρίου 2019

  • Διορθώθηκαν πολλαπλά λάθη
  • Δημιούργησε ένα δεύτερο pi για να έχω μια δοκιμαστική κάρτα SD για αλλαγή, αν χρειαστεί

Συνιστάται: