السلام عليكم ورحمة الله وبركاته
أنا طبعا من المتأذين من السبام وإغراق السيرفر بالرسائل من هذا النوع.
بحثت عن حل للمشكلة ووجدت شرحاً من تاريخ 05-09-2005, 10:28 PM من موقع الويب العربي, كالتالي:
================================================== ==================
Stop PHP nobody Spammers
================================================== ==================
لا تستطيع بي اتش بي و لا الأباتشي منذ إصداراتها الأولى مراقبة ومتابعة الاشخاص اللذين يرسلون البريد الالكتروني عبر PHP mail function و ذلك عبر مستخدم nobody user والاشخاص الحقودين والماكرين يستغلون هذه النقطة لإرسال رسائل السبام بواسطة سكريتات بي اتش بي أوغيرها دون ان تعرف من يقوم بذلك من هؤلاء الاشخاص
إن مراقبة exim_mainlog لا يساعدك كثيرا في هذا الأمر لأنك سترى أن هناك من يرسل رسائل لكن لا تدري من هو المستخدم الذي يرسل هذه الرسائل و أين تقع السيكريبت التي ترسل هذه الرسائل
أذا فحصت ملف PHP.ini ستجد أن برنامج البريد موضوع بشكل افتراضي على المسار
/usr/sbin/sendmail
ستجد ان اغلب سكريبتات الـphp تستخدم هذا المسار لإرسال الرسائل عبر التابع mail(); لذلك فإن اغلب الرسائل سترسل عبر
/usr/sbin/sendmail =)
المتطلبات
-----
سنفترض أنك تستخدم الإصدارات التالية:
Apache 1.3x, PHP 4.3x and Exim
الوقت اللازم:
------
عشر دقائق تقريبا
طريقة التنفيذ:-------
1- الدخول إلى السيرفر عبر SSh
2- قم بايقاف Exim لمنع اي تأثيرات جانبية:
/etc/init.d/exim stop
3-قم بعمل نسخة احتياطية للملف الافتراضي /usr/sbin/sendmail عبر الأمر:
mv /usr/sbin/sendmail /usr/sbin/sendmail.hidden
4- قم بإنشاء سكريبت مراقبة للإيميلات الجديدة المرسلة:
pico /usr/sbin/sendmail
انسخ ما يلي:
#!/usr/local/bin/perl
# use strict;
use Env;
my $date = `date`;
chomp $date;
open (INFO, ">>/var/log/spam_log") || die "Failed to open file :
!";
my $uid = $>;
my @info = getpwuid($uid);
if($REMOTE_ADDR) {
print INFO "$date - $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME n";
}
else {
print INFO "$date - $PWD - @infon";
}
my $mailprog = '/usr/sbin/sendmail.hidden';
foreach (@ARGV) {
$arg="$arg" . " $_";
}
open (MAIL,"|$mailprog $arg") || die "cannot open $mailprog: $!n";
while (<STDIN> ) {
print MAIL;
}
close (INFO);
close (MAIL);
والصقه
5- قم بتغيير السماحيات عبر الأمر:
chmod +x /usr/sbin/sendmail
6- انشئ ملف لوغ جديد :
touch /var/log/spam_log
chmod 0777 /var/log/spam_log
7- أعد تشغيل exim
/etc/init.d/exim start
8- راقب ملف spam_log وجرب قبل ذلك ان ترسل أي رسالة مثلا من أي صفحة اتصل بنا :
tail - f /var/log/spam_log
لمنع جعل ملف اللوغ كبير يجب ضبط إعدادات Log Rotation Details
وذلك عبر مايلي:
1- افتح الملف logrotate.conf عبر الامر:
pico /etc/logrotate.conf
2- ابحث عن:
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
أضف بعدها:
# SPAM LOG rotation
/var/log/spam_log {
monthly
create 0777 root root
rotate 1
}
المصدر: الويب العربي
الرابط: http://www.arabwebtalk.com/showthread.php?t=12321
السؤال الآن والذي يهمني جداً, هل الشرح يعمل أي ممكن تطبيقه ويعمل بكفائة بعد هذا الوقت الذي تقدمة فيه الوسائل والسبل كثيرا؟
شكرا,
Dr.BS
أنا طبعا من المتأذين من السبام وإغراق السيرفر بالرسائل من هذا النوع.
بحثت عن حل للمشكلة ووجدت شرحاً من تاريخ 05-09-2005, 10:28 PM من موقع الويب العربي, كالتالي:
================================================== ==================
Stop PHP nobody Spammers
================================================== ==================
لا تستطيع بي اتش بي و لا الأباتشي منذ إصداراتها الأولى مراقبة ومتابعة الاشخاص اللذين يرسلون البريد الالكتروني عبر PHP mail function و ذلك عبر مستخدم nobody user والاشخاص الحقودين والماكرين يستغلون هذه النقطة لإرسال رسائل السبام بواسطة سكريتات بي اتش بي أوغيرها دون ان تعرف من يقوم بذلك من هؤلاء الاشخاص
إن مراقبة exim_mainlog لا يساعدك كثيرا في هذا الأمر لأنك سترى أن هناك من يرسل رسائل لكن لا تدري من هو المستخدم الذي يرسل هذه الرسائل و أين تقع السيكريبت التي ترسل هذه الرسائل
أذا فحصت ملف PHP.ini ستجد أن برنامج البريد موضوع بشكل افتراضي على المسار
/usr/sbin/sendmail
ستجد ان اغلب سكريبتات الـphp تستخدم هذا المسار لإرسال الرسائل عبر التابع mail(); لذلك فإن اغلب الرسائل سترسل عبر
/usr/sbin/sendmail =)
المتطلبات
-----
سنفترض أنك تستخدم الإصدارات التالية:
Apache 1.3x, PHP 4.3x and Exim
الوقت اللازم:
------
عشر دقائق تقريبا
طريقة التنفيذ:-------
1- الدخول إلى السيرفر عبر SSh
2- قم بايقاف Exim لمنع اي تأثيرات جانبية:
/etc/init.d/exim stop
3-قم بعمل نسخة احتياطية للملف الافتراضي /usr/sbin/sendmail عبر الأمر:
mv /usr/sbin/sendmail /usr/sbin/sendmail.hidden
4- قم بإنشاء سكريبت مراقبة للإيميلات الجديدة المرسلة:
pico /usr/sbin/sendmail
انسخ ما يلي:
#!/usr/local/bin/perl
# use strict;
use Env;
my $date = `date`;
chomp $date;
open (INFO, ">>/var/log/spam_log") || die "Failed to open file :

my $uid = $>;
my @info = getpwuid($uid);
if($REMOTE_ADDR) {
print INFO "$date - $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME n";
}
else {
print INFO "$date - $PWD - @infon";
}
my $mailprog = '/usr/sbin/sendmail.hidden';
foreach (@ARGV) {
$arg="$arg" . " $_";
}
open (MAIL,"|$mailprog $arg") || die "cannot open $mailprog: $!n";
while (<STDIN> ) {
print MAIL;
}
close (INFO);
close (MAIL);
والصقه
5- قم بتغيير السماحيات عبر الأمر:
chmod +x /usr/sbin/sendmail
6- انشئ ملف لوغ جديد :
touch /var/log/spam_log
chmod 0777 /var/log/spam_log
7- أعد تشغيل exim
/etc/init.d/exim start
8- راقب ملف spam_log وجرب قبل ذلك ان ترسل أي رسالة مثلا من أي صفحة اتصل بنا :
tail - f /var/log/spam_log
لمنع جعل ملف اللوغ كبير يجب ضبط إعدادات Log Rotation Details
وذلك عبر مايلي:
1- افتح الملف logrotate.conf عبر الامر:
pico /etc/logrotate.conf
2- ابحث عن:
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
أضف بعدها:
# SPAM LOG rotation
/var/log/spam_log {
monthly
create 0777 root root
rotate 1
}
المصدر: الويب العربي
الرابط: http://www.arabwebtalk.com/showthread.php?t=12321
السؤال الآن والذي يهمني جداً, هل الشرح يعمل أي ممكن تطبيقه ويعمل بكفائة بعد هذا الوقت الذي تقدمة فيه الوسائل والسبل كثيرا؟
شكرا,
Dr.BS
تعليق