2014-2015 Beveiligingsmodule GIP 2014-2015. Niels Van Damme VTI-LOKEREN



Vergelijkbare documenten
Cursus Raspberry PI door: Mitchell Verbruggen

Les 4 Installeren Apache2 Php MySQL

Een database gebruiken

9. MYSQL. Daarin zien we het administratie paneel van mysql.

Gegevens uit een database tonen

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting

Drupal lokale installatie op Linux Mint 17.1 Cinnamon.

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

Project Embedded Linux Domaza. Elektronica-ICT. Dimitri Kozakiewiez Jonas Govaerts. Academiejaar

Raspberry pi snel start handleiding

USB Webserver installatie en gebruik

Xampp Web Development omgeving opzetten onder Windows.

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Chapter 4. eenvoudige webserver opzetten

Taak Apachiis. Inhoud

XAMPP Web Development omgeving opzetten onder Windows.

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

WORKSHOP ORANGE PI & PYTHON v september 2017

EmSE presentatie. Raspberry Pi: Mijn eerste hapjes

Raspberry Pi Plex server installeren

1 "log-file": "/var/log/pilight.log" 2 "log-file": "c:/pilight/pilight.log"

Taak Strict or Strong. Inhoud

Zonnepanelen Hoe krijg je de data op je website?

Test Joomla op je PC 1

Je eigen Mailserver. Evert Mouw StuVa Je eigen Mailserver 1 / 16

Installatie van WerkMeester

The OSI Reference Model

Gegevens. Cliënt met browser Server met Apache/IIS Databaseserver En PHP

Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Nespresso Raspberry Pi

Configureren en installeren OPENOB op Raspberry PI

Op de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet.

ISW Presents Debian Homeserver Workshop

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod:

Met 4 temperatuur meetingangen voor sensor DS18x20

consolewd op de raspberrypi installeren en gebruiken (versie )

Basis-theme. Manage Wiki > Look and Feel > Themes > Change or make a new theme > Make a New Theme >

Automatische Installatie op IIS server

MULTIFUNCTIONELE DIGITALE SYSTEMEN. Instellen en gebruiken van LDAP met Active Directory

Nederlandse versie. Inleiding. Inhoud van de verpakking. Specificaties. Aanvullende specificaties. BT200 - Sweex Bluetooth 2.0 Class II Adapter USB

WebUntis 2014 Instructies basisinstallatie

Aan de slag met DNS Jeroen van Herwaarden, Robbert-Jan van Nugteren en Yannick Geerlings

Met 32 ingangen potentiaal vrij Input 1 t/m Input 32

Howto make Exim work with Freesco 0.2.7

EM6250 Firmware update V030507

Linux Quickstart Cygwin via HTTP

Boutronic. MSSQL Express server voor Log functie. >> Installatie handleiding << 23 april 2014, versie 1.0d

Voor vragen: of mail naar

DR3_fons_les_ _11_13 1

Raspberry Pi HCC- Haaglanden Tim Woldring

Programmeren van de Raspberry Pi.

WebUntis 2014 Instructies basisinstallatie

De installatie en configuratie van een webserver

Raspberry Pi Webhosting Datacenter

Webrelais IPIO-32R-M-v8.0 Compacte modul met 32 Relais Outputs.

Installatie King Task Centre

Voor vragen: of mail naar

Contents Backup en herinstallatie... 2

HTML en CSS gevorderd

Raspberry Pi Interfacing.

Die vraag krijg ik regelmatig. De meest voorkomende situaties zijn deze:

WEBSITE-DESIGN CHRIS VERMAAS & FJODOR VAN SLOOTEN B

Linux Server Installatie

Installatiehandleiding AssuPortal met WampServer

Het opzetten van deze applicatie

Linux Quickstart Cygwin

Denit Backup instellen op een Linux server

Controleer voor aanvang van de installatie of alle benodigde onderdelen aanwezig zijn. In de doos dienen de volgende onderdelen aanwezig te zijn:

SenBox Handleiding. Versie: juli

