Att säkra IoT program som bygger på Intel Galileo och Raspberry PI
Att hålla dig uppdaterad med säkerhet vid utveckling av webbapplikationer är nog svårt, men när du börjar att ge sig ut i världen av sakernas utveckling är det en helt ny match. Precis som förr i tiden när jag först började utveckla Facebook applikationer, stabil dokumentation för IoT byggsystem är få och långt mellan, och mycket av den information du hittar blir felaktiga eller ofullständiga. Detta utgör ett stort hot som nybörjare IoT utvecklare kommer att skapa otrygga system som äventyrar säkerhet och lämna gapande hål i system som skulle kunna ge tillgång till mycket privata data, och även kontroll över hem/business säkerhetssystem, anordningar och enheter.
För dem som följer mina artiklar eller känner mig, vet du att säkerhet är min primära oro när de utvecklar någon typ av system, webb, mobila specifika, IoT eller artificiell intelligens. Vissa människor bör vara leende nu som de minns samtal de har haft med mig om att försöka få mig att mjuka upp på min säkerhetsmetoder att göra livet lättare och mig point blank vägrar med ingen ånger. Om du markerar någon av de webbplatser/program som jag har byggt kommer du se att alla mina system skyddas mot de senaste kända hoten och att faktiskt min krypteringsmetoder har ett A + klassificering som är högre än var och en av Googles servrar enligt Qualys SSL rapporten som har utjämnat Googles säkerhet vid B klass.
(https://www.ssllabs.com/ssltest/analyze.html?d=https :// www.techbubble.eu)
(https://www.ssllabs.com/ssltest/analyze.html?d=https :// www.google.com)
Efter att ha sagt att det finns inte ett enda system eller nätverk som är uncrackable, som jag säger det inte att vara möjligt tills vi gå längre med kvantfysik och säkerhet är en pågående inlärningskurva, skulle ingen någonsin glo att deras system är uncrackable eftersom det skulle vara en lögn.
Även om jag stöder människor lära sig om teknik, och jag är fullt medveten om att det är en nödvändighet att många människor kommer att börja förverkliga under nästa år eller så, det oroar mig också att mikrokontrollanter och produkter för att utveckla applikationer på är enheter som Galileo-Intel och Raspberry PI så lätt erhålls genom och befordras till människor som har liten eller ingen erfarenhet av utveckling och säkerhet. Människor får verktyg som Wordpress som gör att människor med absolut ingen erfarenhet att publicera system på internet har gett mig en nervösa twitch under de senaste åren, och nu är jag nära en fullt utvecklad hjärtattack som jag läst om botch jobb av system som människor skapar med ingen vård för eller förståelse för att säkra systemen.
Ett sätt att jag har sett till att mitt system bo är lika säker som jag möjligtvis kan göra dem är genom tunga mängder av forskning, hjälp från två personer som har ganska mycket mentor mig under de senaste åren, och hålla min koder och metoder låst, men på grund av den massiva mängden risk att sakernas utveckling kan orsaka jag har beslutat att dokumentera några av grunderna i den minimal säkerhet som bör genomföras vid utveckling system på Intel Galileo och Raspberry PI utveckling styrelser.
SKYDDA INTERNET TILLGÄNGLIGT SYSTEM BYGGT PÅ INTEL GALILEO GEN 1:
Följande information kommer att hjälpa dig att säkra din internet tillgänglig Intel Galileo-systemet som baseras på en Linux OS.
1. säker din ROUTER: Denna del är ett absolut måste! Mycket till min motvilja tillhandahålls de flesta routrar utan någon av de säkerhetsfunktioner som aktiverad. Skydda din router är utanför räckvidden för denna artikel men du kan läsa en artikel som jag skrev förra året för mer info. (https://www.techbubble.info/blog/web/online-security/entry/Is-Your-Router-Secure)
2. ändra ROOTLÖSENORD: Den första etappen med någon ny enhet ska alltid vara att ändra standardlösenordet. Listan är lätt tillgänglig på internet som ger hackare default lösenord för ganska mycket varje typ av enhet och om du inte ändrar ditt lösenord till ett säkert lösenord någon kan enkelt komma åt din enhet om den är ansluten till internet. När du loggat in i Intel Galileo via SSH utfärda följande kommando från Kommandotolken:
passwd
Du kommer då att behöva ange ett lösenord på minst 5 tecken och informerade för att använda en kombination av versaler och gemener och siffror, du bör också använda symboler samt se till att ditt lösenord är så säker som möjligt. Ange ditt nya lösenord och en bekräftelse visas att lösenordet har ändrats.
3. regelbundet uppdatera din FIRMWARE: En annan viktig uppgift att genomföra regelbundet är att uppdatera din firmware. På följande länk hittar du några firmware updater programvara för din Intel Galileo som kan köras från Windows, Mac och Linux, använda det regelbundet för att uppdatera din styrelser firmware. (https://downloadcenter.intel.com/download/24748/Intel-Galileo-Firmware-and-Drivers-1-0-4)
4. regelbundet uppdatera ditt paket: Det är också viktigt att uppdatera och uppgradera ditt paket regelbundet. Från terminalen lämna ut den följande befallningen:
Opkg uppdatering (uppdaterar listan över tillgängliga paket)
Opkg uppgradering (uppgraderar alla tillgängliga paket)
5. ADD ett domännamn och SSL certifikat till din styrelse: För att säkerställa att data som skickas mellan din Intel Galileo och några anslutande webbtjänster är krypterad en viktig sak att göra är att lägga till SSL-kryptering på din förfrågan. Här kommer att ge dig grunderna i att fylla denna uppgift.
-Se till ditt lokala nätverk har en statisk IP, kommer du att kunna köpa en från din Internetleverantör, kan du använda tjänsten som no-ip.com men detta är inte att föredra.
-Se till att alla portar är stängda på din router med undantag för sådana som du behöver för dina applikationer.
-Köp ditt domännamn och installera det på en webbserver, jag får mina från NameCheap.com.
-Köpa ditt SSL-certifikat, jag får mina från NameCheap.com.
-Redigera zonfilen domäner om du vill inkludera en subdomän som använder en A-post för att peka på statisk IP på ditt nätverk.
-Ställ in din port framåt från routern till din Intel Galileo.
-Logga in till din Galileo via SSH och generera en RSA-nyckel och en CSR som används för att aktivera ditt SSL-certifikat.
Använd följande kommando för att generera RSA-nyckel:
openssl genrsa-ut ~/YOUR_CERT_FOLDER/YOUR_KEY_FILE.key 2048
Använda den följande befalla till generera din CSR:
openssl req-nytt - sha256-nyckel ~/YOUR_CERT_FOLDER/YOUR_KEY_FILE.key-ut ~/YOUR_CERT_FOLDER/YOUR_CSR_FILE.csr
Uppmanas du att några frågor i detta skede, komplett dem alla men se till att inte ange ett lösenord när du uppmanas, rättvis slå till gå in.
-Chef över till vart du köpt SSL-certifikatet från och aktivera din SSL cert med CSR du genererade på din Intel Galileo, när kontrollerat får du filerna SSL certifikat.
-Anslut till din Galileo användande SFTP, för detta jag alltid WinSCP på Windows, men du kan använda FileZilla eller FTP-klient som du väljer. Samband med att ladda upp din SSL cert filer till mappen certs och inkludera dem i din ansökan att säkerställa krypterad trafik till och från din Intel Galileo.
6. Stäng alla PORTAR utom sådana krävs för TILLÄMPNINGSPROGRAMMET: när du har din ansökan tillgängliga via internet och skyddad med SSL är det dags att kontrollera om IPTables är installerade. IPTables kan du ange vilka portar som är tillgängliga på din Intel Galileo genom att blockera dem alla och ger dig tillgång till endast portarna som du vitlista. IPTables har en hel del funktioner och metoder här är grunderna:
-Kontrollera att IPTables är installerat användande den följande befalla, om det är, visas ett meddelande som säger så, om det inte är det kommer att installeras:
Opkg installera iptables
-Om/en gång installerat kan du kontrollera din nuvarande configs genom att köra följande kommando:
iptables -L eller iptables -L - v
-Skapa en ny konfigurationsfil för IPTables och ändra koden till din smak. Detta kommer att blockera all trafik till din Galileo utom SSH och den angivna portar du vit lista. Skapa nya config filen skulle du utfärda följande kommando: (jag använder nano men du kan använda din favorite textredaktör)
nano /etc/iptables.firewall.rules
och sedan lägga till följande kod och ändra till din förkärlek:
<---kod START--->
* filter
# Tillåter all loopback (lo0) trafik och släppa all trafik till 127/8 som inte använder lo0
-A INPUT -i lo -j accepterar
-A INPUT -d 127.0.0.0/8 -j AVVISA
# Acceptera alla etablerade inkommande anslutningar
-A INPUT -m state--ange etablerat sig, ANKNYTANDE -j accepterar
# Tillåt all utgående trafik - du kan ändra detta för att endast tillåta vissa trafik
-En OUTPUT -j accepterar
# Tillåta HTTP- och HTTPS-anslutningar från någonstans (de normala portarna för webbplatser och SSL).
-A INPUT -p tcp--dport 80 -j accepterar
-A INPUT -p tcp--dport 443 -j accepterar
-A INPUT -p tcp--dport 8080 -j accepterar
# Tillåt SSH-anslutningar
#
# - Dport antalet skall vara den samma portnummer som du anger i sshd_config
#
-A INPUT -p tcp -m state--ange nya--dport 22 -j accepterar
# Tillåt ping
-A INPUT -p icmp -j accepterar
# Logga iptables förnekade samtal
-A -m gräns--limit 5/min - j Stock--log-prefix "iptables nekad:"--logga in-nivå 7
# Släpp alla andra inkommande - standard förneka om inte uttryckligen tillåts politik
-A INPUT -j tappar
-En framåt -j tappar
BEGÅ
<---kod slutet--->
-När du har ändrat och sparat din config-filen kan du sedan läsa brandväggsreglerna genom att utfärda kommandot:
iptables-återställa < /etc/iptables.firewall.rules
-Om du vill säkerställa att brandväggen är laddad varje och varje gång du startar upp din Intel Galileo du kommer att behöva skapa en ny fil i network adapter krokar:
nano /etc/network/if-pre-up.d/firewall
-gör den körbar:
chmod + x /etc/network/if-pre-up.d/firewall
-Skriv in följande kod:
<---kod START--->
#! / bin/sh
/sbin/iptables-Restore < /etc/iptables.firewall.rules
<---kod slutet--->
-Starta din Galileo och din brandvägg bör starta upp på Start varje gång nu.
Detta är bara det mest grundläggande för att få din internet åtkomliga Intel Galileo säkert och om du ska programmet system för IoT du bör 100% genomföra dessa metoder åtminstone eller riskera att bli träffad av blixten :D Stegen för att säkra ett system byggt på en Raspberry PI är mycket lik ovanstående muttern inkluderar att ta bort standardanvändaren och ersätta den med en annan sudo användare. Stegen för att göra det är följande:
1. SKAPA SUPER USER:
sudo useradd -m användarnamn -G sudo
2. ÄNDRA SUPER ANVÄNDAREN PASSERA:
sudo passwd användarnamn
3. KONTROLLERA SUDO PÅ TOPPEN FÖRBRUKAREN:
NÅGOT SUDO KOMMANDO
Ta bort standard SUPER USER (pi):
sudo deluser pi (endast ta bort användare)
sudo deluser-ta bort-hem pi (ta bort användare och användarens hemkatalog)
Jag hoppas människor hitta detta användbara, det var verkligen en hel del arbete att lista ut hur att göra allt detta så det skulle spara mycket tid så att du kan spendera mer tid med fokus på utveckling. Som jag nämnde detta inte är en be alla och avsluta alla guide, finns det mer säkerhetsaspekter att överväga men detta ska börja du på din väg.
Om denna artikel hjälpt dig snälla hjälp genom att dela den ursprungliga artikeln på min sida: