This commit is contained in:
Pablo Martin 2025-07-01 16:14:44 +02:00
parent 5f06a966aa
commit 3343de2dc0
12 changed files with 286 additions and 57 deletions

View file

@ -0,0 +1,65 @@
- name: Secure Debian VPS
hosts: vipy
vars_files:
- ../vars.yml
become: true
tasks:
- name: Update and upgrade apt packages
apt:
update_cache: yes
upgrade: full
autoremove: yes
- name: Create new user
user:
name: "{{ new_user }}"
groups: sudo
shell: /bin/bash
state: present
create_home: yes
- name: Set up SSH directory for new user
file:
path: "/home/{{ new_user }}/.ssh"
state: directory
mode: "0700"
owner: "{{ new_user }}"
group: "{{ new_user }}"
- name: Copy current user's authorized_keys to new user
copy:
src: "/home/{{ ansible_user }}/.ssh/authorized_keys"
dest: "/home/{{ new_user }}/.ssh/authorized_keys"
owner: "{{ new_user }}"
group: "{{ new_user }}"
mode: "0600"
remote_src: true
- name: Allow new user to run sudo without password
copy:
dest: "/etc/sudoers.d/{{ new_user }}"
content: "{{ new_user }} ALL=(ALL) NOPASSWD:ALL"
owner: root
group: root
mode: "0440"
- name: Disable root login
lineinfile:
path: /etc/ssh/sshd_config
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
state: present
backrefs: yes
loop:
- { regexp: "^#?PermitRootLogin .*", line: "PermitRootLogin no" }
- {
regexp: "^#?PasswordAuthentication .*",
line: "PasswordAuthentication no",
}
- name: Restart SSH
service:
name: ssh
state: restarted

View file

@ -0,0 +1,76 @@
- name: Secure Debian VPS
hosts: vipy
vars_files:
- ../vars.yml
become: true
tasks:
- name: Install UFW
apt:
name: ufw
state: present
- name: Turn UFW off
ufw:
state: disabled
- name: Configure UFW default rules
ufw:
policy: deny
direction: incoming
- name: Allow outgoing traffic
ufw:
rule: allow
direction: out
- name: Allow SSH port through UFW
ufw:
rule: allow
direction: in
port: "{{ ssh_port }}"
proto: tcp
from_ip: "{{ allow_ssh_from if allow_ssh_from != 'any' else omit }}"
- name: Turn UFW on
ufw:
state: enabled
- name: Install fail2ban
apt:
name: fail2ban
state: present
- name: Ensure fail2ban is running
service:
name: fail2ban
enabled: yes
state: started
- name: Remove unnecessary services
apt:
name: "{{ item }}"
state: absent
purge: yes
loop:
- exim4
- apache2
- cups
- rpcbind
- nfs-common
- telnet
- ftp
- samba
- name: Install auditd
apt:
name:
- auditd
- audispd-plugins
state: present
- name: Enable and start auditd
service:
name: auditd
enabled: yes
state: started