lavenderguiar
3 years ago
11 changed files with 265 additions and 1 deletions
@ -1,2 +1,2 @@ |
|||||
# linode-preflight |
# Linode-Preflight |
||||
A set of Ansible tasks for preflighting a Linode instance. |
A set of Ansible tasks for preflighting a Linode instance. |
||||
|
@ -0,0 +1,15 @@ |
|||||
|
--- |
||||
|
# Preflight |
||||
|
preflight__timezone: UTC |
||||
|
|
||||
|
# Firewall |
||||
|
firewall__ssh_rule: limit |
||||
|
|
||||
|
# User |
||||
|
admin_user: "admin" |
||||
|
admin_group: "admin" |
||||
|
|
||||
|
# SSH Config |
||||
|
ssh__port: 8822 |
||||
|
ssh__password_authentication: "no" |
||||
|
ssh__address_family: "inet" |
@ -0,0 +1,6 @@ |
|||||
|
--- |
||||
|
- name: restart sshd |
||||
|
service: |
||||
|
name: sshd |
||||
|
state: restarted |
||||
|
become: yes |
@ -0,0 +1,9 @@ |
|||||
|
galaxy-info: |
||||
|
author: James Lavender |
||||
|
description: A set of preflight tasks for any Linode Instance. |
||||
|
license: GPLv3 |
||||
|
min_ansible_version: 1.2 |
||||
|
galaxy-tags: |
||||
|
- linode-preflight |
||||
|
|
||||
|
dependencies: [] |
@ -0,0 +1,25 @@ |
|||||
|
--- |
||||
|
- name: add_user | Add admin user |
||||
|
user: |
||||
|
name: "{{ admin_user }}" |
||||
|
group: "{{ admin_group }}" |
||||
|
state: present |
||||
|
create_home: yes |
||||
|
become: yes |
||||
|
|
||||
|
- name: add_user | Ensure admin user ssh directory exists |
||||
|
file: |
||||
|
path: "/home/{{ admin_user }}/.ssh/" |
||||
|
state: directory |
||||
|
owner: "{{ admin_user }}" |
||||
|
group: "{{ admin_group }}" |
||||
|
mode: 0700 |
||||
|
become: yes |
||||
|
|
||||
|
- name: add_user | Add SSH keys to admin user |
||||
|
authorized_key: |
||||
|
user: "{{ admin_user }}" |
||||
|
state: "{{ item.state }}" |
||||
|
key: "{{ item.key }}" |
||||
|
with_items: "{{ authorized_keys }}" |
||||
|
become: yes |
@ -0,0 +1,49 @@ |
|||||
|
--- |
||||
|
- name: firewall | install ufw |
||||
|
apt: |
||||
|
pkg: ufw |
||||
|
state: present |
||||
|
become: yes |
||||
|
|
||||
|
- name: firewall | Open ssh port |
||||
|
ufw: |
||||
|
state: enabled |
||||
|
rule: "{{ firewall__ssh_rule }}" |
||||
|
port: "{{ item }}" |
||||
|
proto: tcp |
||||
|
loop: |
||||
|
- 22 |
||||
|
- 8822 |
||||
|
become: yes |
||||
|
|
||||
|
- name: firewall | deny all incoming connections |
||||
|
ufw: |
||||
|
state: enabled |
||||
|
policy: deny |
||||
|
direction: incoming |
||||
|
become: yes |
||||
|
|
||||
|
- name: firewall | allow all outgoing connections |
||||
|
ufw: |
||||
|
state: enabled |
||||
|
policy: allow |
||||
|
direction: outgoing |
||||
|
become: yes |
||||
|
|
||||
|
- name: firewall | allow all connections from localhost |
||||
|
ufw: |
||||
|
state: enabled |
||||
|
from: "127.0.0.1" |
||||
|
rule: allow |
||||
|
proto: any |
||||
|
become: yes |
||||
|
|
||||
|
- name: firewall | Copy SSH config |
||||
|
template: |
||||
|
src: "etc/ssh/sshd_config.j2" |
||||
|
dest: "/etc/ssh/sshd_config" |
||||
|
mode: 0644 |
||||
|
validate: '/usr/sbin/sshd -t -f %s' |
||||
|
become: yes |
||||
|
notify: restart sshd |
||||
|
|
@ -0,0 +1,4 @@ |
|||||
|
--- |
||||
|
- include_tasks: preflight.yml |
||||
|
- include_tasks: add_user.yml |
||||
|
- include_tasks: firewall.yml |
@ -0,0 +1,2 @@ |
|||||
|
--- |
||||
|
- name: ohmybash | Install oh-my-bash |
@ -0,0 +1,27 @@ |
|||||
|
--- |
||||
|
- name: preflight | install ntp |
||||
|
apt: |
||||
|
name: ntp |
||||
|
state: present |
||||
|
become: yes |
||||
|
|
||||
|
- name: preflight | ensure ntp is running on boot |
||||
|
service: |
||||
|
name: ntp |
||||
|
state: started |
||||
|
enabled: yes |
||||
|
become: yes |
||||
|
|
||||
|
- name: preflight | Set Timezone |
||||
|
timezone: |
||||
|
name: "{{ preflight__timezone }}" |
||||
|
become: yes |
||||
|
|
||||
|
- name: preflight | copy 10periodic unattended upgrades |
||||
|
template: |
||||
|
src: "etc/apt/apt.conf.d/10periodic.j2" |
||||
|
dest: "/etc/apt/apt.conf.d/10periodic" |
||||
|
owner: root |
||||
|
group: root |
||||
|
mode: 0644 |
||||
|
become: yes |
@ -0,0 +1,4 @@ |
|||||
|
APT::Periodic::Update-Package-Lists "1"; |
||||
|
APT::Periodic::Unattended-Upgrade "1"; |
||||
|
APT::Periodic::Download-Upgradeable-Packages "0"; |
||||
|
APT::Periodic::AutocleanInterval "0"; |
@ -0,0 +1,123 @@ |
|||||
|
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ |
||||
|
|
||||
|
# This is the sshd server system-wide configuration file. See |
||||
|
# sshd_config(5) for more information. |
||||
|
|
||||
|
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin |
||||
|
|
||||
|
# The strategy used for options in the default sshd_config shipped with |
||||
|
# OpenSSH is to specify options with their default value where |
||||
|
# possible, but leave them commented. Uncommented options override the |
||||
|
# default value. |
||||
|
|
||||
|
Include /etc/ssh/sshd_config.d/*.conf |
||||
|
|
||||
|
Port {{ ssh__port }} |
||||
|
AddressFamily {{ ssh__address_family }} |
||||
|
#ListenAddress 0.0.0.0 |
||||
|
#ListenAddress :: |
||||
|
|
||||
|
#HostKey /etc/ssh/ssh_host_rsa_key |
||||
|
#HostKey /etc/ssh/ssh_host_ecdsa_key |
||||
|
#HostKey /etc/ssh/ssh_host_ed25519_key |
||||
|
|
||||
|
# Ciphers and keying |
||||
|
#RekeyLimit default none |
||||
|
|
||||
|
# Logging |
||||
|
#SyslogFacility AUTH |
||||
|
#LogLevel INFO |
||||
|
|
||||
|
# Authentication: |
||||
|
|
||||
|
#LoginGraceTime 2m |
||||
|
PermitRootLogin yes |
||||
|
#StrictModes yes |
||||
|
#MaxAuthTries 6 |
||||
|
#MaxSessions 10 |
||||
|
|
||||
|
#PubkeyAuthentication yes |
||||
|
|
||||
|
# Expect .ssh/authorized_keys2 to be disregarded by default in future. |
||||
|
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 |
||||
|
|
||||
|
#AuthorizedPrincipalsFile none |
||||
|
|
||||
|
#AuthorizedKeysCommand none |
||||
|
#AuthorizedKeysCommandUser nobody |
||||
|
|
||||
|
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts |
||||
|
#HostbasedAuthentication no |
||||
|
# Change to yes if you don't trust ~/.ssh/known_hosts for |
||||
|
# HostbasedAuthentication |
||||
|
#IgnoreUserKnownHosts no |
||||
|
# Don't read the user's ~/.rhosts and ~/.shosts files |
||||
|
#IgnoreRhosts yes |
||||
|
|
||||
|
# To disable tunneled clear text passwords, change to no here! |
||||
|
PasswordAuthentication {{ ssh__password_authentication }} |
||||
|
PermitEmptyPasswords no |
||||
|
|
||||
|
# Change to yes to enable challenge-response passwords (beware issues with |
||||
|
# some PAM modules and threads) |
||||
|
ChallengeResponseAuthentication no |
||||
|
|
||||
|
# Kerberos options |
||||
|
#KerberosAuthentication no |
||||
|
#KerberosOrLocalPasswd yes |
||||
|
#KerberosTicketCleanup yes |
||||
|
#KerberosGetAFSToken no |
||||
|
|
||||
|
# GSSAPI options |
||||
|
#GSSAPIAuthentication no |
||||
|
#GSSAPICleanupCredentials yes |
||||
|
#GSSAPIStrictAcceptorCheck yes |
||||
|
#GSSAPIKeyExchange no |
||||
|
|
||||
|
# Set this to 'yes' to enable PAM authentication, account processing, |
||||
|
# and session processing. If this is enabled, PAM authentication will |
||||
|
# be allowed through the ChallengeResponseAuthentication and |
||||
|
# PasswordAuthentication. Depending on your PAM configuration, |
||||
|
# PAM authentication via ChallengeResponseAuthentication may bypass |
||||
|
# the setting of "PermitRootLogin without-password". |
||||
|
# If you just want the PAM account and session checks to run without |
||||
|
# PAM authentication, then enable this but set PasswordAuthentication |
||||
|
# and ChallengeResponseAuthentication to 'no'. |
||||
|
UsePAM yes |
||||
|
|
||||
|
#AllowAgentForwarding yes |
||||
|
#AllowTcpForwarding yes |
||||
|
#GatewayPorts no |
||||
|
X11Forwarding yes |
||||
|
#X11DisplayOffset 10 |
||||
|
#X11UseLocalhost yes |
||||
|
#PermitTTY yes |
||||
|
PrintMotd no |
||||
|
#PrintLastLog yes |
||||
|
#TCPKeepAlive yes |
||||
|
#PermitUserEnvironment no |
||||
|
#Compression delayed |
||||
|
#ClientAliveInterval 0 |
||||
|
#ClientAliveCountMax 3 |
||||
|
#UseDNS no |
||||
|
#PidFile /var/run/sshd.pid |
||||
|
#MaxStartups 10:30:100 |
||||
|
#PermitTunnel no |
||||
|
#ChrootDirectory none |
||||
|
#VersionAddendum none |
||||
|
|
||||
|
# no default banner path |
||||
|
#Banner none |
||||
|
|
||||
|
# Allow client to pass locale environment variables |
||||
|
AcceptEnv LANG LC_* |
||||
|
|
||||
|
# override default of no subsystems |
||||
|
Subsystem sftp /usr/lib/openssh/sftp-server |
||||
|
|
||||
|
# Example of overriding settings on a per-user basis |
||||
|
#Match User anoncvs |
||||
|
# X11Forwarding no |
||||
|
# AllowTcpForwarding no |
||||
|
# PermitTTY no |
||||
|
# ForceCommand cvs server |
Loading…
Reference in new issue