Tips en Trucs 2013

Beveilig de toegang tot uw computer met SSHGuard

Bijna alle acties op uw computer worden in logboeken bijgehouden. Verschillende hulpmiddelen (zoals fail2ban en logcheck) houden logboeken in de gaten en voeren op basis van uw richtlijnen acties uit. Deze acties bestaan meestal uit het aanpassen van de firewall instellingen om de aanvallen te stoppen of bij het vinden van onregelmatigheden door het zenden van een waarschuwing.

Ook SSHGuard is zo'n hulpmiddel. SSHGuard is in C geschreven waardoor het minder geheugen gebruikt en de processor minder belast.

Hoe werkt SSHGuard?

In het kort: het ontvangt log berichten, bepaalt aan de hand van deze log berichten of een netwerkdienst wordt misbruikt, en blokkeert het adres van de dader, na verloop van tijd wordt de blokkering terug verwijderd.

M.a.w. sshguard werkt als een daemon op de achtergrond, en ontvangt via verschillende kanalen (bijvoorbeeld via syslog) log berichten. Wanneer SSHGuard opmerkt dat netwerkdienst Y wordt mishandeld door adres X, wordt via de firewall X geblokkeerd. SSHGuard blijft het adres X een tijd blokkeren, daarna krijgt adres X automatisch terug toegang.

Merk op dat SSHGuard (ondanks de naam) in staat is verschillende netwerkdiensten te beschermen (naast SSH ook verschillende FTP diensten, Exim, dovecot, enz.). Het werkt samen met alle veel gebruikte firewall systemen, ondersteunt IPv6, whitelisting (alleen toestaan wat goed is), suspension (afsluiten van diensten) en verificatie van de log berichten.

Installatie

Werkt als root in de terminal

su

Installeer het sshguard pakket uit de security softwarebron

zypper addrepo --refresh http://download.opensuse.org/repositories/security/openSUSE_12.2/ opensuse-security
zypper install sshguard

Configureer SSHGuard

De SSHGuard instellingen kun je via het bestand /etc/sysconfig/sshguard met een editor aanpassen:
joe /etc/sysconfig/sshguard
Voor het beschermen van SSH toegang zijn de standaardinstellingen meer dan voldoende. Voorbeeld: wil je de beveiliging wat minder streng instellen, pas je de waarde van ATTACK_ATTEMPTS aan van 4 naar 40.

Pas het opstartscript van SSHGuard aan

Om de openSUSE firewall configuratie niet te storen, schakel je in het bestand /etc/init.d/sshguard de opdrachten iptables_start en iptables_stop uit, door er commentaarregels van te maken.
# Reset status of this service
rc_reset
case "$1" in
    start)  
        echo -n "Starting SSHGUARD "
#       iptables_start
        setup_cmdline 
        /sbin/startproc -q $SSHGUARD_BIN $cmdline
        rc_status -v
        ;;
    stop) 
        echo -n "Shutting down SSHGUARD "
        /sbin/killproc -q -TERM $SSHGUARD_BIN
#       iptables_stop
        rc_status -v 
        ;;

Activeer het SSHGuard opstartscript

systemctl enable sshguard.service

Activeer het gebruik van eigen firewall regels

Activeer in het bestand /etc/sysconfig/SuSEfirewall2 het bestand met de eigen firewall regels door het commentaarteken in de volgende regel te verwijderen:
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
en in de volgende regel een commentaarteken te plaatsen
#FW_CUSTOMRULES=""

Eigen firewall regels toevoegen

Voeg in het bestand /etc/sysconfig/scripts/SuSEfirewall2-custom twee iptables regels toe
fw_custom_after_chain_creation() {
    # these rules will be loaded after the various input_* and forward_* chains
    # are created.
    # You can use this hook to allow/deny certain IP protocols or TCP/UDP
    # ports before the SuSEfirewall2 generated rules are hit.

#example: always filter backorifice/netbus trojan connect requests and log them.
#for target in LOG DROP; do
#    for chain in input_ext input_dmz input_int forward_int forward_ext forward_dmz; do
#        iptables -A $chain -j $target -p tcp --dport 31337
#        iptables -A $chain -j $target -p udp --dport 31337
#        iptables -A $chain -j $target -p tcp --dport 12345:12346
#        iptables -A $chain -j $target -p udp --dport 12345:12346
#    done
#done
iptables -N sshguard
iptables -I INPUT 4 -p tcp --dport 22 -j sshguard
    true
}

De SuSEfirewall verder aanpassen

Schakel in het bestand /sbin/SuSEfirewall2 de volgende regel met behulp van een commentaarteken uit
#FW_CUSTOMRULES=""

Enkel IPv4

Daar de hierboven beschreven configuratie enkel getest is op een IPv4 netwerk, laat je als extra beveiliging enkel het gebruik van SSH over IPv4 als volgt toe. Pas in het bestand /etc/ssh/ssh_config de AddressFamily instelling als volgt aan
   AddressFamily inet

Diensten herstarten

Herstart de diensten waarvan we de configuratie manueel aangepast hebben (waaronder SSH zelf). Of indien mogelijk herstart de computer, waardoor alle diensten herstarten en zeker de nieuwe configuratie gebruiken.

Testen

Een beveiliging installeren is de eerste stap. De beveiliging testen is de tweede stap. M.a.w. ga er nooit van uit dat een beveiliging doet wat hij moet doen, zonder deze grondig te testen. Een kleine configuratiefout is voldoende om ervoor te zorgen dat de beveiliging niet werkt of zelfs storend werkt. Testen doe je in dit geval door vanaf een andere computer foutief met SSH in te loggen terwijl je op de computer met SSHGuard de berichten in de gaten houdt:
tail -f /var/log/messages
...
Feb  2 16:09:05 linux-o4h0 sshd[5196]: error: PAM: Authentication failure for dany from 192.168.1.3
Feb  2 16:09:05 linux-o4h0 sshguard[738]: Blocking 192.168.1.3:4 for >630secs: 10 danger in 1 attacks over 0 seconds (all: 10d in 1 abuses over 0s).
De eerste regel toont de laatste aanval, de tweede regel het blokkeren van de dader. Vanaf dit ogenblik kan de dader niet meer via een SSH-verbinding de computer benaderen.