2013/08/12

أعداد أسم السيرفر Name Server

اعطاء name server إلى موقعك يضيف له هيبة ويظهر جديتك وامكانياتك. وذلك يعني أنه عندما يبحث شخص عن بيانات موقعك في who.is أو أي موقع مشابه لن يعرف استضافتك الحقيقية بل سيظهر أن موقعك يستضيف نفسه مما يدل على أنك تملك سيرفراً أو VPS أو شركة استضافة.ومن الأسباب المباشرة أيضاً . أن جميع النطاقات الموجهة نحو سيرفرك ستظل تعمل حتى إذا غيرت شركة الاستضافة أو نقلت سيرفرك إلى شركة أخرى دون الحاجة لإجراء أي تعديل على إعداداتها.
والفكرة المباشرة لهذا الإجراء أن موقعك yoursite.com بدلاً من ظهور اسم مخدماتهns123.hostgator.com و ns124.hostgator.com مثلاً ستظهر بهذه الطريقة ns1.yoursite.com و ns2.yoursite.com
ولتحقيق هذا الهدف لا بد من توفر شرطين:-

1- أن يكون لك سيرفر أو VPS وتملك IP مخصص لك
2- أن تمتلك لوحة تحكم نطاقك بالكامل
والآن سنبدأ بخطوات عمل name server وهي تنقسم إلى جزأين الأول داخل لوحة تحكم السيرفر cpanel/whm والثاني داخل لوحة تحكم نطاقك
أعدادات لوحة تحكم الدومين :

قبل أن نبدأ في الإعدادات وحتى ندرك الفرق لاحقاً يمكننا اختبار الدومين على قاعدة بيانات موقع who.is في حالة مثالنا الحالي وبعد أن فتحنا الموقع وبحثنا عن النطاق copoun.net كانت النتيجة



الآن سنبدأ بالإعدادات

ادخل إلى لوحة تحكم النطاق ثم أضف اسم السيرفر الجديد من خيار child name server



أو بالعربية (مخدمات الأسماء التابعة)



قد تختلف التسميات تبعاً لمسجل النطاق ولكن تظل الخيارات واحدة وهي إضافة name server جديد

الآن ستظهر هذه الواجهة والتي سنستخدمها لإضافة اسماء السيرفر الجديد



سنبدأ بإدخال السيرفر الأول وهو اسم موقعك مسبوقاً بـ ns1 ومعه عنوان IP الذي تم تزويدك به في خطاب التسجيل من الشركة ، دائماً ما تزودك الشركة بعنواني IP أو أكثر ، هنا سنحتاج إلى رقمي IP لإنجاز هذه المهمة

أضف العنوان الأول ns1.yourdomain.com ومعه الـ IP الأول ثم اضغط Add More لإضافة العنوان التالي حيث yourdomain هو اسم موقعك

وهذه هي البيانات التي استخدمناها بمثالنا



احفظ الأول والثاني ثم أغلق الشاشة

ثم وجه نطاقك إلى اسم السيرفر الخاص به عن طريق خيار name servers أو مخدمات الأسماء



ثم اضغط update Name Server
داخل لوحة التحكم WHM

المرحلة الثانية من الإعداد تحتاج إلى أن تتدخل لوحة تحكمك



في رئيسية لوحة تحكمك WHM ابحث عن DNS Functions

يمكنك الوصول إليها من الواجهة الرئيسية



أو من خيارات يسار الشاشة





اضغط على Edit DNS Zone انتظر قليلاً حتى يتم التحميل ، ستظهر جميع النطاقات المرتبطة بالحزمة اختر منها النطاق الرئيسي الذي سجلت به

اضغط Edit ستظهر جميع إعدادات النطاق الرئيسي وهي ما نحتاجه بالضبط لتهيئة اسم السيرفر الجديد

توجه للأسفل حتى تصل عبارة Add New Entries Below this Line



في المربع الأول اكتب ns1 ، تجاوز 14400 ، في المربع الثالث من القائمة المنزلقة اختر A سيظهر مربع جديد مكتوب عليه (IP or Hostname) احذف هذه العبارة واستبدلها بالآي بي الذي ستحدده للموقع.

في السطر التالي اكتب ns2 ، تجاوز 14400، ثم اختر A أيضاً واكتب الآي بي الثاني

اضغط save



عد الآن إلى DNS functions واختر Edit DNS Zone ولكن هذه المرة اختر النطاق الذي قمت بإعداده في الخطوات السابقة ثم اضغط زر Edit



انظر يمين SAO وقم بتغيير namesever إلى اسم السيرفر الذي أنشأته كمثال ns1.copoun.net. لا تنسى أن هنالك نقطة بعد اسم النطاق

