This commit is contained in:
2024-01-15 01:08:11 +01:00
parent c04e3070cd
commit b009cf5787
24 changed files with 501 additions and 31 deletions

View File

@ -0,0 +1,3 @@
@staff hard nofile 1048576
root hard nofile 1048576

View File

@ -0,0 +1,83 @@
# ==========
# Anti-DDoS Kernel Settings
# ==========
# see:
# https://javapipe.com/blog/iptables-ddos-protection/
# These sysctl.conf settings help to maximize the performance of your server
# under DDoS as well as the effectiveness of the iptables rules that were going
# to provide in this guide.
kernel.printk = 4 4 1 7
kernel.panic = 10
kernel.sysrq = 0
kernel.shmmax = 4294967296
#kernel.shmall = 4194304
kernel.shmall = 134217728
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
fs.file-max = 2097152
net.core.netdev_max_backlog = 262144
net.core.rmem_default = 31457280
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
net.core.wmem_max = 67108864
net.core.somaxconn = 65535
net.core.optmem_max = 25165824
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 8192
net.ipv4.neigh.default.gc_thresh3 = 16384
net.ipv4.neigh.default.gc_interval = 5
net.ipv4.neigh.default.gc_stale_time = 120
net.netfilter.nf_conntrack_max = 10000000
net.netfilter.nf_conntrack_tcp_loose = 0
net.netfilter.nf_conntrack_tcp_timeout_established = 1800
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 10
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 20
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 20
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 20
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 20
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_no_pmtu_disc = 1
net.ipv4.route.flush = 1
net.ipv4.route.max_size = 8048576
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_congestion_control = htcp
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.udp_rmem_min = 16384
net.ipv4.tcp_wmem = 4096 87380 33554432
net.ipv4.udp_wmem_min = 16384
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 400000
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 10
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.rp_filter = 1

View File

@ -0,0 +1,4 @@
# Enable packet forwarding for IPv6
#
net.ipv6.conf.all.forwarding = 1

View File

@ -0,0 +1,7 @@
# Setting need by mailserver (dovecot)
# -
# - Warning messages from dovecot:
# - Warning: Inotify instance limit for user 5000 (UID vmail) exceeded, disabling.
# - Increase /proc/sys/fs/inotify/max_user_instances
# -
fs.inotify.max_user_instances = 2048

View File

@ -0,0 +1,30 @@
# -----
# Running Redis Service (on LX-Container)
#
# See also changes at file /etc/rc.local
# -----
# Got this warning on redis logfile at LX-Container
#
# # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn
# is set to the lower value of 128
#
net.core.somaxconn = 65535
# Redis Server says:
#
# WARNING overcommit_memory is set to 0! Background save may fail under
# low memory condition. To fix this issue add 'vm.overcommit_memory = 1'
# to /etc/sysctl.conf and then reboot or run the command
# 'sysctl vm.overcommit_memory=1' for this to take effect.
vm.overcommit_memory = 1
# increase Linux TCP buffer limits
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 262144
# increase Linux autotuning TCP buffer limits
# min, default, and max number of bytes to use
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 87380 33554432

View File

@ -0,0 +1 @@
vm.swappiness = 5

View File

@ -0,0 +1,8 @@
# Needed by ElasticSearch Installation on virtual guest
# systems (LX-Containers)
#
# The error message there was:
# max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#
vm.max_map_count = 524288

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/journald.conf'
#
[Journal]
MaxFileSec=2day

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/journald.conf'
#
[Journal]
SystemMaxFileSize=10M

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/journald.conf'
#
[Journal]
SystemMaxUse=100M

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/system.conf'
#
[Manager]
DefaultLimitCORE=infinity

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/system.conf'
#
[Manager]
DefaultLimitNOFILE=1048576

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/system.conf'
#
[Manager]
DefaultLimitNPROC=65000

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/system.conf'
#
[Manager]
DefaultLimitRTPRIO=infinity

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/system.conf'
#
[Manager]
DefaultLimitRTTIME=infinity

View File

@ -0,0 +1,4 @@
# Custom Values overrides '/etc/systemd/system.conf'
#
[Manager]
DefaultTasksMax=65000

View File

@ -62,6 +62,11 @@
when:
- "groups['samba_server']|string is search(inventory_hostname)"
- name: Restart systemd-journald
service:
name: systemd-journald
state: restarted
- name: Restart cups
service:

View File

