Submission server/infrastructure for the SRS challenge at FIC https://fic.srs.epita.fr/
Go to file
nemunaire 5714e8f41b admin: start adding monitor 2019-01-23 02:25:19 +01:00
admin admin: start adding monitor 2019-01-23 02:25:19 +01:00
backend backend: use a new team field 'active', to avoid some team generation 2019-01-22 08:49:44 +01:00
configs configs: nginx-demo config support both SSL cert + http auth 2019-01-22 08:49:44 +01:00
dashboard dashboard: use server time to calculate event time 2019-01-23 02:25:19 +01:00
fickit-pkg fickit-pkg/syslinux: add grub2, as syslinux is crap 2019-01-22 08:49:44 +01:00
frontend frontend: add a label for hint file b2sum 2019-01-23 01:39:44 +01:00
libfic db: store file size as unsigned int 2019-01-22 08:49:44 +01:00
password_paper Update .gitignore 2019-01-21 03:08:06 +01:00
settings settings: new parameter to don't respect flag dependancies 2019-01-22 08:49:44 +01:00
udev udev: ready to FIC2019 2019-01-22 08:49:44 +01:00
.gitignore Update fickit 2019-01-21 09:58:35 +01:00
Dockerfile-admin admin: readd poppler in Dockerfile 2019-01-21 09:58:36 +01:00
Dockerfile-backend Add Dockerfiles and docker-compose 2018-05-11 15:03:10 +02:00
Dockerfile-dashboard infra: dusting 2019-01-21 03:08:05 +01:00
Dockerfile-frontend Update Dockerfiles 2018-12-08 20:35:36 +01:00
LICENSE Add LICENSE: chose MIT 2018-05-11 15:03:11 +02:00
README.md [Core] Updated the README for docker env build. 2018-05-17 17:01:07 +02:00
docker-compose.yml infra: dusting 2019-01-21 03:08:05 +01:00
fickit-backend.yml fickit: add helper script to simplify nsenter 2019-01-22 08:49:44 +01:00
fickit-boot.yml Update fickit 2019-01-21 09:58:35 +01:00
fickit-frontend.yml fickit: don't include routing things into frontend 2019-01-22 08:49:44 +01:00
fickit-prepare.yml fickit: install grub on disks instead of syslinux which cannot be used as both UEFI and BIOS bootloader 2019-01-22 08:49:44 +01:00
fickit-update.yml Update fickit 2019-01-21 09:58:35 +01:00
htdocs-admin admin: can give the static dir location 2017-11-25 15:01:01 +01:00
htdocs-dashboard dashboard: came back online 2018-12-08 20:35:36 +01:00
htdocs-frontend frontend: add link to frontend htdocs, like admin static pages 2017-11-25 15:01:01 +01:00

README.md

FIC Forensic CTF Platform

This is a CTF server for distributing and validating challenges. It is design to be robust, so it uses some uncommon technics like client certificate for authentication, lots of state of the art cryptographic methods and aims to be deployed in a DMZ network architecture.

Local developer setup

The importance of clone location

This is a monorepo, primarly intended for Go programming. If you want to be able to do programming stuff, you should take care of the path where you clone this repository, as it should be located inside your GOPATH:

git clone https://git.nemunai.re/fic/server.git $GOPATH/src/srs.epita.fr/fic-server

Using Docker

Use docker-compose build, then docker-compose up to launch the infrastructure.

After booting, you'll be able to reach the main interface at: http://localhost:8042/ and the admin one at: http://localhost:8081/.

Import folder

Local import folder

The following changes is only required if your are trying to change the local import folder ~/fic location.

Make the following changes inside this file docker-compose.yml:

23    volumes:
24 -     - ~/fic:/mnt/fic:ro
24 +     - <custom-path-to-import-folder>/fic:/mnt/fic:ro
Owncloud import folder

If your are trying to use the folder available with the Owncloud service, make the following changes inside this file docker-compose.yml:

29 -    command: --baseurl /admin/ -localimport /mnt/fic -localimportsymlink
29 +    command: --baseurl /admin/ -clouddav=https://owncloud.srs.epita.fr/remote.php/webdav/FIC%202019/ -clouduser <login_x> -cloudpass '<passwd>'

Manual builds

Running this project requires a web server (configuration is given for nginx), a database (currently supporting only MySQL), a go compiler for the revision 1.6 at least and a inotify-aware system.

  1. First, you'll need to retrieve the dependencies:

     go get -d srs.epita.fr/fic-server/admin
     go get -d srs.epita.fr/fic-server/backend
     go get -d srs.epita.fr/fic-server/frontend
    
  2. Then, build the three Go projects:

     go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-admin srs.epita.fr/fic-server/admin
     go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-backend srs.epita.fr/fic-server/backend
     go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-frontend srs.epita.fr/fic-server/frontend
    
  3. Before launching anything, you need to create a database:

     mysql -u root -p <<EOF
     CREATE DATABASE fic;
     CREATE USER fic@localhost IDENTIFIED BY 'fic';
     GRANT ALL ON fic.* TO fic@localhost;
     EOF
    

    By default, expected credentials for development purpose is fic, for both username, password and database name. If you want to use other credentials, define the corresponding environment variable: MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD and MYSQL_DATABASE. Those variables are the one used by the mysql docker image, so just link them together if you use containers.

  4. Launch it!

     ./fic-admin &
    

    After initializing the database, the server will listen on http://localhost:8081/: this is the administration part.

     ./fic-backend &
    

    This daemon generates static and team related files and then waits for new submissions (expected in submissions directory). It only watchs modifications on the file system, it has no web interface.

     ./fic-frontend &
    

    This last server exposes an API that gives time synchronization to clients and handle submission reception (but without treating them).

For the moment, a web server is mandatory to serve static files, look at the samples given in the configs/ directory.