|
| 1 | + |
| 2 | + - name: default config for ufw |
| 3 | + become: true |
| 4 | + ufw: |
| 5 | + state: enabled |
| 6 | + logging: on |
| 7 | + notify: restart ufw service |
| 8 | + |
| 9 | + - name: ufw - default deny in |
| 10 | + become: true |
| 11 | + ufw: |
| 12 | + policy: deny |
| 13 | + direction: incoming |
| 14 | + notify: restart ufw service |
| 15 | + |
| 16 | + - name: ufw - default deny out |
| 17 | + become: true |
| 18 | + ufw: |
| 19 | + policy: deny |
| 20 | + direction: outgoing |
| 21 | + notify: restart ufw service |
| 22 | + |
| 23 | + - name: ufw - configure ssh rule |
| 24 | + become: true |
| 25 | + ufw: |
| 26 | + rule: limit |
| 27 | + direction: in |
| 28 | + to_port: "{{ ssh_port }}" |
| 29 | + notify: restart ufw service |
| 30 | + |
| 31 | + - name: ufw - allow outgoing ports |
| 32 | + become: true |
| 33 | + ufw: |
| 34 | + rule: allow |
| 35 | + direction: out |
| 36 | + to_port: "{{ item }}" |
| 37 | + with_items: |
| 38 | + - "53" |
| 39 | + - "123" |
| 40 | + - "80" |
| 41 | + - "443" |
| 42 | + - "{{ mail_port }}" #outgoing mail port |
| 43 | + notify: restart ufw service |
| 44 | + |
| 45 | + - name: configure psad |
| 46 | + become: true |
| 47 | + lineinfile: |
| 48 | + dest: /etc/psad/psad.conf |
| 49 | + regexp: "{{ item.regexp }}" |
| 50 | + line: "{{ item.line }}" |
| 51 | + loop: |
| 52 | + - { regexp: '^EMAIL_ADDRESSES', line: 'EMAIL_ADDRESSES {{ mail_to }};' } |
| 53 | + - { regexp: '^EXPECT_TCP_OPTIONS', line: 'EXPECT_TCP_OPTIONS Y;'} |
| 54 | + - { regexp: '^ENABLE_PSADWATCHD', line: 'ENABLE_PSADWATCHD Y;'} |
| 55 | + - { regexp: '^ENABLE_AUTO_IDS ', line: 'ENABLE_AUTO_IDS Y;'} |
| 56 | + - { regexp: '^ENABLE_AUTO_IDS_EMAILS', line: 'ENABLE_AUTO_IDS_EMAILS Y;'} |
| 57 | + - { regexp: '^AUTO_IDS_DANGER_LEVEL', line: 'AUTO_IDS_DANGER_LEVEL 3;'} |
| 58 | + - { regexp: '^HOSTNAME', line: 'HOSTNAME {{ ansible_hostname }};'} |
| 59 | + notify: restart psad service |
| 60 | + |
| 61 | + - name: add logging to ufw before.rules |
| 62 | + become: true |
| 63 | + blockinfile: |
| 64 | + dest: /etc/ufw/before.rules |
| 65 | + insertbefore: "COMMIT" |
| 66 | + marker: "# {mark} ANSIBLE MANAGED BLOCK" |
| 67 | + block: | |
| 68 | + # log all traffic so psad can analyze |
| 69 | + -A INPUT -j LOG --log-tcp-options --log-prefix "[IPTABLES] " |
| 70 | + -A FORWARD -j LOG --log-tcp-options --log-prefix "[IPTABLES] " |
| 71 | + notify: restart ufw service |
| 72 | + |
| 73 | + - name: add logging to ufw before6.rules |
| 74 | + become: true |
| 75 | + blockinfile: |
| 76 | + dest: /etc/ufw/before6.rules |
| 77 | + insertbefore: "COMMIT" |
| 78 | + marker: "# {mark} ANSIBLE MANAGED BLOCK" |
| 79 | + block: | |
| 80 | + # log all traffic so psad can analyze |
| 81 | + -A INPUT -j LOG --log-tcp-options --log-prefix "[IPTABLES] " |
| 82 | + -A FORWARD -j LOG --log-tcp-options --log-prefix "[IPTABLES] " |
| 83 | + notify: restart ufw service |
| 84 | + |
| 85 | + - name: update psad signatures |
| 86 | + become: true |
| 87 | + shell: | |
| 88 | + psad --sig-update |
| 89 | +
|
| 90 | + - name: configure fail2ban |
| 91 | + become: true |
| 92 | + blockinfile: |
| 93 | + path: /etc/fail2ban/jail.local |
| 94 | + block: | |
| 95 | + [DEFAULT] |
| 96 | + # the IP address range we want to ignore |
| 97 | + ignoreip = 127.0.0.1/8 |
| 98 | +
|
| 99 | + # who to send e-mail to |
| 100 | + destemail = {{ mail_to }} |
| 101 | +
|
| 102 | + # who is the email from |
| 103 | + sender = {{ mail_from }} |
| 104 | +
|
| 105 | + # since we're using exim4 to send emails |
| 106 | + mta = mail |
| 107 | +
|
| 108 | + # get email alerts |
| 109 | + action = %(action_mwl)s |
| 110 | + create: true |
| 111 | + notify: restart fail2ban service |
| 112 | + |
| 113 | + - name: fail2ban - configure ssh jail |
| 114 | + become: true |
| 115 | + blockinfile: |
| 116 | + path: /etc/fail2ban/jail.d/ssh.local |
| 117 | + block: | |
| 118 | + [sshd] |
| 119 | + enabled = true |
| 120 | + banaction = ufw |
| 121 | + port = {{ ssh_port }} |
| 122 | + filter = sshd |
| 123 | + logpath = %(sshd_log)s |
| 124 | + maxretry = 5 |
| 125 | + create: true |
| 126 | + notify: restart fail2ban service |
| 127 | + |
0 commit comments