@ -28,53 +28,178 @@
- symlink-sh
- name: (basic.yml) Check file '/etc/systemd/system.conf' exists
stat:
path: /etc/systemd/system
register: etc_systemd_system_conf
# ----------
# security limit (maybe DEPRECATED see systemd settings)
# ----------
- name: (basic.yml) Ensure directory '/etc/security/limits.d' exists
file:
path: /etc/security/limits.d
state: directory
mode: 0755
group: root
owner: root
when:
- set_default_limit_nofile|bool == true
- inventory_hostname in groups['file_server']
- copy_plain_files_security_limits is defined
- copy_plain_files_security_limits|length > 0
tags:
- systemd-config
- name: (basic.yml) Change DefaultLimitNOFILE to 1048576
lineinfile:
dest: /etc/systemd/system.conf
state: present
regexp: '^DefaultLimitNOFILE'
line: 'DefaultLimitNOFILE=1048576'
insertafter: '^#DefaultLimitNOFILE'
- name: (basic.yml) Ensure files /etc/security/limits.d/*.conf exists
copy:
src: '{{ item.src_path }}'
dest: '{{ item.dest_path }}'
owner: root
group: root
mode: '0644'
loop: "{{ copy_plain_files_security_limits }}"
loop_control:
label: 'dest: {{ item.name }}'
when:
- set_default_limit_nofile|bool == true
- etc_systemd_system_conf.stat.exists == true
- inventory_hostname in groups['file_server']
- copy_plain_files_security_limits is defined
- copy_plain_files_security_limits|length > 0
tags:
- systemd-nofiles
- systemd-config
- name: (basic.yml) Check file '/etc/security/limits.conf.ORIG' exists
stat:
path: /etc/security/limits.conf.ORIG
register: etc_security_limits_conf_ORIG
# ----------
# systemd stuff
# ----------
- name: (basic.yml) Ensure directory '/etc/systemd/system.conf.d' exists
file:
path: /etc/systemd/system.conf.d
state: directory
mode: 0755
group: root
owner: root
when:
- inventory_hostname in groups['file_server']
- copy_plain_files_systemd is defined
- copy_plain_files_systemd|length > 0
tags:
- limits-conf
- systemd-config
- name: (basic.yml) Backup installation version of file '/etc/security/limits.conf'
command: cp -a /etc/security/limits.conf /etc/security/limits.conf.ORIG
when: etc_security_limits_conf_ORIG.stat.exists == False
- name: (basic.yml) Ensure files /etc/systemd/system.conf.d/*.conf exists
copy:
src: '{{ item.src_path }}'
dest: '{{ item.dest_path }}'
owner: root
group: root
mode: '0644'
loop: "{{ copy_plain_files_systemd }}"
loop_control:
label: 'dest: {{ item.name }}'
when:
- inventory_hostname in groups['file_server']
- copy_plain_files_systemd is defined
- copy_plain_files_systemd|length > 0
tags:
- limits-conf
- systemd-config
- name: (basic.yml) Ensure directory '/etc/systemd/journald.conf.d' exists
file:
path: /etc/systemd/journald.conf.d
state: directory
mode: 0755
group: root
owner: root
when:
- copy_plain_files_journald is defined
- copy_plain_files_journald|length > 0
tags:
- systemd-config
- name: (basic.yml) Ensure files /etc/systemd/journald.conf.d/*.conf exists
copy:
src: '{{ item.src_path }}'
dest: '{{ item.dest_path }}'
owner: root
group: root
mode: '0644'
loop: "{{ copy_plain_files_journald }}"
loop_control:
label: 'dest: {{ item.name }}'
notify: "Restart systemd-journald"
when:
- copy_plain_files_journald is defined
- copy_plain_files_journald|length > 0
tags:
- systemd-config
- name: (basic.yml) Create new sshd_config from template limits.conf.j2
# ----------
# unattended upgrades
# ----------
- name: (basic.yml) install unattended-upgrades
apt: pkg=unattended-upgrades state=present
when:
- ansible_facts['distribution'] == "Debian"
tags:
- unattended-upgrades
- name: (basic.yml) install apt-listchanges
apt: pkg=apt-listchanges state=present
when:
- ansible_facts['distribution'] == "Debian"
tags:
- unattended-upgrades
- name: (basic.yml) remove apticron
apt: pkg=apticron state=absent
when:
- ansible_facts['distribution'] == "Debian"
tags:
- unattended-upgrades
- name: (basic.yml) check if /etc/apt/apt.conf.d/20auto-upgrades exists
stat: path=/etc/apt/apt.conf.d/20auto-upgrades
register: ua_enabled
when:
- ansible_facts['distribution'] == "Debian"
tags:
- unattended-upgrades
- name: (basic.yml) activate unattended upgrades
shell: DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true dpkg-reconfigure -plow unattended-upgrades
when:
- ansible_facts['distribution'] == "Debian"
- ua_enabled.stat.exists == False
tags:
- unattended-upgrades
- name: (basic.yml) copy apt-listchanges.conf
template:
src: etc/security/limits.conf.j2
dest: /etc/security/limits.conf
src: etc/apt/listchanges.conf.j2
dest: /etc/apt/listchanges.conf
owner: root
group: root
mode: 0644
when:
- ansible_facts['distribution'] == "Debian"
tags:
- limits-conf
- unattended-upgrades
- name: (basic.yml) copy unattended-upgrades conf
template:
src: etc/apt/apt.conf.d/50unattended-upgrades.j2
dest: /etc/apt/apt.conf.d/50unattended-upgrades
backup: yes
owner: root
group: root
mode: 0644
when:
- ansible_facts['distribution'] == "Debian"
tags:
- unattended-upgrades
# ----------
# - /etc/hosts
# ----------
- name: (basic.yml) Check file '/etc/hosts.ORIG' exists
stat:

View File

@ -73,4 +73,10 @@
owner: root
group: root
mode: 0644
notify: "Restart systemd-resolved"
- name: Restart systemd-resolved service
ansible.builtin.service:
name: systemd-resolved
state: restarted

View File

@ -0,0 +1,17 @@
# {{ ansible_managed }}
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
"origin=Debian,codename=${distro_codename}-updates";
"origin=Debian,codename=${distro_codename}-backports";
};
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

View File

@ -0,0 +1,8 @@
# {{ ansible_managed }}
[apt]
frontend=mail
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=both