بستن لاگین ssh به یوزر root در دبیان:

nano /etc/ssh/sshd_config
PermitRootLogin no
/etc/init.d/ssh restart

ساخت یوزرهای جدید همراه با مشخص کردن محل هوم آن:

useradd -m -d /home/www/accessnet      -s /bin/bash -c "accessnet.ir"      -U accessnet

چیزی که بعد از دش سی نوشته میشد کامنت توضیحات یوزر است.

اضافه کردن یک یوزر به یک گروه بدون تغییر گروه اصلی آن:

usermod -a -G www-data username

دامنه

پیش از نصب سیستم عامل

پیشنهاد میکنم دبیان را روی فلش bootable کنید چون سرعت آن بیشتر است.

برای bootable کردن دبیان روی فلش در لینوکس از این کامند استفاده کنید:

dd if=/home/~/debian.iso of=/dev/sdb

پیشفرض من در این مقاله اینه که شما آخرین نسخه‌ی Debian رو به صورت کاملا clean نصب کردید. در حال حاضر آخرین نسخه‌ی دبیان، دبیان ۷ با اسم کد wheezy هست. اگر به صفحه‌ی دانلود دبیان http://www.debian.org/distrib رفته باشید می‌بینید که نسخه‌های مختلفی از این سیستم‌عامل وجود داره. نسخه‌ی netinst داره که یه نسخه‌ی خیلی سبک و کم‌حجم از دبیانه (برای مثال debian 7 netinst 64-bit ۲۲۲ مگ حجم داره) همچنین دبیان در چند CD هم عرضه شده که شامل کل مخازن (repository) رسمی دبیان هست و شما با گذاشتن CD و ویرایش فایل source.list می‌تونید یک پکیج رو از اون رو نصب کنید.

پیشنهاد من به شما اینه که CD اول Debian 7 Wheezy 64-bit روی سرورتون نصب کنید و به بقیه CDهاش هم نیازی نخواهید داشت. در مراحل نصب از شما سوالات مختلفی پرسیده میشه مثه اینکه layout کیبوردتون میخواید رو چه استانداردی باشه یا سیستم عامل به چه زبانی نصب شه یا در کدوم کشور هستید و منطقه زمانیتون چیه و به کدوم میرور سرورهای دبیان میخواید وصل شید و … پاسخ شما به این سوالات به نظر واضح میاد ولی من در آینده یه توضیحاتی برای افرادی که بار اولشون هست در مورد این قسمت‌ها هم میدم.

اما ۳ تا قسمت مهم وجود داره حین نصب که نیازمند یه دانش عمیق‌تره. قسمت اول تعریف partitionها روی هارد هست. قسمت دوم اعمال تنظیمات شبکه روی سرور هست. قسمت سوم نصب سرویس‌ها از طریق tasksel هست. این سه تا بخش رو بعدن مفصلا توضیح میدم.

خب تا اینجا موفق شدیم یه دبیان clean روی سرورمون نصب کنیم و به اینترنت وصلش کنیم. برای اینکه مطمئن شید به اینترنت وصلید از دستور ping 8.8.8.8 استفاده کنید. اگر به اینترنت وصلید ولی به مخازن نمیتونید وصل شید فایل /apt/sources.list رو ویرایش کنید و خطوط زیر رو بهش اضافه کنید: خط یک خط دو

اولین اقدامی که بعد از نصب باید انجام بدید apt-get update و apt-get upgrade هست. بعد از اون انجام مرحله به مرحله‌ی مستند Securing Debian after installation که در اینجا http://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html نوشته شده. من به زودی ترجمه‌ی این مقاله رو از این وبلاگ یا از خود ویکی دبیان منتشر میکنم.

ما تا اینجا تونستیم اولین سرواژه‌ی LAMP که لینوکس هست رو راه بندازیم. حالا میریم سراغ نصب Apache و Mysql و PHP. بهترین مستندی که برای اینکار در دبیان وجود داره اینه: https://www.digitalocean.com/community/articles/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

برای اوبونتو ۱۴.۰۴: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04

که این رو هم من به زودی ترجمه خواهم کرد. حالا یکی یکی باید امنیت Apache و Mysql و PHP رو تامین کنیم. برای تامین امنیت mysql از دستور زیر استفاده کنید: mysql_secure_installation برای تامین امنیت Apache و PHP از مقاله زیر استفاده کنید: http://www.tutorialarena.com/blog/hide-apache-or-php-signature-linux-server.php