Verbinden met FTP server

Samba installeren en configureren

De SAP Cloud Connector 2.0 maakt SAPUI5 ontwikkeling via de WEB-IDE mogelijk met data uit je eigen backend systeem.

Multi user Setup. Firebird database op een windows (server)

Installatie van sqlserver

Wat te doen na de aanschaf van:

VU POINT Camera Toevoegen

Remote Powercontrol for TCP/IP networks

Voeler ingang van de ilog recorder. Stop de temperatuurvoeler

Wat is een child-theme?

Fleet Pack Scan2FleetPack

Configureren van een VPN L2TP/IPSEC verbinding

Koppeling met een database

Instellen back up Microsoft SQL database Bronboek Professional

1 Auteursrecht en Copyright 1 2 Overzicht 3 3 Benodigd 3 4 IP adres instel mogelijkheden 3 5 Details om te weten 3. 6 IP adres instellen 5

Netwerkprinter Dell 1320C installeren op Ubuntu LTS - Lucid Lynx

Wijzigen Standaard Wachtwoord (Siemens 5400/5450/SE565)

Raspberry Pi The ultimate hobby computer. Bert Mengerink HCC Haaglanden Zoetermeer

owncloud Het alternatief tegen grote gluurders

Installatiegids Registratie Hardware specificaties

Taak Versleutelen en dan weer terug... 1

Om een ander voorbeeld aan te halen waar er wel een opsplitsing van toepassing is:

Standard Parts Installatie Solid Edge ST3

SuperOffice Systeemvereisten

GEBRUIKERS HANDLEIDING HOMEBRIDGE

Drupal lokale installatie op Windows 7.

Webrelais IPIO-4A8I-M

Installatie SQL: Server 2008R2

Transcriptie:

2014-2015 Beveiligingsmodule GIP 2014-2015 Niels Van Damme VTI-LOKEREN

Inhoud Voorwoord... 3 Doel... 4 Werking... 4 Benodigdheden... 4 Raspberry Pi... 5 Specificaties... 5 Programmeren... 5 HC-SR501... 6 Specificaties... 6 Aanpassingen... 6 Toepassingen... 6 Inwendig schema... 7 Onderkant module... 7 Meer info... 8 Python-code... 13 Flowchart... 13 Python... 14 PHP... 16 CSS... 18 Installeren van de Apache-server op de PI... 19 Wat is een apache server?... 19 Het installeren van de apache webserver op de Raspberry Pi... 19 De default-pagina veranderen... 19 Het beveiligen van de Apache webserver... 19 Database... 24 Wat is een database?... 24 Hoe installeer ik PHPMyAdmin?... 24 Mailserver... 27 Wat is SMTP?... 27 SMTP in python... 27 SMTP Command Reference... 27 Telnet... 28 Wat is een Telnet?... 28 Toepassingen van Telnet en het gebruik van poorten... 28 Algemeen besluit... 29

Bronnen... 30 Raspberry Pi... 30 HC-SR501... 30 Apache... 30 Mail... 30 Telnet... 30 Database... 30

Voorwoord In het zesde jaar secundair onderwijs Industriële ICT maken wij een geïntegreerde proef, ik heb dit jaar gekozen om een beveiligingsmodule te realiseren. Dit onderwerp koos ik omdat ik interesse heb voor het thema beveiliging en het mij beviel om daar zelf iets rond te doen. Ik wil graag mijn vakleerkrachten de heer Hoof, de heer Baert en de heer Van Crombrugge bedanken. Mijn medeleerlingen wil ik graag bedanken voor hun steun, ideeën en spontane hulp. Ook wil ik de school bedanken voor al het materiaal en het labo dat ze ter beschikking hebben gesteld. Niels Van Damme, juni 2015

