Ναι, ναι ξέρω. Κάποιοι θα πείτε: «τι ιούς μας λες ορέ baby boomer;».
Έλα όμως που ζούμε σε παράξενες εποχές πια και τίποτα δεν είναι δεδομένο (οκ, χιούμορ, όλα τα χρόνια που χρησιμοποιώ Linux ποτέ δεν χρειάστηκα antivirus. ΔΕΝ το έχει ανάγκη βασικά).
Από την άλλη, επειδή λόγω εργασίας χρειάζεται να έχω καθημερινή αλληλεπίδραση με ανταλλαγές αρχείων με Windows μηχανήματα δεν θέλω για την όποια τυχόν στραβή να μου καταλογιστούν ευθύνες και από την άλλη δεν θέλω άθελά μου (επειδή ένα Linux σύστημα μπορεί να μεταδίδει Windows ιούς σε αρχεία χωρίς να επηρεάζεται το ίδιο) να παρουσιαστεί πρόβλημα σε κάποιο εργασιακό μηχάνημα.
Tι θα χρειαστείτε:
Απλά, εγκαταστήστε από τον Διαχειριστή Λογισμικού της διανομής σας τα πακετάκια:
- clamav — το command line εργαλείο (το
clamscan) - clamav-daemon — το background service
- freshclam — το εργαλείο ενημέρωσης signatures (έρχεται αυτόματα)
Αφού εγκατασταθούν ανοίξτε τον Επεξεργαστή Κειμένου της διανομής σας και επικολλήστε το ακόλουθο (έβαλα εικονίδια και αναλυτικές επεξηγήσεις):
#!/bin/bash
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
ok() { echo -e "${GREEN}✅ $1${NC}"; }
warn() { echo -e "${YELLOW}⚠️ $1${NC}"; }
fail() { echo -e "${RED}❌ $1${NC}"; }
step() { echo -e "\n${BLUE}$1${NC}"; }
echo -e "${BLUE}===== ClamAV SCAN: $(date) =====${NC}"
# Μενού επιλογής
TARGETS=()
echo -e "\nΤι θέλεις να σαρώσεις;"
echo "1) Μόνο /home"
echo "2) Μόνο εξωτερικούς δίσκους"
echo "3) /home + εξωτερικούς δίσκους"
echo "4) Έξοδος"
echo ""
read -p "Επιλογή [1-4]: " CHOICE
case $CHOICE in
1)
TARGETS+=("/home")
;;
2)
for DISK in /media/το όνομα χρήστη σας/*/; do
[ -d "$DISK" ] && TARGETS+=("$DISK")
done
if [ ${#TARGETS[@]} -eq 0 ]; then
warn "Δεν βρέθηκαν εξωτερικοί δίσκοι στο /media/το όνομα χρήστη σας/"
exit 1
fi
;;
3)
TARGETS+=("/home")
for DISK in /media/το όνομα χρήστη σας/*/; do
[ -d "$DISK" ] && TARGETS+=("$DISK")
done
;;
4)
echo "Έξοδος."
exit 0
;;
*)
fail "Μη έγκυρη επιλογή!"
exit 1
;;
esac
# Ενημέρωση signatures
step "🔄 Ενημέρωση ClamAV signatures..."
if pgrep freshclam > /dev/null; then
warn "Το freshclam τρέχει ήδη στο background — συνεχίζεται η σάρωση."
else
sudo freshclam 2>/dev/null && ok "Signatures ενημερώθηκαν." || warn "Αδυναμία ενημέρωσης — συνεχίζεται η σάρωση."
fi
# Σάρωση
LOG="/tmp/clamav_scan_$(date +%Y%m%d_%H%M%S).log"
step "🦠 Έναρξη σάρωσης..."
echo "Targets: ${TARGETS[*]}"
echo ""
clamscan -r --infected --bell -v \
--exclude-dir="^/proc" \
--exclude-dir="^/sys" \
--exclude-dir="^/dev" \
"${TARGETS[@]}" | tee "$LOG"
# Αποτελέσματα
INFECTED=$(grep "Infected files:" "$LOG" | awk '{print $3}')
echo ""
if [ "$INFECTED" = "0" ]; then
ok "Καμία μόλυνση βρέθηκε!"
DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
notify-send "ClamAV Scan" "✅ Καμία μόλυνση βρέθηκε!\nΣαρώθηκε: ${TARGETS[*]}" \
--icon=security-high --urgency=normal
else
fail "$INFECTED μολυσμένα αρχεία βρέθηκαν!"
DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
notify-send "ClamAV Scan" "❌ $INFECTED μολυσμένα αρχεία!\nΔες: $LOG" \
--icon=security-low --urgency=critical
fi
echo -e "\n${BLUE}Log αποθηκεύτηκε: $LOG${NC}"
echo -e "${GREEN}===== ΟΛΟΚΛΗΡΩΣΗ: $(date) =====${NC}"
read -p "Πίεσε Enter για να κλείσει..."
Αποθηκεύστε, κάντε το Εκτελέσιμο (δεξί κλικ επάνω του > Ιδιότητες) και ονομάστε το:
clamav-scan.sh
Το βάζετε στο /home σας (Προσωπικό Φάκελο) ή όπου αλλού θέλετε (προσωπικά, έχω κάνει έναν κρυφό φάκελο .apps στο /home μου).
Εκεί που λέει: το όνομα χρήστη σας θα βάλετε το δικό σας προφανώς.
Και φυσικά, έχει που λέει: φάκελο που το έχετε θα βάλετε την ανάλογη διαδρομή.
Αν θέλετε, του προσθέτετε ένα cronjob ώστε να τρέχει αυτόματα μια φορά την εβδομάδα πχ.
Για να το κάνετε αυτό, στο πεδίο crontab του script προσθέστε αυτό:
sudo crontab -e
Επίσης, προσθέστε και αυτό στην αρχή του script, μετά τις μεταβλητές χρωμάτων:
if [ "$1" = "--auto" ]; then
TARGETS=("/home")
for DISK in /media/το όνομα χρήηστη σας/*/; do
[ -d "$DISK" ] && TARGETS+=("$DISK")
done
AUTO=true else
AUTO=false
fi
Και στο τέλος του script προσθέστε αυτή τη γραμμή:
0 10 * * 7 /home/*το όνομα χρήστη σας/φάκελο που το έχετε/clamav-scan.sh --auto >> /var/log/clamav-weekly.log 2>&1
Το έχω βάλει να τρέχει Κυριακή στις 10 πμ. Αν θέλετε άλλη μέρα και ώρα απλά αλλάξτε τα αρχικά (10 και 7, δηλαδή ώρα και ημέρα της εβδομάδας).
Άρα, χειροκίνητα εμφανίζει μενού ενώ cron με --auto σαρώνει /home και δίσκους αυτόματα.
info: έχω προσθέσει progress ώστε να φαίνεται ότι δουλεύει, να μη φαίνεται σαν να κόλλησε δηλαδή.
Τι κάνει:
Το ClamAV ανιχνεύει: Windows malware/viruses, Linux malware (υπάρχουν signatures αλλά λιγότερες), Macro viruses σε Office/PDF, Phishing/malicious scripts, Rootkits (μερικά).
Βασικά, το 95%+ της βάσης δεδομένων του ClamAV είναι Windows threats. Αυτό έχει νόημα επειδή οι περισσότεροι ιοί στον κόσμο είναι για Windows.
Πρακτικά λοιπόν, προστατεύει Windows χρήστες που ανταλλάσσουν αρχεία μαζί σας, ανιχνεύει τα λίγα Linux threats που υπάρχουν και ελέγχει documents/PDFs/εικόνες για exploits .
Ωστόσο, για Linux-specific προστασία τα rkhunter και chkrootkit είναι πιο κατάλληλα από το ClamAV.
-Δείτε:
Η ταχύτητά του εξαρτάται από το πόσα αρχεία έχετε και να λάβετε υπόψιν ότι σκανάρει τα πάντα.
Και φυσικά, αν έχετε πολλά αρχεία είναι λογικό και επόμενο να ζεσταθεί λίγο περισσότερο η CPU σας όσο τρέχει το script.
Παρόλα αυτά, αν θέλετε να εξαιρέσετε κάποιους τύπους αρχείων προσθέστε κάτι τέτοιο πχ:
--exclude="\.jpg$" \
--exclude="\.jpeg$" \
--exclude="\.png$" \
--exclude="\.gif$" \
--exclude="\.mp3$" \
--exclude="\.mp4$" \
--exclude="\.mkv$" \
Ανάλογα δηλαδή, βάζετε την κατάληξη των αρχείων που δεν θέλετε να γίνεται έλεγχος.
Ενημερωτικά, να προσθέσω, ότι διαθέτει και γραφικό περιβάλλον το Clamv (ClamavUI) αν θέλετε να το δουλεύετε έτσι. Και αυτό στο Διαχειριστή Λογισμικού της διανομής σας.
Αν και νομίζω ότι είναι περιττό:
Δεν έκανα κάτι μαγικό, δεν ανακάλυψα τον τροχό, απλά χρησιμοποίησα κάποια υπάρχοντα εργαλεία ώστε να αυτοματοποιήσω τον έλεγχο.
-Κλείνοντας, επαναλαμβάνω αν δεν έγινε αντιληπτό:
ΔΕΝ ΧΡΕΙΑΖΕΣΤΕ ANTIVIRUS ΣΤΟ LINUX.
Αν αλληλεπιδράτε με Windows τότε ναι, χρησιμοποιήστε το. Το κάνετε για “ηθικούς” λόγους από πλευράς σας.
