2015/04/15

التحويل من CentOS الى CloudLinuX مع السى بانل


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

CloudLinux سيستم ممتاز بيمتاز بالأمان والاداء العالى .. الغالبية يستخدمه لأغراض حماية عالية
CloudLinux سيستم مدفوع على عكس CentOS يجب الحصول على ترخيص لتشغيله بشكل دائم على السيرفر .. له دعم هائل من ريدهات .. تحديثات مستمرة
له العديد من الامكانيات .. LVE - CageFS -ApacheModule
يدعم ايضا ال Xen - KVM - VMWare

بعد الحصول على الترخيص للاى بى من السى بانل

رمز PHP:

/usr/local/cpanel/cpkeyclt



رمز PHP:

/usr/local/cpanel/bin/cloudlinux_system_install -k


نعمل ريبووت للسيرفر

رمز PHP:

reboot


ثم كومبايل للاباتشى من جديد

رمز PHP:

 /usr/local/cpanel/scripts/easyapache --build


كده انتهينا

لو بترخيص مباشر من كﻻود لينكس
https://cln.cloudlinux.com/clweb/buy.html

رمز PHP:

wget http://repo.cloudlinux.com/cloudlinux/sources/cln/cpanel2cl



رمز PHP:

sh cpanel2cl -k <key>


استبدل <key> برقم ترخيصك

رمز PHP:

reboot



رمز PHP:

/scripts/easyapache --build



تركيب CafeFS على CloudLinux لعزل كل مستخدم عن باقى السيرفر

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

اليوم .. تركيب CageFS اللى يعتبر اساس دعاية CloudLinux بالبدايات و LVE ايضا
هو عبارة عن نظام تخيلى يفصل كل يوزر على السيرفر بعيدا عن اى يوزر اخر .. بمعنى اسهل لو اخترق موقع ميقدرش يدخل على يوزر تانى ويتنقل بداخل السيرفر
ايضا بيمنع من قدرة اى يوزر من معرفة حتى تواجد يوزر اخر على السيرفر ومعرفة اسم اليوزر الخاص به
ايضا مفيش مشاكل منه مع اى برنامج او خدمات على السيرفر مثل :

رمز Code:

•	Apache (suexec, suPHP, mod_fcgid, mod_fastcgi)
• LiteSpeed Web Server
• Cron Jobs
• SSH


يتطلب تركيبه مساحة 8G ووجود LVE
ايضا
نبدأ :

رمز PHP:

yum install cagefs



رمز PHP:

/usr/sbin/cagefsctl --init


استخدامه :

يمكن تفعيل النظام لأى يوزر او كل اليوزرات الموجودة على السيرفر
لتفعيل للكل :

رمز PHP:

/usr/sbin/cagefsctl --enable-all


لتعطيل للكل :

رمز PHP:

/usr/sbin/cagefsctl --disable-all


للتفعيل ليوزر معين :

رمز PHP:

/usr/sbin/cagefsctl --enable [username]


لعرض الأعضاء الغير مفعل لهم النظام :

رمز PHP:

/usr/sbin/cagefsctl --list-disabled


العيوب :
* بيقوم النظام بتحميل اعدادات البى اتش بى من مسار مختلف .. اى نعم هى نفس الاعدادات بالملف الاصلى لكن اذا عدلت بالملف الاصلى php.ini لابد من تنفيذ الأمر

رمز PHP:

cagefsctl --update


*lastlog لن تعمل نهائيا ( باعتقادى ﻻيوجد احد يستخدمه كثيرا )

- النظام عبارة عن تمبلت .. اى تعديل لابد من عمل التحديث .. لكن بيتيح السهولة فى الاضافة والتعديل . بمعنى ان زى اى تمبلت له ملفات بامتداد معين .. انا ممكن اكريت ملف بنفس الامتداد واحط فيه اعداداتى اللى احتاجها ( طبعا محتاجة ادارى فاهم ) .. على سبيل المثال
هانعمل ملف لعملاء الشل بإسم openssh-conf.cfg ومحتواه هايكون :

رمز PHP:

[openssh-clients]
comment=OpenSSH Clients
paths=/etc/ssh/ssh_config, /bin/hostname, /usr/bin/scp, /usr/bin/sftp, /usr/bin/slogin, /usr/bin/ssh, /usr/bin/ssh-add, /usr/bin/ssh-agent, /usr/bin/ssh-copy-id, /usr/bin/.ssh.hmac, /usr/bin/ssh-keyscan, /usr/libexec/openssh/sftp-server, /etc/environment, /etc/security/pam_env.conf
devices=/dev/ptmx


