Showing posts with label SMB. Show all posts
Showing posts with label SMB. Show all posts

Sunday, January 6, 2013

Windows Rants και ένα εργαστήριο με FreeBSD Samba Server

Κάθε χρόνο στις γιορτές έχω το χρόνο να ασχοληθώ και να συντηρήσω το εργαστήριο και τους υπολογιστές της γραμματείας του παραρτήματος Χανίων του ΚΕΚ ΔΕΛΤΑ. Έτσι και φέτος, ξεκίνησα με μια απόφαση: να αποσύρω τον Windows 2003 Server και να τον αντικαταστήσω με ένα Samba server σε FreeBSD 9.1-RELEASE. Οι ανάγκες του συγκεκριμένου δικτύου άνετα καλύπτονται πλέον με Samba σε domain controller configuration και τα επιπλέον licenses που χρειαζόμαστε για το 2003 είναι πεταμένα λεφτά...

Ιστορικά στοιχεία

Ξεκίνησα να συντηρώ το παράρτημα της συγκεκριμένης σχολής από τις πρώτες μέρες της λειτουργίας της στα Χανιά, κάπου το 1995-96. Την εποχή εκείνη τα μηχανήματα τους ήταν παλιά (τα είχαν φέρει από άλλο παράρτημα) και είχαν διάφορα προβλήματα. Όταν μετακόμισαν κάπου το 1999-2000 στο νέο τους κτήριο, ανέλαβα να τους φτιάξω από την αρχή ένα δίκτυο με νέα μηχανήματα και εξοπλισμό. Το αρχικό εκείνο δίκτυο βασίστηκε σε:

  • Windows 2000 Server
  • Windows 2000 Professional για τους σταθμούς εργασίας
  • Λίγα παλιά μηχανήματα με Windows 98 (!)

Την εποχή εκείνη είχα ήδη καλή επαφή με το Linux, ωστόσο μετά από πολλές δοκιμές κατέληξα στο συμπέρασμα ότι το συγκεκριμένο δίκτυο θα εξυπηρετούνταν πολύ καλύτερα από ένα Windows Server. Και πράγματι, ο 2000 Server (που αργότερα αντικαταστάθηκε από το 2003) είχε πολλά πλεονεκτήματα: αναφέρω για παράδειγμα τη δυνατότητα assign και publish εφαρμογών - αρχεία msi και mst - για αυτόματη εγκατάσταση τους στους σταθμούς εργασίας.

Το αρχικό εκείνο δίκτυο είχε καλά μηχανήματα για την εποχή τους - Pentium III 866Mhz. Υπήρχαν δύο εργαστήρια και συνολικά περίπου 30 μηχανήματα μαζί με τα γραμματειακά.

Ο καιρός όμως πέρναγε, τα μηχανήματα πάλιωναν, τα 2000 Professional έπαψαν να καλύπτουν τις ανάγκες (μετά από πολύ καιρό είναι αλήθεια) και κάποιες δοκιμές με XP δεν ήταν ιδιαίτερα... ενθαρρυντικές στο υπάρχον hardware. Καθώς διάφορα PC χάλαγαν και δεν μπορούσαν να επισκευαστούν, τα αντικαθιστούσαμε με πιο νέα μηχανήματα. Η ομοιογένεια του υλικού και του λογισμικού της αρχικής εγκατάστασης είχε πάει περίπατο.

