تأمين خادوم سامبا لتخديم الملفات والطباعة على أوبنتو
يُعد خادوم سامبا (Samba) من أكثر الحلول شيوعاً لتبادل الملفات والطباعة بين أنظمة لينكس وWindows. يتيح سامبا دمج خواديم أوبنتو بسهولة في بيئات شبكية تحتوي على أجهزة تعمل بأنظمة مختلفة، وذلك عبر بروتوكول SMB/CIFS. غير أن تشغيل خادوم سامبا بدون تأمين مناسب يعرض الشبكة ومستخدميها لمخاطر أمنية خطيرة، مثل الوصول غير المصرح به أو تسريب المعلومات أو استغلال الثغرات. لهذا، فإن تأمين خادوم سامبا يجب أن يكون من أولويات مسؤولي النظام قبل نشره في بيئة الإنتاج.
أولاً: فهم أساسيات سامبا والبروتوكولات المستخدمة
سامبا هو تطبيق مجاني ومفتوح المصدر يُمكن أن يعمل كخادوم SMB/CIFS أو كعميل. يسمح هذا البروتوكول بتبادل الملفات، التوثيق، الوصول إلى الموارد المشتركة (مثل الطابعات)، وتسجيل الدخول إلى الشبكات باستخدام Active Directory. بروتوكول SMB (Server Message Block) الذي يستخدمه سامبا يُعتبر أحد بروتوكولات الطبقة السابعة في نموذج OSI، ويُستخدم على نطاق واسع في الشبكات المحلية.
ثانياً: تثبيت خادوم سامبا على أوبنتو
bashsudo apt update sudo apt install samba
بعد التثبيت، يكون الملف الرئيسي لإعدادات سامبا هو: /etc/samba/smb.conf. من المهم أن تتم أي تعديلات عليه بحذر مع الاحتفاظ بنسخة احتياطية.
ثالثاً: إنشاء مجلدات المشاركة وضبط أذونات الوصول
لتأمين المشاركة، يجب تحديد من له حق القراءة أو الكتابة إلى الملفات والمجلدات المشتركة. يُفضّل إنشاء مجلد جديد مثلاً:
bashsudo mkdir -p /srv/samba/partage
sudo chown nobody:nogroup /srv/samba/partage
sudo chmod 0775 /srv/samba/partage
ثم إضافته في ملف الإعداد smb.conf بهذا الشكل:
ini[partage]
path = /srv/samba/partage
browsable = yes
read only = no
guest ok = no
رابعاً: إنشاء المستخدمين وضبط كلمات المرور
يجب ربط المستخدمين المحليين بسامبا، ويُفضل إنشاء مستخدمين مخصصين لخدمة سامبا فقط، ومن دون صلاحيات واسعة على النظام:
bashsudo useradd -M -s /sbin/nologin sambauser sudo smbpasswd -a sambauser
ثم تعيين الأذونات المناسبة للمجلد المشترك:
bashsudo chown sambauser:sambauser /srv/samba/partage
خامساً: تقييد الوصول باستخدام إعدادات smb.conf
ضبط الإعدادات التالية يُسهم في تأمين الخدمة:
ini[global]
server string = Samba Server
workgroup = WORKGROUP
security = user
map to guest = never
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = no
interfaces = lo eth0
bind interfaces only = yes
hosts allow = 192.168.1.0/24
hosts deny = 0.0.0.0/0
سادساً: تفعيل جدار الحماية UFW وتحديد القواعد
من الضروري استخدام جدار الحماية للتحكم في المنافذ التي يستخدمها سامبا، وهي 137، 138، 139، و445:
bashsudo ufw allow from 192.168.1.0/24 to any port 137
sudo ufw allow from 192.168.1.0/24 to any port 138
sudo ufw allow from 192.168.1.0/24 to any port 139
sudo ufw allow from 192.168.1.0/24 to any port 445
sudo ufw enable
يجب حظر أي وصول خارجي إلى هذه المنافذ من خارج الشبكة المحلية.
سابعاً: تفعيل التشفير في الاتصالات
يدعم سامبا بدءاً من الإصدارات الحديثة ميزة تشفير البيانات باستخدام بروتوكول SMB3. يمكن فرض التشفير عبر الإعداد التالي:
ini[global]
smb encrypt = required
ومع ذلك، ينبغي الانتباه إلى أن بعض الأنظمة القديمة قد لا تدعم التشفير، لذا يجب موازنة بين الأمان والتوافق.
ثامناً: تسجيل الدخول والمراقبة
مراقبة النشاط على خادوم سامبا أمر بالغ الأهمية لرصد أي نشاط مريب أو محاولات دخول غير مصرح بها. تشمل هذه الأدوات:
-
logwatch: لإعداد تقارير يومية من ملفات السجلات
-
fail2ban: لحظر العناوين التي تقوم بمحاولات دخول فاشلة متكررة
-
auditd: لمراقبة الوصول إلى الملفات
إعداد fail2ban لخدمة سامبا
يمكن إنشاء ملف إعداد خاص بسامبا في /etc/fail2ban/jail.local:
ini[samba]
enabled = true
port = 137,138,139,445
filter = samba
logpath = /var/log/samba/log.*
maxretry = 3
bantime = 3600
يجب التأكد من وجود ملف الفلتر المناسب في /etc/fail2ban/filter.d/samba.conf.
تاسعاً: تقييد بروتوكولات SMB القديمة
البروتوكولات القديمة مثل SMB1 تحتوي على ثغرات أمنية خطيرة مثل EternalBlue. ينبغي تعطيل SMB1 نهائياً من خلال:
ini[global]
min protocol = SMB2
max protocol = SMB3
عاشراً: استخدام Active Directory لتوثيق الوصول (اختياري)
عند توفر Active Directory، يمكن ربط خادوم سامبا به لتطبيق سياسات التوثيق المركزية. هذا الخيار متقدم ويتطلب تكوين Kerberos وWinbind.
bashsudo apt install krb5-user winbind libnss-winbind libpam-winbind
وضبط ملفات /etc/krb5.conf و/etc/samba/smb.conf بما يتماشى مع إعدادات المجال.
الحادي عشر: إعداد الطابعات ومشاركتها عبر سامبا
لمشاركة الطابعات، يجب تثبيت حزمة CUPS:
bashsudo apt install cups
وتعديل ملف إعداد سامبا ليتضمن:
ini[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
printable = yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
write list = root
ثم التأكد من إضافة المستخدمين المخولين للطباعة.
الثاني عشر: استخدام الشهادات الرقمية مع Samba (SMB over TLS)
ابتداءً من الإصدارات الحديثة، يمكن إعداد تشفير TLS باستخدام شهادات X.509:
ini[global]
tls enabled = yes
tls keyfile = /etc/samba/private/server.key
tls certfile = /etc/samba/private/server.crt
tls cafile = /etc/samba/private/ca.crt
يجب إنشاء الشهادات باستخدام openssl أو الحصول عليها من سلطة موثوقة.
جدول: أهم إعدادات الأمان في خادوم سامبا على أوبنتو
| عنصر الأمان | التوصية |
|---|---|
| التوثيق | استخدام مستخدمين مخصصين، وتعطيل الدخول كضيف |
| التشفير | تفعيل SMB3 أو TLS |
| التحكم في الوصول | ضبط hosts allow وbind interfaces only |
| جدار الحماية | تقييد المنافذ لعنوان الشبكة المحلي فقط |
| مراقبة السجلات | تفعيل log file، استخدام logwatch أو auditd |
| إدارة محاولات الدخول | تكوين fail2ban لمنع محاولات التخمين |
| إيقاف SMB1 | تعيين min protocol = SMB2 |
| الدمج مع Active Directory | استخدام Kerberos وWinbind |
| مشاركة الطابعات | تفعيل CUPS وضبط المسارات بدقة |
| TLS | استخدام شهادات رقمية موثوقة لتأمين الاتصال |
المراجع
-
Samba Official Documentation: https://www.samba.org/samba/docs/
-
Ubuntu Community Help Wiki – Samba: https://help.ubuntu.com/community/Samba

