diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ad8f6f8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +FROM debian:buster-slim + +RUN apt-get update \ + && apt-get install -y \ + apache2 \ + && rm -rf /var/lib/apt/lists/* + +ENV APACHE_RUN_USER www-data +ENV APACHE_RUN_GROUP www-data +ENV APACHE_LOCK_DIR /var/lock/apache2 +ENV APACHE_LOG_DIR /var/log/apache2 +ENV APACHE_PID_FILE /var/run/apache2/apache2.pid +ENV APACHE_SERVER_NAME localhost + +RUN a2enmod proxy && \ + a2enmod xml2enc && \ + a2enmod proxy_http && \ + a2enmod proxy_ajp && \ + a2enmod rewrite && \ + a2enmod deflate && \ + a2enmod headers && \ + a2enmod proxy_balancer && \ + a2enmod proxy_connect && \ + a2enmod proxy_html && \ + a2enmod ldap + + +COPY config_files/apache2.conf /etc/apache2/apache2.conf +COPY config_files/conf-enabled/*.conf /etc/apache2/conf-enabled/ +COPY config_files/confs /etc/apache2/ +COPY config_files/sites /etc/apache2/ + + + + + + +CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"] diff --git a/README.md b/README.md index 3b810dd..5431e39 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,14 @@ Apache Module aktivieren a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html - a2enmod ldap \ No newline at end of file + a2enmod ldap + + + + +Sammlung Security Config: +https://github.com/jnbt/docker-httpd/blob/master/server-configs.conf + +https://httpd.apache.org/docs/2.4/misc/security_tips.html + +https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic \ No newline at end of file diff --git a/config_files/apache2.conf b/config_files/apache2.conf new file mode 100644 index 0000000..02a3a1f --- /dev/null +++ b/config_files/apache2.conf @@ -0,0 +1,230 @@ +# This is the main Apache server configuration file. It contains the +# configuration directives that give the server its instructions. +# See http://httpd.apache.org/docs/2.4/ for detailed information about +# the directives and /usr/share/doc/apache2/README.Debian about Debian specific +# hints. +# +# +# Summary of how the Apache 2 configuration works in Debian: +# The Apache 2 web server configuration in Debian is quite different to +# upstream's suggested way to configure the web server. This is because Debian's +# default Apache2 installation attempts to make adding and removing modules, +# virtual hosts, and extra configuration directives as flexible as possible, in +# order to make automating the changes and administering the server as easy as +# possible. + +# It is split into several files forming the configuration hierarchy outlined +# below, all located in the /etc/apache2/ directory: +# +# /etc/apache2/ +# |-- apache2.conf +# | `-- ports.conf +# |-- mods-enabled +# | |-- *.load +# | `-- *.conf +# |-- conf-enabled +# | `-- *.conf +# `-- sites-enabled +# `-- *.conf +# +# +# * apache2.conf is the main configuration file (this file). It puts the pieces +# together by including all remaining configuration files when starting up the +# web server. +# +# * ports.conf is always included from the main configuration file. It is +# supposed to determine listening ports for incoming connections which can be +# customized anytime. +# +# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/ +# directories contain particular configuration snippets which manage modules, +# global configuration fragments, or virtual host configurations, +# respectively. +# +# They are activated by symlinking available configuration files from their +# respective *-available/ counterparts. These should be managed by using our +# helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See +# their respective man pages for detailed information. +# +# * The binary is called apache2. Due to the use of environment variables, in +# the default configuration, apache2 needs to be started/stopped with +# /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not +# work with the default configuration. + + +# Global configuration +# + +# +# ServerRoot: The top of the directory tree under which the server's +# configuration, error, and log files are kept. +# +# NOTE! If you intend to place this on an NFS (or otherwise network) +# mounted filesystem then please read the Mutex documentation (available +# at ); +# you will save yourself a lot of trouble. +# +# Do NOT add a slash at the end of the directory path. +# +#ServerRoot "/etc/apache2" + +# +# The accept serialization lock file MUST BE STORED ON A LOCAL DISK. +# +#Mutex file:${APACHE_LOCK_DIR} default + +# +# The directory where shm and other runtime files will be stored. +# + +DefaultRuntimeDir ${APACHE_RUN_DIR} + +# +# PidFile: The file in which the server should record its process +# identification number when it starts. +# This needs to be set in /etc/apache2/envvars +# +PidFile ${APACHE_PID_FILE} + +# +# Timeout: The number of seconds before receives and sends time out. +# +Timeout 300 + +# +# KeepAlive: Whether or not to allow persistent connections (more than +# one request per connection). Set to "Off" to deactivate. +# +KeepAlive On + +# +# MaxKeepAliveRequests: The maximum number of requests to allow +# during a persistent connection. Set to 0 to allow an unlimited amount. +# We recommend you leave this number high, for maximum performance. +# +MaxKeepAliveRequests 100 + +# +# KeepAliveTimeout: Number of seconds to wait for the next request from the +# same client on the same connection. +# +KeepAliveTimeout 5 + + +# These need to be set in /etc/apache2/envvars +User ${APACHE_RUN_USER} +Group ${APACHE_RUN_GROUP} + +# +# HostnameLookups: Log the names of clients or just their IP addresses +# e.g., www.apache.org (on) or 204.62.129.132 (off). +# The default is off because it'd be overall better for the net if people +# had to knowingly turn this feature on, since enabling it means that +# each client request will result in AT LEAST one lookup request to the +# nameserver. +# +HostnameLookups Off + +# ErrorLog: The location of the error log file. +# If you do not specify an ErrorLog directive within a +# container, error messages relating to that virtual host will be +# logged here. If you *do* define an error logfile for a +# container, that host's errors will be logged there and not here. +# +ErrorLog ${APACHE_LOG_DIR}/error.log + +# +# LogLevel: Control the severity of messages logged to the error_log. +# Available values: trace8, ..., trace1, debug, info, notice, warn, +# error, crit, alert, emerg. +# It is also possible to configure the log level for particular modules, e.g. +# "LogLevel info ssl:warn" +# +LogLevel warn + +# Include module configuration: +IncludeOptional mods-enabled/*.load +IncludeOptional mods-enabled/*.conf + +# Include list of ports to listen on +Include ports.conf + + +# Sets the default security model of the Apache2 HTTPD server. It does +# not allow access to the root filesystem outside of /usr/share and /var/www. +# The former is used by web applications packaged in Debian, +# the latter may be used for local directories served by the web server. If +# your system is serving content from a sub-directory in /srv you must allow +# access here, or in any related virtual host. + + Options FollowSymLinks + AllowOverride None + Require all denied + + + + AllowOverride None + Require all granted + + + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + + +# +# Options Indexes FollowSymLinks +# AllowOverride None +# Require all granted +# + + + + +# AccessFileName: The name of the file to look for in each directory +# for additional configuration directives. See also the AllowOverride +# directive. +# +AccessFileName .htaccess + +# +# The following lines prevent .htaccess and .htpasswd files from being +# viewed by Web clients. +# + + Require all denied + + + +# +# The following directives define some format nicknames for use with +# a CustomLog directive. +# +# These deviate from the Common Log Format definitions in that they use %O +# (the actual bytes sent including headers) instead of %b (the size of the +# requested file), because the latter makes it impossible to detect partial +# requests. +# +# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended. +# Use mod_remoteip instead. +# +LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined +LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined +LogFormat "%h %l %u %t \"%r\" %>s %O" common +LogFormat "%{Referer}i -> %U" referer +LogFormat "%{User-agent}i" agent + +# Include of directories ignores editors' and dpkg's backup files, +# see README.Debian for details. + +# Include generic snippets of statements +IncludeOptional conf-enabled/*.conf + +# Include the virtual host configurations: +IncludeOptional sites-enabled/*.conf + +IncludeOptional confs/*.conf +Include sites/*.conf +Include stites/*/*.conf +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet diff --git a/config_files/conf-enabled/security.conf b/config_files/conf-enabled/security.conf new file mode 100644 index 0000000..97b45b2 --- /dev/null +++ b/config_files/conf-enabled/security.conf @@ -0,0 +1,78 @@ +# +# Disable access to the entire file system except for the directories that +# are explicitly allowed later. +# +# This currently breaks the configurations that come with some web application +# Debian packages. +# +# +# AllowOverride None +# Require all denied +# + + +# Changing the following options will not really affect the security of the +# server, but might make attacks slightly more difficult in some cases. + +# +# ServerTokens +# This directive configures what you return as the Server HTTP response +# Header. The default is 'Full' which sends information about the OS-Type +# and compiled in modules. +# Set to one of: Full | OS | Minimal | Minor | Major | Prod +# where Full conveys the most information, and Prod the least. +#ServerTokens Minimal +ServerTokens OS +#ServerTokens Full + +# +# Optionally add a line containing the server version and virtual host +# name to server-generated pages (internal error documents, FTP directory +# listings, mod_status and mod_info output etc., but not CGI generated +# documents or custom error documents). +# Set to "EMail" to also include a mailto: link to the ServerAdmin. +# Set to one of: On | Off | EMail +#ServerSignature Off +ServerSignature On + +# +# Allow TRACE method +# +# Set to "extended" to also reflect the request body (only for testing and +# diagnostic purposes). +# +# Set to one of: On | Off | extended +TraceEnable Off +#TraceEnable On + +# +# Forbid access to version control directories +# +# If you use version control systems in your document root, you should +# probably deny access to their directories. For example, for subversion: +# +# +# Require all denied +# + + +# +# Enable a secure configuration + + +# +# Setting this header will prevent MSIE from interpreting files as something +# else than declared by the content type in the HTTP headers. +# Requires mod_headers to be enabled. +# +Header set X-Content-Type-Options: "nosniff" + +# +# Setting this header will prevent other sites from embedding pages from this +# site as frames. This defends against clickjacking attacks. +# Requires mod_headers to be enabled. +# +Header set X-Frame-Options: "sameorigin" + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet diff --git a/config_files/confs/ldap_fet..conf b/config_files/confs/ldap_fet..conf new file mode 100644 index 0000000..57c3afb --- /dev/null +++ b/config_files/confs/ldap_fet..conf @@ -0,0 +1,4 @@ +AuthLDAPBindDN "OU=user,DC=fet,DC=htu,DC=tuwien,DC=ac,DC=at" +AuthLDAPBindPassword "" +AuthLDAPURL "ldap://juri:389/ou=user,dc=fet,dc=htu,dc=tuwien,dc=ac,dc=at?uid?sub?(objectClass=person);" +AuthUserFile /dev/null \ No newline at end of file diff --git a/config_files/sites/000-default.conf b/config_files/sites/000-default.conf new file mode 100644 index 0000000..2755179 --- /dev/null +++ b/config_files/sites/000-default.conf @@ -0,0 +1,72 @@ + + # The ServerName directive sets the request scheme, hostname and port that + # the server uses to identify itself. This is used when creating + # redirection URLs. In the context of virtual hosts, the ServerName + # specifies what hostname must appear in the request's Host: header to + # match this virtual host. For the default virtual host (this file) this + # value is not decisive as it is used as a last resort host regardless. + # However, you must set it for any further virtual host explicitly. + #ServerName www.proteus.fet.tuwien.ac.at + + ServerAdmin bofh@fet.at + DocumentRoot /var/www/html + + # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, + # error, crit, alert, emerg. + # It is also possible to configure the loglevel for particular + # modules, e.g. + #LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # For most configuration files from conf-available/, which are + # enabled or disabled at a global level, it is possible to + # include a line for only one particular virtual host. For example the + # following line enables the CGI configuration for this host only + # after it has been globally disabled with "a2disconf". + #Include conf-available/serve-cgi-bin.conf + #ProxyRequests Off + #ProxyPass /var http://juri + + #RewriteEngine On + #RewriteRule /pet2/(.*) http://juri/$1 [proxy,last] + #ProxyPassReverse /var http://juri + #ProxyPreserveHost On + #ProxyAddHeaders On + #ProxyHTMLEnable On + #ProxyHTMLURLMap http://juri /var + +# +# Require all granted +# Options none +# ProxySet enablereuse=on +# + +#CacheDisable * +# +# ProxyPreserveHost On +# ProxyAddHeaders On +# ProxyPass http://proteus +# ProxyPassReverse http://proteus +# ProxyHTMLEnable On +# ProxyHTMLURLMap http://proteus +# AuthLDAPBindDN "OU=user,DC=fet,DC=htu,DC=tuwien,DC=ac,DC=at" +# #AuthLDAPBindPassword "" +# AuthLDAPURL "ldap://juri:389/ou=user,dc=fet,dc=htu,dc=tuwien,dc=ac,dc=at?uid?sub?(objectClass=person);" +# AuthType Basic +# AuthName "FET" +# AuthBasicProvider ldap +# # Important, otherwise "(9)Bad file descriptor: Could not open password file: (null)" +# AuthUserFile /dev/null +# require valid-user +# #ProxyPreserveHost On +# #ProxyAddHeaders On +# Order allow,deny +# Allow from all +# + + + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet diff --git a/config_files/sites/fet.at/default.conf b/config_files/sites/fet.at/default.conf new file mode 100644 index 0000000..44649ba --- /dev/null +++ b/config_files/sites/fet.at/default.conf @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/html/Galileo_constellation_pillars.jpg b/html/Galileo_constellation_pillars.jpg new file mode 100644 index 0000000..366800e Binary files /dev/null and b/html/Galileo_constellation_pillars.jpg differ diff --git a/html/README.html b/html/README.html new file mode 100644 index 0000000..ef49187 --- /dev/null +++ b/html/README.html @@ -0,0 +1,36 @@ +

Galileo Reverse Proxy

+ +

galileo ist ein neuer Reverse Proxy basierend auf Apache +Galileo

+ +

LXC Container installiert

+ +

Wir haben einen LXC Container installiert und sshd installiert. +!

+ +
apt-get install sshd rsync apache2
+
+ +

SSH Daemon config +ssh_config

+ +

Apache Module aktivieren + a2enmod modproxy + a2enmod xml2enc + a2enmod proxy + a2enmod proxyhttp + a2enmod proxyajp + a2enmod rewrite + a2enmod deflate + a2enmod headers + a2enmod proxybalancer + a2enmod proxyconnect + a2enmod proxyhtml + a2enmod ldap

+ +

Sammlung Security Config: +https://github.com/jnbt/docker-httpd/blob/master/server-configs.conf

+ +

https://httpd.apache.org/docs/2.4/misc/security_tips.html

+ +

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic