Saltstack
  • Willkommen
  • Einführung
  • Testumgebung
    • Salt-Master öffentlicher FQDN
  • Salt installieren
    • Minions und Master "verheiraten"
  • Salt Module
    • Beispiel Benutzer anlegen
    • Dateien hin und her kopieren
  • Salt States
    • Yaml verstehen
    • Editoren anpassen
    • Beispiel Benutzer verwalten
    • Abhängigkeiten
    • Dateien editieren
    • Shell Kommandos
    • Beispiel Caddy Webserver
  • Linter
  • Minions adressieren
    • Grains
    • Hostgruppen - Node Groups
  • Jinja
    • Beispiel Caddy PHP
  • top.sls
  • Output
  • Pillars
    • Hosts Pillars
    • GPG
    • Vault
    • Datenbanken
    • Beispiel Benutzerverwaltung
  • Salt-Mine
  • Eigene Module erstellen
  • Orchestrierung
  • Returner & Job-Cache
  • Salt SSH
  • Salt API
  • Salt Cloud
    • Hinweise und Fallen
    • KVM und Libvirt
    • Scaleway
    • Digitalocean
    • Hetzner Cloud
    • eigene Deploymentscripte
    • Dynamische Portforwarding
    • Keys automatisch aufräumen
    • Start Aktionen
  • GIT
    • Alternative CD
  • Salt Reactor
  • Salt für Windows
    • Software ohne Repository installieren
    • PowerShell
    • Chocolatey Paktemanager
    • Lokales Logon Skript
    • Software Repository
  • Beispiele
    • Restic Backup
    • Apache Web-Proxy
    • Wartungstunnel
    • Unattended Upgrades
  • Salt & Etcd
  • Salt ACS
Powered by GitBook
On this page
  1. Beispiele

Apache Web-Proxy

Es muss nicht immer Squid sein! Auch mit Apache kann man einen Web-Proxy einrichten.

Mit dem nachfolgenden Beispiel installieren Sie den Apache Webserver und konfigurieren diesen als Web-Proxy, welcher dann von Browsern und anderen HTTP-Klienten für den Internetzugang genutzt werden kann.

/srv/salt/apache-proxy/init.sls
#
# Build and maintain a Web-Proxy based on Apache
#

{% set port = 8045 %}

apache-packages:
  pkg.installed:
    - pkgs:
      - apache2
      - apache2-utils
      - libapache2-mod-authnz-external
      - pwauth

{% for module in ['proxy','proxy_connect','proxy_http'] %}
enable-mod-{{ module }}:
  apache_module.enabled:
    - name: {{ module }}
    - require: 
      - pkg: apache-packages
{% endfor %}

Disable default site:
  apache_site.disabled:
    - name: 000-default

#
# Disable Port 80. We don't serve content with Apache
#
Enable Port {{port}}:
  file.append:
    - name: /etc/apache2/ports.conf
    - text: Listen {{port}}
  
Disable Port 80:
  file.replace:
    - name: /etc/apache2/ports.conf
    - pattern: ^Listen 80$
    - repl: >-
        #Listen 80

#
# Copy a proxy config. The build-in state 
# https://docs.saltproject.io/en/latest/ref/states/all/salt.states.apache.html
# cannot handle proxy configurations
#
/etc/apache2/sites-available/proxy.conf:
  file.managed:
    - source: salt://apache-proxy/proxy.conf
    - template: jinja
    - defaults:
      port: {{port}}

Enable proxy:
  apache_site.enabled:
    - name: proxy

apache2:
  service.running:
    - enable: True
    - watch:
      - file: /etc/apache2/sites-available/proxy.conf
      - file: /etc/apache2/ports.conf
/srv/apache-proxy/proxy.conf
<VirtualHost *:{{ port}}>
	ProxyRequests On
	ProxyVia On
	AllowCONNECT 22-65535
	<IfModule mod_authnz_external.c>
		AddExternalAuth pwauth /usr/sbin/pwauth
		SetExternalAuthMethod pwauth pipe
	</IfModule>

	<Proxy *>
    	Order deny,allow
    	Deny from all
  		# Allow access only from local network
  		Allow from all
		AuthType Basic
		AuthName "Proxy requires authentication"
		AuthBasicProvider external
		AuthExternal pwauth
		Require valid-user
	</Proxy> 
    ServerName proxy.local
	ErrorLog "/var/log/apache2/proxy-error.log"
	CustomLog "/var/log/apache2/proxy-access.log" common
</VirtualHost>

Eine Liste mit erlaubten Proxy-Usern »zusammenbauen« aus dem User-Pillar.

{% set valid_proxy_users = [] %}
{% for login,user in pillar['users'].iteritems() %}
{% if user['proxy'] %}
{% do valid_proxy_users.append(login) %}
{% endif %}
{% endfor %}

Verwenden Sie die zuvorgenannte Authentifierung nicht in produktiven Umgebungen. Das Passwort wird im Klartext unverschlüsselt übertragen. Wenn Sie eien Web-Proxy mit Authentifizierung einrichten möchten, muss für diesen TLS/HTTPS aktiviert werden.

In der Apache Proxy-Konfiguration werden die erlaubten User nun wie folgt angeben:

... snip
Require user {{ valid_proxy_users|join(' ') }}
... snap
PreviousRestic BackupNextWartungstunnel

Last updated 1 year ago

Der Apache-Proxy kann auch filtern und . Fügen Sie dazu innerhalb des virtuellen Hosts eine Zeile mit gesperrten Domains ein. Z. B. ProxyBlock www.google.de facebook

Zugriff auf bestimmte Domänen verbieten