Drop 'create_sftp_group: true' (default false), so the 'Match group
sftp_users' block is no longer rendered into sshd config. The (empty)
group sftp_users was removed on the hosts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- group 'sftpusers' (GID 200 or next free), sshd drop-in
/etc/ssh/sshd_config.d/90-sshd-SFTP.conf (Match Group, ChrootDirectory %h,
ForceCommand internal-sftp), PasswordAuthentication via
'sftp_password_authentication'
- new sftp users (UID 201 or next free) with root owned chroot home,
upload dir and root owned authorized_keys (always created)
- existing users (e.g. www-data, suexec users) can be added to the group;
chroot requirements of their home are checked, not changed
- passwords: update_password defaults to 'always', password of users with
shell access is never changed
- controlled by 'chrooted_sftpd_present' (default: false), tag 'sftpd'
- add empty sftpd section to all host_vars *-common.yml
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- handlers: a firewall restart flushes the DOCKER* chains and docker's NAT
rules; restart docker afterwards if it is running (like fail2ban).
- host_vars: add values missing from host_vars generated by an older
extract-fw-host-vars.py:
- mm-irights, mm-nd, mm-rav: fw_mm_server_ips
- test.mx: fw_mail_client_ips_v6, fw_dovecot_auth_service_v6,
fw_mumble_server_ips_v6
- mm: fw_allow_local_service_v6 uses "<port>,<proto>" (the IPv6 script
splits on ',', the IPv4 script on ':').
Rolled out to a.mx, a.ns, b.mx, b.ns, backup.warenform, cl-01, cl-02,
cl-dissens, cl-flr, cl-irights, cl-nd-test, cl-ndm, mm, mm-irights, mm-nd,
mm-rav, o45, test.mx; second run changed=0 on all of them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Update firewall scripts and shared conf files from firewall/ipt-server
(HTTP connection limits, IPv6 TCP MSS clamping, ban_ipv6_mask,
mattermost TCP fallback, rename 'stansard_*' -> 'standard_*').
- New role variables: fw_set_max_new_http_conn_per_ip_per_second,
fw_max_http_new_conn_per_ip_per_second, fw_set_max_concurrent_http_conn_per_ip,
fw_max_concurrent_http_conn_per_ip, fw_set_max_new_http_conn_per_second,
fw_max_new_http_conn_per_second, fw_throttle_tcp6_mss_for_https,
fw_tcp6_mss_for_https_val, fw_mm_tcp_ports_in, fw_ban_ipv6_mask.
- Split fw_blocked_ips into fw_blocked_ips_v4 / fw_blocked_ips_v6 and
rename it in host_vars accordingly.
- Restart firewall when scripts or shared conf files change.
- extract-fw-host-vars.py: map new variables, normalize '${var}' and renamed
bash variables, fall back to IPv6 for shared variables and warn if IPv4
and IPv6 values differ.
- README.md / MIGRATION.md: document host_vars naming
(<short-hostname>-ipt-server.yml) and new variables.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Created `wiki-common.yml` for wiki.cadus.org with DNS settings and git repository configurations.
- Added `www-common.yml` for www.oopen.de including SFTP group creation and root user password.
- Introduced `zapata-alt-common.yml` for zapata-alt.opp.netz with network interface configurations, Samba user reorganize 'host_vars'
- Created handlers for reloading systemd and restarting firewall services.
- Implemented tasks to ensure the existence of configuration directories and files.
- Deployed host-specific and shared configuration files using templates.
- Added scripts for managing IPv4 and IPv6 firewalls.
- Configured systemd service units for ipt-firewall and ip6t-firewall.
- Enabled and started firewall services on system boot.