نقل و نبات شماره هجدهم (tips & tricks) Basic access authentication

خوب امروز مجبور شدم برای تامین امنیت بیشتر یه دایرکتوری تو سرورم یه Basic access authentication براش بسازم ! اما این چی چی هست اصلا؟

خوب طبق گفته ویکیپدیا :

In the context of an HTTP transaction, basic access authentication is a method for a web browser or other client program to provide a user name and password when making a request.[1]

 

خوب ساختن این تو آپاچی دو قسمت داره!

اول داشتن یه فایل حاوی نام کاربری و کلمه عبور به صورت زیره :‌

 

htpasswd -c  .htpasswd username

خوب با این دستور یه توی فایلی به نام .htpasswd نام کاربری به نام username ساختیم!

پسوردشم خودش میگیره و هش میکنه و میزنه تنگ همون فایل :D

خوب بعد این کار ما باید به اپاچی بگیم رو کدوم پوشه ها اینو اعمال کنه! که میشه مرحله دوم کار

این کار رو میشه هم با دست بردن تو کانفیگ فایل اپاچی کرد هم با ساختن فایل .htaccess

من ساختنه فایلو ترجیح میدم چون احتیاج به رسیتارت اپاچی نداره! پس تو پوشه مورد نظرمون فایلرو میسازمو توشو اینجوری پر میکنیم :D

“انگار دارم نحوه ی پر کردن مرغ شکم پورو میگم :P”

AuthName “Restricted Area”
AuthType Basic
AuthUserFile /home/zanjanhost/public_html/.htpasswd
AuthGroupFile /dev/null
require valid-user

و فکر میکنم گزینه ها گویا باشه! اگر برایتون گویا نیست برین گوگل کونید چون من تو نقل و نباتام روده درازی نمیکنم :D

هر جا این فایل htaccess رو بزارین به همه ی اون فولدر و فولدر های داخلش اعمال میشه! حالا امدیم خواستیم به یکی از این sub directory ها اعمال نشه چی؟!؟

میاییم داخل اون ساب دایرکتوری یا زیر پوشه ی مورد نظر باز یه فایل .htaccess میسازیم و این یه خطو توش مینویسیمو تموم :

Satisfy Any

نقل و نبات شماره هفدهم (tips & tricks) عبارات منظم در php

چندی پیش وقتی داشتم با سیستم cakephp کارمیکردم یه جایی مجبور شدم یه تبدیل رو در تمام اسامی کنترلرهام انجام بدم و بعد از تبدیل، در لینک هام استفاده کنم!

به این صورت که اگر اسم کنترلی HmTicket بود اونو تبدیل به Hm_Ticket کنم و یا اگر HmTicketSegment بود باید تبدیل میشد به Hm_Ticket_Segment ! و خوب شروع کردم مثل همیشه چرخ رو دوباره از تو اختراع کردنو …

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

این کارو خیلی راحت میشه با عبارات منظم تو یه خط اینجام داد! و کد زیرو بهم داد:

ltrim(preg_replace(‘/[A-Z]{1}/’, ‘_$0′, ‘BehRooz’), ‘_’)

و ما مثل همیشه در کف عبارات منظمو دادا موندیم ;)

نقل و نبات شماره شانزده (tips & tricks) جایگزینی یک متن در تمام فایهل با بش اسکریپت

یه روز یکی از مشتریهام زنگ زدو و گفت عنوان سایتشو عوض کنم! خوب این چیزه مرسومیه اما مشکل این بود که سایتشو با روش خیلی قدیمی ، یعنی با phpخالی و Dreamviwer در زمانی که ویندوزی بودم و حتی نگاه درستی به توسعه سایت نداشتم، نوشتم ! تو این حالت هم باید کل فایل ها رو درست میکردم که کار واقعا اعصاب خرد کنی بود! اما حالا من مثلا با ترجبه تر و پخته تر شدم! و شانسیم که آوردم دسترسی ssh به سایته بود ;)

بنابراین با کمی بش اسکریپت و عبارات منظم این کارو کردم :D

 

for f in *.php
    do  
 sed -i  's,<title>.*</title>,<title><?php include("title.php"); ?></title>,g' "$f"
  done

نقل و نبات شماره پانزده (tips & tricks) ماههای میلادی

یکی از مشکلاتی که دارم درک نکردن ماهای میلادیه! مثلا اینکه الان تو چه ماهیم! این ماه میلادی ماه چندم سال میلادیه! اصلا ترتیب توالی ماههای میلادی چه شکلیاس؟ و خیلی چیزای دیگه که بعضا تو کارها هم لازم میشه :)
اما مثل همیشه لینوکس حلال مشکلات یاور میشه ! کافیه تو خط فرمان بنویسم :
cal -y
و جدول زیبای زیر بهم نمایش داده میشه و حتی روزیم که توش قرار دارم با یه رنگ دیگه مشخص میکنه ;)

