Windows kai viruses....

Giorgos Keramidas keramida at ceid.upatras.gr
Sun Jul 18 01:59:44 EEST 2004


## Ακολουθεί ένα από εκείνα τα μακροσκελή posts για τα οποία μάλλον έχω
## ήδη φήμη στη λίστα (αν και δεν έχω ακούσει τίποτα τέτοιο ακόμα).

On 2004-07-16 14:29, Kostas Papadakis <konpad at auth.gr> wrote:
> Mporei kapoios parakalo poly na mou exigisei giati sta Windows parolo
> pou xrisimopoioume decent firewalls kai av(updated) exakolouthoume na
> kollame ious opos blaster kai lovesan? Den mporo na to katalavo
> auto.....

Έχω αρχίσει να πιστεύω πως αυτό γίνεται γιατί είναι τέτοιος ο σχεδιασμός
του λειτουργικού συστήματος και όλων των υποσυστημάτων του που να ευνοεί
την διάδοση των ιών.  Δεν θέλω να κάνω υποθέσεις για τους πιθανούς
λόγους για τους οποίους επιλέχθηκε αυτός ο σχεδιασμός, οπότε θα αρκεστώ
να γράψω για τα αποτελέσματα αυτού του σχεδιασμού.

Για να μην νομίζει ο κόσμος ότι μου αρέσει να πετάω αοριστολογίες και
φούμαρα μόνο και μόνο επειδή μισώ τα Windows (κάτι που δε συμβαίνει 100%
αλλά αυτό είναι άλλο θέμα), ας γίνω λίγο πιο σαφής.

> Tote ta Antiviris software kai ta firewall ti rolo varane?

1. Γιατί τα Windows Firewalls είναι χειρότερα από τα OSS αντίστοιχα
===================================================================

Κατ' αρχήν δεν είναι και τόσο "decent", ή κατά το πιο ελληνικότερον τόσο
"αξιοπρεπή", τα firewalls που έχουν τα Windows.  Για μένα είναι εύκολο
να καταλάβω από πολλές πλευρές γιατί συμβαίνει κάτι τέτοιο.  Δεν ξέρω αν
μπορώ να το γράψω και με σαφή, ξεκάθαρο τρόπο αλλά θα δοκιμάσω.

Τι είναι και πώς δουλεύει ένα firewall στα Windows; Είναι ένα πρόγραμμα
φτιαγμένο από τυχαίους προγραμματιστές, με βάση τα μέχρι τώρα
τεκμηριωμένα και δημοσιευμένα (έστω και μόνο σε αυτούς που έχουν
πρόσβαση σε αυτή τη δημοσιευμένη πληροφορία) interfaces των Windows το
οποίο χρησιμοποιεί hooks μέσα στον πυρήνα για να φιλτράρει τα πακέτα
δεδομένων που περνούν από το μηχάνημά σου.

α. Η Έλλειψη Διαφάνειας των Windows
-----------------------------------

Η εξάρτηση αυτή των προγραμματιστών από τα interfaces που έχουν τα
Windows σημαίνει πως αν αυτά είναι λάθος ή δεν έχουν ενημερωθεί σωστά
από τη Microsoft, οι μη-Microsoft προγραμματιστές δεν έχουν σωστές
πληροφορίες για το firewall που φτιάχνουν.  Ένα από τα πιο σοβαρά
πλεονεκτήματα που έχει ένα open source firewall να αντιτάξει σε αυτό
είναι ότι τα open source firewalls όπως το IPFW, το ipfilter και το pf
που έχουν για παράδειγμα τα BSD ή τα ipchains & netfilter που έχει το
Linux είναι ότι οι προγραμματιστές τους έχουν πλήρη και διάφανη
προσπέλαση σε όλο τον κώδικα του πυρήνα του λειτουργικού.

Είναι ανεκτίμητη η διαφάνεια και η προσπελασιμότητα ΚΑΘΕ ΜΕΡΟΥΣ του
πυρήνα, του βασικού μέρους του λειτουργικού.  Πολύτιμη για τον χρήστη, ο
οποίος μπορεί να ρυθμίσει και να αλλάξει ακόμα και τα εσωτερικά
χαρακτηριστικά του λειτουργικού του, αλλά πολύ περισσότερο άφθαστης
αξίας πλεονέκτημα για τον προγραμματιστή που θέλει να γράψει ένα
αξιοπρεπές firewall για αυτό τον πυρήνα.

β. Η Έλλειψη Επεκτασιμότητας των Windows
----------------------------------------

