server/fickit-frontend.yml

548 lines
19 KiB
YAML

kernel:
image: nemunaire/kernel:5.10.62-0b705d955f5e283f62583c4e227d64a7924c138f-amd64
cmdline: "console=ttyS0 console=tty0"
init:
- linuxkit/init:78fb57c7da07c4e43c3a37b27755581da087a3b6
- linuxkit/runc:bf1e0c61fb4678d6428d0aabbd80db5ea24e4d4d
- linuxkit/containerd:cc02c2af9c928c2faeccbe4edc78bd297ad91866
- linuxkit/ca-certificates:4df823737c9bf6a9564b736f1a19fd25d60e909a
- linuxkit/getty:ed32c71531f5998aa510847bb07bd847492d4101
- nemunaire/mdadm:3886edd37c79d5f8000e4f3c4bacaff1f6302aa3
onboot:
# - name: mod
# image: linuxkit/modprobe:v0.7
# command: ["/bin/sh", "-c", "modprobe r8169;"]
- name: sysctl
image: linuxkit/sysctl:02d2bd74509fd063857ceb4c4f502f09ee4f2e0a
binds:
- /etc/sysctl.d/01-fic.conf:/etc/sysctl.d/01-fic.conf:ro
# Filesystem
- name: swap
image: linuxkit/swap:0028aeae2741d28120e4d2c6efcc5af003eae395
command: ["/sbin/swapon", "/dev/md1"]
- name: dm-crypt
image: linuxkit/dm-crypt:4daf2010d088955b42ba50db813226e4b3f773cb
command: ["/usr/bin/crypto", "-l", "crypt_fic", "/dev/md0"]
- name: mount
image: linuxkit/mount:71c868267a4503f99e84fd7698717a3669d9dfdb
command: ["/usr/bin/mountie", "-device", "/dev/mapper/crypt_fic", "/var/lib/fic" ]
# Network
# - name: ntp
# image: linuxkit/openntpd:536e5947607c9e6a6771957c2ff817230cba0d3c
- name: nginx-ip-setup
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/sh", "-c", "ip a add 172.17.1.2/24 dev vethin-nginx; ip link set vethin-nginx up;" ]
net: new
runtime:
interfaces:
- name: vethin-nginx
add: veth
peer: veth-nginx
bindNS:
net: /run/netns/nginx
- name: frontal-ip-setup # without bonding
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/sh", "-c", "ip link set eth1 up; ip a add 172.23.42.1/24 dev eth1; ip a add 172.23.42.254/24 dev eth1; ip a add 163.5.55.58/32 dev eth1; ip link add link eth1 name internet type vlan id 2; ip link set internet up;" ]
net: /run/netns/nginx
runtime:
interfaces:
- name: eth1
# - name: eth2
# - name: eth3
# - name: eth4
# - name: frontal-ip-setup # with bonding
# image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
# command: ["/bin/sh", "-c", "ip link set dev bond-frontal type bond mode balance-alb; ip link set bond-frontal up; ifenslave bond-frontal eth1 eth2 eth3 eth4; ip a add 172.23.42.254/24 dev bond-frontal; ip a add 172.23.42.1/24 dev bond-frontal; ip a add 163.5.55.58/32 dev bond-frontal; ip link add link bond-frontal name internet type vlan id 2; ip link set internet up; sysctl -w net.ipv4.ip_forward=1;" ]
# net: /run/netns/nginx
# runtime:
# interfaces:
# - name: eth1
# - name: eth2
# - name: eth3
# - name: eth4
# - name: bond-frontal
# add: bond
- name: frontend-ip-setup
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/sh", "-c", "ip a add 172.17.1.3/24 dev vethin-frontend; ip link set vethin-frontend up;" ]
net: new
runtime:
interfaces:
- name: vethin-frontend
add: veth
peer: veth-frontend
bindNS:
net: /run/netns/fic-frontend
- name: sshd-ip-setup
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/sh", "-c", "ip a add 10.10.10.2/29 dev eth0; ip link set eth0 up;" ]
net: new
runtime:
interfaces:
- name: eth0
bindNS:
net: /run/netns/sshd
- name: bridge-setup
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/sh", "-c", "ip a add 172.17.1.1/24 dev br0; ip link set veth-nginx master br0; ip link set veth-frontend master br0; ip link set br0 up; ip link set veth-nginx up; ip link set veth-frontend up;" ]
runtime:
interfaces:
- name: br0
add: bridge
- name: firewall-frontal
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/bash", "-c", "/sbin/iptables-restore < /etc/iptables/rules-frontal.v4; /sbin/ip6tables-restore < /etc/iptables/rules.v6" ]
binds:
- /etc/iptables/rules-frontal.v4:/etc/iptables/rules-frontal.v4:ro
- /etc/iptables/rules.v6:/etc/iptables/rules.v6:ro
net: /run/netns/nginx
- name: firewall-sshd
image: linuxkit/ip:b98c32fab9c8997c5d05677af979f05dfcd8b3f1
command: ["/bin/bash", "-c", "/sbin/iptables-restore < /etc/iptables/rules-sshd.v4; /sbin/ip6tables-restore < /etc/iptables/rules.v6" ]
binds:
- /etc/iptables/rules-sshd.v4:/etc/iptables/rules-sshd.v4:ro
- /etc/iptables/rules.v6:/etc/iptables/rules.v6:ro
net: /run/netns/sshd
services:
# - name: getty
# image: linuxkit/getty:v0.7
# env:
# - INSECURE=true
# Enable acpi to shutdown on power events
- name: acpid
image: linuxkit/acpid:d2ddd88c7918466f875e7c5c3e527b51dfb0b0ea
- name: rngd
image: linuxkit/rngd:bdabfe138f05f7d48396d2f435af16f5a6ccaa45
- name: dhcpcd
image: linuxkit/dhcpcd:1033f340e2d42f86a60aab70752346f0045ea388
net: /run/netns/nginx
binds:
- /etc/dhcpcd.conf:/dhcpcd.conf:ro
- name: nginx
image: nginx:alpine
capabilities:
- CAP_NET_BIND_SERVICE
- CAP_CHOWN
- CAP_SETUID
- CAP_SETGID
- CAP_DAC_OVERRIDE
tmpfs:
- /var/cache
binds:
- /etc/hosts:/etc/hosts:ro
- /etc/resolv.conf:/etc/resolv.conf:ro
- /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro
- /etc/nginx/ssl/:/etc/nginx/ssl/:ro
- /etc/nginx/fic-auth.conf:/etc/nginx/fic-auth.conf:ro
- /www/htdocs-frontend:/srv/htdocs-frontend:ro
- /var/lib/fic/files:/srv/FILES:ro
- /var/lib/fic/pki:/srv/PKI:ro
- /var/lib/fic/settingsdist:/srv/SETTINGSDIST:ro
- /var/lib/fic/startingblock:/srv/startingblock:ro
- /var/lib/fic/teams:/srv/TEAMS:ro
net: /run/netns/nginx
pid: new
ipc: new
uts: new
runtime:
mkdir:
- /var/lib/fic/files
- /var/lib/fic/pki
- /var/lib/fic/startingblock
- /var/lib/fic/settingsdist
- /var/lib/fic/teams
- name: fic-frontend
image: nemunaire/fic-frontend:latest
command: ["/srv/frontend", "-bind=:8080", "-startedFile=/srv/startingblock/started"]
binds:
- /etc/hosts:/etc/hosts:ro
- /var/lib/fic/files:/srv/FILES:ro
- /var/lib/fic/settings:/srv/SETTINGS:ro
- /var/lib/fic/settingsdist:/srv/SETTINGSDIST
- /var/lib/fic/startingblock:/srv/startingblock
- /var/lib/fic/submissions:/srv/submissions
- /var/lib/fic/teams:/srv/TEAMS:ro
net: /run/netns/fic-frontend
runtime:
mkdir:
- /var/lib/fic/files
- /var/lib/fic/settings
- /var/lib/fic/settingsdist
- /var/lib/fic/startingblock
- /var/lib/fic/submissions
- /var/lib/fic/teams
- name: sshd
image: nemunaire/rsync:5d1f678641de2197041f4bc4c745e7748bedab02
capabilities:
- all
binds:
- /etc/hosts:/etc/hosts:ro
- /var/lib/fic/ssh:/etc/ssh:ro
- /root/.ssh/id_synchro.pub:/root/.ssh/authorized_keys:ro
- /var/lib/fic/files:/srv/FILES
- /var/lib/fic/pki:/srv/PKI
- /var/lib/fic/settings:/srv/SETTINGS
- /var/lib/fic/submissions:/srv/submissions
- /var/lib/fic/teams:/srv/TEAMS
- /var/log:/var/log:ro
net: /run/netns/sshd
runtime:
mkdir:
- /var/lib/fic/files
- /var/lib/fic/pki
- /var/lib/fic/settings
- /var/lib/fic/ssh
- /var/lib/fic/submissions
- /var/lib/fic/teams
- name: dhcp-server
image: joebiellik/dhcpd
binds:
- /etc/dhcp/dhcpd.conf:/etc/dhcp/dhcpd.conf:ro
capabilities:
- CAP_NET_BIND_SERVICE
- CAP_NET_RAW
- CAP_DAC_OVERRIDE
net: /run/netns/nginx
pid: new
ipc: new
uts: new
- name: dns-server
image: nemunaire/unbound:a7c841a408e5e3cc27b920cd70c806093f04687c
binds:
- /etc/unbound/unbound.d:/etc/unbound/unbound.d:ro
net: /run/netns/nginx
files:
- path: etc/init.d/015-setup-sshd
source: configs/sshd-setup.sh
mode: "0555"
- path: /containers/onboot/000-sysctl/rootfs/etc/sysctl.d/01-fic.conf
source: configs/sysctl-frontend.conf
mode: "0444"
- path: etc/nginx/ssl/dhparams-4096.pem
source: configs/dhparams-4096.pem
mode: "0444"
- path: etc/nginx/ssl/fullchain.pem
source: configs/fic.srs.epita.fr/fullchain.pem
mode: "0444"
- path: etc/nginx/ssl/privkey.pem
source: configs/fic.srs.epita.fr/privkey.pem
mode: "0440"
- path: etc/hosts
source: configs/hosts
mode: "0644"
- path: root/.ssh/authorized_keys
source: configs/authorized_keys
mode: "0400"
- path: root/.ssh/id_synchro.pub
source: configs/id_ed25519.pub
mode: "0400"
- path: etc/dhcp/dhcpd.conf
source: configs/dhcpd.conf
mode: "0400"
- path: etc/nginx/conf.d/default.conf
source: configs/nginx-prod.conf
mode: "0400"
- path: etc/nginx/fic-auth.conf
source: configs/fic-auth.conf
mode: "0400"
- path: www/htdocs-frontend
directory: true
mode: "0755"
- path: www/htdocs-frontend/e500.html
source: frontend/static/e500.html
mode: "0644"
- path: www/htdocs-frontend/e500.json
source: frontend/static/e500.json
mode: "0644"
- path: www/htdocs-frontend/img/srs.png
source: frontend/static/img/srs.png
mode: "0644"
- path: www/htdocs-frontend/img/fic.png
source: frontend/static/img/fic.png
mode: "0644"
- path: www/htdocs-frontend/img/epita.png
source: frontend/static/img/epita.png
mode: "0644"
- path: www/htdocs-frontend/img/comcyber.png
source: frontend/static/img/comcyber.png
mode: "0644"
- path: www/htdocs-frontend/img/icon-primary.ico
source: frontend/static/img/icon-primary.ico
mode: "0644"
- path: www/htdocs-frontend/img/icon-secondary.ico
source: frontend/static/img/icon-secondary.ico
mode: "0644"
- path: www/htdocs-frontend/img/icon-danger.ico
source: frontend/static/img/icon-danger.ico
mode: "0644"
- path: www/htdocs-frontend/img/icon-success.ico
source: frontend/static/img/icon-success.ico
mode: "0644"
- path: www/htdocs-frontend/img/icon-warning.ico
source: frontend/static/img/icon-warning.ico
mode: "0644"
- path: www/htdocs-frontend/img/icon-dark.ico
source: frontend/static/img/icon-dark.ico
mode: "0644"
- path: www/htdocs-frontend/img/icon-light.ico
source: frontend/static/img/icon-light.ico
mode: "0644"
- path: www/htdocs-frontend/favicon.ico
source: frontend/static/favicon.ico
mode: "0644"
- path: www/htdocs-frontend/e404.html
source: frontend/static/e404.html
mode: "0644"
- path: www/htdocs-frontend/e404.json
source: frontend/static/e404.json
mode: "0644"
- path: www/htdocs-frontend/css/bootstrap.min.css
source: frontend/static/css/bootstrap.min.css
mode: "0644"
- path: www/htdocs-frontend/css/fic.css
source: frontend/static/css/fic.css
mode: "0644"
- path: www/htdocs-frontend/css/glyphicon.css
source: frontend/static/css/glyphicon.css
mode: "0644"
- path: www/htdocs-frontend/js/i18n/angular-locale_fr-fr.js
source: frontend/static/js/i18n/angular-locale_fr-fr.js
mode: "0644"
- path: www/htdocs-frontend/js/angular-sanitize.min.js
source: frontend/static/js/angular-sanitize.min.js
mode: "0644"
- path: www/htdocs-frontend/js/d3.v3.min.js
source: frontend/static/js/d3.v3.min.js
mode: "0644"
- path: www/htdocs-frontend/js/common.js
source: frontend/static/js/common.js
mode: "0644"
- path: www/htdocs-frontend/js/angular.min.js
source: frontend/static/js/angular.min.js
mode: "0644"
- path: www/htdocs-frontend/js/challenge.js
source: frontend/static/js/challenge.js
mode: "0644"
- path: www/htdocs-frontend/js/bootstrap.min.js
source: frontend/static/js/bootstrap.min.js
mode: "0644"
- path: www/htdocs-frontend/js/jquery.min.js
source: frontend/static/js/jquery.min.js
mode: "0644"
- path: www/htdocs-frontend/js/angular-route.min.js
source: frontend/static/js/angular-route.min.js
mode: "0644"
- path: www/htdocs-frontend/js/blake2b.js
source: frontend/static/js/blake2b.js
mode: "0644"
- path: www/htdocs-frontend/e413.html
source: frontend/static/e413.html
mode: "0644"
- path: www/htdocs-frontend/e413.json
source: frontend/static/e413.json
mode: "0644"
- path: www/htdocs-frontend/fonts/FantasqueSansMono-Regular.woff
source: frontend/static/fonts/FantasqueSansMono-Regular.woff
mode: "0644"
- path: www/htdocs-frontend/fonts/LinBiolinum_R.woff
source: frontend/static/fonts/LinBiolinum_R.woff
mode: "0644"
- path: www/htdocs-frontend/fonts/LinBiolinum_RB.woff
source: frontend/static/fonts/LinBiolinum_RB.woff
mode: "0644"
- path: www/htdocs-frontend/fonts/LinBiolinum_RI.woff
source: frontend/static/fonts/LinBiolinum_RI.woff
mode: "0644"
- path: www/htdocs-frontend/fonts/glyphicons-halflings-regular.woff2
source: frontend/static/fonts/glyphicons-halflings-regular.woff2
mode: "0644"
- path: www/htdocs-frontend/fonts/glyphicons-halflings-regular.woff
source: frontend/static/fonts/glyphicons-halflings-regular.woff
mode: "0644"
- path: www/htdocs-frontend/fonts/glyphicons-halflings-regular.eot
source: frontend/static/fonts/glyphicons-halflings-regular.eot
mode: "0644"
- path: www/htdocs-frontend/fonts/glyphicons-halflings-regular.ttf
source: frontend/static/fonts/glyphicons-halflings-regular.ttf
mode: "0644"
- path: www/htdocs-frontend/fonts/glyphicons-halflings-regular.svg
source: frontend/static/fonts/glyphicons-halflings-regular.svg
mode: "0644"
- path: www/htdocs-frontend/welcome.html
source: frontend/static/welcome.html
mode: "0644"
- path: www/htdocs-frontend/welcome.json
source: frontend/static/welcome.json
mode: "0644"
- path: www/htdocs-frontend/index.html
source: frontend/static/index.html
mode: "0644"
- path: www/htdocs-frontend/views/defi.html
source: frontend/static/views/defi.html
mode: "0644"
- path: www/htdocs-frontend/views/defi-SE.html
source: frontend/static/views/defi-SE.html
mode: "0644"
- path: www/htdocs-frontend/views/home.html
source: frontend/static/views/home.html
mode: "0644"
- path: www/htdocs-frontend/views/issue.html
source: frontend/static/views/issue.html
mode: "0644"
- path: www/htdocs-frontend/views/rank.html
source: frontend/static/views/rank.html
mode: "0644"
- path: www/htdocs-frontend/views/register.html
source: frontend/static/views/register.html
mode: "0644"
- path: www/htdocs-frontend/views/rules.html
source: frontend/static/views/rules.html
mode: "0644"
- path: www/htdocs-frontend/views/tag.html
source: frontend/static/views/tag.html
mode: "0644"
- path: www/htdocs-frontend/views/team-edit.html
source: frontend/static/views/team-edit.html
mode: "0644"
- path: www/htdocs-frontend/views/theme.html
source: frontend/static/views/theme.html
mode: "0644"
- path: www/htdocs-frontend/views/videos.html
source: frontend/static/views/videos.html
mode: "0644"
- path: www/htdocs-frontend/robots.txt
source: frontend/static/robots.txt
mode: "0644"
- path: usr/bin/iptables
source: configs/nsenter_iptables.sh
mode: "0755"
- path: usr/bin/pnsenter
source: configs/nsenter_process.sh
mode: "0755"
- path: etc/dhcpcd.conf
contents: |
allowinterfaces internet
hostname
clientid
persistent
option rapid_commit
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
require dhcp_server_identifier
slaac private
nodelay
noarp
waitip 4
mode: "0440"
- path: etc/unbound/unbound.d/tmp-user.conf
contents: |
username: ""
mode: "0440"
# - path: etc/unbound/unbound.d/forwarder.conf
# contents: |
# forward-zone:
# name: "."
# forward-addr: 9.9.9.9
# forward-addr: 1.1.1.1
# mode: "0440"
- path: etc/unbound/unbound.d/access-control.conf
contents: |
access-control: 172.23.0.0/16 allow
mode: "0440"
- path: etc/unbound/unbound.d/local-zone.conf
contents: |
local-zone: "srs.epita.fr" typetransparent
local-data: "fic.srs.epita.fr A 172.23.42.1"
local-data-ptr: "172.23.42.1 fic.srs.epita.fr"
mode: "0440"
- path: etc/iptables/rules.v6
contents: |
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT
mode: "0440"
- path: etc/iptables/rules-sshd.v4
contents: |
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
[0:0] -A INPUT -i lo -j ACCEPT
[0:0] -A INPUT -m conntrack --ctstate INVALID -j DROP
[0:0] -A INPUT -p icmp -j ACCEPT
[0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A INPUT -i eth0 -s 10.10.10.0/29 -p tcp -m conntrack --ctstate NEW -m tcp --dport ssh -j ACCEPT
[0:0] -A INPUT -j LOG
[0:0] -A FORWARD -j LOG
[0:0] -A OUTPUT -o lo -j ACCEPT
[0:0] -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A OUTPUT -j LOG
[0:0] -A OUTPUT -j REJECT
COMMIT
mode: "0440"
- path: etc/iptables/rules-frontal.v4
contents: |
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
[0:0] -A POSTROUTING -o internet -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
[0:0] -A INPUT -i lo -j ACCEPT
[0:0] -A INPUT -m conntrack --ctstate INVALID -j DROP
[0:0] -A INPUT -p icmp --icmp-type 8 -j ACCEPT
[0:0] -A INPUT -p icmp --icmp-type 0 -j ACCEPT
[0:0] -A INPUT -i bond-frontal -p udp -m udp --dport domain -j ACCEPT
[0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A INPUT -i bond-frontal -p tcp -m conntrack --ctstate NEW -m tcp --dport domain -j ACCEPT
[0:0] -A INPUT -i bond-frontal -p tcp -m conntrack --ctstate NEW -m tcp --dport http -j ACCEPT
[0:0] -A INPUT -i bond-frontal -p tcp -m conntrack --ctstate NEW -m tcp --dport https -j ACCEPT
[0:0] -A INPUT -j LOG
[0:0] -A FORWARD -j LOG
[0:0] -A OUTPUT -o lo -j ACCEPT
[0:0] -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
[0:0] -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
[0:0] -A OUTPUT -o bond-frontal -p udp -m udp --sport domain -j ACCEPT
[0:0] -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A OUTPUT -o vethin-nginx -d 172.17.1.3 -p tcp -m conntrack --ctstate NEW -m tcp --dport 8080 -j ACCEPT
[0:0] -A OUTPUT -o internet -j ACCEPT
[0:0] -A OUTPUT -j LOG
[0:0] -A OUTPUT -j REJECT
COMMIT
mode: "0440"
- path: etc/dm-crypt/key
source: configs/dm-crypt.key
mode: "0440"
trust:
org:
- linuxkit
- library