پیشنهاد من به شما اینه که اگر خیلی نمیخواین به صورت دستی و مستقیم با دیتابیس‌هاتون ور برید و فقط لازم دارید یه سری دیتابیس ایجاد کنید و یه سری سی‌ام‌اس بهش وصل کنید یا یه سری دیتابیس رو ایمپورت و اکسپورت کنید. یعنی مستقیم نمیخواید ویرایششون کنید phpmyadmin نصب نکنید. کلن از نصب هر موجود اضافی خارج از اینهایی که من گفتم حتی‌الامکان پرهیز کنید. هر چیز اضافه‌ای که روی سرورتون نصب میکنید همراه امکاناتی که بهتون میده کلی سوراخ امنیتی میاره که بستنش شاید ازتون کلی وقت بگیره. این حتی در مورد نصب ساده‌ترین و پر استفاده ترین وب سرور عالم که آپاچی باشه و سیستم عامل عالم که دبیان باشه و دیتابیس عالم که mysql باشه و زبان برنامه نویسی وب عالم که php باشه هم صادق بود. پس مطمئن باشید اضافه کردن هر چیزی بیشتر از اینها شما رو وارد یه ریسک خیلی بزرگ میکنه. برای همین به جای استفاده از پنل سعی کنید ssh کنید و به جای استفاده از phpmyadmin سعی کنید با دستورهای mysql در محیط بش کار کنید.

شما الان یه سرور خیلی خوب و آماده و امن دارید که با پراستفاده ترین و پایدارترین برنامه‌های عالم کار میکنه. حالا انتخاب اینکه با این سرورتون میخواین چیکار کنین با خودتونه. شاید از اینجا به بعد این مستند به هیچ دردتون نخوره.

الان فرض میکنیم که یه دامنه دارید و میخواین وصل کنید به سرورتون. برای اینکار شما به یک domain name server نیاز دارید. ممکنه این DNS توسط یه نفر دیگه کانفیگ شده باشه که در اینصورت شما باید مشخصات NS و IP اون شخص رو روی دامنتون set کنید و اون DNS خودبخود دامنه رو سمت سرور شما میفرسته. اما اگر بخواین خودتون domain name server رو از طریق بایند در سیستم‌عامل دبیان کانفیگ کنید من یه مستند خوب براتون اینجا نوشتم: https://smm.sadrn.com/doku.php/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7:%DA%AF%D8%A7%D9%85_%D8%A8%D9%87_%DA%AF%D8%A7%D9%85:%D8%AA%D9%86%D8%B8%DB%8C%D9%85_bind این مستند باید کامل‌تر شه و من سعی میکنم یه سری توضیحات تکمیلی در این مورد بهش اضافه کنم. بعد از انجام مراحل فوق و تنظیم NS ها در دامنه‌ی سایتتون میتونید از این به بعد به جای وارد کردن IP در مرورگرتون از دامنه استفاده کنید.

پیشفرض وب‌سرور شما اینه که سایت رو از روی دایرکتوری /var/www باز کنه. اما بهتره شما با تعریف ویرچوال هاست این پیشفرض رو تغییر بدید. اینکار چند تا مزیت داره. مزیت اولش اینه که شما اگر بعدا سایت‌های دیگه‌ای هم اضافه کنید میتونید با تعریف ویرچوال هاست به ازای هر کاربر و وصل کردنش به دایرکتوری home اون کاربر برای هر کاربر بدون دادن دسترسی ریشه (root) و دسترسی به بقیه تنظیمات سرور و کل شاخه /var یا شاخه /etc که شاخه های مهمی هستند، دسترسی مجزا به فایل‌های مربوط به سایت خودشان بدهید. همچنین اگر میخواهید بعدا موقع استفاده از یک script و … با مشکل مواجه نشوید کاربر ها رو در گروه کاربری apache اضافه کنید. مزیت دوم اینکار اینه که شما میتوانید تنظیمات مجزایی برای IP و دامنه سایتتان قائل شوید و خیلی بحثهای مربوط به SEO مثل IP Canonicalization بهتر انجام می‌شود.

