commit 7636a2a720c3574fc8a4298681affd273b4b688c Author: guest Date: Sat Oct 8 08:01:11 2022 +0000 First Commit diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..a426b7f --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,62 @@ +version: '3' + +tasks: + + default: + cmds: + - if command -v task; then task -l else go-task -l; fi + + install: + cmds: + - mkdir ~/.local/bin + - mv go-task/task ~/.local/bin + - sudo mv go-task/task.bash /etc/bash_completion.d + - sudo rpm-ostree install fail2ban + - sudo cp zerotier/zerotier.repo /etc/yum/yum.repos.d + - sudo rpm-ostree install zerotier-one + + f2bs: + desc: Status of fail2ban bans + cmds: + - sudo fail2ban-client get sshd banip --with-time + - sudo fail2ban-client get bad-auth banip --with-time + - df + preconditions: + - test 'command -v fail2ban-client' + + ztrs: + desc: Status of zerotier network + cmds: + - sudo zerotier-cli status + - sudo zerotier-cli listnetworks + preconditions: + - test 'command -v zerotier-cli' + + mailu: + desc: Setup fail2ban for mailu frontend + cmds: + - sudo cp mailu-f2b/fail2ban-bad-auth-filter.conf /etc/fail2ban/filter.d/bad-auth.conf + - sudo cp mailu-f2b/fail2ban-bad-auth-jail.conf /etc/fail2ban/jail.d/bad-auth.conf + - sudo cp mailu-f2b/fail2ban-docker-action.conf /etc/fail2ban/action.d/docker-action.conf + - sudo mkdir -p /etc/systemd/system/fail2ban.service.d + - sudo cp mailu-f2b/fail2ban-override.conf /etc/systemd/system/fail2ban.service.d/override.conf + - sudo sudo systemctl daemon-reload + - sudo systemctl restart fail2ban + sources: + - fmailu-f2b/ail2ban-bad-auth-filter.conf + - fmailu-f2b/ail2ban-bad-auth-jail.conf + - fmailu-f2b/ail2ban-docker-action.conf + - fmailu-f2b/ail2ban-override.conf + generates: + - /etc/fail2ban/filter.d/bad-auth.conf + - /etc/fail2ban/jail.d/bad-auth.conf + - /etc/fail2ban/action.d/docker-action.conf + - /etc/systemd/system/fail2ban.service.d/override.conf + preconditions: + - test 'commmand -v fail2ban-server' + + + ztrj: + desc: Join Zerotier happy_hurleys network + cmds: + - sudo zerotier-cli join 35c192ce9bcc3c6e diff --git a/go-task/task b/go-task/task new file mode 100755 index 0000000..9084d1e Binary files /dev/null and b/go-task/task differ diff --git a/go-task/task.bash b/go-task/task.bash new file mode 100644 index 0000000..de93e4c --- /dev/null +++ b/go-task/task.bash @@ -0,0 +1,55 @@ +# vim: set tabstop=2 shiftwidth=2 expandtab: + +_GO_TASK_COMPLETION_LIST_OPTION='--list-all' + +function _task() +{ + local cur prev words cword + _init_completion -n : || return + + # Check for `--` within command-line and quit or strip suffix. + local i + for i in "${!words[@]}"; do + if [ "${words[$i]}" == "--" ]; then + # Do not complete words following `--` passed to CLI_ARGS. + [ $cword -gt $i ] && return + # Remove the words following `--` to not put --list in CLI_ARGS. + words=( "${words[@]:0:$i}" ) + break + fi + done + + # Handle special arguments of options. + case "$prev" in + -d|--dir) + _filedir -d + return $? + ;; + -t|--taskfile) + _filedir yaml || return $? + _filedir yml + return $? + ;; + -o|--output) + COMPREPLY=( $( compgen -W "interleaved group prefixed" -- $cur ) ) + return 0 + ;; + esac + + # Handle normal options. + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "$(_parse_help $1)" -- $cur ) ) + return 0 + ;; + esac + + # Prepare task name completions. + local tasks=( $( "${words[@]}" --silent $_GO_TASK_COMPLETION_LIST_OPTION 2> /dev/null ) ) + COMPREPLY=( $( compgen -W "${tasks[*]}" -- "$cur" ) ) + + # Post-process because task names might contain colons. + __ltrim_colon_completions "$cur" +} + +complete -F _task task diff --git a/mailu-f2b/fail2ban-bad-auth-filter.conf b/mailu-f2b/fail2ban-bad-auth-filter.conf new file mode 100644 index 0000000..78a530e --- /dev/null +++ b/mailu-f2b/fail2ban-bad-auth-filter.conf @@ -0,0 +1,5 @@ +# Fail2Ban configuration file +[Definition] +failregex = .* client login failed: .+ client:\ +ignoreregex = +journalmatch = CONTAINER_TAG=mailu-front diff --git a/mailu-f2b/fail2ban-bad-auth-jail.conf b/mailu-f2b/fail2ban-bad-auth-jail.conf new file mode 100644 index 0000000..0170d85 --- /dev/null +++ b/mailu-f2b/fail2ban-bad-auth-jail.conf @@ -0,0 +1,11 @@ +[bad-auth] +enabled = true +backend = systemd +filter = bad-auth +bantime = 1w +bantime.increment = true +bantime.factor = 2 +bantime.maxtime = 128w +findtime = 300 +maxretry = 5 +action = docker-action diff --git a/mailu-f2b/fail2ban-docker-action.conf b/mailu-f2b/fail2ban-docker-action.conf new file mode 100644 index 0000000..58424e5 --- /dev/null +++ b/mailu-f2b/fail2ban-docker-action.conf @@ -0,0 +1,16 @@ +[Definition] + +actionstart = iptables -N f2b-bad-auth + iptables -A f2b-bad-auth -j RETURN + iptables -I DOCKER-USER -p tcp -m multiport --dports 1:1024 -j f2b-bad-auth + +actionstop = iptables -D DOCKER-USER -p tcp -m multiport --dports 1:1024 -j f2b-bad-auth + iptables -F f2b-bad-auth + iptables -X f2b-bad-auth + +actioncheck = iptables -n -L DOCKER-USER | grep -q 'f2b-bad-auth[ \t]' + +actionban = iptables -I f2b-bad-auth 1 -s -j DROP + +actionunban = iptables -D f2b-bad-auth -s -j DROP + diff --git a/mailu-f2b/fail2ban-override.conf b/mailu-f2b/fail2ban-override.conf new file mode 100644 index 0000000..fa12217 --- /dev/null +++ b/mailu-f2b/fail2ban-override.conf @@ -0,0 +1,2 @@ +[Unit] +After=docker.service diff --git a/zerotier/zerotier.repo b/zerotier/zerotier.repo new file mode 100644 index 0000000..e2a150a --- /dev/null +++ b/zerotier/zerotier.repo @@ -0,0 +1,5 @@ +[zerotier] +name=ZeroTier, Inc. RPM Release Repository +baseurl=http://download.zerotier.com/redhat/fc/36 +enabled=1 +gpgcheck=1 diff --git a/zerotier/zt-gpg-key b/zerotier/zt-gpg-key new file mode 100644 index 0000000..dc7d645 --- /dev/null +++ b/zerotier/zt-gpg-key @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: GPGTools - https://gpgtools.org + +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 +=JgAv +-----END PGP PUBLIC KEY BLOCK-----