diff --git a/docs/ssh-hostkeys.txt b/docs/ssh-hostkeys.txt index b99e636b926a1f1bd737381fcb8907d22c2a14d7..4dc207416877459f074b24a83ef39bf6edcdec10 100644 --- a/docs/ssh-hostkeys.txt +++ b/docs/ssh-hostkeys.txt @@ -262,6 +262,17 @@ 256 MD5:15:45:eb:91:69:df:c3:6d:9f:99:b9:13:02:94:a6:ac root@archlinux-packer (ED25519) 2048 MD5:ca:2f:cf:5c:4d:ec:75:c3:71:76:d6:b7:b9:fa:aa:32 root@archlinux-packer (RSA) +# redirect.archlinux.org +1024 SHA256:hqw3Wmif3BUI9VLcNnvcB3I+M9f5OUtDjRT8H6tAuEU root@archlinux-packer (DSA) +256 SHA256:JaUkz0eOofslq9BVifMx8c6sapM/DSig9zrVyFqrHD4 root@archlinux-packer (ECDSA) +256 SHA256:sUcgzScFlMByQKLW2IDYBc2m6EvLXzM6KVa2mzls3TA root@archlinux-packer (ED25519) +3072 SHA256:yUn8pVpioFsltzFKA2cImHb6UnD63pCOCiJsP5OFLBQ root@archlinux-packer (RSA) + +1024 MD5:a8:f9:dd:2a:79:ca:3a:ef:b5:24:49:6b:61:1f:bb:07 root@archlinux-packer (DSA) +256 MD5:b1:f5:78:51:c5:50:5e:25:73:68:fc:80:53:25:94:ba root@archlinux-packer (ECDSA) +256 MD5:5a:49:d5:f3:00:ca:49:17:d8:cc:3e:84:1d:60:be:06 root@archlinux-packer (ED25519) +3072 MD5:1e:52:48:56:d3:13:20:e5:02:4f:10:1b:af:27:e5:c7 root@archlinux-packer (RSA) + # repro1.pkgbuild.com 1024 SHA256:K2RjAgIzlRrSkqdf3vqwfXOOg0oEMt/AwAT2Gmt2wpA root@repro3.pkgbuild.com (DSA) 256 SHA256:H/7en8S/UqQ+llIDPyCIn9sYHjiEU6L+Myu0MpmoDsE root@repro3.pkgbuild.com (ECDSA) diff --git a/docs/ssh-known_hosts.txt b/docs/ssh-known_hosts.txt index 9c9271cdf7f1d75737c5c69bda2fb9b09bd1e95b..75d48ce0b9c6bd0a0ae543b44a83499f390489cd 100644 --- a/docs/ssh-known_hosts.txt +++ b/docs/ssh-known_hosts.txt @@ -118,6 +118,11 @@ quassel.archlinux.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbm quassel.archlinux.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMJ8pFEQOPKxtdHcNkYP/lmF9vrM5ub30Kbeo3SQJ3OI quassel.archlinux.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPHwHxYNG1vjRiEfoVEa9onPLdUNFdwmrCblc95ALKU+GTCOO8C6gBo2J4w5hB6CABUh4zJn2AbXi1E6YQdGyumfvBhXzpim+wdPtDh/Wrqxl8M06Gk2+YbAS1m0452xsMELodNTPd7HDB0iXDEfEjB02jk7D/KHIVWkKi0wlV3d4WG1M0c5D+MA3zFoYN/EwcRYK120P3dbYzdCwrYi6IdgA/+2g8ALvkAkLEW3uYyIct8kQ/sTLKcKimuyeiYCEn2jviIJjraF2T0U6m+dgfEEBtyITzvP9/3oAflIsgr1LHHVwfhdlbml1LvqPojYpBV2YrE8esmCzhs0a6TWP5 +# redirect.archlinux.org +redirect.archlinux.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNNlS8biku7pxOjm+a0MxYR0ICSRjoqkaCSPdY5tdUnOPmEnvRm7qqO4pzvzy5FjhcFOW4oTuKu93ZXmnU9rV1s= +redirect.archlinux.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID8cqRGOzfp+waFo4fxxq2oUKPFsTNRL0MB1M3xT2Y5L +redirect.archlinux.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC3VdhG7Lm+UYBGjf/G8eUSXL43N2QLRTm23LaSKaegx9/41mtlRJAoHfpHsJg8a2nBEGebooZqp5rwP4kxj0pB7394VP5UjThhqBQ9lWKJgCkceRsvkRYkbrBQHyNiRcFQ7/3YxPFJyNlxQwxiBe9sRk1HHUtQOeleGAQoB+GOMkKSPmqD6k/D5GzoX/maqraFK8S0egapKF5VMWw+6apAv+vp7O/zyPrOddaKLB2XK2c86Jl04z1vA3UMAJ+mQ9P0+WLYzEdxx3OmChw/CQOQk2n3Q/civV7prhkf4Qs58uw6Eg2dGmcP5+z5NeC2J/egxQROoSgUpbUf0W/UDEApjAzAIuzDIXOLwXqqf4b7NKfvCiycCQvk9fTWd14AuTfh/qjwKaP4dEkkmDjR7/mvan5M/mxs82QZIMDW6THYvAnkQ0715Ai4C1+WE1gvzpLbtfJxZhngigDi1YpG3uLf2D7PwKNWc6A6OGpW36GB0nlT3kns13xxmMauxhBJW78= + # repro1.pkgbuild.com repro1.pkgbuild.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKYR9cx4+umxrRJ68vvqOmCSkYuZJDkYAAxlT+bbKNnA2R5jpuxvLamGPFfdAzAQjk5FRnbNGihMI2V2Fw8M2gQ= repro1.pkgbuild.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKrJCFjvo5svIzF5d7agm1/QlqyYlegxSX6GebZp6E5c diff --git a/hosts b/hosts index cd4f7c3df5abd65199ae9f61833414663afd2af2..cb3a33c0136216bea975950fd3183958bc6e00e7 100644 --- a/hosts +++ b/hosts @@ -135,6 +135,7 @@ repro1.pkgbuild.com wiki.archlinux.org patchwork.archlinux.org security.archlinux.org +redirect.archlinux.org [kape_servers] asia.mirror.pkgbuild.com diff --git a/playbooks/redirect.archlinux.org.yml b/playbooks/redirect.archlinux.org.yml new file mode 100644 index 0000000000000000000000000000000000000000..7e2f8af8a7873a68d975a6dd3c306be8a2b8a943 --- /dev/null +++ b/playbooks/redirect.archlinux.org.yml @@ -0,0 +1,15 @@ +- name: setup redirect.archlinux.org + hosts: redirect.archlinux.org + remote_user: root + roles: + - { role: common } + - { role: tools } + - { role: firewalld } + - { role: unbound } + - { role: sshd } + - { role: root_ssh } + - { role: certbot } + - { role: nginx } + - { role: redirects } + - { role: prometheus_exporters } + - { role: hardening } diff --git a/roles/redirects/defaults/main.yml b/roles/redirects/defaults/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..730da1bcc51d9afb03bd3f9ab6a331117c411ba0 --- /dev/null +++ b/roles/redirects/defaults/main.yml @@ -0,0 +1,5 @@ +redirects: + - static.conf: + domain: static.conf.archlinux.org + to: https://gitlab.archlinux.org/archlinux/conf-files/-/raw/master$request_uri + type: 302 diff --git a/roles/redirects/tasks/main.yml b/roles/redirects/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..374f32d7d0cead1a1cd80a8c4b2e47d19e8d8493 --- /dev/null +++ b/roles/redirects/tasks/main.yml @@ -0,0 +1,13 @@ +--- +- name: create ssl cert + command: certbot certonly --email webmaster@archlinux.org --agree-tos --rsa-key-size 4096 --renew-by-default --webroot -w {{ letsencrypt_validation_dir }} -d {{ item.domain }} creates='/etc/letsencrypt/live/{{ item.domain }}/fullchain.pem' + loop: "{{ redirects }}" + +- name: make nginx log dir + file: path=/var/log/nginx/{{ item.domain }} state=directory owner=root group=root mode=0755 + loop: "{{ redirects }}" + +- name: set up nginx + template: src=nginx.d.conf.j2 dest="/etc/nginx/nginx.d/redirects.conf" owner=root group=root mode=644 + notify: reload nginx + tags: ['nginx'] diff --git a/roles/redirects/templates/nginx.d.conf.j2 b/roles/redirects/templates/nginx.d.conf.j2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c2aa555f45bc5d9b11a27cbf9404ced6f1843a --- /dev/null +++ b/roles/redirects/templates/nginx.d.conf.j2 @@ -0,0 +1,20 @@ +{% for redirect in redirects %} +server { + listen 80; + listen [::]:80; + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name {{ redirect.domain }}; + + access_log /var/log/nginx/{{ redirect.domain }}/access.log reduced; + error_log /var/log/nginx/{{ redirect.domain }}/error.log; + + ssl_certificate /etc/letsencrypt/live/{{ redirect.domain }}/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/{{ redirect.domain }}/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/{{ redirect.domain }}/chain.pem; + + include snippets/letsencrypt.conf; + + return {{ redirect.type }} {{ redirect.to }}; +} +{% endfor %} diff --git a/tf-stage1/archlinux.tf b/tf-stage1/archlinux.tf index 8966702e5e027567ee1b8ec8c831ba5a94d7d6a9..d3a5bd3707e42076fa04f1ed17f91cfb5da28b45 100644 --- a/tf-stage1/archlinux.tf +++ b/tf-stage1/archlinux.tf @@ -788,6 +788,20 @@ resource "hetznerdns_record" "archlinux_org_quassel_aaaa" { type = "AAAA" } +resource "hetznerdns_record" "archlinux_org_redirect_a" { + zone_id = hetznerdns_zone.archlinux.id + name = "redirect" + value = hcloud_server.redirect.ipv4_address + type = "A" +} + +resource "hetznerdns_record" "archlinux_org_redirect_aaaa" { + zone_id = hetznerdns_zone.archlinux.id + name = "redirect" + value = hcloud_server.redirect.ipv6_address + type = "AAAA" +} + resource "hetznerdns_record" "archlinux_org_reproducible_a" { zone_id = hetznerdns_zone.archlinux.id name = "reproducible" @@ -1256,6 +1270,27 @@ resource "hcloud_server" "aur-dev" { } } +resource "hcloud_rdns" "redirect_ipv4" { + server_id = hcloud_server.redirect.id + ip_address = hcloud_server.redirect.ipv4_address + dns_ptr = "redirect.archlinux.org" +} + +resource "hcloud_rdns" "redirect_ipv6" { + server_id = hcloud_server.redirect.id + ip_address = hcloud_server.redirect.ipv6_address + dns_ptr = "redirect.archlinux.org" +} + +resource "hcloud_server" "redirect" { + name = "redirect.archlinux.org" + image = data.hcloud_image.archlinux.id + server_type = "cx11" + lifecycle { + ignore_changes = [image] + } +} + resource "hcloud_rdns" "mailman3_ipv4" { server_id = hcloud_server.mailman3.id ip_address = hcloud_server.mailman3.ipv4_address