= Docs on SwarmLab.io !
Apostolos rootApostolos@swarmlab.io
// Metadata:
:description: SwarmLab Labs
:keywords: iot, swarm, Linux, OS, Sec
:data-uri:
:toc: right
:toc-title: Πίνακας περιεχομένων
:toclevels: 4
:source-highlighter: highlight
:icons: font
:sectnums: 



{empty} +


.Lab docs
****
*Internet of Things*. Is as a networked interconnection of devices in everyday use that are often equippedwith ubiquitous mechanism.  

*Security*. Is a set of mechanisms to protect sensitive data from vulnerable attacks and to guaranteeconfidentiality, integrity and authenticity of data. 
****

:hardbreaks:

{empty} +
{empty}

:!hardbreaks:



== Prepare your development and test environment

=== Docker

==== http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html[Install docker^] 

[TIP]
====
*Docker* is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers.

Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels
====

==== http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html#_get_https_registry_vlabs_uniwa_gr5080v2_x509_certificate[Get swarmlab.io certificates^] 

=== LINUX
==== http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/installdual/install.adoc.html[Install dual^] 


:hardbreaks:

{empty} +
{empty} +
{empty}

:!hardbreaks:



== LINUX


=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/ls/ex-1_ls.adoc.html[An Introduction to Linux^] 

TIP: Absolute basics

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/ls/procfs.adoc.html[The proc filesystem^] 

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/ls/vim.adoc.html[VIM - A simple workflow example with the vim editor^] 

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/ls/array-1_ls.adoc.html[Bash - Associative array examples^] 

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/ls/heredocs_ls.adoc.html[Bash - Heredocs, Positional Parameters^] 


:hardbreaks:

{empty} +
{empty} +
{empty}

:!hardbreaks:




== Internet of things (IoT)


=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/IoT/Intro-IoT.adoc.html[Intro IoT^] 

TIP: How It Works, Apps, Swarm: The Five Principles of Swarm Intelligence


=== IoT swarm implementation

[TIP]
====
A swarm implementation that will allow communication between all of the members/nodes.

- https://git.swarmlab.io:3000/zeus/iot-swarm-example/src/branch/master[source code^]
- https://git.swarmlab.io:3000/zeus/iot-swarm-example/raw/branch/master/docs/README.adoc[info in adoc^]
- https://git.swarmlab.io:3000/zeus/iot-swarm-example/raw/branch/master/docs/README.adoc.pdf[info in pdf^]

====

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/IoT/SensorNode2Server.adoc.html[Create a mote with Raspberry Pi/Arduino^] 

[TIP]
====
The Raspberry Pi is a low-cost credit-card sized single-board computer. The Raspberry Pi was created in the UK by the Raspberry Pi Foundation. The Raspberry Pi Foundation’s goal is to "advance the education of adults and children, particularly in the field of computers, computer science and related subjects."
====

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/IoT/SensorNode.adoc.html[Sensor node/mote^] 

[TIP]
====
A sensor node, also known as a mote, is a node in a sensor network that is capable of performing some processing, gathering sensory information and communicating with other connected nodes in the network.
====




:hardbreaks:

{empty} +
{empty} +
{empty}

:!hardbreaks:





== Security

[INFO]
====

*Security* is defined as a set of mechanisms to protect sensitive data from vulnerable attacks and to guaranteeconfidentiality, integrity and authenticity of data. 

*Network security,* in a cloud environment *(IaaS, PaaS, and SaaS) OR Cloud of Things* consists of the security of the underlying *physical environment* and the *logical security* controls that are inherent in the service or available to be consumed as a service. 

- Physical environment security ensures access to the cloud service is adequately distributed, monitored, and protected by underlying physical resources. 

- Logical network security controls consists of link, protocol, and application layer services.  

In a *cloud environment*, a major part of network security is likely to be provided by virtual security devices and services, alongside traditional physical network devices. 

Typically, the inspection and control of network traffic do not pass through physical interfaces where classical control devices can analyze or block them. 

This is the reason why effective controls require the integration with the software layer - _network security architecture, security gateways (firewalls, WAF, SOA/API), Security Products (IDS/IPS, Sub Tier Firewall, Security Monitoring and Reporting, Denial of Service (DoS) protection/mitigation, and secure “base services” like DNSSEC and NTP_.
====


=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/sec.adoc.html[Create Swarmlab cluster^] 

TIP: This tutorial describes how to create and set up swarmlab clusters

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-1_iptables.adoc.html[Scan and network statistics^] 

TIP: This tutorial demonstrates some common *nmap* port scanning scenarios and explains the output. 

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-2_iptables.adoc.html[Network analysis^] 

TIP: *tcpdump* is a common packet analyzer that runs under the command line. It allows the user to display TCP/IP and other packets being transmitted or received over a network to which the computer is attached. Distributed under the BSD license, tcpdump is free software.


=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-3_iptables.adoc.html[Network Filter^] 

[TIP]
====
Netfilter offers various functions and operations for *packet filtering*, *network address* translation, and *port translation*, which provide the functionality required for *directing packets* through a network and *prohibiting packets* from reaching sensitive locations within a network.

*iptables* is a command line utility for configuring Linux kernel firewall implemented within the Netfilter project. The term ''iptables'' is also commonly used to refer to this kernel-level firewall. It can be configured directly with iptables, or by using one of the many

====


==== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-3a_iptables-flow-chart.adoc.html[Traversing of tables and chains^] 

[TIP]
====

When a packet first enters the firewall, it hits the hardware and then gets passed on to the proper device driver in the kernel.

Then the packet starts to *go through a series of steps in the kernel*, before it is either *sent to the correct application* (locally), or *forwarded to another host* - or whatever happens to i

====

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-4_iptables.adoc.html[Iptables with shorewall! - Three-Interface Firewall^] 

[TIP]
====
*Shorewall* is an open source firewall tool for Linux that builds *upon the Netfilter (iptables/ipchains)* system built into the Linux kernel, making it easier to manage more *complex configuration schemes* by providing a higher level of abstraction for describing rules using text files.
====

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-5_iptables.adoc.html[virtual private network (VPN)^] 

[TIP]
====
A *virtual private network (VPN)* extends a private network across a public network, and enables users to send and receive data across shared or public networks as if their computing devices were *directly connected to the private network*.
====

=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-6_iptables.adoc.html[SSH Tunneling^] 

[TIP]
====
*SSH Tunneling,* is the ability to use ssh to *create a bi-directional encrypted network connection* between machines over which data can be exchanged, typically TCP/IP.
====


== Cloud
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/cloud/Intro-Cloud.adoc.html[Cloud computing^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/cloud/Creaate-Swarm.adoc.html[Swarm architecture^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/course/architecture-microservice-swarmlab.adoc.html[Swarm architecture example^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/cloud/swarm-volumes-storage.adoc.html[Swarm Storage - INTRO^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/cloud/swarm-volumes-minio-howto.adoc.html[Swarm Storage - CONFIG^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/cloud/swarm-volumes-storage-howto.adoc.html[Swarm Storage - INSTALL^] 

== Git
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/git/intro.adoc.html[Intro^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/git/basics.adoc.html[Basics^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/git/history.adoc.html[History^] 
=== http://docs.swarmlab.io/SwarmLab-HowTos/labs/git/github.adoc.html[Account setup^] 

== http://docs.swarmlab.io/SwarmLab-HowTos/labs/faqs/faq.adoc.html[Frequently Asked Questions^] 

== How do I ask a good question?

[NOTE]
====
- Introduce the problem before you post any code

- Help others reproduce the problem

 In the body of your question, start by expanding on the summary you put in the title. 
 
 Explain how you encountered the problem you're trying to solve, and any difficulties that have prevented you from solving it yourself. 
 
 The first paragraph in your question is the second thing most readers will see, so make it as engaging and informative as possible.


Not all questions benefit from including code. But if your problem is with code you've written, you should include some. But don't just copy in your entire program! Not only is this likely to get you in trouble if you're posting your employer's code, it likely includes a lot of irrelevant details that readers will need to ignore when trying to reproduce the problem. Here are some guidelines:

- Include just enough code to allow others to reproduce the problem. For help with this, read How to create a Minimal, Complete, and Verifiable example.
- If it is possible to create a live example of the problem that you can link to (for example, on http://sqlfiddle.com/ or http://jsbin.com/) then do so - but also copy the code into the question itself. Not everyone can access external sites, and the links may break over time. Use Stack Snippets to make a live demo of inline JavaScript / HTML / CSS.
- *DO NOT post images of code*, data, error messages, etc. - copy or type the text into the question. Please reserve the use of images for diagrams or demonstrating rendering bugs, things that are impossible to describe accurately via text. For more information please see the Meta FAQ entry Why not upload images of code/errors when asking a question?

====



