Ξέρω τι θα σκέφτονται ορισμένοι: «Antivirus στο Linux; Σοβαρά τώρα;»
Όσοι χρησιμοποιούμε Linux, γνωρίζουμε ότι η αρχιτεκτονική του συστήματος (δικαιώματα πρόσβασης, διαχωρισμός χρηστών/root, απουσία εκτελέσιμων .exe) δεν έχει ανάγκη από παραδοσιακά antivirus για την αυτοπροστασία του. Υπάρχει όμως μια πολύ συγκεκριμένη κατηγορία χρηστών που το χρειάζεται: όσοι εργαζόμαστε σε μικτά περιβάλλοντα και ανταλλάσσουμε καθημερινά αρχεία με Windows μηχανήματα.
Ένα Linux σύστημα μπορεί να μεταφέρει έναν Windows ιό μέσα σε ένα έγγραφο Word, ένα PDF ή ένα zip αρχείο χωρίς το ίδιο να επηρεαστεί στο ελάχιστο. Αν όμως αυτό το αρχείο φτάσει μέσω email ή USB στον υπολογιστή ενός συναδέλφου στο γραφείο, η ζημιά έγινε.

Για να μην ψάχνουμε δικαιολογίες σε μια τυχόν «στραβή», η λύση είναι η αυτοματοποίηση της σάρωσης με το ClamAV.
Τι θα χρειαστείτε:
Από τον Διαχειριστή Λογισμικού της διανομής σας (ή μέσω τερματικού), εγκαταστήστε τα παρακάτω πακέτα:
clamav: Το βασικό εργαλείο σάρωσης γραμμής εντολών (clamscan).
clamav-daemon: Η υπηρεσία που τρέχει στο υπόβαθρο κρατώντας τη βάση δεδομένων στη μνήμη RAM για ακαριαία σάρωση (clamdscan).
freshclam: Η υπηρεσία που ενημερώνει αυτόματα τη βάση δεδομένων με τις υπογραφές των ιών.
(Σημείωση: Τα παλαιότερα γραφικά περιβάλλοντα όπως το ClamTK έχουν εγκαταλειφθεί. Ένα ελαφρύ script είναι πολύ πιο γρήγορο, ευέλικτο και δεν καταναλώνει πόρους).
Το Script: clamav-scan.sh
Δημιουργήστε ένα νέο αρχείο κειμένου, ονομάστε το clamav-scan.sh (για παράδειγμα μέσα σε έναν κρυφό φάκελο .apps στο /home σας) και επικολλήστε τον παρακάτω κώδικα:
>! #!/bin/bash
>!
>! # ==============================================================================
>! # ClamAV Automated & Interactive Scanner
>! # ==============================================================================
>!
>! 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}"; }
>!
>! REAL_USER=$(whoami)
>! REAL_UID=$(id -u "$REAL_USER")
>!
>! if [ -z "$DISPLAY" ]; then
>! export DISPLAY=:0
>! fi
>!
>! if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
>! export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${REAL_UID}/bus"
>! fi
>!
>! # Συνάρτηση εντοπισμού εξωτερικών δίσκων
>! get_external_disks() {
>! shopt -s nullglob
>! for DISK in /media/"$REAL_USER"/*/ /run/media/"$REAL_USER"/*/; do
>! [ -d "$DISK" ] && TARGETS+=("$DISK")
>! done
>! shopt -u nullglob
>! }
>!
>! TARGETS=()
>! if [ "$1" = "--auto" ]; then
>! TARGETS+=("/home/$REAL_USER")
>! get_external_disks
>! AUTO=true
>! else
>! AUTO=false
>! fi
>!
>! if [ "$AUTO" = false ]; then
>! echo -e "${BLUE}===== ClamAV SCAN: $(date) =====${NC}"
>! echo -e "\nΤι θέλεις να σαρώσεις;"
>! echo "1) Μόνο /home/$REAL_USER"
>! echo "2) Μόνο εξωτερικούς δίσκους"
>! echo "3) /home/$REAL_USER + εξωτερικούς δίσκους"
>! echo "4) Έξοδος"
>! echo ""
>! read -p "Επιλογή [1-4]: " CHOICE
>!
>! case $CHOICE in
>! 1)
>! TARGETS+=("/home/$REAL_USER")
>! ;;
>! 2)
>! get_external_disks
>! if [ ${#TARGETS[@]} -eq 0 ]; then
>! warn "Δεν βρέθηκαν προσαρτημένοι εξωτερικοί δίσκοι."
>! exit 1
>! fi
>! ;;
>! 3)
>! TARGETS+=("/home/$REAL_USER")
>! get_external_disks
>! ;;
>! 4)
>! echo "Έξοδος."
>! exit 0
>! ;;
>! *)
>! fail "Μη έγκυρη επιλογή!"
>! exit 1
>! ;;
>! esac
>! fi
>!
>! step "🔄 Εξακρίβωση ClamAV signatures..."
>! if systemctl is-active --quiet clamav-freshclam || pgrep freshclam > /dev/null; then
>! ok "Η υπηρεσία ενημέρωσης υπογραφών είναι ενεργή."
>! else
>! warn "Η υπηρεσία freshclam δεν τρέχει. Προχωράμε με τις υπάρχουσες υπογραφές."
>! fi
>!
>! LOG="/tmp/clamav_scan_$(date +%Y%m%d_%H%M%S).log"
>! step "🦠 Έναρξη σάρωσης..."
>! echo "Στόχοι: ${TARGETS[*]}"
>! echo ""
>!
>! # Χρήση clamdscan αν ο daemon είναι ενεργός, αλλιώς fallback σε clamscan
>! if systemctl is-active --quiet clamav-daemon || pgrep clamd > /dev/null; then
>! ok "Χρήση ClamAV Daemon (ακαριαία ταχύτητα)..."
>! clamdscan --multiscan --fdpass --infected "${TARGETS[@]}" | tee "$LOG"
>! else
>! warn "Ο ClamAV Daemon δεν τρέχει. Χρήση απλού clamscan (βραδύτερο)..."
>! clamscan -r --infected --bell \
>! --exclude-dir="^/proc" \
>! --exclude-dir="^/sys" \
>! --exclude-dir="^/dev" \
>! "${TARGETS[@]}" | tee "$LOG"
>! fi
>!
>! INFECTED=$(grep -E "Infected files:|Infected:" "$LOG" | awk '{print $NF}')
>! [ -z "$INFECTED" ] && INFECTED=0
>!
>! echo ""
>! if [ "$INFECTED" -eq 0 ]; then
>! ok "Καμία μόλυνση δεν βρέθηκε!"
>! notify-send "ClamAV Scan" "✅ Καμία μόλυνση!\nΣαρώθηκαν: ${TARGETS[*]}" \
>! --icon=security-high --urgency=normal 2>/dev/null || true
>! else
>! fail "Βρέθηκαν $INFECTED μολυσμένα αρχεία!"
>! notify-send "ClamAV Scan" "❌ $INFECTED μολυσμένα αρχεία!\nΔες το log: $LOG" \
>! --icon=security-low --urgency=critical 2>/dev/null || true
>! fi
>!
>! echo -e "\n${BLUE}Log αποθηκεύτηκε στο: $LOG${NC}"
>! echo -e "${GREEN}===== ΟΛΟΚΛΗΡΩΣΗ: $(date) =====${NC}"
>!
>! if [ "$AUTO" = false ]; then
>! read -p "Πίεσε Enter για να κλείσει το παράθυρο..."
>! fi
Κάντε το αρχείο εκτελέσιμο μέσω τερματικού:
chmod +x ~/.apps/clamav-scan.sh
Αλλιώς, δεξί κλικ επάνω του > Ιδιότητες και επιλέξτε το να είναι εκτελέσιμο.
Αυτοματοποίηση με Cronjob (Εβδομαδιαία σάρωση)
Αν θέλετε το script να τρέχει μόνο του στο υπόβαθρο κάθε Κυριακή στις 10:00 το πρωί, ανοίξτε το τερματικό και δώστε:
crontab -e
Προσθέστε στο τέλος του αρχείου τη γραμμή (ορίζοντας τη διαδρομή του log εντός του φακέλου σας):
0 10 * * 7 $HOME/.apps/clamav-scan.sh --auto >> $HOME/.apps/clamav-weekly.log 2>&1
Τι ακριβώς ανιχνεύει το ClamAV;
Το 95%+ της βάσης δεδομένων του ClamAV καλύπτει Windows malware, macro-viruses σε έγγραφα Office/PDF, malicious scripts και phishing.
Για αμιγώς Linux-specific ελέγχους (rootkits και παραβιάσεις συστήματος), εργαλεία όπως το rkhunter και το chkrootkit είναι τα κατάλληλα εργαλεία.
Tips για ταχύτητα:
Αν έχετε μεγάλους καταλόγους με αρχεία βίντεο ή μουσικής και χρησιμοποιείτε το απλό clamscan, μπορείτε να προσθέσετε παραμέτρους εξαίρεσης τύπων αρχείων μέσα στο script:
--exclude="\.mp4$" \
--exclude="\.mkv$" \
--exclude="\.iso$"
Aν θέλετε, το προσθέτετε και στο κεντρικό μενού σας για γρήγορη πρόσβαση.
Δοκιμάστε το και κάθε γνώμη για διορθώσεις ευπρόσδεκτη.
Το ίδιο και για οποιαδήποτε απορία.