Εκτός από τα λάθη και τις πιθανές παραλείψεις των οποίων μπορεί να πέσει
θύμα κάποιος που προγραμματίζει ένα firewall για Windows, το ίδιο το
λειτουργικό δεν είναι τόσο επεκτάσιμο όσο κάποιο άλλο, του οποίου έχει
τον κώδικα ο προγραμματιστής.  Αυτό έχει σαν αποτέλεσμα να αποτελούν
καθημερινή ιστορία στον κόσμο των Windows προβλήματα τα οποία οφείλονται
σε αυτή την έλλειψη επεκτασιμότητας.

Όταν ένα πρόγραμμα δεν κάνει ακριβώς αυτό που θέλουμε, εμείς οι χρήστες
των open source συστημάτων το πειράζουμε για να το φέρουμε στα μέτρα
μας.  Μπορεί όχι εμείς οι ίδιοι αλλά κάποιοι γνωστοί ή φίλοι μας που
ξέρουν να το κάνουν αυτό.  Αλλά πάντως η δυνατότητα υπάρχει.

Στα Windows όταν ένα πρόγραμμα, π.χ. ένα firewall, δεν κάνει αυτά που
θέλει ο χρήστης του τι μπορεί να κάνει; Συνήθως όχι πολλά πέρα από το να
απενεργοποιήσει το πρόγραμμα αυτό ή να το ρυθμίσει έτσι που να αφήνει τα
πάντα να περνούν.  Έτσι όμως είτε το τρέχει είτε όχι δεν αλλάζει κάτι.

Αν ήταν επεκτάσιμα τα προγράμματα firewall των Windows όπως είναι κάθε
open source firewall, εξ ορισμού, επειδή όποιος έχει τον κώδικα του
προγράμματος μπορεί να κάνει πραγματικά ό,τι θέλει, ίσως να μην τα
απενεργοποιούσε απερίσκεπτα όλος ο κόσμος.

γ. Οι Περιορισμένες Δυνατότητες Ρύθμισης των Windows
----------------------------------------------------

Οι ρυθμίσεις που μπορεί να κάνει ο απλός, τελικός χρήστης (για
να χρησιμοποιήσω μια φράση που έκανε πραγματικά διάσημη ο Νίκος Δήμου),
είναι πάντα αυτές ακριβώς που επιτρέπει ο αρχικός σχεδιαστής του
προγράμματος και καμία παραπάνω.

Θα μου πείτε "Τότε γιατί λες ότι είναι περιορισμένες οι
δυνατότητες ρύθμισης των Windows; Δεν είναι το ίδιο περιορισμένες οι
δυνατότητες ρύθμισης του δικού σου αγαπημένου λειτουργικού συστήματος;"

Όχι δεν είναι.  Πολλά από τα πράγματα που μπορώ να ρυθμίσω εγώ
στο firewall που έχω στο BSD μου δεν γίνονται στα Windows.  Για να
επιτρέψω σε όλα τα μηχανήματα που βρίσκονται στις πρώτες 16 διευθύνσεις
ενός C-class network στο UNIX firewall μου να τρέχουν FTP servers μπορώ
να γράψω κάτι σαν αυτό:

: add allow tcp from any to any 212.205.103.0/28 21 keep-state in setup

για να κάνω το ίδιο πράγμα σε Windows δεν ξέρω αν υπάρχει τρόπος, που να
χρησιμοποιεί, για παράδειγμα, χαρακτηριστικά του Windows XP firewall.
Νομίζω πως όχι, αφού δεν βλέπω κάποιο τρόπο να εφαρμοστεί ο ίδιος
κανόνας για "FTP server" στις ρυθμίσεις μιας dialup σύνδεσης σε πολλά
hostnames ή IP addresses.

Στο BSD μου μπορώ να ρυθμίσω αν η λογική του firewall θα είναι "όλα
ανοιχτά εκτός από Χ" ή "όλα κλειστά εκτός από Υ".  Στα Windows το
point-and-click GUI σκουπίδι που έχει για να 'ρυθμίσεις' το firewall δεν
έχει τέτοια επιλογή.  Ευτυχώς έχει όμως "disable" επιλογή για να το
κλείνει αμέσως όποιος στήνει τα Windows XP -- κάτι που το κάνουν οι πιο
πολλοί από όσους ξέρω.

Αμέσως μετά, οι περισσότεροι στήνουν ένα application-based firewall,
όπως π.χ. το ZoneAlarm.  Αυτό κι αν είναι άχρηστο σαν προστασία όμως!

