ورود

View Full Version : ثبت لاگ و مسدود کردن دسترسی غیر مجاز



sara.ghavam
شنبه 10 مهر 1395, 13:55 عصر
سلام دوستان گلم
من برام امنیت خیلی خیلی مهمه من میخوام که بتونم همه چیز رو لاگ کنم مثلا ورود و خروج ها گزارشات خطا و مثلا درخواست های دسترسی به سایت.

البته الان ورود و خروج ها رو ثبت می کنم به همراه آی پی و ساعت و تاریخ ورود و خروج اما اگر یک نفر بدون logout صفحه رو ببنده دیگه چیزی از خروجش ثبت نمیشه

و اینکه فرض کنید کسی بخواد حملات داس یا سعی کنه دسترسی غیر مجاز داشته باشه اولا این رو ثبت کنم و اینکه بتونم مثلا این درخواست های زیاد رو مسدود کنم چطوری میشه این کار رو با codeigniter انجام بدم
لطفا کمکم کنید دوستان گلم

plague
شنبه 10 مهر 1395, 16:00 عصر
مورد 1 رو قبلا یبار پرسیده بودین پاسخ داده شده (تعداد کاربران آنلاین ) هرچند کار بیخودیه و شما نیازی به لاگ خروج کاربرا ندارید چون چیز به درد بخوری بهتون نمیگه

مورد 2 حملات دیداس / داس باید از سرور جلوشون گرفته بشه در سطح اپلیکیشن کار خاصی نمیتونید بکنید

farsitools
شنبه 10 مهر 1395, 18:43 عصر
من تو codeigniter چندان حرفه ای نیستم اما اگر هدفتون مقابله با هک ونفوذ است ابتدا باید از سرور اشتراکی به وی پی اس یا اختصاصی برید چون این روزا این سرورها زیاد دفیس میشن و سپس تا حد ممکن فانکشن ها و امکانات غیر ضروری را غیر فعال کنید تا سطح امنیت سرور تامین بشه.
برای سرور اشتراکی خارج از نفوذ از راه سرور و دفیس و مشابه راهکار های امنیتی زیادی است که با سرچ .htass پیدا می کنید.

در کد نویسی تمام ورودی ها را فیلتر و سنجش کنید.
قابل ذکر است حملات بزرگ به سرور مثل دی داس و دفیس و مشابه فقط با فایر وال سخت افزاری . نرم افزاری و آپدیت سرور قابل کنترل و پیشگیری هستند.

numberone1
یک شنبه 11 مهر 1395, 00:56 صبح
سلام
من این کلاس لاگ و برای خودم نوشتم شاید به درد شما هم بخوره

یک فولدر به اسم mylogs داخل فولدر application بساز



class Logfile {
private $actions;
private $dbtable;
private $db;
private $ci;
private $file;
private $filename;
private $logdir;
private $fh;



public function __construct($config_new = false){

//instantiate CI
$this->ci = &get_instance();

//default options

$this->actions = array(
'login','upload','download','modif_perms','mkdir', 'mkfile','rmdir','rmfile',
'copyfile','movefile','adduser','edituser','rmuser ','addrole','editrole','rmrole',
'editsettings','addcompany','editcompany','rmcompa ny','adddepartament','editdepartament',
'rmdepartament','activatecompany','deactivatecompa ny','view'
);

$this->dbtable = 'logs';
$this->db = false;
$this->file = true;
$this->filename = date('Y-m-d').'.log';
$this->logdir = APPPATH.'mylogs/';

//setting options
if ($config_new) foreach ($config_new as $key=>$value) {
if ($value != '')
$this->{$key} = $value;
}

if ($this->file) {
if (!is_dir($this->logdir)) {
@mkdir($this->logdir.'/',0644);
}
$this->fh = fopen($this->logdir.$this->filename,'a');
}

}



public function message($action, $params, $message = false) {


$agent = 'browser-'.$this->ci->agent->browser().
',browser version-'.$this->ci->agent->version().
',robot-'.$this->ci->agent->robot().
',mobile-'.$this->ci->agent->mobile().
',platform-'.$this->ci->agent->platform().
',referrer-'.$this->ci->agent->referrer().
',ip-'.$this->ci->input->ip_address();

$mesaj = 'username:'.$this->ci->session->userdata('username')
.'->action:'.$action
.'->message:'.$message
.'->date:'.date('Y-m-d H:i:s')
.'->detail:'.$agent
;

if ($this->file) {
fwrite($this->fh, $mesaj. "\r\n");
}

return false;
}

}

sara.ghavam
یک شنبه 11 مهر 1395, 06:26 صبح
من تو codeigniter چندان حرفه ای نیستم اما اگر هدفتون مقابله با هک ونفوذ است ابتدا باید از سرور اشتراکی به وی پی اس یا اختصاصی برید چون این روزا این سرورها زیاد دفیس میشن و سپس تا حد ممکن فانکشن ها و امکانات غیر ضروری را غیر فعال کنید تا سطح امنیت سرور تامین بشه.
برای سرور اشتراکی خارج از نفوذ از راه سرور و دفیس و مشابه راهکار های امنیتی زیادی است که با سرچ .htass پیدا می کنید.

در کد نویسی تمام ورودی ها را فیلتر و سنجش کنید.
قابل ذکر است حملات بزرگ به سرور مثل دی داس و دفیس و مشابه فقط با فایر وال سخت افزاری . نرم افزاری و آپدیت سرور قابل کنترل و پیشگیری هستند.

سلام دوست گرامی ممنون از پاسختون ما خودمون سرور داریم و از سرور خودمون با آی پی ولید که داریم استفاده می کنیم و امنیت سرور رو هم من نمی تونم تأمین کنم چون من مسئولش نیستم اما خب باید تذکرات لازم رو بدم

sara.ghavam
یک شنبه 11 مهر 1395, 06:27 صبح
سلام
من این کلاس لاگ و برای خودم نوشتم شاید به درد شما هم بخوره

یک فولدر به اسم mylogs داخل فولدر application بساز



class Logfile {
private $actions;
private $dbtable;
private $db;
private $ci;
private $file;
private $filename;
private $logdir;
private $fh;



public function __construct($config_new = false){

//instantiate CI
$this->ci = &get_instance();

//default options

$this->actions = array(
'login','upload','download','modif_perms','mkdir', 'mkfile','rmdir','rmfile',
'copyfile','movefile','adduser','edituser','rmuser ','addrole','editrole','rmrole',
'editsettings','addcompany','editcompany','rmcompa ny','adddepartament','editdepartament',
'rmdepartament','activatecompany','deactivatecompa ny','view'
);

$this->dbtable = 'logs';
$this->db = false;
$this->file = true;
$this->filename = date('Y-m-d').'.log';
$this->logdir = APPPATH.'mylogs/';

//setting options
if ($config_new) foreach ($config_new as $key=>$value) {
if ($value != '')
$this->{$key} = $value;
}

if ($this->file) {
if (!is_dir($this->logdir)) {
@mkdir($this->logdir.'/',0644);
}
$this->fh = fopen($this->logdir.$this->filename,'a');
}

}



public function message($action, $params, $message = false) {


$agent = 'browser-'.$this->ci->agent->browser().
',browser version-'.$this->ci->agent->version().
',robot-'.$this->ci->agent->robot().
',mobile-'.$this->ci->agent->mobile().
',platform-'.$this->ci->agent->platform().
',referrer-'.$this->ci->agent->referrer().
',ip-'.$this->ci->input->ip_address();

$mesaj = 'username:'.$this->ci->session->userdata('username')
.'->action:'.$action
.'->message:'.$message
.'->date:'.date('Y-m-d H:i:s')
.'->detail:'.$agent
;

if ($this->file) {
fwrite($this->fh, $mesaj. "\r\n");
}

return false;
}

}


سلام دوست عزیز میشه یکم بیشتر در موردش توضیح بدین و یک مثال از استفاده اش بهم بگید؟

numberone1
سه شنبه 13 مهر 1395, 13:59 عصر
سلام دوست عزیز میشه یکم بیشتر در موردش توضیح بدین و یک مثال از استفاده اش بهم بگید؟

سلام دوست عزیز

این کد توی یه فایل به اسم logfile.php داخل فوبدر libraries ذخیره کن
نحوه استفاده هم مثل بقیه کتابخونه های کدایگنایتر هست.
اول باید فراخوانی کنی


$this->load->library('logfile');

اگر خواستی توی همه کنترلر ها استفاده کنی میتونی توی autoloader بزاریش


$this->logfile->message('بخش اخبار', '', 'خبر شماره 1 توسط کاربر شماره 1 باز شد');

آخر سر لاگ ها توی فولدر mylogs داخل فولدر application ذخیره میشه (فولدر mylogs و باید خودت بسازی)
برای اینکه لاگ هارو کسی نتونه ببینه هم میتونی دسترسیشونو محدود کنی . الان 644 هست