Doel Het beveiligen van een plaats door middel van een bewegingssensor en een cameramodule die aangestuurd wordt door de Raspberry Pi. Werking Doormiddel van een bewegingssensor zal er beweging worden waargenomen. De meting zal aangestuurd worden vanuit een microcontroller. Als er beweging wordt waargenomen zal de microcontroller ook een camera aansturen, deze zal foto s opslaan op een webserver die draait op de Raspberry Pi. Benodigdheden - Raspberry Pi Cameramodule - Raspberry Pi model b - PIR sensor HC-SR501 - Python programma om de bewegingsmodule correct te gebruiken - Apache webserver draaiend op de Raspberry Pi - SQL-server (op PHPMyAdmin)

Raspberry Pi Specificaties Voltage CPU GPU Memory (RAM) Operating System B Pins Audio output Netwerk Adapter Afmetingen 5V d.m.v. MicroUSB of door de GPIO-header 700 MHz Low Power ARM1176JZFS Applications Processor Broadcom VideoCore IV @250MHz 512MB SDRAM Raspbian 26 GPIO pin 3.5mm jack // HDMI 10/100 Ethernet (8P8C) USB-adapter on the third port of the USB hub 85.60mm X 53.98mm Programmeren De standaardtaal om te programmeren op de Raspberry Pi is Python. Het is desondanks wel mogelijk om in elke taal te programmeren. Dit gaande van C, C++, Java, Er zijn verschillende programmeeromgevingen waarin gewerkt kan worden, voorbeelden hiervan zijn Geany, Leadpad,...

HC-SR501 Specificaties Product Type Operating Voltage Range Quiescent Current Level output Trigger Delay time Block time Angle Sensor Operation Temp. HC--SR501 Body Sensor Module 5-20VDC <50uA High 3.3 V /Low 0V L can not be repeated trigger/h can be repeated trigger(default repeated trigger) 5-300S( adjustable) Range (approximately.3sec -5Min) 2.5S(default)Can be made a range(0.xx to tens of seconds <110 cone angle -15-+70 degrees Aanpassingen Als je aan de afstandspotentiometer met de klok meedraait, dan vergroot je het bereik van de sensor (van 3 meter als minimum tot 7,7 meter als maximum). Als je aan de afstandspotentiometer met de klok meedraait, zal de delay groter worden (van 5s als minimum tot 300s als maximum). Toepassingen - Beveiligingsmodule : Camera laten aansturen Alarm in werking laten treden Eigenaar verwittigen - Lichten automatisch laten aangaan bij beweging

Inwendig schema Onderkant module

Meer info

Python-code Flowchart

Python #!/usr/bin/env python from os import listdir import RPi.GPIO as GPIO import time import picamera import smtplib import email import smtplib import mimetypes import email import email.mime.application from datetime import datetime import MySQLdb from PIL import Image GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.IN, GPIO.PUD_DOWN) sensor = 4 camera = picamera.picamera() Previous_State = False Current_State = False frame = 1 db = MySQLdb.connect(host = "localhost", user = "root", passwd = "Niels", db = "ImageStore") #cursor object maken, gaat je alle queries laten uitvoeren. cur = db.cursor() filepath = "/var/www/images/fotos/" filetype = "jpeg" time.sleep(5) print "ready" content = beweging ; mail = smtplib.smtp( smtp.gmail.com, 587) mail.ehlo() mail.starttls() mail.login( beveiligingsmodulegipniels@gmail.com, Niels123 )

while True: Previous_State = Current_State Current_State = GPIO.input(sensor) if Current_State!= Previous_State: print "Beweging!" time = datetime.now() filename ="%04d_%02d_%02d-%02d:%02d:%02d" % (time.year, time.month, time.day, time.hour, time.minute, time.second) + "." + filetype fullfilename = filepath + filename #print fullfilename camera.capture(fullfilename, format='jpeg', use_video_port=true) print "Captured %s" % fullfilename mail.sendmail( beveiligingsmodulegipniels@gmail.com, beveiligingsmodulegipniels@gmail.com, content) test = (fullfilename) cur.execute("insert INTO tbl_images (image)values (%s)", (fullfilename,)) #steek in tbl_images, in de row image met value string print "Auto Increment ID: %s" % cur.lastrowid mail.close

PHP <html > <head> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <table> <center> <h1>database</h1> <div id="" style="overflow-y:scroll; height:90%" > <?php $servername = "localhost"; $username = "root"; $password = "Niels"; $db = "ImageStore"; $db); $conn = new mysqli($servername, $username, $password, //check connection if($conn->connect_error) { die("connection Failed ". $conn->connect_error); } $sql = "SELECT * FROM tbl_images ORDER BY id DESC"; $result = $conn->query($sql); $count=mysqli_num_rows($result); if($result->num_rows > 0) //output data van elke row { if($result == FALSE) { die(mysqli_error()); } while($row = $result->fetch_assoc()) { //echo "id: ".$row["id"]; echo " "; if(isset($row["image"])) { $path = $row["image"]; } $str = ltrim($path,'/var/www'); $info = ltrim($path, '/var/www/images/fotos'); echo "<ul class='img-list'>"; echo "<li>"; echo "<a href='".$str."'> <img src= '".$str."' width=200 height=200> <span class='textcontent'><span>'".$info."'</span></span></a>"; echo ""; echo "</li>";

</body> </html> </div> </center> </table>?> echo '</ul>'; } } else { echo "0 results"; }