اذهب إلى الأسفل ثم قم بتغيير القيمتين المقابلتين لحقل NS إلى اسماء الخوادم التي اقترحتها سابقاً وهي كمثال ns1.copoun.net. و ns2.copoun.net.

اضغط Save



أضف ns1 و ns2 مع عنواني الآي بي للنطاق copoun.net مثلما فعلنا مع النطاق الأساسي للسيرفر . يتم ذلك بفتح DNS Functions ثم اختيار Edit DNS Zone ثم نختار النطاق الذي نعمل عليه حالياً ونضغط Edit

نتحرك إلى الأسفل حتى نصل إلى Add New Entries Below this Line وبنفس الطريقة نضيف ns1 ثم نختار A ونكتب الآي بي ثم نكرر نفس الفعل بإضافة ns2 كما بالصورة أدناه ثم نضغط Save



بعد هذه الخطوة يمكننا أن نقول تهانينا تم إعداد اسم السيرفر ، ويمكنك بسهولة اختباره في موقع who.is

كما يمكننا ببساطة فتح الموقع لنرى إن كانت هنالك مشكلة بالتوجيه

ولكن للتأكد من إعدادات اسم السيرفر مائة بالمائة وللتأكد من أنه موجه توجيهاً جيداً ولن تعاني المواقع الموجهة نحوه من أي مشكلة علينا اختباره في موقع Leaf DNS

إذا جاءت نتيجة الاختبار خالية من الأخطاء فقد انتهى عملك .

تركيب واستخدام اداة NMON لمراقبة ومتابعة السيرفر

السلام عليكم ورحمة الله

اليوم بنركب اداة Nmon لمراقبة اداء السيرفر بالكامل .. البرنامج دا كان لشركة IBM بس لفترة ثم تحول ل Open Source .... اداة بسيطة رائعة بتعطى أفضليات كتير ومن افضل الادوات اللى بتحلل الاستهلاك والاداء وبتساعد كثير أى مدير نظام .

- نحتاج ننزل نسخة الbinary الخاصة بنظامنا .. تتأكد اولا من خلال الرابط التالى وحمل منه النسخة اللى تناسب نظامك :
nmon for Linux | Site / Download

لو مش عارف تحدد نزل ملف ال tar اللى فيه النسخ الجديدة

رمز Code:

wget http://sourceforge.net/projects/nmon/files/nmon_linux_more_14g.tar.gz


تفكه وبعدين هاتعرف ازاى تعرف اى نسخة اللى شغاله معاك فى الخطوات القادمة .

واعتقد هاتكون للCentOS فقط:

رمز Code:

wget http://sourceforge.net/projects/nmon/files/nmon_x86_64_centos6


* هانعمل بعد كده Compile لل Nmon مع السيستم وال makefile

رمز Code:

wget http://sourceforge.net/projects/nmon/files/lmon14i.c
wget http://sourceforge.net/projects/nmon/files/makefile/download



رمز Code:

yum install ncurses-devel



رمز Code:

mv lmon14i.c lmon.c


الخطوة القادمة ... فتح ملف ال makefile والبحث عن التوزيعة اللى شغال عليها والاصدار تنسخها

رمز Code:

make nmon_x86_64_centos6



رمز Code:

 vi makefile


nmon_x86_64_centos6 الاصدار اللى هانلاقيه داخل ملف makefile

ممكن ننقلها الى /usr/local/sbin

رمز Code:

mv nmon_x86_64_centos6 /usr/local/sbin/nmon


كده الاداة ركبت .. ونيجى لكيفية الاستخدام :

رمز Code:

nmon




 

رمز Code:

-h   hint زى المساعدة للأداة
-q الخروج
-c احصائيات البروسيسور
-m احصائيات الذاكرة
-n احصائيات الشبكة
-J احصائيات ملفات النظام
-d احصائيات القرص ( الهارد)
-t اعلى الاحصائيات ( زى امر top )
-V احصائيات الذاكرة الافتراضية
-N احصائيات ال NFS
-v احصائيات تفصيلية ( بتحذير - حالة جيدة - خطر على الشاشة)
- k احصائيات الكيرنل


لو تحب ان اول ماتفتح nmon يظهر بيانات البروسيسور والنيتورك والرام والهارد .. نفذ التالى

رمز Code:

export NMON=mndc


ايضا لعمل ملف تسجل فيه احداث معينة وتراجعه فيما بعد نفذ :

رمز Code:

nmon -ft -s 40 -c 100


هايعمل ملف على سبيل المثال هايكون اسمه زى هذا : nas02_120506_0402.nmon

وفى اداة ايضا تحليلية بشكل جرافيك لل nmon اللى يحب يستخدمها nmon Analyzer

خطوات حماية NGINX هامة وزيادة الأمان (كويب سيرفر) وتحسين الشبكة

السلام عليكم ورحمة الله وبركاته