δ. Οι Διαφορές στη Λογική των Προγραμμάτων για Windows
------------------------------------------------------

Η πιο σημαντική όμως διαφορά, αυτή που κάνει όντως τη ζυγαριά να γέρνει
σταθερά προς την πλευρά των open source UNIX συστημάτων ΚΑΙ για τα
firewalls, είναι οι διαφορές που έχουν στην λογική τους τα συστήματα
Windows από αυτά που τρέχουν κάποιο open source UNIX.

Στο UNIX για να ρυθμιστεί καλά ένα firewall πρέπει αυτός που το ρυθμίζει
να ξέρει τι κάνει.  Μπορεί να χρειαστεί να διαβάσει αρκετά πράγματα ώστε
να καταλαβαίνει, να μπορεί να γράψει ή έστω να διαβάσει σετ κανόνων όπως
αυτό:

: # Firewall rules for a FreeBSD 5.0-CURRENT machine using ipfw(8).
: #
: # Copyright (C) 2002, Giorgos Keramidas <keramida at FreeBSD.org>
: # All rights reserved.
: #
: # $Id: hades.rules,v 1.19 2002/05/10 23:51:12 charon Exp $
:
: # Clean up old firewall rules.
: flush
:
: # Allow only lo0 interface to use the 127.0.0.1 address.
: add allow ip from 127.0.0.1/32 to 127.0.0.1/32 via lo0
: add deny ip from 127.0.0.1 to any
: add deny ip from any to 127.0.0.1
:
: # Block packets with addresses that seem funny.
: add deny ip from 10.0.0.0/8 to any
: add deny ip from any to 10.0.0.0/8
: add deny ip from 192.168.0.0/16 to any
: add deny ip from any to 192.168.0.0/16
: add deny ip from 172.16.0.0/12 to any
: add deny ip from any to 172.16.0.0/12
:
: # Allow DNS and NTP through.
: add allow udp from any to any 53,123 keep-state out
:
: # Pass all ICMP messages through.
: # They can be rate limited, so this is not a problem.
: add allow icmp from any to any
:
: # Stateful tcp filtering.  This allows a few sample services in.
: # You will probably want to change the port numbers, to match your setup.
: add check-state
: add deny tcp from any to any established
: add allow tcp from any to any keep-state out setup
: add allow tcp from any to any 21,22,23,80,113 keep-state in setup
:
: # The default firewall policy.
: add deny log logamount 0 ip from any to any

Στα Windows τα περισσότερα firewalls που έχω δει έχουν εντελώς
διαφορετική λογική από αυτή ενός stateful packet filter όπως το
IPFW-ruleset που έδειξα παραπάνω.  Τις πιο πολλές φορές είναι
application blockers, που βασίζονται στα όχι τόσο λεπτομερώς γνωστά
interfaces του λειτουργικού συστήματος των Windows για να βρουν την ώρα
που δημιουργείται μια νέα σύνδεση (είτε εξερχόμενη είτε εισερχόμενη,
πολλές φορές χωρίς να υπάρχει εύκολος τρόπος να διαχωριστούν αυτά τα
δύο).  Παίρνει λοιπόν, με κάποιο τρόπο, το firewall το όνομα της
εφαρμογής που άνοιξε ένα connection και προσπαθεί με βάση διάφορα
κριτήρια να αποφασίσει αν πρέπει να "περάσει" η σύνδεση ή όχι.

Ε λοιπόν, τα application firewalls είναι ανεπαρκέστατα για να
προστατέψουν σήμερα ένα μηχάνημα που συνδέεται στο δίκτυο.  Μου θυμίζουν
τότε που, σαν πρωτοετείς φοιτητές στο Τμήμα Μηχανικών Υπολογιστών,
ονομάζαμε τα key loggers που γράφαμε για τα VT320 terminals του παλιού
μας Unix server με ονόματα από γνωστά email readers όπως mailx ή pine
για να μπορούμε να τα αφήσουμε πολύ ώρα να τρέχουν χωρίς να μας πάρει
χαμπάρι αμέσως ο root ότι κάναμε πουστιές.  Γενικά, τις πιο πολλές
φορές, μας καταλάβαινε μετά από λίγες ώρες αλλά στο μεταξύ εμείς είχαμε
κλέψει 1-2 κωδικούς από άλλους και τυπώναμε χαρούμενοι περισσότερες
σελίδες χρησιμοποιώντας τα δικά τους printer page quotas.