نقل و نبات شماره پانزده (tips & tricks) ساختار


تو یکی از سایتهایی که با wp زده بودم ، مشتریم از من خواست یک بنر خاص تو صفحه اول سایت باشه و تو ما بقی صفحات بنر دیگه ای باشه ! خلاصه این شد که ما با ساختار بسیار فوق العاده پوسته در وردپرسبلاخره کار کردیم.

خوب به اندازه کافی عکس پایینی گویا هست فکر کنم :) :

نقل و نبات شماره چهارده (tips & tricks) نصب Zend Optimyzer بر روی VPS

یکی از سایتهای زیر مجموعه من کد هاشو با ZendGuard اینکد کرده بود و برای اجرا شدن کدهاش باید روی سرور Zend Optimizer نصب میشد ! تهران میگفت روی vps نصب شده اما کدها اجرا نمیشدن !

برای تست نصب بودن از این کد استفاده کردم .

دیدم نصب نیستو تهران چرتو پرت میگفته ! بنا بر این دنبال راه حل نصبش گشتم ، اینو پیدا کردم :

Login as root using SSH and run this command and it will install the zend optimizer.

/scripts/installzendopt

Then restart the apache

service httpd restart

To check whether zend optimizer is running..use this command

php -v

It would show ioncube or zend optimizer version

 

اتفاقا راه حل درستیه ولی بازم کار نکرد ! وقتی بیشتر سرچ زدم دیدم zend optimizer‌ برای php  ۵٫۳ نیومده و برای ۵٫۲ به پایینه ! بنا بر این php رو دانگرید کردم و بدون مشکل نصب شد !

پ . ن : گرچه تا حالا اصلا نخواستم کدهامو اینکد کنم یا ببندم ولی جالبه در مورد ioncube و ZendGuard یه تحقیقی بزنم شاید یه روز  خواستم استفاده کنم.

نقل و نبات شماره سیزده (tips & tricks) برنامه Screen

یکی از زیباترین برنامه ها برای sysadmin ها و کسانی مثل ما که با vps سروکار دارن برنامه Screen هست .

خیلی شده که موقع کار با vps و انجام کارها هی دلهره دارم که با این اوضاع اینترنت نکنه وسط کارم ارتباطم قطع بشه و اون ور فضاحت و خرابکاری و کثیفکاری بشه.

چاره این مشکل استفاده از screen هست ! screen مثل همین ترمینالیه که توش کار میکنیم با این تفاوت که اگه وسط یک کار ارتباطمون با اون قطع شه ، کار مورد نظر ادامه پیدا میکنه و ما بعد از رفع مشکل اینترنتمون میتونیم دوباره به screen وصل شیم و بدونیم که سرانجام کارمون چی شد؟

البته امکانات این برنامه خیلی بیشتر و فوقالعاده تر از ایناس ! ولی فعلا به دستورات ساده اون برسیم:

بعد از زدن دستور screen انگار که اتفاقی نیوفتاده و ما هنوز تو ترمینالیم اما اشتباه میکنید ! کافیه کلید ctrl+A رو بگیرید و بعد ? رو بزنید تا help اسکرین ظاهر شه ، تعدادی از دستورات پر کاربرد اون:

Ctrl-A ?  =>  help
Ctrl-A c  =>  creat new windows
Ctrl-A n  => next windows
Ctrl-A p  => previous windows
Ctrl-A d => detach Screen
Ctrl-A k => exit
Ctrl-A H => creat running log

خوب فرض کنید بعد از کار با screen اونو detach کردین و یا از اون به هر دلیلی جدا شدین میتونید با دستورات زیر لیست screen های در حال اجرا رو ببینید و به اونها وصل شین:

screen -ls => screen list
screen -r screen name => reattach

دیده بودم که اقای مقدم بعضی وقتا موقع امتحان گرفتن به ترمینال بچه ها وصل میشد و نگاه میکرد که اینا چه میکنن! بعد ها فهمیدم اون screen و دنبال این بودم که با کدوم کلید اینکارو میکنه ؟ ( با x این کارو میکرد ) که به یه لینک از سایتشون رسیدم که کوتاه مختصر توضیح داده بودن :

http://www.pmoghadam.com/blog/categories/General/GNU%20screen.txt

داشتم بیشتر راجع به Screen میگشتم و رسیدم به یه لینک از سایت دوست عزیزم اقای فریدی که خیلی خوب اسکرینو شرح دادن :
http://www.mfaridi.com/fa/freebsd/25-freebsd/88-screen.html