CSS body { background-image: url("images/bg.jpg"); } h1 { } span.text-content { background: rgba(0,0,0,0.5); color: white; cursor: pointer; display: table; height: 200; left:0; position: absolute; top:0; width: 200; opacity:0; } ul.img-list li:hover span.text-content { opacity: 1; } span.text-content span { display: table-cell; text-align: center; vertical-align: middle; } ul.img-list { list-style-type: none; margin:0; padding:0; text-align: center; float: left; } ul.img-list li { display: inline-block; height: 200; margin: 0 1em 1em 0; position: relative; width: 200; }

Installeren van de Apache-server op de PI Wat is een apache server? Een apache webserver is een webserver-applicatie. Een webserver-applicatie helpt om data te leveren die geraadpleegd kan worden door middel van het internet. Een Apache webserver wordt meestal vernoemd als een Apache server. Het is oorspronkelijk gebaseerd op een NCSA HTTPd server *. Het is een software veelal gebruikt op Unix-systemen. In dit geval is software van de apache is te vinden op de Raspberry Pi. Het installeren van de apache webserver op de Raspberry Pi Het installeren van de apache webserver op de Raspberry Pi is zeer eenvoudig, het enige wat je doet is het invoeren van volgend command in de LXTerminal. sudo apt-get install apache2 -y Bij het invoeren van dit command zal de Raspberry zelf alle nodige software downloaden en installeren op het systeem. Als alles correct is gegaan zal er een nu een html-bestand in de webfolder staan. Je kan dit html-bestand bekijken door in je webbrowser je eigen IP-adres in typen of gewoonweg http://localhost/, wat je ook naar dit bestand zal brengen. Je kan je eigen IP-adres vinden door in de LXTerminal volgend command in te voeren: hostname I. Wanneer je dit alles dus gedaan hebt zal je volgend scherm te zien krijgen. De default-pagina veranderen Je kan de standaardwebpagina natuurlijk ook veranderen, maar om dit te doen heb je toestemming nodig om dingen in dat bestand te veranderen. Maar het is dan natuurlijk slimmer om gewoon toestemming te krijgen om alles te veranderen in de gehele map. Dit krijg je door volgend command in te voeren in de terminal. sudo chown -X root: USERNAME(naam de Raspberry Pi)/var/www/ Wanneer je dit gedaan hebt, zal je alles kunnen veranderen naar behoren. Het beveiligen van de Apache webserver Om de website te beveiligen gaan we gebruik maken van de HTTP/Apache Authentication method. De eerste stap is het aanmaken van een index.php file in de admin map waarnaar mensen worden doorgewezen wanneer ze je site bezoeken.

De volgende stap is om een HTpaswoord te genereren dat zal geëncrypteerd zal worden. Je zal de mogelijkheid hebben om een paswoord in te voegen, maar wat je typt zal je niet te zien krijgen. Wees dus zeker van wat je typt.