To 2012 λήφθηκε η απόφαση για τη δημιουργία νέου εργαστηρίου 20 υπολογιστών με σύγχρονο λογισμικό. Τα παλιά μηχανήματα - όσα ήταν ακόμα λειτουργικά - θα μεταφέρονταν σε δεύτερο βοηθητικό εργαστήριο, με την προυπόθεση να μπορούν να τρέξουν XP. Το νέο εργαστήριο θα βασίζονταν σε Windows 7 64bit. Και εδώ αρχίζουν τα προβλήματα.

  • Τα Windows 2000 ήταν δύο εκδόσεις: Η Professional που έχει τα πάντα για ένα σταθμό εργασίας και ο Server που προορίζεται για... server. Τα Windows 7 είναι σε αρκετές εκδόσεις, αυτές δε που συμφέρουν είναι τεχνητά περιορισμένες να μην έχουν βασικές δυνατότητες. Για παράδειγμα η έκδοση Home Premium δεν υποστηρίζει σύνδεση μέσω remote desktop και φυσικά δεν υποστηρίζει domain logins.
  • Όπως αποκαλύφθηκε, εν έτει 2012 υπάρχει ακόμα πλήθος εφαρμογών που δεν μπορούν να εκτελεστούν με δικαιώματα χρήστη, απαιτώντας Administrator access. Μέσος χρόνος ζωής μηχανήματος με administrator access χωρίς κάποιο πρόγραμμα τύπου deep freeze: Μισή ώρα.
  • Δεν θέλω καν να μπω στη διαδικασία των ενεργοποιήσεων, ελέγχων κλπ που είναι ένα μαρτύριο που τραβάνε μόνο οι χρήστες που έχουν πληρώσει: οι υπόλοιποι τρέχουν τα έτσι και αλλιώς πειρατικά τους προγράμματα και γελάνε με την MS.

Το νέο εργαστήριο

Για λόγους κόστους (είναι περίεργες οι εποχές) αποφασίστηκε να χρησιμοποιηθούν τα Windows 7 Home Premium 64 bit. Χάνουμε έτσι το domain login (το οποίο όμως παραμένει στα παλιότερα μηχανήματα με XP) αλλά αυτό έτσι και αλλιώς δεν ήταν πολύ χρήσιμο στα εκπαιδευτικά μηχανήματα. Το μόνο που χρειάζεται πρακτικά είναι καθένα από αυτά να κάνει autologin με ένα διαφορετικό λογαριασμό και το home directory να γίνεται map από το server στην εκκίνηση του περιβάλλοντος. Αυτό είναι πολύ εύκολο και δεν αποτελεί πρόβλημα: όσο τα user credentials ταιριάζουν στο μηχάνημα και το server, η πρόσβαση στα shares γίνεται χωρίς πρόβλημα.

Μετά το αρχικό στήσιμο του εργαστηρίου, τα Windows 7 συνδέθηκαν με αυτό τον τρόπο στον 2003 Server ενώ το παλιότερο εργαστήριο XP παρέμεινε στο domain. Καθώς ο ρόλος του 2003 server ήταν πλέον πολύ πιο περιορισμένος, συμφωνήσαμε κάποια στιγμή να αλλαχθεί με ελεύθερο λογισμικό. Εξάλλου είχαμε ήδη ξεπεράσει τα αρχικά CALs. Και όπως πάντα, τέτοιες μαζικές αλλαγές γίνονται στις γιορτές, όπου και εγώ έχω χρόνο και η σχολή είναι κλειστή.

Η Αντικατάσταση του Server

Υπήρχε ήδη ένας FreeBSD Server στη σχολή! Τον είχα εγκαταστήσει αρκετά παλιά για να κρατάει backup στα δεδομένα του 2003 και να μπορεί να αναλάβει βασικές λειτουργίες σε περίπτωση σοβαρής βλάβης του 2003. Τόσο ο 2003 όσο και ο υπάρχον FreeBSD server λειτουργούσαν με mirror. To mirror του FreeBSD παρέδωσε πνεύμα (ο ένας δίσκος) κάπου το Νοέμβρη. Συνέχιζε να λειτουργεί με τον ένα δίσκο φυσικά, αλλά σκοπός ήταν στη διάρκεια της συντήρησης να βρεθεί κάπου ένας δίσκος αντίστοιχης χωρητικότητας και τεχνολογίας (το μηχάνημα είναι Pentium III!) για να αντικατασταθεί. Αυτό πράγματι επιτεύχθηκε την πρώτη μέρα της συντήρησης.

Αντίθετα, το hardware του 2003 Server είναι επαρκώς σύγχρονο (Core2Duo) με SATA δίσκους και Intel Network Card. Στο μηχάνημα αυτό εγκαταστάθηκε το FreeBSD 9.1-RELEASE 64bit. Στην εγκατάσταση του χρησιμοποιήθηκαν τα παρακάτω:

Για ευκολία, η εγκατάσταση έγινε αρχικά στο σπίτι σε VMWare και αφού ρυθμίστηκε σύμφωνα με τις βασικές ρυθμίσεις του 2003 που θα αντικαθιστούσε (και δοκιμάστηκε φυσικά σε άλλο virtual client), έγινε dump και restore στο πραγματικό μηχάνημα. Έτσι χρειάστηκε πολύ λίγος χρόνος για επιπλέον παραμετροποίηση (πρακτικά μόνο η δημιουργία λογαριασμών χρηστών/μηχανημάτων.

Αφού έγινε backup ο παλιός server σε ένα atomaki που κουβαλάω μαζί μου για τέτοιες περιπτώσεις, έσβησα τα πάντα, έκανα restore από το dump, βασικές ρυθμίσεις και αντιγραφή ξανά των δεδομένων.

Δημιουργήθηκαν έπειτα οι χρήστες του εργαστηρίου και έγιναν map τα κατάλληλα shares σε κάθε υπολογιστή. Στο παλιό εργαστήριο, τα μηχανήματα βγήκαν από το παλιό domain και συνδέθηκαν στο νέο χωρίς κανένα πρόβλημα.

Όχι ένας, αλλά δύο!

Δύο FreeBSD servers φυσικά! Γιατί υπάρχει και ο παλιός Pentium III o οποίος πλέον:

  • Έχει ρόλο δεύτερου DNS σαν slave του κύριου server.
  • Παίρνει backup τα δεδομένα μέσω rsync.
  • Μπορεί ξανά να παρέχει βασικές υπηρεσίες και πρόσβαση στα δεδομένα της γραμματείας σε περίπτωση βλάβης του κύριου server.

Φωτογραφικό υλικό

Ακολουθεί φωτογραφικό υλικό απο τα μηχανήματα και τη διαδικασία.

Δοκιμαστικό restore του atlantis στο atom για να ελεχθεί το dump.

Πολύ ευχαριστημένος, ο phoenix με καινούριο δίσκο στο mirror και το gmirror να αναφέρει "complete".

O atlantis λίγο μετά το καθάρισμα του hardware από τη σκόνη και λίγο πριν το "καθάρισμα" του 2003 Server από τους δίσκους!

Δημιουργία των partitions με το gpart, λίγο πριν το restore. Η διαδικασία έγινε με τη λειτουργία Live CD που παρέχει το FreeBSD 9.X

To atomακι με το ενσωματωμένο τροφοδοτικό να έχει παραδώσει το πνεύμα. Για άλλη μια φορά.

Αν δεν θέλετε να φάτε όλη τη μέρα αντιγράφοντας δεδομένα, βγάλτε το καλώδιο δικτύου από το πάνω switch και βάλτε το στο κάτω :)

Μικρός και μεγάλος δαίμονας σε δράση! Atlantis και Phoenix στις τελικές τους θέσεις.

ΟΚ, το τερματίσαμε!

Καλή Χρονιά!

Sunday, October 24, 2010

FreeBSD Samba Domain Controller!

Εδώ και αρκετό καιρό είχα αποφασίσει να ξεφορτωθώ το Windows 2003 Server του δεύτερου σχολικού μας εργαστηρίου. Ο λόγος αρκετά απλός: είναι ένα μηχάνημα με οθόνη, πληκτρολόγιο το οποίο αν και παρέχει τις υπηρεσίες του στο δίκτυο των Windows του εργαστηρίου χρησιμοποιείται επίσης και ως κανονικός σταθμός εργασίας, συνήθως από τον όποιο καθηγητή διδάσκει, με όλα τα προβλήματα που συνεπάγεται κάτι τέτοιο.