نقل و نبات شماره دوازده (tips & tricks)حذف تمام لینک های موجود در یک فایل HTML فقط با یک خط دستور

چند وقت پیش فایلی HTML ای داشتم که میخواستم از داخلش تمام لینک ها رو حذف کنم اما نمیتونستم از replace معمولی استفاده کنم چون داخل href لینک های من ثابت نبود.

در نهایت با چند تا سرچ و پیدا کردم چند تا عبارات منظم به دستور جالب و قدرتمند زیر رسیدم که گفتم اینجا هم به استراک بزارمشون:

کد:


cat index.html | sed -e 's/<a href=".*">/" "/g' > index2.html

پ .ن : از بابک مقیمی بایت ‌regex ممنونم . حتما باید regex رو یاد بگیرم

نقل و نبات شماره یازده (tips & tricks) (بش اسکریپت تغییر mp3 به ogg )

اونروز برای کارای لینوکس اف ام لازم شد کلی فایل رو که تو کلی پوشه بودن تبدیل کنیم  و میخواستیم هر فایل همون جا که هست تیدیل بشه و mp3 اون پاک بشه .
!

اول با ffmpeg و کمک این پست امید متقی :http://oxygenws.com/blog/archives/67-unknown.html این کارو تست کردیم ولی متایفانه نتونتست یا نتونستیم ! اون کارو انجام بدیم ، در اخر با کمک اسکریپت زیر این کارو کردیم :

کد:

for D in $(find /media/320A22A10A2261D9_/music/LinuxFM  -type  d);do
cd $D
for FILE in *.mp3;do
mp32ogg –delete –rename=%t “$FILE”
done
done

نقل و نبات شماره ده (tips & tricks) (معرفی برنامه Acunetix )

Acunetix web application security

خوب بعد مدتها دارم یه نقل و نبات دیگه مینوسم،  اینروزا تو زندان بی نظمی های خودم اسیرم و  امیدوارم هر چه زودتر یه راه حل کاری پیدا کنم.

اما بپردازیم به نرم‌افزار Acunetix که یکی از دوستان و همکاران ازم خواسته بود معرفیش کنم و اسم این برنامه رو بهش بگم!

منم گفتم اسم و بعلاوه یه سری توضیحاتو تو وبلاگم بنویسم چون خیلی هارو دیدم برای دادن همین اطلاعات ساده کلی منت میزارن! ( از این آدما بدم میاد )

راستش داستان از اونجایی شروع شد که یکی از سایتهای من مدام هک میشد ! یه بار که یه حمله تزریق کوئری صورت گرفت و اطلاعات داخل جداول پاک شدن من دیدن تو فیلد نام یکی از جدولام اسم Acunetix درج شده با خودم گفتم لابد اسم هکرس ! بنابراین یه سرچ زدم تا بشناسمش دیدم هکر کیلو چنده؟ یه برنامه بسیار بدرد بخوره!

حالا سؤال اینجاس به چه دردی؟ به درد بازرسی امنیت کل سایت و کشف نقاط ضعف سایت که البته مثل هر چاقوی دیگه ای دو جور میشه ازش استفاده کرد ;)

مثلاً نقشه سایت دوستتو! در بیاری و سایت اونو در مقابل یه سری حملات مرسوم چک کنی ، توضیح ساده و گویاش و خودش گفته :

Audit your website security and web applications for SQL injection, Cross site scripting and other web vulnerabilities with Acunetix Web Security Scanner.

از بخش‌های این نرم‌افزار میتونم به موارد زیر اشره کنم:

Web Scanner : Performs automatic security auditing for web applications

Tools: Security tools that contribute to the auditing process.

Web Services: Tools for auditing web services.

Configuration :Configuration of the application or the scanning profiles.

این‌ام یک عکس کلی از محیط برنامه برای آشنایی بیشتر:

Acunetix

در کل ابزار خوبی برای گزارش گیری از امنیت ساییتونه و همچنین اسباب‌بازی خوبی ;) اما خوب ابزار ویندوزی و پولیه و من نمیدونم معادل آزاد و لینوکسی این هم وجود داره یا نه ! بهرحال این پست مثل همه نقل و نباتا تو جزئیات نمیره و و اونها رو به عهده خودتون میزاره .

بعد ها فهمیدم یک شرکتی با استفاد ه از همین ابزار مشاوره امنیتی میدادو پول هنگفتی میگرفت و از اسم این نرم‌افزار بیشتر از خیلی چیزای دیگش محافظت میکرد تا راز کارش فاش نشه!