Je zal nu te zien krijgen dat je paswoord bevestigd is. Dit zal bij jou niet Cixtor zijn, maar de naam van je Raspberry Pi. Je kan je paswoord geëncrypteerd zien door volgend command in te voeren in de terminal.

De volgende stap is het configureren van de HTAcces settings. Je gaat dit doen door een.htaccesfile te maken. In dit bestand moeten volgende regels tekst komen. De derde regel moet wel aangepast worden, want jouw doelmap is niet /home/cixtor, maar standaard /home/pi. Dit kan voor iedereen verschillen, dat hangt af van hoe je het zelf hebt ingesteld.

Nu gaan we kijken of onze AllowOverride op All staat, indien dit niet zo is moet je het veranderen. Dit is de laatste controle alvorens je site goed beveiligd is.

Database Wat is een database? Een database, ook wel een gegevensbank of een databank genoemd, is een digitaal opgeslagen archief. Programma s als MySQL en PHPMyAdmin maken het de gebruiker eenvoudig om te communiceren met de database. Dit betreft zowel het schrijven naar als het lezen van de database. In dit project gebruik ik PHPMyAdmin. Hoe installeer ik PHPMyAdmin? Voor je PHPMyAdmin kan installeren, moet je eerst een MySQL-server aanmaken op de Raspberry Pi. Dit gaat door volgend command in te voeren in de LXTerminal. apt-get install mysql-server mysql-client Je zal een root-paswoord moeten ingeven, onthoud dit paswoord goed, want je hebt het nodig om PHPMyAdmin te gebruiken. Het installeren van PHPMyAdmin op de Raspberry Pi is zeer eenvoudig, het enige wat je doet is het invoeren van volgend command in de LXTerminal. apt-get install phpmyadmin Wanneer de software aan het installeren is zal het systeem de vraag stellen welke webserver geïnstalleerd is. In dit geval is dat Apache2.

Je zal vervolgens dit te zien krijgen. Wanneer je op yes drukt, zal hij vragen naar het paswoord dat je heb ingevoerd bij het installeren van de MySQL-server. Vervolgens moet je een paswoord voor PHPMyAdmin ingeven, dit is vrij te kiezen. Nu is PHPMyAdmin geïnstalleerd. Je kan dit raadplegen via volgende link: http://your.raspberrypi.domain/phpmyadmin De volgende stap in dit proces is ervoor zorgen dat PHPMyAdmin kan werken met de Apache Webserver. Het configuratiebestand zal nu geopend worden in Leafpad. nano /etc/apache2/apache2.conf In dit bestand scrol je vervolgens helemaal naar beneden en voeg je volgende zin toe. Include /etc/phpmyadmin/apache.conf Sla het bestand op (ctrl + x en druk op y om te bevestigen). Herstart nu de Apache met volgend command.

/etc/init.d/apache2 restart

Mailserver Wat is SMTP? SMTP staat voor Simple Mail Transfer Protocol. SMTP is een deel van het TCP/IP protocol. Doormiddel van een store en forward systeem gaat SMTP je e-mail over het netwerk transporteren. SMTP werkt nauw samen met een MTA (Mail Transfer Agent) om je mail naar de correcte computer/inbox te sturen. SMTP zal je mail naar jouw computers MTA naar een MTA op een andere computer. SMTP kan enkel tekst verzenden. SMTP in python import smtplib sender = "user@gmail.com" receiver = ["user@gmail.com"] message = "Hello!" try: session = smptlib.smtp('smtp.gmail.com',587) session.ehlo() session.starttls() session.ehlo() session.login(sender,'password') session.sendmail(sender,receiver,message) session.quit() except SMTPException: print('error') SMTP Command Reference EHLO : De client zend deze command om zichzelf te identificeren bij de SMTP server en de sessie te starten. EHLO vertelt echter dat je gebruik wil maken van het Extended SMTP (ESMTP) protocol. QUIT : Dit command vraagt aan de server om te connectie te beeïndigen. Als de server antwoord met een 221 numerieke code, dan is de sessie gesloten. STARTTLS : E-mail server en clients die gebruik maken van het SMTP protocol communiceren normaal gezien met gewone tekst over het internet. Maar deze tekst kan eenvoudig bekeken en/of veranderd worden onderweg. Om de beveiliging te verbeteren gaan we het bericht encrypteren. Dit command zorgt ervoor dat het bericht geëncrypteerd zal worden. Het bericht zal geëncrypteerd blijven tot bij de ontvanger.

