Difference between revisions of "Rproxy"

(Flöde)
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
rproxy är en maskin som agerar reverse proxy för ett flertalet tjänster på Stacken. Det är bland annat den som syr ihop www.stacken.kth.se till en site.
+
rproxy är en maskin som agerar reverse proxy för ett flertalet tjänster på Stacken. De klassiska IP-numren <code>130.237.234.40</code> samt <code>2001:6b0:1:ea::40</code> pekar på den. Många av stackens webbsidor, t.ex. den här wikin körs genom rproxy.
  
== Design ==
+
== Konfiguration ==
Maskinen är ett VM, på det VM:et körs sedan Docker där [https://traefik.io/ traefik] körs.
 
  
 +
=== Hårdvara ===
 +
Maskinen är ett VM
 +
 +
=== OS m.m. ===
 
* Ubuntu 18.04 LTS
 
* Ubuntu 18.04 LTS
* Automatiska säkerhetsuppdateringar
+
** Automatiska säkerhetsuppdateringar
 +
 
 +
=== Docker ===
 +
 
 
* docker-bench-security körd och Docker är lite mer nerlåst
 
* docker-bench-security körd och Docker är lite mer nerlåst
  
== Flöde ==
+
    # daemon.json
 +
    {
 +
      "userns-remap": "dockremap",
 +
      "live-restore": true,
 +
      "userland-proxy": false,
 +
      "no-new-privileges": true
 +
    }
 +
 
 +
=== Traefik ===
 +
 
 +
Traefik används för att ta i mot trafik samt terminera TLS. Det finns en systemd unit med samma namn som ser ut så här:
 +
 
 +
    # /etc/systemd/system/traefik.service
 +
    [Unit]
 +
    Description=Traefik Reverse Proxy
 +
    After=network.target
 +
   
 +
    [Service]
 +
    Type=notify
 +
    ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.toml
 +
    Restart=always
 +
    WatchdogSec=60s
 +
    NoNewPrivileges=yes
 +
    ProtectSystem=strict
 +
    ReadWritePaths=/etc/traefik/state/
 +
    ProtectHome=yes
 +
   
 +
    [Install]
 +
    WantedBy=multi-user.target
 +
 
 +
Konfiguration hittar du i <code>/etc/traefik</code>
 +
 
 +
=== Fail2ban ===
 +
 
 +
Förutom sshd som är på som standard på Debian så har jag skapat ett filter som heter <code>filter.d/shakespeer-ip.conf</code> som ser ut så här:
 +
 
 +
    [Definition]
 +
    failregex = ^<HOST>.+\/~mhe\/ip.shtml.+\"shakespeer\/.+$
 +
    ignoreregex =
 +
 
 +
Set är sedan laddat från <code>jail.d/customisation.local</code> så här:
 +
 
 +
    [traefik-shakespeer]
 +
    enabled = true
 +
    filter = shakespeer-ip
 +
    logpath = /var/log/traefik/access.log
 +
    maxretry = 3
 +
    findtime = 60
 +
    bantime = 6h
 +
    port = http,https
 +
 
 +
Det lägger iptables-regler som blockar alla som kör programmet Shakespeer som spammar sönder oss med att försöka använda ip.shtml som inte har funkat på många, många år ...
 +
 
 +
=== Mediawiki ===
  
Flera olika paths och domäner går igenom den här maskinen och tar olika vägar för att hitta tjänsten som ligger bakom.
+
Mediawiki körs i en Docker container och startas med Docker Compose. Du hittar konfigurationen för det i <code>/etc/mediawiki</code>. Bilderna ligger i <code>/var/mediawiki/images</code>.
  
    _DNS_____________________________________________________________
+
=== Bucky ===
    www  CNAME rproxy
 
    wiki CNAME rproxy
 
  
    _Traefik_________________________________________________________
+
Bucky används som en statsd till carbon relay som Traefik använder för att att skicka in data till [[Graphite]]. Den kör i Docker och startas med Docker Compose och ligger i <code>/etc/bucky</code>.
    https://www.stacken.kth.se/              ---> rproxy ---> w3
 
    https://www.stacken.kth.se/project/arla  ---> rproxy ---> cookie
 
    https://wiki.stacken.kth.se              ---> rproxy ---> cookie
 
  
 
[[Category: Maskiner]]
 
[[Category: Maskiner]]

Latest revision as of 14:15, 29 December 2018

rproxy är en maskin som agerar reverse proxy för ett flertalet tjänster på Stacken. De klassiska IP-numren 130.237.234.40 samt 2001:6b0:1:ea::40 pekar på den. Många av stackens webbsidor, t.ex. den här wikin körs genom rproxy.

Konfiguration

Hårdvara

Maskinen är ett VM

OS m.m.

  • Ubuntu 18.04 LTS
    • Automatiska säkerhetsuppdateringar

Docker

  • docker-bench-security körd och Docker är lite mer nerlåst
   # daemon.json 
   {
     "userns-remap": "dockremap",
     "live-restore": true,
     "userland-proxy": false,
     "no-new-privileges": true
   }

Traefik

Traefik används för att ta i mot trafik samt terminera TLS. Det finns en systemd unit med samma namn som ser ut så här:

   # /etc/systemd/system/traefik.service
   [Unit]
   Description=Traefik Reverse Proxy
   After=network.target
   
   [Service]
   Type=notify
   ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.toml
   Restart=always
   WatchdogSec=60s
   NoNewPrivileges=yes
   ProtectSystem=strict
   ReadWritePaths=/etc/traefik/state/
   ProtectHome=yes
   
   [Install]
   WantedBy=multi-user.target

Konfiguration hittar du i /etc/traefik

Fail2ban

Förutom sshd som är på som standard på Debian så har jag skapat ett filter som heter filter.d/shakespeer-ip.conf som ser ut så här:

   [Definition]
   failregex = ^<HOST>.+\/~mhe\/ip.shtml.+\"shakespeer\/.+$
   ignoreregex = 

Set är sedan laddat från jail.d/customisation.local så här:

   [traefik-shakespeer]
   enabled = true
   filter = shakespeer-ip
   logpath = /var/log/traefik/access.log
   maxretry = 3
   findtime = 60
   bantime = 6h
   port = http,https

Det lägger iptables-regler som blockar alla som kör programmet Shakespeer som spammar sönder oss med att försöka använda ip.shtml som inte har funkat på många, många år ...

Mediawiki

Mediawiki körs i en Docker container och startas med Docker Compose. Du hittar konfigurationen för det i /etc/mediawiki. Bilderna ligger i /var/mediawiki/images.

Bucky

Bucky används som en statsd till carbon relay som Traefik använder för att att skicka in data till Graphite. Den kör i Docker och startas med Docker Compose och ligger i /etc/bucky.