Skip to content

Installing reNgine on Linux/Windows/Mac

This document aims to provide detailed instructions on setting up and running the reNgine.

Attention

If you wish to run reNgine on any debian Linux (like Ubuntu), there is a installation script that will ease your docker installation and does required setup for you. Consider using it. Quick Installation You can skip prerequisites if you are running Ubuntu

This document is further divided into 3 parts:

  1. Prerequisites

  2. reNgine Installation

Prerequisites

reNgine uses several scripts and tools, those tools or scripts rely on various tools to be installed like Go, Python, etc, and to avoid any dependency issues, we decided to use Docker. Using Docker will not only ease the dependency issues but will also ease the installation steps. As a penetration tester, you need not focus on solving the dependencies, installing required tools, etc. With few installation steps, you should be good to run reNgine.

reNgine requires docker, docker-compose and make to be installed before you begin installing rengine.

Docker

Docker provides very good documentation on how to install docker based on your Operating System. You can follow the documentation here.

Docker installation on Ubuntu/Linux Distributions

Warning

The installation steps have been directly taken from Docker Guide with no modification.

  • Update the apt package index and install the below packages
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  • Add Docker official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Use the following commands to setup the stable repository
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  • Finally install Docker Engine
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
  • Test the Docker by running docker command on your console/terminal.

Docker installation on Windows

Docker requires Docker Desktop to be installed on your Windows OS. Installing Docker Desktop is as easy as double clicking the InstallDocker.msi installer, downloaded from here.

Docker installation on Mac OS

Docker requires Docker Desktop to be installed on your Mac OS. Follow the instruction from Docker hub to install Docker on Mac OS.

Docker installation on Windows WSL

Nick Janetakis has a well written blog and a Video guide on how to install Docker on Windows Subsystem Linux. Please follow the video/blog guide on how to install Docker on WSL.

Docker Compose

If you're running Docker Desktop you can skip installing docker-compose as docker-compose comes along with Docker Desktop. This applies for both Windows and Mac OS users.

If you're using Linux distributions or WSL, you will still need to install docker-compose and the installation steps are similar.

Installing docker-compose on Linux systems

  • Download the latest stable version of docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • Apply executable permission
sudo chmod +x /usr/local/bin/docker-compose
  • Create a symbolic link
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  • Verify your installation by running
docker-compose --version

Info

If curl is not working, there are alternate installation steps as well. You can use pip or install as a container. Follow the alternate installation steps.

make

make installation on Linux Distributions

Install the latest version of make using

sudo apt install make

Although it is optional, build-essential package can also be installed which contains make utility.

sudo apt install build-essential

All prerequisites are now satisfied.

Let's begin by cloning reNgine.

Installation

Clone reNgine

git clone https://github.com/yogeshojha/rengine && cd rengine

dotenv file

Edit the dotenv file using nano .env or vi .env or vim .env.

The sample .env file can be found here.

#
# General
#
COMPOSE_PROJECT_NAME=rengine

#
# SSL specific configuration
#
AUTHORITY_NAME=reNgine
AUTHORITY_PASSWORD=nSrmNkwT
COMPANY=reNgine
DOMAIN_NAME=recon.example.com
COUNTRY_CODE=US
STATE=Georgia
CITY=Atlanta

#
# Database configurations
#
POSTGRES_DB=rengine
POSTGRES_USER=rengine
POSTGRES_PASSWORD=hE2a5@K&9nEY1fzgA6X
POSTGRES_PORT=5432
POSTGRES_HOST=db

#
# Celery CONCURRENCY Autoscaling
# The number of CONCURRENCY defines how many scans will run in parallel
# Please always keep minimum of 5
#
MIN_CONCURRENCY=5
MAX_CONCURRENCY=30

.env Explained

  • COMPOSE_PROJECT_NAME: This will help reNgine name docker containers as rengine_web_1, rengine_celery_1 etc. (Making changes is Optional)

  • AUTHORITY_NAME: SSL Authority Name

  • AUTHORITY_PASSWORD: SSL Authority Password
  • COMPANY: Company Name to generate SSL to
  • DOMAIN_NAME: Domain where reNgine is going to be installed
  • COUNTRY_CODE, STATE, CITY: SSL Speciffc

  • POSTGRES_DB: DB name for Postgres (Making changes is Optional)

  • POSTGRES_USER: Postgres Username for DB auth purpose (Making changes is Optional)
  • POSTGRES_PASSWORD: Postgres Password for DB auth purpose (Please change the default Postgres Password)
  • POSTGRES_PORT: Postgres Port (Making changes is Optional)
  • POSTGRES_HOST: Postgres HOST (Making changes is Optional)

  • MIN_CONCURRENCY: Minimum number of Concurrency for Celery.

  • MAX_CONCURRENCY: Maximum number of Concurrency for Celery. This determines how many maximum number of scans to run in parallel.

Determining CONCURRENCY Values

Here is the ideal value for MIN_CONCURRENCY and MAX_CONCURRENCY depending on the number of RAM your machine has:

  • 4GB: MAX_CONCURRENCY=10
  • 8GB: MAX_CONCURRENCY=30
  • 16GB: MAX_CONCURRENCY=50

This is just an ideal value which developers have tested and tried out and works! But feel free to play around with the values.

Maximum number of scans is determined by various factors, your network bandwith, RAM, number of CPUs available. etc

Generating SSL Certificates

reNgine runs on https unless otherwise used for development purpose. Using https is recommended. To generate the certificates you can use

sudo make certs

Please note, while running any make command, you must be inside the rengine/ directory.

Build reNgine

To build the reNgine, use the following command

sudo make build

The build process is a lengthy process and expected to take some time.

Thanks to Baptiste MOINE for sending the PR that made build process so much simpler.

Run reNgine

Once the build process is successful, we're good to run reNgine. This can be done using below command

sudo make up

reNgine can now be accessed from https://127.0.0.1 or if you're on the VPS https://your_vps_ip_address

Registering an account

You will need to create a username and password in order to login to the reNgine. To register reNgine, please run the following command

sudo make username

You will now be prompted with some personal details(optional), username and password. We highly recommend that you set a strong password for reNgine.

You may now login to the reNgine web portal using the username and password that you just provided.

Checking logs

If you need to observe the logs, it can be done so by running the commmand

sudo make logs

Note

If you encounter any issues while setup or scan, we advice you to raise an issue in Github and attach the log. While raising any new issues on Github, it is also adviced that you to look for any open issues on Github as well.

Stopping reNgine

If you wish to stop the reNgine, it can be done so by using the command

sudo make stop

Restarting reNgine

reNgine can be restarted using the command

sudo make restart

Removing all reNgine Data

If you wish to delete all your recon data, it can be done using

Danger

This is a irreversible process and once pruned, you may never get back your recon data. Use with caution.

sudo make prune