Telnet Wat is een Telnet? Telnet is een eenvoudig, op tekst gebaseerd programma waarmee u via internet een verbinding kunt maken met een andere computer. Als de eigenaar of beheerder van de andere computer u heeft gemachtigd om een verbinding met die computer te maken, kunt u via Telnet opdrachten invoeren waarmee u toegang krijgt tot programma's en services op de computer op afstand, net alsof u achter die computer zou zitten. Via Telnet kunt u toegang krijgen tot bijvoorbeeld e-mail, databases en bestanden. Toepassingen van Telnet en het gebruik van poorten Port 25: Het gebruiken van Telnet als een SMTP mailserver. (Unsecure TLS) Port 587: Het gebruiken van Telnet als een SMTP mailserver. (Secure TLS) Port 80: Communiceren met webpagina s van buitenaf. (HTTP) Port 995: binnenkomende Mail (POP) Server (heeft SSL nodig) Port 465: Uitgaande Mail (SMTP) Server (Heeft TLS nodig)

Algemeen besluit Voor deze geïntegreerde proef realiseerde ik gedurende het jaar een beveiligingsmodule door middel van een PIR sensor, een camera en een database. Bij het realiseren van mijn idee ben ik op meerdere problemen gestoten. Mijn originele idee is daardoor doorheen het proces redelijk sterk veranderd. Eerst en vooral ben ik afgestapt van het idee van een netwerkcamera, dit leek mij niet meer zo praktisch in het eindresultaat dat ik wou bereiken. Ik wou verder bouwen op een zo compact mogelijk toestel en daarin paste de netwerkcamera niet meer. Mijn originele idee was om de gehele toepassing in C te schrijven. Maar na veel opzoekingswerk besloot ik om het geheel toch in Python te schrijven. Deze taal ondersteunt namelijk meer modules ontwikkeld voor de Raspberry Pi. Het geheel is gemaakt uit hout, ik heb dit laten maken door Roel D Haese uit 6HT. Ik heb hem hier ook zeer dankbaar voor. Van het eindresultaat ben ik tevreden, ik heb een module die werkt en waarvan ze gepresenteerd kan worden. Ik vond dit een zeer leerrijk jaar, ik heb veel bijgeleerd omdat ik veel nieuwe dingen moest gebruiken, veel zelfstandig heb opgezocht. Ook het samenwerken en samen denken met de medeleerlingen en leerkrachten heeft mijn inzicht verhoogd.

Bronnen Raspberry Pi http://www.raspberry-projects.com/pi/pi-hardware/raspberry-pi-model-b/hardware-generalspecifications HC-SR501 http://www.mpja.com/download/31227sc.pdf Apache https://www.youtube.com/watch?v=pcrhgrcbisi https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md Mail http://blog.mailgun.com/25-465-587-what-port-should-i-use/ http://whatismyipaddress.com/smtp http://www.samlogic.net/articles/smtp-commands-reference.htm http://stackoverflow.com/questions/13115724/new-to-python-gmail-smtp-error http://www.yuki-onna.co.uk/email/smtp.html http://blog.mailgun.com/25-465-587-what-port-should-i-use/ Telnet http://windows.microsoft.com/nl-be/windows/telnet-faq#1tc=windows-7 http://nl.wikipedia.org/wiki/telnet Database http://www.raspipress.com/2012/09/tutorial-install-phpmyadmin-on-your-raspberry-pi/