مبدئياً ماهو ال Nginx ومميزاته ؟
ال Nginx يعمل كويب سيرفر خفيف جدا - بروكسى للمواقع الكبيرة والتى تعمل ب Apache - بروكسى لل E-Mail ايضا .. يعمل على كل الأنظمة ( Unix-Linux-Mac OS X- Microsoft Windows -Solaris) ,, يستخدم بالمواقع الكبرى مثل Wordpress - sourceforge ...

زى اى برنامج له اعدادات وملفات اساسية

مسار الإعدادات

رمز Code:

/usr/local/nginx/conf/


ملف الكونفج الخاص به

رمز Code:

/usr/local/nginx/conf/nginx.conf


مسار اللوج

رمز Code:

/usr/local/nginx/logs/


يستخدم ال Nginx HTTP بورت 80
يستخدم ال Nginx HTTPs بورت 443

الخطوات التالية لزيادة الأمان والحماية وتقليل نسبة الخطورة على الويب سيرفر:


1- نفعل SELinux
انظر
تفعيل وضبط SELinux والإستفادة من حمايتها
افتراضيا SELinux لاتحمى nginx وهو ويب سيرفر ولكن هايتم عمل دا من خلال عمل كومبايل

رمز Code:

yum -y install selinux-policy-targeted selinux-policy-devel



رمز Code:

cd /opt
wget 'http://garr.dl.sourceforge.net/project/selinuxnginx/se-ngix_1_0_10.tar.gz'


نفك الضغط

رمز Code:

tar -zxvf se-ngix_1_0_10.tar.gz



رمز Code:

cd se-ngix_1_0_10/nginx
make



رمز Code:

/usr/sbin/semodule -i nginx.pp


- نقفل السيستم

رمز Code:

getsebool -a | less
getsebool -a | grep off
getsebool -a | grep o


هانشوف الاعداد اللى يكون on نخليه off ده طبعا لإختيارك أيضاً


2- تقوية الشبكة وتحديد الصلاحيات بقدر الإمكان من خلال ملف sysctl.conf

رمز Code:

vi /etc/sysctl.conf


ضبط الإعدادات كالتالى :

رمز Code:

# Avoid a smurf attack
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Turn on protection for bad icmp error messages
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Turn on syncookies for SYN flood attack protection
net.ipv4.tcp_syncookies = 1

# Turn on and log spoofed, source routed, and redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# No source routed packets here
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Turn on reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Make sure no one can alter the routing tables
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# Don't act as a router
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Turn on execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# Tuen IPv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1

# Optimization for port usefor LBs
# Increase system file descriptor limit
fs.file-max = 65535

# Allow for more PIDs (to reduce rollover problems); may break some programs 32768
kernel.pid_max = 65536

# Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000

# Increase TCP max buffer size setable using setsockopt()
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608

# Increase Linux auto tuning TCP buffer limits
# min, default, and max number of bytes to use
# set max to at least 4MB, or higher if you use very high BDP paths
# Tcp Windows etc
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1


احفظ واقفل الملف

إختيارية (تطبق على أى سيرفر ): هذه خطوات أخرى لتحسين الشبكة للسيرفرات التى تتعامل بنقل ملفات كبيرة وتحتاج الى زيادة ال Buffer لأن الذاكرة دائما ( TCP) تحسب تلقائى من ذاكرة النظام ككل وغالباً بتكون قليلة .

ازاى نعرف القيم المحددة للارسال والاستقبال وتغيير هذه الاعدادات لتوفير سرعة افضل للشبكة ككل .. كالتالى :

معرفة حجم الذاكرة المخصصة ككل

رمز Code:

cat /proc/sys/net/ipv4/tcp_mem


معرفة اقصى كمية من الممكن أن تستقبل (ذاكرة)

رمز Code:

cat /proc/sys/net/core/rmem_default
cat /proc/sys/net/core/rmem_max


معرفة أقصى كمية من الممكن ان ترسل

رمز Code:

cat /proc/sys/net/core/wmem_default
cat /proc/sys/net/core/wmem_max


الخطوة القادمة غير ضرورية للسيرفرات اللى ليس عليها ضغط .. لأن الافتراضى بيكون128k ودا غالبا بيكون كافى لويب سيرفر وphp وخلاص ومفيش ضغط .. التعديل دا هايزيد استهلاك الذاكرة لذا اكتفى بالخطوة السابقة باعدادات ملف sysctl.conf كما هى .

رمز Code:

echo 'net.core.wmem_max=12582912' >> /etc/sysctl.conf
echo 'net.core.rmem_max=12582912' >> /etc/sysctl.conf


ايضا هانحتاج لزيادة الحجم الأدنى والبداية والأقصى بالبايت

رمز Code:

echo 'net.ipv4.tcp_rmem= 10240 87380 12582912' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_wmem= 10240 87380 12582912' >> /etc/sysctl.conf


ايضا يمكن تفعيل window scaling وده بيكون اختيار لتوسيع نافذة النقل

رمز Code:

echo 'net.ipv4.tcp_window_scaling = 1' >> /etc/sysctl.conf


تفعيل ايضا التالى

رمز Code:

echo 'net.ipv4.tcp_sack = 1' >> /etc/sysctl.conf


لا نستفيد ايضا بان TCP يعمل كاش لاتصالات مقفولة للفترات .. لان الكاش فى الحالات دى له اتجاهين والغرض من الكاش معروف ان لما الاتصال يتم مرة اخرى يستخدم اللى موجود بالفعل من اول مرة اتصل وتم عمل الكاش له ودا المفروض فى المجمل بيسرع الاداء .. ولكن فى معظم الأوقات بيسبب ضعف فى اداء الشبكة بشكل كبير ... لذلك انا اوقفه

رمز Code:

echo 'net.ipv4.tcp_no_metrics_save = 1' >> /etc/sysctl.conf


الآن اعادة تحميل الاعدادات

رمز Code:

sysctl -p


اذا حبيت تشوف التعديلات

رمز Code:

tcpdump -ni eth0


3- نرجع لل NGINX ونلغى الموديولات الغير مطلوبة

رمز Code:

./configure --without-http_autoindex_module --without-http_ssi_module
make
make install


اذا تحب تلغى اكثر ضيف مع اول سطر
نفذا التالى وشوف ايه الموديولات اللى تحب تفعيلها او تعطيلها ونفذ

رمز Code:

./configure --help | less


تقدر تعمل كومبيل الان له لكن قبل ذلك اضف ذلك فى nginx.conf

رمز Code:

server_tokens off


دا طبعا لإلغاء ظهور نسخة السيرفر المستخدمة فى صفحات الخطأ المعروفة .

4- التحكم فى الهجمات الفلوو المتكرر

رمز Code:

vi /usr/local/nginx/conf/nginx.conf


عدل الخيارات التالية كما تريد او كما تراها

رمز Code:

  client_body_buffer_size  1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;


لكن اذا سيرفرك به مواقع كتير مثل المنتديات والمدونات خليها 4k او 8 لأن اذا الحجم كان اكبر من القيمة هايعطيله صفحة خطأ Request Entity Too Large" (413) ده برده للعلم .

الاختيار الرابع بيساعد فى المكافحة ضد العناكب السيئة وال DoS

ايضا تعديل قيم الفصل او اغلاقه للاتصال .. وده بيحسن فى الاداء بشكل عام وبيقطع الاتصال الزائد عن الحد بيه وبيحافظ على سرعة مناسبة جدا

رمز Code:

  client_body_timeout   10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;


الخطوة السابقة التعديل على القيم فيها حسب ماتناسب احتياجات سيرفرك ( أهل مكة أدرى بشعابها )

5- تحديد وغلق الاتصالات من اى بى واحد لبورت 80 لفترة اذا تكرر 15 مرة فى فترة بلغت 60 ثانية

رمز Code:

/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 15 -j DROP
service iptables save


* دائما راجع ملفات اللوج وتظل متابع دائما

رمز Code:

grep "/login.php??" /usr/local/nginx/logs/access_log
grep "...etc/passwd" /usr/local/nginx/logs/access_log
egrep -i "denied|error|warn" /usr/local/nginx/logs/error_log


بعض النقاط ايضا .. دائما يكون الويب سيرفر بيوزر بمفرده مش للرووت .. الصلاحيات ايضا لايمكن ان تدع هذا المسار بتصريحات write او اذا كان فى يوزر له بيكون المسار باسمه على سبيل المثال nginx

رمز Code:

find /nginx -user nginx



رمز Code:

find /usr/local/nginx/html -user nginx



رمز Code:

ls -l /usr/local/nginx/html/


بتدى الصلاحية بشكل عادى جدا

حذف الباك اب للملفات التى انشأت من vi او اى محرر اخر

رمز Code:

# find /nginx -name '.?*' -not -name .ht* -or -name '*~' -or -name '*.bak*' -or -name '*.old*'
# find /usr/local/nginx/html/ -name '.?*' -not -name .ht* -or -name '*~' -or -name '*.bak*' -or -name '*.old*'


اذا اردتم ايضا شل سكربت به بعض اوامر iptables للحماية ايضا وتقليل الصلاحيات بشكل كبير من الممكن ارفقه لمن يريد .

بالنهاية اتمنى الإفادة القصوى لاخوتى .. اغلب هذه الاعدادات تتطلب مستوى جيد من الخبرة وكلها مستقاة من عدة مواقع ومواضيع لدى رايت مشاركتها افضل .