من مراحل نصب جوملا رو توضیح نمیدم ولی باز هم پیشفرضم اینه که شما از آخرین نسخه‌ی stable جوملا یعنی جوملای ۲.۵ استفاده می‌کنید. بعد از نصب جوملا باید کارهای نوشته شده در این مقاله رو انجام بدید: http://www.joshpate.com/2013/01/how-to-fix-hacked-by-hmei7-on-joomla-web-site/ که بیشتر مطالب این صفحه مربوط به بستن MIME Type ها و … در image manager جوملا است.

مطمئنن امنیت سرور شما به اینجا ختم نمی‌شود. ممکن است شما در آینده بخواهید روی جوملایتان extension نصب کنید تا قابلیت های بیشتری در آن داشته باشید. یا ممکن است بخواهید در کنار جوملا از اسکریپت های دیگری نیز استفاده کنید که اضافه کردن هر کدام آن‌ها مجددا شما را در یک وضعیت نا امن قرار می‌دهد و این به معنی استفاده نکردن از آن‌ها نیست. این به معنی لزوم دقت، clean کار کردن و تغییر پیشفرض‌های نامناسب بعد از اضافه کردن هر فیچر جدید است.

راهنمای تنظیم آپاچی برای ایجاد Direcotry Password در آپاچی: http://www.addedbytes.com/lab/password-protect-a-directory-with-htaccess/

خوانده شدن فایل‌‌های htaccess توسط آپاچی:

      <Directory /var/www/>
              Options Indexes FollowSymLinks MultiViews
              AllowOverride All
              Order allow,deny
              allow from all
      </Directory>

برای بک‌آپ گرفتن از دیتابیس از این کامند استفاده کنید:

mysqldump -u USER -p DATABASE > filename.sql

phpmyadmin بهتره استفاده نکنید در حالت کلی. ولی حتی اگر استفاده میکنید نمیتونه دیتابیس هایی که حجمش بالای یه عددی باشه رو بک‌آپ بگیره.

برای ساختن دیتابیس جدید و ست کردن پیریویلیج‌های آن به یک کاربر از دستورات زیر استفاده کنید:

sudo apt-get install mysql-server

لاگین کردن به مای‌اس‌کیو‌ال:

$ mysql --user=root -p
Enter password: 

ساختن دیتابیس جدید:

mysql> CREATE DATABASE namespace_databasename;
Query OK, 1 row affected (0.00 sec)

ساخت یوزر و تعریف پسورد آن و دادن دسترسی استفاده به کل دیتابیس‌ها به صورت همزمان:

mysql> grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
Query OK, 0 rows affected (0.00 sec)

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

mysql> grant all privileges on amarokdb.* to amarokuser@localhost ;
Query OK, 0 rows affected (0.00 sec)

دادن تمام دسترسی‌ها به یک namespace از دیتابیسها:

mysql> grant all privileges on `namespace\_%`.* to 'amarokuser'@'localhost' ;
Query OK, 0 rows affected (0.00 sec)

پاک کردن دیتابیس:

drop database <db_name>;
FLUSH PRIVILEGES;

ساخت پسوردهای امن:

apg -a 1

ریستور کردن دیتابیس:

mysql -u root -p[root_password] [database_name] < dumpfilename.sql

گرفتن دامپ بدون ارور لاک:

mysqldump -u root -pmysecretpassword --opt exampledb --lock-tables=false > exampledb.sql

ساخت یوزرها داخل دیتابیس:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

خالی کردن کش دبیان

این دستور رو وارد کنید:

crontab -e <enter>

خب حالا یک ادیتور vi باز میشه. برای اینکه بتونین تو ادیتور vi چیزی بنویسین باید یکبار روی i کلیک کنید. و وقتی کارتون تموم شد اسکیپ بزنین و بعد بنویسین «:wq» تا فایل رو سیو کنین و بیاین بیرون.

خب با کلید پایین کیبورد برید ته فایل این خط رو اضافه کنین:

0 * * * * /root/clearcache.sh

بعد یک فایل با این نام و آدرس ایجاد کنید:

nano /root/clearcache.sh

داخل این فایل این متن رو بنویسین:

!/bin/sh

sync; echo 3 > /proc/sys/vm/drop_caches

فایل رو سیو کنین بیاین بیرون. کارش تموم شد. از الان به بعد کرون جاب کش مموری شما رو ساعتی یکبار خالی میکنه و کلی در مقدار رم مصرفیتون صرفه جویی میکنین.