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.
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.
su
zypper addrepo --refresh http://download.opensuse.org/repositories/security/openSUSE_12.2/ opensuse-security
zypper install sshguard
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.
# 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 ;;
systemctl enable sshguard.service
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"en in de volgende regel een commentaarteken te plaatsen
#
FW_CUSTOMRULES=""
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
}
#
FW_CUSTOMRULES=""
AddressFamily inet
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.
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.