Που θέλω να καταλήξω... τα application firewall, τα οποία ψάχνουν από το
όνομα των προγραμμάτων να καταλάβουν αν είναι όντως επιτρεπτή η σύνδεση
που ζητούν να κάνουν, μπορεί κάποιος να τα κοροϊδέψει πανεύκολα.  Ακόμη
και ΜΙΑ ΦΟΡΑ να γίνει αυτό για ΛΙΓΑ ΔΕΥΤΕΡΟΛΕΠΤΑΑ, είναι πολύ πιθανόν
αυτομάτως να μετατραπεί σε άχρηστο το firewall.

ε. Ακόμα και τα Packet Filters Δεν Είναι Πάντα Αρκετά
-----------------------------------------------------

Μια λεπτομέρεια η οποία είναι επίσης σημαντική, αλλά συχνά ξεχνά ο
κόσμος να της δείξει την απαραίτητη προσοχή, είναι ότι ένα firewall δεν
είναι από μόνο του κάτι που το προσθέτεις σε ένα υπάρχον, ήδη ρυθμισμένο
σύστημα και ξαφνικά ως δια μαγείας αποκτά την σχεδόν μυθική ιδιότητα της
"απόλυτης ασφάλειας" το σύμπαν.

Πολλές φορές, σε βιβλία όπως τo "Building Internet Firewalls" των
Elizabeth D. Zwicky, Simon Cooper και D. Brent Chapman (O'Reilly &
Associates), αναφέρεται ότι ένα firewall από μόνο του δεν είναι αρκετό
για να είναι ασφαλές ένα σύστημα.

Αυτό φαίνεται ξεκάθαρα από τα προβλήματα που έχουν με scripting & macro
viruses οι εφαρμογές στα Windows.  Δεν φταίει το firewall σε αυτές τις
περιπτώσεις.  Φταίει οτιδήποτε άλλο:

    - Η συνήθεια του χρήστη να κάνει log on ως administrator για να
      μπορεί να βλέπει όλο το δίσκο του.

    - Οι άδειες των αρχείων του συστήματος, που στα Windows 98 για
      παράδειγμα ειναι επιοικώς ανύπαρκτες.

    - Ο σχεδιασμός των εφαρμογών, που επιτρέπει στον χρήστη να δώσει
      προβληματικά, λάθος ή ακόμη κι επίτηδες κατασκευασμένα δεδομένα
      χωρίς ελέγχους.

(1) Η συνήθεια πολλών χρηστών να μπαίνουν στο σύστημά τους ως
administrator είναι κάτι που βλέπουμε και στο χώρο του Unix πολλές
φορές, παρόλες τις προειδοποιήσεις που κατά καιρούς έχουν σταλεί σε
ετούτη τη λίστα, παρόλο που όλα τα distributions προτρέπουν για
"δημιουργία ενός λογαριασμού απλού χρήστη" λίγο μετά ή λίγο πριν το
τέλος της εγκατάστασης του συστήματος.  Επειδή όλοι έχουμε κάνει
βλακείες, και εννοώ ΟΛΟΙ, μια ωραία μέρα που είχαμε κάνει login ως root
και π.χ. δεν είχαμε πιεί ακόμα καφέ...  Επειδή είναι μαθηματικά ΒΕΒΑΙΟ
ότι κάποια στιγμή θα γίνει η βλακεία, αν πάντα δουλεύει ο κόσμος ως
root...  Γι αυτό κάνουμε login ως root ΜΟΝΟ ΟΤΑΝ ΕΙΝΑΙ ΑΠΟΛΥΤΩΣ
ΑΠΑΡΑΙΤΗΤΟ:

: giorgos at gothmog:~$ ac -p
:         ncvs                56.87
:         giorgos            679.46
:         root                 0.02
:         total              736.35
: giorgos at gothmog:~$

Έτσι ακόμη κι αν τρέξω κάτι που θα προσπαθήσει να κάνει τίποτα αηδίες,
στη χειρότερη περίπτωση θα σβήσει τα αρχεία του χρήστη 'giorgos' (τα
οποία παίρνω backup το βράδυ σε ένα δεύτερο δίσκο, που μένει εντελώς
unmounted την υπόλοιπη ώρα).

(2) Οι άδειες των αρχείων, οι προκαθορισμένες ρυθμίσεις των προγραμμάτων
κι άλλα τέτοια μικρά κι ασήμαντα είναι τα χαρακτηριστικά που ένα UNIX
έχει να αντιτάξει στην νεομοντέρνα φοβία που προσπαθεί να συγκαλύψει η
Microsoft πίσω από λέξεις όπως "innovation".  Όλες οι μικρές αυτές
λεπτομέρειες όμως συνδυάζονται για να δώσουν ένα πολύ καλύτερο σύστημα.

