diff --git a/.certs b/.certs index 2f9f9ac..e335178 160000 --- a/.certs +++ b/.certs @@ -1 +1 @@ -Subproject commit 2f9f9ac148e5dc32f30ee447652fddd6f2fd7511 +Subproject commit e335178e3fe9df1a82ac3de735d703b6a08939d0 diff --git a/certs/websites/chmod777.sh.cer b/certs/websites/chmod777.sh.cer new file mode 120000 index 0000000..d61d946 --- /dev/null +++ b/certs/websites/chmod777.sh.cer @@ -0,0 +1 @@ +../logo/chmod777.sh.crt \ No newline at end of file diff --git a/certs/websites/chmod777.sh.key b/certs/websites/chmod777.sh.key new file mode 120000 index 0000000..f4cee85 --- /dev/null +++ b/certs/websites/chmod777.sh.key @@ -0,0 +1 @@ +../logo/chmod777.sh.key \ No newline at end of file diff --git a/group_vars/public-web.yml b/group_vars/public-web.yml index 0b6a9c1..f6048b8 100644 --- a/group_vars/public-web.yml +++ b/group_vars/public-web.yml @@ -4,6 +4,7 @@ dchwww_publisher_keys: ebonfire_publisher_keys: '{{ dchwww_publisher_keys }}' nratonpass_publisher_keys: '{{ dchwww_publisher_keys }}' dcow_publisher_keys: '{{ dchwww_publisher_keys }}' +chmod777_publisher_keys: '{{ dchwww_publisher_keys }}' apache_server_name: pyrocufflink.net apache_ssl_certificate: /var/lib/letsencrypt/live/pyrocufflink.net/fullchain.pem diff --git a/roles/dch-proxy/templates/frontend-main.haproxy.cfg.j2 b/roles/dch-proxy/templates/frontend-main.haproxy.cfg.j2 index 1999272..e3cb69e 100644 --- a/roles/dch-proxy/templates/frontend-main.haproxy.cfg.j2 +++ b/roles/dch-proxy/templates/frontend-main.haproxy.cfg.j2 @@ -28,4 +28,5 @@ frontend main-tls use_backend nextcloud-tls if { req_ssl_sni -i nextcloud.pyrocufflink.net } use_backend web-tls if { req_ssl_sni -i darkchestofwonders.us } use_backend web-tls if { req_ssl_sni -i pyrocufflink.net } + use_backend web-tls if { req_ssl_sni -i -m end chmod777.sh } default_backend openvpn diff --git a/roles/websites/chmod777.sh/defaults/main.yml b/roles/websites/chmod777.sh/defaults/main.yml new file mode 100644 index 0000000..0ab7e7e --- /dev/null +++ b/roles/websites/chmod777.sh/defaults/main.yml @@ -0,0 +1 @@ +chmod777_publisher_keys: [] diff --git a/roles/websites/chmod777.sh/files/chmod777.sh.httpd.conf b/roles/websites/chmod777.sh/files/chmod777.sh.httpd.conf new file mode 100644 index 0000000..b029e4f --- /dev/null +++ b/roles/websites/chmod777.sh/files/chmod777.sh.httpd.conf @@ -0,0 +1,28 @@ + +ServerName chmod777.sh +ServerAlias blog.chmod777.sh www.chmod777.sh +RewriteEngine On +RewriteRule (.*) https://chmod777.sh$1 [R=301,L] + + + +ServerName chmod777.sh +ServerAlias blog.chmod777.sh www.chmod777.sh + +RewriteEngine On +RewriteCond %{SERVER_NAME} !^chmod777\.sh +RewriteRule (.*) https://chmod777.sh$2 [R=301,L] + +Include conf.d/ssl.include +SSLCertificateKeyFile /etc/pki/tls/private/chmod777.sh.key +SSLCertificateFile /etc/pki/tls/certs/chmod777.sh.cer + + + Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains" + + +DocumentRoot /srv/www/chmod777.sh/htdocs + + Require all granted + + diff --git a/roles/websites/chmod777.sh/tasks/main.yml b/roles/websites/chmod777.sh/tasks/main.yml new file mode 100644 index 0000000..dbbbdbb --- /dev/null +++ b/roles/websites/chmod777.sh/tasks/main.yml @@ -0,0 +1,53 @@ +- name: ensure rsync is installed + package: + name: rsync + state: present + tags: + - install + +- name: ensure app group exists + group: + name: webapp.chmod777 + state: present +- name: ensure app user exists + user: + name: webapp.chmod777 + group: webapp.chmod777 + home: /srv/www/chmod777.sh + createhome: yes + state: present + +- name: ensure app home directory permissions are set + file: + path: /srv/www/chmod777.sh + mode: '0755' + state: directory + +- name: ensure app ssh home directory exists + file: + path: /srv/www/chmod777.sh/.ssh + mode: '0700' + owner: webapp.chmod777 + group: webapp.chmod777 + setype: ssh_home_t +- name: ensure publisher keys are trusted + authorized_key: + key: "{{ chmod777_publisher_keys|join('\n') }}" + user: webapp.chmod777 + exclusive: true +- name: ensure authorized keys file permissions are correct + file: + path: /srv/www/chmod777.sh/.ssh/authorized_keys + mode: '0600' + owner: webapp.chmod777 + group: webapp.chmod777 + setype: ssh_home_t + +- name: ensure apache is configured to serve chmod777.sh + copy: + src: chmod777.sh.httpd.conf + dest: /etc/httpd/conf.d/chmod777.sh.conf + mode: '0644' + notify: reload httpd + tags: + - httpd-config diff --git a/websites.yml b/websites.yml index 33a5f22..5c592ce 100644 --- a/websites.yml +++ b/websites.yml @@ -8,6 +8,14 @@ - websites/ebonfire.com - websites/nratonpass.com - websites/darkchestofwonders.us + - role: cert + cert_src: websites/chmod777.sh.cer + cert_dest: /etc/pki/tls/certs/chmod777.sh.cer + cert_key_src: websites/chmod777.sh.key + cert_key_dest: /etc/pki/tls/private/chmod777.sh.key + tags: websites/chmod777.sh + - role: websites/chmod777.sh + tags: websites/chmod777.sh tasks: - name: ensure httpd service is running service: