Giter Site home page Giter Site logo

ics-checklist's Introduction

ICS Security Checklist

A web app used to inventorize computing devices in an industrial network, list their potential vulnerabilities and provide recommendations for solving them.

Usage

  1. Select a device used in the industrial network
  2. Check all enabled services on this device
  3. Add more devices if necessary
  4. Get a summary of all associated warnings per device and ways to fix them

Dependencies

Front-end

  • HTML5
  • JavaScript
  • jQuery
  • Bootstrap

Back-end

  • MySQL server (InnoDB)
  • Node.js
  • Express

Installation

The following is a guide on how to install the ICS Checklist application on a Debian 8.x 64bit server. Similar instructions apply to different operating systems.

Database

A standalone MySQL installation can be used, though it is recommended to install phpMyAdmin along with it for easy management.

  1. Install a LAMP stack:
sudo apt-get install apache2 mysql-server php5 php-pear php5-mysql -y
  1. Secure the MySQL installation:
sudo mysql_secure_installation
  1. Install PHPMyAdmin:
sudo apt-get install phpmyadmin
  1. Open the Apache configuration file:
sudo nano /etc/apache2/apache2.conf
  1. Add the following line:
Include /etc/phpmyadmin/apache.conf
  1. Restart the server:
sudo service apache2 restart
  1. You can now manage the database from your browser on the following address:
localhost/phpmyadmin
  1. Login using your MySQL credentials.

  2. Create a new database called ics_checklist and collation utf8_bin.

  3. Download the latest version of the database from the GitHub repository

  4. Select the ics-checklist database and go to Import. Select the downloaded .sql file and import it. You should now see several newly created tables.

Web server

  1. Install Node.js:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - && sudo apt-get install -y nodejs

Application

  1. Clone the repository:
git clone https://github.com/alexvanmaele/ics-checklist.git && cd ics-checklist
  1. Install all dependencies:
npm install
  1. Configure database access by editing following file:
nano routes/api.js
  1. Change the block starting with the mysql.createConnection function according to your MySQL database credentials.

  2. Start the Node.js application:

npm start
  1. Start using the application from your browser on:
localhost:3000

Persistent service

Should the web server encounter an error, it will log the exception to the console and exit by default. In order to automatically restart the server after a crash, you can use the forever npm package.

  1. Install forever:
sudo npm install forever -g
  1. Go to your project directory:
cd ics-checklist/
  1. Run the web server using forever:
forever start ./bin/www

You can now access the server like you would normally. Everything will be logged to the forever logs, which you can access using:

forever logs

Should the server crash, forever will restart it.

ics-checklist's People

Contributors

alexvanmaele avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.