LOGIEN TARKISTUS
#tarkistetaan kirjautumisyritykset palvelimelle reaaliaikaisesti
tail -f /var/log/auth.log
#LOGIEN VÄRITYS
apt install grc
grc tail -f /var/log/auth.log
(multitail myös useammalle logille kerralla)
FAIL2BAN
apt-get update
apt-get install fail2ban
systemctl status fail2ban
nano /etc/fail2ban/jail.conf
#ignoraa lokaalin koneen
ignoreip = 127.0.0.1/8
#määritellään bannin kesto
bantime = 600
#määritellään monta yritystä kirjautumisessa on
maxretry = 3
#tämä lähettää postia root käyttäjälle että joku on bannattu
destemail = root@localhost
sendername = Fail2Ban banned user!
mta = sendmail
action = %(action_mwl)s
#tällä saadaan postiin logitedot kätevästi
action_mw
#tällä kuitenkin saa eniten
action_mwl
#tällä komennolla pysäytetään fail2ban
systemctl fail2ban stop
#tällä aloitetaan
systemctl fail2ban start
#tällä tarkistetaan nykyinen tilanne
systemctl status fail2ban
# tarkistetaan jaili sekä estetyt ipt sekä niiden määrä
fail2ban-client status sshd
UFW PALOMUURI
apt install ufw
systemctl enable ufw
systemctl start ufw
systemctl status ufw
#avataan palomuuriin portti
ufw allow ”portti”
#avataan portti 80
ufw allow 80
OPENSSH
#Asennetaan ssh
apt install openssh-server
#Otetaan ssh käyttöön samalla myös koneen startuppiin
systemctl enable ssh
#Tarkistetaan nykyinen tilanne ssh
systemctl status sshd
#Pysäytetään ssh
systemctl stop sshd
nano /etc/ssh/sshd_config
#vaihdetaan oletus portti toiseen
#Port22
port222
#Kielletään roottina kirjautuminen
#PermitRootLogin
PermitRootLogin no
#Annetaan lassi käyttäjälle lupa kirjautua
AllowUsers lassi
#käynnistetään ssh uudestaan
systemctl restart sshd
netstat -tulpn
netstat -tulpn | grep 22
ufw allow ssh
ufw allow 22
SSH PARANTELU
#Asenntaan moduulit ja sovellukset jotka yhdistävät hyökkääjän ip-osoitteen maahan
apt-get install geoip-bin geoip-database
#Luodaan scripti joka hallitsee pääsyn
nano /usr/local/bin/ipfilter.sh
#!/bin/bash
ALLOW_COUNTRIES=”IN US”
LOGDENY_FACILITY=”authpriv.notice”
if [ $# -ne 1 ]; then
echo ”Usage: `basename $0` ” 1>&2
exit 0 # return true in case of config issue
fi
if [[ ”`echo $1 | grep ’:’`” != ”” ]] ; then
COUNTRY=`/usr/bin/geoiplookup6 ”$1” | awk -F ”: ” ’{ print $2 }’ | awk -F ”,” ’{ print $1 }’ | head -n 1`
else
COUNTRY=`/usr/bin/geoiplookup ”$1” | awk -F ”: ” ’{ print $2 }’ | awk -F ”,” ’{ print $1 }’ | head -n 1`
fi
[[ $COUNTRY = ”IP Address not found” || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE=”ALLOW” || RESPONSE=”DENY”
if [[ ”$RESPONSE” == ”ALLOW” ]] ; then
logger -p $LOGDENY_FACILITY ”$RESPONSE sshd connection from $1 ($COUNTRY)”
exit 0
else
logger -p $LOGDENY_FACILITY ”$RESPONSE sshd connection from $1 ($COUNTRY)”
exit 1
fi
#Tämä muutos pitää tehdä jos halutaan että scripti juoksee!
chmod +x /usr/local/bin/ipfilter.sh
#Lisätään ssh listalle omat muutokset jotta järjestelmää ohjaa tuo uusi scripti ja muut asennetut ohjelmat.
nano /etc/hosts.deny
sshd: ALL
vsftpd: ALL
#Määritellään vielä mistä scripti löytyy.
nano /etc/hosts.allow
sshd: ALL: spawn /usr/local/bin/ipfilter.sh %a
vsftp: ALL: spawn /usr/local/bin/ipfilter.sh %a