Στο UNIX π.χ. η default εγκατάσταση περιλαμβάνει συνήθως κάποιο
πρόγραμμα τύπου inetd.  Οι προκαθορισμένες ρυθμίσεις που έχει το FreeBSD
μου εμένα όταν το στήνω από το /usr/src δεν έχουν ΚΑΝΕΝΑ service
ενεργοποιημένο στο `inetd.conf'.

: giorgos at gothmog:~$ grep -v '^[[:space:]]*#' /usr/src/etc/inetd.conf
: giorgos at gothmog:~$

Ακόμη καλύτερα!  Το ίδιο το inetd, μέσω του οποίου μπορούν να ξεκινήσουν
τα services αυτά, είναι απενεργοποιημένο και πρέπει να ενεργοποιηθεί με
το χέρι:

: giorgos at gothmog:~$ grep 'inetd_enable' /usr/src/etc/defaults/rc.conf
: inetd_enable="NO"               # Run the network daemon dispatcher (YES/NO).
: giorgos at gothmog:~$

Οι προκαθορισμένες ρυθμίσεις των Windows είναι τέτοιες που όλα να
φαίνονται από παντού.  Επίσης, αν δεις πόσα "services" τρέχει μια
default εγκατάσταση των Windows XP θα πάθεις πλάκα.  Ταφόπλακα, για την
ακρίβεια, αφού ακόμη κι αν προσπαθήσεις να κατεβάσεις κάποιο firewall
αμέσως μετά την εγκατάσταση μπορεί να στην πέσει κάποιος ιός
δευτερόλεπτα μετά την αρχική σύνδεση στο δίκτυο και να σου κάνει τα
Windows χάλια.  Το έχω ξαναγράψει αυτό, σε προηγούμενο post μου στη
λίστα αλλά χρειάζεται πλέον μόνο λίγα δευτερόλεπτα που θα είναι κανείς
online μέχρι να του την πέσει ο πρώτος ιός:

: Jul 17 23:18:19 gothmog ppp[11108]: tun0: Phase: Pap Input: SUCCESS ()
: Jul 17 23:18:19 gothmog ppp[11108]: tun0: Phase: Pap Output: ********
: Jul 17 23:18:19 gothmog ppp[11108]: tun0: Phase: bundle: Authenticate
: Jul 17 23:18:19 gothmog ppp[11108]: tun0: Phase: bundle: Network
: Jul 17 23:18:19 gothmog ppp[11108]: tun0: Phase: deflink: his = PAP, mine = none
: Jul 17 23:18:19 gothmog ppp[11108]: tun0: Phase: deflink: lcp -> open
: Jul 17 23:18:24 gothmog ipmon[178]: 23:18:23.705561 tun0 @0:23 b \
:    4.15.25.98,3646 -> 212.205.244.220,445 PR tcp len 20 48 -S IN

Απόψε, όταν μπήκα στο δίκτυο για να βρω ένα φίλο στο GRnet IRC δίκτυο,
καταγράφηκαν οι παραπάνω γραμμές στο log του συστήματός μου.  Χρειάστηκε
ΜΟΝΟ 5 ΔΕΥΤΕΡΟΛΕΠΤΑ για να με 'δοκιμάσει' ο πρώτος ιός.  Αν το σύστημά
μου έτρεχε ένα κάρο services που δεν ήξερα γιατί τρέχουν, πότε τρέχουν,
πώς και ποιόν ακριβώς εξυπηρετούν... τώρα θα ήταν κι ο δικός μου
υπολογιστής στο σπίτι ένα ορμητήριο για τον τυχαίο ιό που με βρήκε λίγα
δευτερόλεπτα αφότου συνδέθηκα στο Internet.

Δεν έχω Windows όμως, οπότε bzzzzzt!

(3) Ο σχεδιασμός των εφαρμογών στα Windows μου δίνει πάντοτε την
εντύπωση ότι έχει γίνει με το εξής κριτήριο "ας το βγάλουμε μωρέ, και
μετά βλέπουμε αν έχει τίποτα ψιλοπροβληματάκια".

Η φιλοσοφία αυτή, παρόλο που είναι χαρακτηριστική των περισσότερο
εταιρειών λογισμικού που έχω δει, δεν είναι βιώσιμη λύση για open source
projects.  Στα εμπορικά προγράμματα, ακριβώς επειδή κανείς δεν πρόκειται
ποτέ να δει τον κώδικα, οι προγραμματιστές μπαίνουν σίγουρα στον
πειρασμό να γράφουν κώδικα όπως:

    fd = open(OUTPUT, O_RDWR);
    write(fd, "hello\n", 6);

Αυτό αν το δει κανείς σε open source κώδικα (που θα έχει τη δυνατότητα
να δει τον κώδικα) προβλέπεται σύντομα ο προγραμματιστής να μάθει με
πολύ καλό τρόπο ότι αν ξαναγράψει τέτοιο κώδικα θα πάψει ο κόσμος να
χρησιμοποιεί το πρόγραμμά του.  Έτσι οι open source προγραμματιστές
συνήθως ελέγχουν το παραμικρό, γράφοντας το απραπάνω κομματάκι C κώδικα
έτσι:

    if ((fd = open(OUTPUT, O_RDWR | O_CREAT | O_TRUNC)) == -1) {
	warn("open");
	return -1;
    }
    if (write(fd, "hello\n", 6) == -1) {
	warn("write");
	return -1;
    }

Φυσικά, ο κόπος να γίνει κάτι τέτοιο είναι πιο μεγάλος.  Το αποτέλεσμα
είναι όμως ένα πιο ποιοτικό, ένα λιγότερο εύθραυστο πρόγραμμα.  Κι αυτό
είναι ένα μικρό, απειροελάχιστο παράδειγμα από όσα η πείρα μου λέει ότι
τα εμπορικά προγράμματα κάνουν διαφορετικά από τα open source
αντίστοιχα.

Όσο οι μικροδιαφορές αυτές συγκεντρώνονται, αθροίζονται και τελικά
φτάνουν να αποτελούν μέρος ενός μεγάλου προγράμματος, οι περιπτώσεις
αυτό το πρόγραμμα να συμπεριφέρεται με "απρόβλεπτο" τρόπο αυξάνονται
δραματικά.

Αντίστοιχες διαφορές υπάρχουν στο γενικότερο σχεδιασμό και την υλοποίηση
μεγάλων "υποσυστημάτων" του λειτουργικού, που τελικά κάνουν τα Windows
λιγότερο αξιόπιστα για μένα.  User-level προγράμματα που έχουν απευθείας
πρόσβαση στο hardware, οδηγοί που είναι φτιαγμένοι από τρίτους
κατασκευαστές χωρίς να έχουν ελεγχθεί πολύ για ασυμβατότητες,
συγκρούσεις, προβλήματα με άλλα μέρη του λειτουργικού συστήματος, κλπ.

Η λίστα με τα πιθανά προβλήματα που οφείλονται στο γενικότερο σχεδιασμό
των Windows είναι τεράστια...

2. Γιατί η Μάχη Είναι Χαμένη Πριν Καν Αρχίσει για τα Antivirus
==============================================================

Η δική μου γνώμη είναι ότι τα antivirus είναι χαμένη υπόθεση και
πεταμένα λεφτά.  Μου θυμίζουν το παράδοξο του Ζήνωνα με τη χελώνα και
τον Αχιλλέα.  Όσο εξελιγμένα και να γίνουν τα antivirus, οι virus
writers έχουν πάντα πάει ένα μικρό, απειροελάχιστο αλλά ποτέ μηδενικό
βήμα μπροστά.  Τα μικρά ή ακόμη και τεράστια χρονικά διαστήματα κατά τα
οποία είναι απροστάτευτο ένα σύστημα από τον ιό Χ, επειδή ο ιός βγήκε
λίγο μετά το τελευταίο update που έκανες στο antivirus σου, είναι αυτά
που προκαλούν τις πιο μεγάλες καταστροφές.

Κάτι άλλο που δεν πρέπει να ξεχνάμε όταν μιλάμε για antivirus
προγράμματα είναι η σημασία της πρόληψης.  Δεν είναι τυχαίο που η
επιστήμονες της Ιατρικής τονίζουν όσο πιο πολύ μπορούν ότι η προληπτική
Ιατρική είναι πιο σημαντική από τη θεραπευτική Ιατρική.  Το ίδιο ισχύει
και στους υπολογιστές.  Είναι πιο σημαντικό και πιο αποδοτικό να
προλαμβάνεις τα προβλήματα, μέσω προσεκτικού σχεδιασμού κι οργάνωσης,
από το να τρέχεις πανικόβλητος να διορθώσεις τα αδιόρθωτα όταν τελικά
κάτι πάει στραβά.

3. Γιατί δεν Υπάρχουν Ιοί για Open Source Λειτουργικά Συστήματα
===============================================================

Έχω ακούσει κι έχω διαβάσει κατά καιρούς διάφορους λόγους για την τόσο
προφανή έλλειψη ιών και trojan horses στα UNIX συστήματα.  Είναι
πραγματικά εκπληκτικό πόσο καθαρά από ιούς έχουν μείνει τα UNIX σε μια
εποχή που ακόμα και νέα σχετικά λειτουργικά (όπως το Symbian) έχουν
πρόβλημα με ιούς.  Οι πιο σημαντικοί λόγοι από αυτούς είναι (σε σειρά
αυξανόμενης, κατά τη γνώμη μου, σημασίας και αξίας):

    - Γιατί δεν είναι ακόμη τόσο δημοφιλή τα UNIX λειτουργικά

    - Γιατί τα UNIX λειτουργικά είναι όντως πιο ασφαλή

    - Γιατί όλα τα UNIX είναι μεταξύ τους τόσο διαφορετικά και ασύμβατα
      εσωτερικά

    - Γιατί εμάς, που ασχολούμαστε με αυτά, δε μας ενδιαφέρει να
      φτιάξουμε ιούς, έχουμε καλύτερα πράγματα να κάνουμε.

Ας δούμε πόσο στέκουν αυτοί οι λόγοι όμως...

(1) Πολλοί λένε ότι η μεγάλη δημοτικότητα των Windows είναι που τα έκανε
να αποτελούν μόνιμο στόχο των virus writers.  Ισχυρίζονται μάλιστα ότι
αν τα UNIX λειτουργικά γίνουν τόσο διάσημα μια μέρα, αν π.χ. υπάρχει σε
κάθε σπίτι μια εγκατάσταση Linux, τότε σύντομα θα δούμε και τους πρώτους
ιούς για Linux να εμφανίζονται.

Δε συμφωνώ 100%.  Τουλάχιστον ως προς το δεύτερο σκέλος.  Παρόλο που
είμαι σχεδόν σίγουρος ότι η δημοτικότητα των Windows παίζει κάποιο ρόλο
στην διάδοση των ιών σε αυτή την πλατφόρμα, δεν πιστεύω ότι το δεύτερο
μέρος της σκέψης ισχύει.  Κυρίως επειδή είμαι σίγουρος ότι το Linux δεν
αποτελεί τόσο πρόσφορο έδαφος για τη συγγραφή ιών.  Βοηθά σε αυτό και το
γεγονός ότι τα προγράμματα διανέμονται σε μορφή πηγαίου κώδικα.  Σε ένα
πρόγραμμα που διανέμεται σε εκτελέσιμη μορφή, όπως είναι ΟΛΑ τα
προγράμματα των Windows, μπορεί να "κρυφτεί" ένας ιός.  Σε ένα πρόγραμμα
που διανέμεται σε μορφή πηγαίου κώδικα, σε .tar.gz μορφή που να κρυφτεί
ο ιός;

(2) Ακούγεται καμιά φορά ότι τα UNIX λειτουργικά είναι όντως πιο ασφαλή
από τα Windows.

Ε λοιπόν ναι, αυτό μπορώ να το πιστέψω.  Τα περισσότερα μοντέρνα UNIX
λειτουργικά είναι αμέσως μετά την εγκατάστασή τους πολλές φορές πιο
ασφαλή από ένα φρεσκοστημένο μηχάνημα που χρησιμοποιεί Windows.  Επιμένω
στην default εγκατάσταση, με κίνδυνο να με κατηγορήσει κανείς ότι
θαυμάζω τον Theo de Raadt του OpenBSD, επειδή (θεωρητικά τουλάχιστον)
μετά την εγκατάσταση μπορεί οποιοδήποτε σύστημα να γίνει ασφαλές με τις
"κατάλληλες" επεμβάσεις.  Επεμβάσεις όμως που δε θα τις κάνει ποτέ ο
μέσος χρήστης!

(3) Οι εσωτερικές ακόμα και οι εξωτερικές διαφορές που έχουν τα διάφορα
UNIX μεταξύ τους παίζουν κι αυτές ένα σημαντικό ρόλο στην έλλειψη ιών σε
αυτά τα λειτουργικά συστήματα.

Αρχικά, πριν από 4-5 χρόνια, πίστευα ότι δεν ήταν τόσο δύσκολο να
φτιάξει κάποιος ένα ιό που να παίζει τόσο σε Linux, όσο σε κάποιο open
source BSD, σε Solaris, σε AIX, σε... ένα κάρο συστήματα.  Τώρα πλέον
είμαι σίγουρος ότι αυτό δεν ισχύει.  Είναι τόσα πολλά τα UNIX
λειτουργικά και είναι τόσες οι διαφορές τις οποίες έχουν που ακόμη κι αν
ανακαλύψει κανείς μια τρύπα σε κάποιο πρόγραμμα δεν υπάρχει χρόνος να
φτιαχθεί ένας ιός που θα τα προσβάλλει όλα.  Μέχρι να φτιάξει κανείς ένα
πρόγραμμα το οποίο να μπορεί να τρέξει τόσο σε AIX όσο και σε Solaris,
Linux ή FreeBSD κάποια από αυτά έχουν ανακοινώσει πως μπορεί να
αντιμετωπιστεί ή να διορθωθεί το αρχικό πρόβλημα ασφαλείας.  Ειδικά τα
open source λειτουργικά έχουν ρεκόρ ταχύτητας στην αντιμετώπιση των
προβλήματων αυτών.

(4) Εμάς, που ασχολούμαστε με τα open source συστήματα, δε μας
ενδιαφέρει να φτιάξουμε ιούς, έχουμε καλύτερα πράγματα να κάνουμε.

Συνήθως, όσοι ασχολούνται με open source λειτουργικά συστήματα θεωρούν
πιο ενδιαφέρον το να προσθέτουν νέα, χρήσιμα χαρακτηριστικά στα
λειτουργικά τους ή να διορθώνουν υπάρχουσες ελλείψεις από το να
φτιάχνουν καταστροφικούς ιούς.  Εν μέρει, αυτό οφείλεται και στο γεγονός
ότι η δημιουργική απασχόληση του να βελτιώνεις κάτι που υπάρχει είναι
πιο υψηλό κίνητρο από την τάση για καταστροφή.

> ps. Ypopsin oti den kano win updates.....

Κακώς.  Κάκιστα!

Αυτός είναι ο τεκμηριωμένος και επίσημα αποδεκτός τρόπος να κρατάς το
Windows σύστημά σου ενημερωμένο κι αναβαθμισμένο ώστε να μην έχει τα
προβλήματα με τα οποία έρχεται εξ αρχής ένα τέτοιο σύστημα.

Το γεγονός ότι δεν αναβαθμίζεις τον υπολογιστή σου, αλλά παρόλ' αυτά τον
αφήνεις να συνδέεται στο Διαδίκτυο, με αποτέλεσμα να αποτελεί ορμητήριο
και καταφύγιο των ιών και των Δούρειων Ιππων, τους οποίους είναι σίγουρο
με μαθηματική ακρίβεια ότι έτσι θα κολλήσεις, είναι ανεύθυνη και σαφώς
επικίνδυνη συμπεριφορά.

Δεν το λέω για να σου επιτεθώ προσωπικά, ούτε το λέω για να σε βρίσω.
Είναι επικίνδυνο όμως αυτό που κάνεις.  Όχι μόνο για σένα, αλλά και για
όλους όσους θα δεχτούν τις επιθέσεις του μηχανήματός σου όταν αυτό
κολλήσει κάποιο ιό.

> Alla omos auto se ti na epireazei. Den pairno ta diafora critical
> securoity updates opos lei i microsoft. alla xrisimopioi firewall
> kai av.
>
> Me poion akrivos tropo kollao??? Parakalo kapoios na mou exigisei me
> leptomereia...

Με τον μπλε!

Τι εννοείς με ποιόν τρόπο κολλάς; Είναι πρακτικά αδύνατον να μαντέψουμε
με ποιό από τα χιλιάδες προβλήματα ασφαλείας που έχουν τα Windows σου
επιτέθηκε κάποιος ιός.

Δεν έχει νόημα η ερώτησή σου και η μόνη απάντηση που επιδέχεται είναι:

    Κάποιος Χ ιός εκμεταλλεύεται το Ψ πρόβλημα ασφαλείας στο firewall Φ
    που χρησιμοποιείς ή στον τρόπο που δουλεύει το πρόγραμμα Π πίσω από
    το firewall σου και σε καταφέρνει να 'τρέξεις' κάτι που θα σου
    μεταδώσει τον ίδιο ή ακόμη και κάποιο άλλο ιό.

Πολύ γενική, πολύ αόριστη και πολύ ασαφής.  Ακριβώς όπως και η ερώτηση.

Αυτά τα λίγα :P

Γιώργος




More information about the Linux-greek-users mailing list