Το συγκεκριμένο εργαστήριο είχε και ένα debian server σε εντελώς γυμνή μορφή (motherboard, τροφοδοτικό, δίσκος μέσα στο rack με τα δικτυακά). Το συγκεκριμένο μηχάνημα εξυπηρετούσε το debian το οποίο ήταν dual boot στο εργαστήριο, ως NIS/NFS server. Με την φετινή επανεγκατάσταση του εργαστηρίου, τα μηχανήματα δεν είναι πλέον dual boot (αν και έχει μείνει χώρος στους δίσκους αν θελήσουμε να το κάνουμε αργότερα). Όλα τα μαθήματα που σχετίζονται με *NIX διδάσκονται στο FreeBSD XDMCP εργαστήριο μας. Το μηχάνημα αυτό λοιπόν περισσεύει και θα μπορούσε να γίνει άριστος Domain Controller.


Θα μπορούσα φυσικά να εγκαταστήσω τον (αγορασμένο) Windows 2003 Server σε αυτό το μηχάνημα, αλλά γιατί; Σκέφτηκα ότι δεν έχει κάτι ιδιαίτερο να μου προσφέρει: το μόνο που χρειάζομαι είναι SMB file sharing, Domain login και roaming profiles. Κάτι το οποίο μπορεί να γίνει με το γνωστό μας Samba. Διαβάστε λοιπόν πως να κάνετε το FreeBSD Server σας Windows Domain Controller!



Εγκατάσταση Samba


Πολύ απλή ιστορία: Απλά εγκαταστήστε το port net/samba34. Χρησιμοποίησα τις παρακάτω επιλογές κατά τη μεταγλώττιση (επιλογή στο διάλογο config που εμφανίζεται):

WITHOUT_LDAP=true
WITHOUT_ADS=true
WITHOUT_CUPS=true
WITH_WINBIND=true
WITHOUT_SWAT=true
WITHOUT_ACL_SUPPORT=true
WITHOUT_AIO_SUPPORT=true
WITHOUT_FAM_SUPPORT=true
WITHOUT_SYSLOG=true
WITHOUT_QUOTAS=true
WITHOUT_UTMP=true
WITHOUT_PAM_SMBPASS=true
WITHOUT_DNSUPDATE=true
WITHOUT_AVAHI=true
WITHOUT_EXP_MODULES=true
WITH_POPT=true
WITHOUT_MAX_DEBUG=true
WITHOUT_SMBTORTURE=true


Δεν έχω ανάγκη για LDAP και ούτε για CUPS καθώς το εργαστήριο δεν έχει εκτυπωτή. Αντίθετα ενεργοποίησα το Winbind (WINS server) γιατί σε προηγούμενες εμπειρίες μου με αντίστοιχα πειράματα είχα προβλήματα όταν έλειπε. Με την εγκατάσταση του Samba server χρειάζεται να προσθέσουμε στο /etc/rc.conf:

samba_enable="YES"
winbindd_enable="YES"


Ένα απλό αρχείο για το configuration είναι το παρακάτω. Αποθηκεύστε το στο /usr/local/etc/smb.conf:

#======================= Global Settings =====================================
[global]
workgroup = THEDOMAIN
server string = THESERVER (SMB)
security = user
log file = /var/log/samba34/log.%m
max log size = 50
passdb backend = tdbsam
os level = 35
domain master = yes
preferred master = yes
domain logons = yes
logon path = \\%L\Profiles\%U
logon drive = H:
wins support = yes


#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
map hidden = yes
create mask = 0755

[netlogon]
comment = Network Logon Service
path = /usr/local/samba/lib/netlogon
guest ok = yes
admin users = root, sonic
writable = no

[Profiles]
path = /usr/local/samba/profiles
read only = no
browseable = no
guest ok = yes


Ξεκινήστε την υπηρεσία δίνοντας:

# /usr/local/etc/rc.d/samba start


Δημιουργία Χρηστών


Για να προσθέσετε ένα χρήστη στο Samba server, θα πρέπει να διαθέτει UNIX account. Χρησιμοποιήστε το adduser script (ή την pw αν προτιμάτε) για να προσθέσετε έναν. Στο παράδειγμα μας, έστω ότι έχουμε προσθέσει το χρήστη student. Μπορείτε να του δώσετε ως shell το nologin. Για να τον προσθέσετε στο Samba server, δώστε:

# pdbedit -a -u student


Προσθέστε το χρήστη root καθώς και το δικό σας λογαριασμό στο Samba server:

# pdbedit -a -u root
# pdbedit -a -u sonic


Για όλους αυτούς τους λογαριασμούς θα χρειαστεί να δώσετε password. Δεν είναι απαραίτητο να είναι ίδιος με το UNIX password.

Δημιουργήστε ένα group ntadmins στο οποίο θα βάλετε το δικό σας account και το root. Έτσι θα μπορείτε να διαχειρίζεστε ως domain admin τα μηχανήματα. Δημιουργήστε επίσης ένα group users στο οποίο θα προσθέσετε όλους τους απλούς χρήστες των windows. Μπορείτε να χρησιμοποιήσετε την εντολή pw ή το sysinstall για να προσθέσετε αυτά τα groups εύκολα. Αμέσως μετά:

# pw groupmod ntadmins -m sonic,root
# pw groupmod users -m student


Και τώρα το σημαντικό: Θα πρέπει το group ntadmins να αντιστοιχισθεί στους Domain Admins του Windows network. Αντίστοιχα, θα πρέπει να γίνει αντιστοίχιση του group users στους Domain Users:

# net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d
# net groupmap add ntgroup="Domain Users" unixgroup=users rid=513 type=d


Τέλος, δημιουργήστε τους καταλόγους που απαιτούνται για τα logon scripts και τα profiles των χρηστών:

# mkdir -p /usr/local/samba/lib/netlogon/scripts
# mkdir -p /usr/local/samba/profiles


Δημιουργία Λογαριασμών Μηχανημάτων


Δημιουργήστε το group machines μέσω του pw ή του sysinstall. Θα πρέπει να δημιουργήσετε ένα λογαριασμό για κάθε μηχάνημα που θα ανήκει στο domain. Παρακάτω δείχνουμε ένα παράδειγμα μέσω του adduser, όπου προσθέτουμε το μηχάνημα PC1:

# adduser

Username: PC1$
Full name: Workstation 1
Uid (Leave empty for default):
Login group [PC1$]: machines
Login group is machines. Invite PC1$ into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: nologin
Home directory [/home/PC1$]: /dev/null
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username : PC1$
Password :
Full Name : Workstation 1
Uid : 2038
Class :
Groups : machines
Home : /dev/null
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes


Καθώς βλέπετε, στο λογαριασμό του μηχανήματος πρέπει να προσθέσουμε στο όνομα ένα $. Έπειτα προσθέτουμε το λογαριασμό αυτό στη βάση δεδομένων του Samba server, αλλά εδώ χωρίς το $:

# pdbedit -a -m PC1


Τελικές ρυθμίσεις


Στον κατάλογο profiles, δημιουργήστε τον κατάλογο που θα αποθηκεύσει τις ρυθμίσεις του λογαριασμού student:

# mkdir -p /usr/local/samba/profiles/student
# chown -R student:users /usr/local/samba/profiles/student


Στο μηχάνημα Windows (PC1 στο παράδειγμα μας), κάντε login ως τοπικός administrator και χρησιμοποιήστε την τυπική διαδικασία για να δηλώσετε το μηχάνημα ως μέλος του domain. Συνίσταται επίσης να ενεργοποιήσετε το Wins resolution από τις ρυθμίσεις δικτύου και να δηλώσετε ως wins server το IP του server σας. Μια καλή ιδέα είναι επίσης να ενεργοποιήσετε το DNS και να ρυθμίσετε το FreeBSD σας και ως DNS server.

Μετά την επιτυχή είσοδο του μηχανήματος στο domain, κάντε login ως student. Το προφίλ του λογαριασμού θα αποθηκευθεί στο /usr/local/samba/profiles/student. Μετά την επιτυχή πρώτη είσοδο και ρύθμιση του προφίλ, μπορείτε να το κλειδώσετε αν θέλετε (mandatory profile):

# cd /usr/local/samba/profiles/student
# mv NTUSER.DAT NTUSER.MAN


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