بسم الله الرحمن الرحيم
و الصلاة و السلام على أشرف المرسلين،سيدنا و حبيبنا محمد عليه أفضل الصلاة و أزكى التسليم.
اللهم علمنا ما ينفعنا و انفعنا بما علمتنا إنك أنت العليم الحكيم.
أما بعد...
بفضل الله و قوته وصلنا إلى موضوع متقدم في موضوع إدارة السيرفيرات،أﻻ و هو موضوع تأمين و حماية السيرفر.في اعتقادي،فإن أمور الأمن و الحماية هي أصعب شيء على الإطلاق في عالم الحواسيب ﻷنها و ببساطة تتطلب منك إلماما شبه شامل بكل أمور الحاسب،من نظام الملفات إلى الشبكات مرورا بخبايا العتاد و هذا يتطلب دراسة معمقة و لكن أن تأخذ بعض المعلومات المهمة هو أمر جيد إن اردت أن تصبح مدير خوادم.
سنبدأ بالعمل على جدار النار و ذلك ﻹغلاق المنافذ الغير مستخدمة،جميع نسخ لينكس تأني مع جدار نار افتراضي و هو يعتبر الأفضل يسمي iptables الآن طبق الأمر التالي
بعدها سنقوم بإضافة ملف آخر هو iptables_flush.sh خاص بالإقلاع التلقائي لجدار النار و سيحوي على التالي:
عند تنفيذك للأمر الأخير و المتعلق بإقلاع الجدار الناري،و بعد إنتهاء التنتفيذ لن تسطيع الإتصال بالسيرفر ﻷنه يحتاج إلى إعادة التشغيل يدوبا،و لهذا عليك مراسلة شركة الإستضافة للقيام بهذا العمل.
الآن نحتاج إلى نقل ملف firewall إلى init.d و ذلك سيكون عن طريق الأمر التالي:
سنقوم الآن بتثبيت fail2ban و هو المسؤول عن منح هجمات Brute Force و التي تسمح باستخدام عدد كبير من كلمات السر من أجل تخمين كلمة السر الصحيحة،التثبيت سيكون عن طريق الأمر التالي:
الآن سنضيف بعض الأسطر الخاصة بأخطاء 404،الآن ابحث عن [apache-overflows] و في نهاية أسطرها( تحت maxretry = 2) قم باضافة الأسطر التالية:
وصلنا بحمد الله إلى نهاية درس اليوم،و إن شاء الله يوفقنا إلى ما فيه الخير ﻹكمال هته الدورة بإذنه تعالى.
و الصلاة و السلام على أشرف المرسلين،سيدنا و حبيبنا محمد عليه أفضل الصلاة و أزكى التسليم.
اللهم علمنا ما ينفعنا و انفعنا بما علمتنا إنك أنت العليم الحكيم.
أما بعد...
بفضل الله و قوته وصلنا إلى موضوع متقدم في موضوع إدارة السيرفيرات،أﻻ و هو موضوع تأمين و حماية السيرفر.في اعتقادي،فإن أمور الأمن و الحماية هي أصعب شيء على الإطلاق في عالم الحواسيب ﻷنها و ببساطة تتطلب منك إلماما شبه شامل بكل أمور الحاسب،من نظام الملفات إلى الشبكات مرورا بخبايا العتاد و هذا يتطلب دراسة معمقة و لكن أن تأخذ بعض المعلومات المهمة هو أمر جيد إن اردت أن تصبح مدير خوادم.
سنبدأ بالعمل على جدار النار و ذلك ﻹغلاق المنافذ الغير مستخدمة،جميع نسخ لينكس تأني مع جدار نار افتراضي و هو يعتبر الأفضل يسمي iptables الآن طبق الأمر التالي
iptables -Lالآن سنقوم بإغلاق جميع المنافذ و بعدها نقوم بفتح المنافذ التي نحتاجها و ستكون21,80,110.للقيام بذلك سننشأ ملف شل(shell script) عن طريق الأمر التالي:
vi firewallو ضع فيه التالي:
#!/bin/shالآن سنمنح الملف الصلاحيات اللازمة عن طريق الأمر التالي:
### BEGIN INIT INFO
# Provides: Firewall maison
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start:
# Default-Stop:
# X-Interactive: false
# Short-Description: Firewall maison
### END INIT INFO
iptables -t filter -F
iptables -t filter -X
echo "Mise à 0"
# all blocked
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo "Interdiction"
# Do not break established connections
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow loopback (127.0.0.1)
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo "Loopback"
# ICMP (the ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo "Ping ok"
# SSH IN/OUT
iptables -t filter -A INPUT -p tcp --dport 1337 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 1337 -j ACCEPT
echo "SSH ok"
# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
echo "dns ok"
# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo "ntp ok"
# HTTP + HTTPS Out
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
echo "http ok"
# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT
# FTP In
# imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "ftp ok"
# Mail SMTP:25
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
# Mail POP3:110
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
# Mail IMAP:143
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
# Mail POP3S:995
iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
echo "mail ok"
# Monit
iptables -t filter -A INPUT -p tcp --dport 4598 -j ACCEPT
# Webmin
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT
echo "monitoring ok"
chmod +x firewall
بعدها سنقوم بإضافة ملف آخر هو iptables_flush.sh خاص بالإقلاع التلقائي لجدار النار و سيحوي على التالي:
#!/bin/shببساطة هو مسؤول عن تنفيذ بعض الأوامر الخاصة بالجدار الناري،الآن قم بتنفيذ أوامر الملف عن طريق iptables_flush.sh/. و بعدها قم بتنفيذ ملف firewall عن طريق firewall/.(ﻻ تنسى النقطة في أول كل سطر).
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
عند تنفيذك للأمر الأخير و المتعلق بإقلاع الجدار الناري،و بعد إنتهاء التنتفيذ لن تسطيع الإتصال بالسيرفر ﻷنه يحتاج إلى إعادة التشغيل يدوبا،و لهذا عليك مراسلة شركة الإستضافة للقيام بهذا العمل.
الآن نحتاج إلى نقل ملف firewall إلى init.d و ذلك سيكون عن طريق الأمر التالي:
cp firewall /etc/init.d/الآن سنقوم بإعداد الجدار الناري حتى يشتغل مع كل إقلاع للسيرفر و ذلك عن طريق الأمر التالي:
update-rc.d firewall defaultsالآن قد انتهينا من إعدادات الجدار الناري بنجاح و لله الحمد،و لذلك سسنتقل إلى الخطوة الموالية.
سنقوم الآن بتثبيت fail2ban و هو المسؤول عن منح هجمات Brute Force و التي تسمح باستخدام عدد كبير من كلمات السر من أجل تخمين كلمة السر الصحيحة،التثبيت سيكون عن طريق الأمر التالي:
apt-get install fail2banالآن توجه إلى مجلد البرنامج عن طريق
cd /etc/fail2banقم بعرض المحتويات عن طريق الأمر ls،اﻵن قم بتعديل الملف jail.conf و لكن قبل التعديل و كخطوة احترازية سنقوم بنسخ الملف و ذلك عن طريق الأمر التالي:
cp jail.conf jail.conf.localاﻵن سنقوم بالتعديل على الملف الجديد jail.conf.local ،الآن ابحث عن destemail(عادة ما تكون في السطر 34) و هي خاصة بالبريد الإلكتروني الذي تود أن تتلقى عليه الإخطارات،الآن قم بالبحث عن[ssh] و في الخاصية port ستجد ssh قم بحذفها و اسبتدالها برقم المنفذ الذي حددناه سابقا للخدمة و كنت قد اخترت المنفذ 1337 ،الآن ابحث عن [ssh-ddos] و قم بتغيير enabled =false إلى enabled = true و قم بتغيير المنفذ إلى المنفذ الذي اخترته(1337) أيضا قم بنفس العمليةل [apache] و لكن هنا ﻻ تغير رقم المنفذ(أتركها http,https) في [apache-multiports] و [apache-noscript] و [apache-overflows] و [proftpd] و [postfix] و [couriersmtp] و [courierauth] قم بتغيير الخاصية enabled من false إلى true و هذا من أجل تفعيل خواص برنامج fail2ban على تلك الخدمات.
الآن سنضيف بعض الأسطر الخاصة بأخطاء 404،الآن ابحث عن [apache-overflows] و في نهاية أسطرها( تحت maxretry = 2) قم باضافة الأسطر التالية:
[apache-404]الآن قم بحفظ الملف،و بعد ذلك سنقوم بإنشاء ثلاث ملفات جديدة داخل المسار التالي etc/fail.ban/conf.d/ الملف الأول هو apache-404.conf و سيحوي على التالي:
enabled = true
port = http
filter = apache-404
logpath = /var/log/apache*/error*.log
maxretry = 10
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6
[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
action = iptables[name=Apache-w00tw00t,port=80,protocol=tcp]
logpath = /var/log/apache2/access*.log
maxretry = 1
# Fail2Ban configuration fileالملف الثاني هو apache-admin.conf و سيحوي على التالي:
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client []] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
# Fail2Ban configuration fileالملف الثالث هو apache-w00tw00t.conf و سيحوي التالي:
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client []] File does not exist: .*admin|PMA|mysql
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
# Fail2Ban configuration fileالآن بعد أن تقوم بحفظ الملفات الثلاثة قم بإعادة تشغيل fail2ban عن طريق الأمر التالي:
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client []] File does not exist: .*admin|PMA|mysql
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
root@ks367082:/etc/fail2ban/filter.d# cat apache-w00tw00t.conf
[Definition]
failregex = ^ -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*
ignoreregex =
/etc/init.d/fail2ban resrtartالآن سنقوم بتثبيت فاحص لملفات الباك دوور(أو بمعنى أصح أحصنة طروادة-الأبواب الخلفية)،البرنامج هو rkhunter و ذلك عن طريق السطر التالي:
apt-get install rkhunterالآن توجه إلى home/abdelmadjid/ مع تغيير abdelmadjid إلى اسم المستخدم الخاص بك،ثم قم بفتح الملف bashrc. و في آخر الملف أضف السطر التالي:
echo ‘Acces SheLL Root’ `who` `date` | mail -s `hostname` Shell Root email@domaine.comمع تغيير email@domaine.com بالإيميل الذي تود أن تصلك إليه الإخطارات.
وصلنا بحمد الله إلى نهاية درس اليوم،و إن شاء الله يوفقنا إلى ما فيه الخير ﻹكمال هته الدورة بإذنه تعالى.
بارك الله فيك اخي مجيد موضع رائع
ردحذف