وﻻزم بعد اى تعديل ننفذ الأمر

رمز PHP:

/usr/sbin/cagefsctl --update


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

رمز PHP:

cagefsctl --addrpm ffmpeg


بعدها انفذ

رمز PHP:

cagefctl --update


ايضا لمراعاة مسارات التمب والمساحة اللى بيشغلها في cagefs نظام حذف تلقائى كرون

رمز PHP:

cagefsctl --set-tmpwatch='/usr/sbin/tmpwatch -umclq 720'


رقم 720 دا عدد الساعات اللى تمر على الملف قبل حذفه .. دا معناه ان اى ملف بالتمب لم يتم استخدامه لمدة شهر هايتم حذفه تلقائيا .

اذا اردت عدم الانتظار للكرون كل شهر .. يمكنك التتنفيذ فورا

رمز PHP:

cagefsctl --tmpwatch


لحذفه نظام CageFS :

رمز PHP:

/usr/sbin/cagefsctl --remove-all
yum remove cagefs


طبعا انا مخترعتش الحاجات دى .. كل دا موجود كده كده على الموقع الرسمى cloudlinux.com

أتمنى الإفادة للجميع

طريقة الترقية الى الاصدار الجديد CentOS 7

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

طريقة الترقية الى الاصدار الحديث من Red Hat فى توزيعة CentOS 7
اصدار 7 به اختلافات كثيرة من ريدهات هذه المرة .. طفرة فى التعامل مع اضافات وتطوير بالنتورك

نقوم بالتالى لعمل الترقية ( الذى يعتبر اضافة لم تكن موجودة وهى الترقية اونلاين عن طريق اداة جديدة وهى redhat-upgrade-tool )

رمز PHP:

mkdir -p /root/upgrade
cd /root/upgrade
wget  http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-1.0.2-33.el6.x86_64.rpm http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-contents-0.5.13-1.el6.noarch.rpm http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-ui-1.0.2-33.el6.x86_64.rpm http://dev.centos.org/centos/6/upg/x86_64/Packages/python-rhsm-1.9.7-1.el6.x86_64.rpm http://dev.centos.org/centos/6/upg/x86_64/Packages/redhat-upgrade-tool-0.7.22-1.el6.noarch.rpm


نركب شىء جديد منهم وهو pre upgrade assistant

رمز PHP:

yum localinstall preupgrade-assistant-*
preupg



رمز PHP:

yum localinstall redhat-upgrade-tool-0.7.22-1.el6.noarch.rpm python-rhsm-1.9.7-1.el6.x86_64.rpm



رمز PHP:

rpm --import http://ftp.plusline.de/centos/7.0.1406/os/x86_64/RPM-GPG-KEY-CentOS-7



رمز PHP:

redhat-upgrade-tool --network 7.0 --instrepo http://ftp.plusline.de/centos/7.0.1406/os/x86_64/ --force


هانعمل ريستارت بعد هذه الخطوة

لتجنب ظهور رسالة خطأ بخصوص ال RPMs

رمز PHP:

cd /mnt/var/lib/rpm



رمز PHP:

rm __*


ونعمل ريستارت ايضا

ثم للتأكد

رمز PHP:

cat /etc/centos-release


تحياتى للجميع

طريقة تثبيت PageSpeed Module ,Apache, Nginx

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

طريقة اضافة موديل PageSpeed المقدم من شركة جوجل لتسريع الويب سيرفر سواء كان Apache او Nginx
مع الاباتشى اسمه mod_pagespeed
مع الnginx اسمه ngx_pagespeed


1- طريقة اضافته مع الاباتشى :

رمز PHP:

yum install at
rpm -U mod-pagespeed-*.rpm


2- طريقة الاضافة مع Nginx :

رمز PHP:

yum install gcc-c++ pcre-dev pcre-devel zlib-devel make


تركيب الموديول فقط

رمز PHP:

  cd ~
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.6.29.5-beta.zip
unzip release-1.6.29.5-beta.zip
cd ngx_pagespeed-release-1.6.29.5-beta/
wget https://dl.google.com/dl/page-speed/psol/1.6.29.5.tar.gz
tar -xzvf 1.6.29.5.tar.gz


تركيب الموديول مع الدعم وبتتأكد الاول من احدث نسخة اصدرت من nginx

رمز PHP:

 cd ~
wget http://nginx.org/download/nginx-1.4.1.tar.gz
tar -xvzf nginx-1.4.1.tar.gz
cd nginx-1.4.1/
./configure --add-module=$HOME/ngx_pagespeed-release-1.6.29.5-beta
make
make install


ملفات الكونفج الخاصة بالموديول
* بالاباتشى تكون بالمسار التالى

رمز PHP:

/etc/httpd/conf.d/pagespeed.conf


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

رمز PHP:

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


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

رمز PHP:

server


اضافة الكود التالى فى كل جزء به server بملف الكونفج الخاص ب nginx

رمز PHP:

pagespeed on;

# تأكيد مسار الكاشx.
pagespeed FileCachePath /var/ngx_pagespeed_cache;

location ~ ".pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+" {
add_header "" "";
}
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }


لتفعيل الموديول mod_pagespeed .. من ملف pagespeed.conf
بأوله نجعل الخيار

رمز PHP:

ModPagespeed on


من الممكن ايضا تعطيله من كونفج الاباتشى نفسه ولكن ليس باستخدام on او off

رمز PHP:

ModPagespeed unplugged


بالنسبة ل nginx للتفعيل او ايقافه من ملف nginx.conf
فى اى بلوك يخص http او server نضيف

رمز PHP:

pagespeed on;


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

امكانيات الموديول كثيرة وله اختيارات عديدة ايضا .. فى ملف http.conf على سبيل المثال

رمز PHP:

ModPagespeed On
ModPagespeedInheritVHostConfig on
ModPagespeedFileCachePath "/var/cache/mod_pagespeed/"
ModPagespeedEnableFilters combine_css,combine_javascript

AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example1.com
ModPagespeedMapRewriteDomain cdn.example1.com *example.com
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example2.org
ModPagespeedMapRewriteDomain cdn.example2.org *example.org
# الغاء الدمج ل css هنا
ModPagespeedDisableFilters combine_css
</VirtualHost>


الخيارات المفعلة بشكل عام للمودويول .. والتحكم بها بشكل خاص ب virtual hosts

ايضا نفس الطريقة بال nginx

رمز PHP:

http {
pagespeed On;
pagespeed FileCachePath "/var/cache/ngx_pagespeed/";
pagespeed EnableFilters combine_css,combine_javascript;

server {
listen 80;
server_name www.example1.com;
root /www/example1;
pagespeed MapRewriteDomain cdn.example1.com *example.com;
}

server {
listen 80;
server_name www.example2.org;
root /www/example2;
pagespeed MapRewriteDomain cdn.example2.org *example.org;
# هنا ايضا تعطيل دمج ال css لهذا الموقع فقط
pagespeed DisableFilters combine_css;
}

server {
listen 80;
server_name www.example3.org;
root /www/example3;

# لاحظ هنا تعطيل الموديول لهذا الموقع
pagespeed off;
}


لكم تحياتى

2015/04/14

حماية ووردبريس

أهلا وسهلاً بكم


يتضمن هذا الدرس :


1- إعادة تسمية مجلد wp-content
2- إعادة تسمية مجلد wp-admin
3- حذف وسم generator من الهيدر



وطبعاً فائدة الثلاثة اعلاه هي حماية المدونة

وأنت تتساءلون لماذا حذف generator بشأن حذف الوسم , فهذا الوسم يعطي معلومات عن رقم اصدار النسخة المستخدمة
أولاً هذا غير مهم لأي شخص
ثانياً في حال اكتشف الهاكر ثغرة في احد النسخ وعرف انك تستخدمها فسوف يستطيع اختراقها ولذلك علينا حذف ذاك الوسم.

نبدأ الآن مع القسم الأول من الدرس:


إعادة تسمية مجلد wp-content :

1- افتح ملف اسمه wp-config.php

2- أضف الكود التالي في اخر الملف :

 


رمز PHP:

define('WP_CONTENT_FOLDERNAME', 'wp-content');
define('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME );
define('WP_CONTENT_URL', 'http://domain.ext/'.WP_CONTENT_FOLDERNAME);
define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');



 


عليك :

1- طبعا مع تغيير كلمة domain.ext الى اسم دومينك , مثال : mosa3ed.com
2- في السطر الاول من الكود عليك تغيير كلمة wp-content الموجودة بين علامتي تنصيص '' الى اي اسم تريده , مثال : mosa3ed-media
3- تغيير اسم مجلد wp-content الى ماتم اختياره في الكود اعلاه


لبعض النسخ وخصوصاً اصحاب نسخ 3.1.3 وما فوق:

1- فتح ملف default-constants.php الموجود في مجلد /wp-includes/
2- استبدال كل كلمات wp-content الى اسم المجلد اللي تريده.
3- تغيير اسم مجلد wp-content الى ما اخترته.


ملاحظة: عليك التأكد ان كل الإضافات تعمل بشكل سليم وان كانت بعضها لا تعمل فافعل الاتي :

افتح ملفات الإضافة عبر محرر النصوص من اي نوع واستبدل كلمة wp-content باس المجلد الجديد دائماً .


القسم الثاني من الدرس:

إعادة تسمية مجلد wp-admin :

يمكنك فعل هذا بطريقتين :

1- الاولى هي عن طريق ملف الهتكسس .htaccess ووضع جدار ناري حول ملف wp-admin وحجب الدخول المباشر لملف login.php
2- الطريقة الثانية هي عن طريق إضافة صغيرة تدعى Devbits ويمكنك تحميلها من هنا:

WordPress › Stealth Login � WordPress Plugins




القسم الثالث والأخير:


حذف وسم generator من الهيدر:

1- افتح ملف functions.php الموجود في المجلد wp-includes
2- اضف الكود التالي مباشرةً بعد <?php :


رمز PHP:

remove_action(‘wp_head’, ‘wp_generator’);





---------------------------------

Done.

2015/04/09

How to do network profiling with dig




dig (domain information groper) is a flexible tool for interrogating DNS name servers. It performs DNS lookups and displays the answers that are returned from the name server(s) that were queried. Most DNS administrators use dig to troubleshoot DNS problems because of its flexibility, ease of use and clarity of output. Other lookup tools tend to have less functionality than dig.


Although dig is normally used with command-line arguments, it also has a batch mode of operation for reading lookup requests from a file. A brief summary of its command-line arguments and options is printed when the -h option is given. Unlike earlier versions, the BIND 9 implementation of dig allows multiple lookups to be issued from the command line.


Unless it is told to query a specific name server, dig will try each of the servers listed in /etc/resolv.conf.


When no command line arguments or options are given, dig will perform an NS query for “.” (the root).


It is possible to set per-user defaults for dig via ${HOME}/.digrc. This file is read and any options in it are applied before the command line arguments.


The IN and CH class names overlap with the IN and CH top level domains names. Either use the -t and -c options to specify the type and class, use the -q the specify the domain name, or use “IN.” and “CH.” when looking up these top level domains.




Example use



Basic



$ dig google.com

; <<>> DiG 9.7.0-P1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52035
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 89 IN A 64.233.181.104

;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jul 5 13:00:32 2010
;; MSG SIZE rcvd: 44


Mail



$ dig -t mx google.com

; <<>> DiG 9.7.0-P1 <<>> -t mx google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63606
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN MX

;; ANSWER SECTION:
google.com. 900 IN MX 200 google.com.s9a2.psmtp.com.
google.com. 900 IN MX 100 google.com.s9a1.psmtp.com.
google.com. 900 IN MX 300 google.com.s9b1.psmtp.com.
google.com. 900 IN MX 400 google.com.s9b2.psmtp.com.

;; Query time: 18 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jul 5 13:00:40 2010
;; MSG SIZE rcvd: 162




How to analyze Apache log for security with Scalp



Scalp! is a log analyzer for the Apache web server that looks for security problems. It reads the Apache log and perform log analysis for possible attacks against rulesets provided by PHP-IDS project. It is available for download from it’s Google code page.

Scalp! is currently written in Python though the writer claims he’s now working on C++ version of it. Current Python can only analyze a maximum of 10000 lines of log, and seems to be a bit slow. The C++ version is aimed to overcome the problems.

When being run without any parameters, Scalp will look for access_log and default_filter.xml files in the current directory, and produce the report to the standard output. access_log is the Apache log file, and default_filter.xml is the filter rules available from the PHPIDS project. Running the program as the following will use the Apache log file at /var/log/apache2/access.log and the PHPIDS ruleset from ~/default_filter.xml;
$ python scalp.py --log /var/log/apache2/access.log --filters ~/default_filter.xml

To overcome the 10000 lines limitation of the program, a Linux program called split can be run as in the example below as a log splitter, and Scalp! is then run against all the splitted log;
$ split -l 10000  /var/log/apache2/access.log