A dashboard for tracking IoT activity + IDS. Please read the paper for further information: http://ieeexplore.ieee.org/document/7945418/
- Raspberry Pi (RPi)
- Raspbian OS on the RPi.
- RJ45 ethernet Cable
- A set of IoT devices
To use the RPi as a gateway, connect using two NICs (network infterfaces).
- Ethernet to get connectivity to the internet.
- Wi-Fi to make an ad-hoc hotspot LAN which IoT devices will connect to.
We have used hostapd to configure RPi as an access point and setup dnsmasq (to be used as a DHCP service) to assign IP addresses to the IoT devices connected via the ad-hoc hotspot LAN.
We have used Snort IDS to identify various types of connections, attacks and log them in files. We used Django to make a frontend web UI, which acts as an interface to for tweaking Snort configuration and parse the logs (mentioned earlier) in order to display the status of the IoT device, and the connections that it makes in realtime etc. Please read the interface logic in Django views (https://github.com/naman/ThingsBoard/blob/master/thingsboard/app/views.py).
- Install Raspbian OS (https://www.raspberrypi.org/downloads/raspbian/).
- Setup a Wifi LAN ad-hoc hotspot network (https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/).
- Make sure some of the IoT devices are connected successfully (get an IP address) and are able to connect to the internet through the RPi (acting as a gateway).
- Setup Snort IDS on Raspberry Pi with the proper configuration and rules to monitor/log IoT traffic. (https://www.snort.org/downloads)
- For the dashboard on RPi,
4.1 Clone the repo. 4.2 Install python and pip using https://pip.pypa.io/en/latest/installing.html. 4.3 Install all the package requirements usingpip install -r requirements.txt
. 4.4 The project uses SQLite3 as the database. Create a database and initial migrations usingpython manage.py syncdb && python manage.py migrate
. 4.5 Collect all the static files by runningpython manage.py collectstatic
. 4.6 Run the server usingpython manage.py runserver
. Open http://localhost:8080 to view the dashboard.