server

server

نحوه نصب MySQL در اوبونتو 20.04

۶۵ بازديد

MySQL يك سيستم مديريت پايگاه داده منبع باز است كه معمولاً به عنوان بخشي از پشته محبوب LAMP (Linux ، Apache ، MySQL ، PHP / Python / Perl) نصب مي شود. اين سيستم يك مدل رابطه اي را پياده سازي مي كند و براي مديريت داده هاي خود از زبان پرس و جوي ساختاريافته (معروف به SQL) استفاده مي كند.
در اين آموزش نحوه نصب MySQL نسخه 8 بر روي سرور مجازي Ubuntu 20.04 بررسي مي شود. با تكميل آن ، شما يك پايگاه داده رابطه اي در حال كار خواهيد داشت كه مي توانيد براي ساختن وب سايت يا برنامه بعدي خود استفاده كنيد.

پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور مجازي Ubuntu 20.04 با يك كاربر ادمين غير ريشه و فايروال تنظيم شده با UFW . براي راه اندازي ، راهنماي ستاپ اوليه سرور مجازي براي اوبونتو 20.04 را دنبال كنيد.

مرحله 1 – نصب MySQL
در Ubuntu 20.04 مي توانيد MySQL را با استفاده از مخزن بسته APT نصب كنيد. در زمان نوشتن اين مقاله، نسخه MySQL موجود در مخزن پيش فرض اوبونتو نسخه 8.0.19 است.
براي نصب آن ، اگر اخيراً اين كار را نكرده ايد ، فهرست بسته را روي سرور مجازي خود به روز كنيد:
$ sudo apt update

سپس بسته mysql-server را نصب كنيد:
$ sudo apt install mysql-server

اين كار MySQL را نصب مي كند ، اما از شما نميخواهد كه رمز عبوري تنظيم كنيد يا تغييرات ديگري در پيكربندي ايجاد كنيد. از آنجا كه اين امر باعث مي شود نصب MySQL ناامن باشد ، در ادامه به اين موضوع خواهيم پرداخت.

مرحله 2 – پيكربندي MySQL
براي نصب هاي جديد MySQL ، بهتر است اسكريپت امنيتي شامل DBMS را اجرا كنيد. اين اسكريپت برخي از گزينه هاي پيش فرض با ايمني كمتر را براي مواردي مانند ورود به سيستم ريشه از راه دور و كاربران نمونه تغيير مي دهد.
اسكريپت امنيتي را با sudo اجرا كنيد:
$ sudo mysql_secure_installation

اين امر مجموعه اي از اعلان ها را به شما نمايش ميدهد كه بتوانيد برخي از گزينه هاي امنيتي نصب MySQL خود را تغيير دهيد. اولين سؤال از شما ميپرسد كه آيا مي خواهيد افزونه Validate Password را تنظيم كنيد ، كه مي تواند براي تست قدرت رمز ورود MySQL استفاده شود.
اگر تصميم به تنظيم افزونه اعتبار سنجي گذرواژه بگيريد ، اسكريپت از شما مي خواهد كه يك سطح اعتبار رمز عبور را انتخاب كنيد. قوي ترين سطح – كه شما با وارد كردن 2 انتخاب مي كنيد – به حداقل 8 كاراكتر نياز دارد و شامل تركيبي از حروف بزرگ ، حروف كوچك ، عدد و علائم خاص است:
Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2

صرف نظر از اين كه آيا مي خواهيد افزونه رمز عبور معتبر را انتخاب كنيد ، اعلان بعدي تعيين رمز عبور براي كاربر ريشه MySQL خواهد بود. Enter را بزنيد و رمز عبور ايمن را تاييد كنيد:
Output
Please set the password for root here.

New password:

Re-enter new password:

اگر از افزونه اعتبار سنجي گذرواژه استفاده كرده ايد ، در مورد قدرت رمزعبور جديد خود بازخورد دريافت خواهيد كرد. سپس اسكريپت از شما سؤال مي كند كه آيا مي خواهيد رمز عبوري را كه وارد كرده ايد ادامه دهيد يا مي خواهيد يك رمز جديد را وارد كنيد. با فرض اينكه از قدرت رمز عبوري كه تازه وارد كرده ايد راضي هستيد ، Y را براي ادامه اسكريپت وارد كنيد:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

از اينجا به بعد ، مي توانيد Y و سپس ENTER را فشار دهيد تا پيش فرض براي همه سؤالات بعدي را بپذيريد. با اين كار برخي از كاربران ناشناس و بانك اطلاعاتي تستي حذف مي شوند ، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد را بارگذاري مي كند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايد منطبق شود.
توجه داشته باشيد كه حتي اگر يك رمز عبور براي كاربر ريشه MySQL تنظيم كرده ايد ، اين كاربر براي تأييد اعتبار با گذرواژه هنگام اتصال به پوسته MySQL پيكربندي نشده است. در صورت تمايل مي توانيد با دنبال كردن مرحله 3 اين تنظيمات را اعمال كنيد.

مرحله 3 – تنظيم تأييد اعتبار و امتيازات كاربر (اختياري)
در سيستم هاي اوبونتو كه MySQL 5.7 را اجرا مي كند (و نسخه هاي بعدي) ، كاربر ريشه MySQL براي تأييد اعتبار با استفاده از افزونه auth_socket بصورت پيش فرض و نه با گذرواژه تنظيم شده است. اين امر امنيت و قابليت استفاده بيشتر را در بسياري از موارد امكان پذير مي كند ، اما همچنين مي تواند مواردي را پيچيده تر كند كه شما نياز به دسترسي به كاربر توسط يك برنامه خارجي (مانند phpMyAdmin) داريد.
به منظور استفاده از رمز عبور براي اتصال به MySQL به عنوان root ، بايد روش تأييد اعتبار آن را از auth_socket به افزونه ديگري مانند caching_sha2_password يا mysql_native_password تغيير دهيد. براي اين كار ، اعلان MySQL را از پايانه خود باز كنيد:
$ sudo mysql

سپس ، با دستور زير بررسي كنيد كه هر يك از حسابهاي كاربري MySQL شما از كدام روش تأييد اعتبار استفاده ميكند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال ، مي بينيد كه كاربر ريشه با استفاده از افزونه auth_socket ، در واقع تأييد اعتبار مي كند. براي پيكربندي حساب ريشه براي تأييد اعتبار با رمز عبور ، عبارت ALTER USER را اجرا كنيد تا افزونه احراز هويت مورد استفاده خود را تغيير داده و يك رمز عبور جديد تنظيم كنيد.
مطمئن شويد كه رمز عبور را به رمز عبور قوي به انتخاب خود تغيير مي دهيد و آگاه باشيد كه اين دستور رمز ريشه را كه در مرحله 2 تنظيم كرده ايد تغيير مي دهد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

توجه: جمله قبلي ALTER USER كاربر ريشه MySQL را براي تأييد اعتبار با افزونه caching_sha2_password تنظيم مي كند. طبق مطالب رسمي MySQL ، caching_sha2_password افزونه ارجح تأييد هويت MySQL است ، زيرا رمزگذاري ايمن تر پسورد را نسبت به نسخه قديمي تر به همراه دارد ، اما هنوز هم به طور گسترده استفاده مي شود ، mysql_native_password.
با اين حال ، بسياري از برنامه هاي PHP براي مثال phpMyAdmin – با اطمينان با caching_sha2_password كار نمي كنند. اگر قصد استفاده از اين پايگاه داده را با برنامه PHP داريد ، بهتر است تأييد اعتبار ريشه را با mysql_native_password انجام دهيد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

سپس ، PRUSILEGES FLUSH را اجرا كنيد كه به سرور مجازي مي گويد جداول اعطاي امتياز را مجدد لود كرده و
تغييرات جديد را اعمال كند:
Mysql> FLUSH PRIVILEGES;

روش هاي تأييد اعتبار استفاده شده توسط هر يك از كاربران خود را دوباره بررسي كنيد تا تأييد كنيد كه ريشه ديگر با استفاده از افزونه auth_socket احراز هويت نمي كند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال مي توانيد مشاهده كنيد كه كاربر ريشه MySQL اكنون با استفاده از caching_sha2_password تأييد اعتبار مي كند. پس از تأييد اين موضوع روي سرور مجازي خود ، مي توانيد از پوسته MySQL خارج شويد:
Mysql> exit

از طرف ديگر ، به نظر برخي ممكن است اتصال به MySQL با يك كاربر اختصاصي براي گردش كارشان مناسب تر باشد. براي ايجاد چنين كاربري ، بار ديگر پوسته MySQL را باز كنيد:
$ sudo mysql

توجه: اگر احراز هويت رمز عبور را براي ريشه فعال كرده ايد ، همانطور كه در پاراگراف هاي قبلي توضيح داده شد ، براي دسترسي به پوسته MySQL بايد از دستور ديگري استفاده كنيد. موارد زير كلاينت MySQL شما را با حق امتياز كاربر به طور منظم اجرا مي كند و شما فقط با تأييد اعتبار ، امتيازات ادمين را در بانك اطلاعات دريافت خواهيد كرد:
$ mysql -u root -p

از آنجا ، يك كاربر جديد ايجاد كرده و يك رمزعبور قوي به آن بدهيد:
Mysql> CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;

سپس امتيازات مناسب را به كاربر جديد خود اعطا كنيد. به عنوان مثال ، شما مي توانيد امتيازات كاربر را به تمام جداول موجود در ديتابيس و همچنين قدرت اضافه كردن ، تغيير و حذف امتيازهاي كاربر با اين دستور اعطا كنيد:
Mysql> GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;

توجه داشته باشيد كه در اين مرحله ، ديگر نيازي به اجراي فرمان FLUSH PRIVILEGES نداريد. اين دستور فقط در صورت تغيير جدول هاي اعطاي امتياز با استفاده از عباراتي مانند INSERT ، UPDATE يا DELETE مورد نياز است. از آنجا كه شما به جاي تغيير يك كاربر موجود، كاربر جديدي ايجاد كرده ايد،FLUSH PRIVILEGES در اينجا غير ضروري است.
سپس ، از پوسته MySQL خارج شويد:
Mysql> exit

در آخر ، بياييد نصب MySQL را آزمايش كنيم.
مرحله 4 – تست MySQL
صرف نظر از نحوه نصب آن ، MySQL بايد به صورت خودكار شروع به كار كند. براي آزمايش اين موضوع ، وضعيت آن را بررسي كنيد.
$ systemctl status mysql.service

خروجي مشابه زير را مشاهده خواهيد كرد:
Output
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: “Server is operational”
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld

اگر MySQL در حال اجرا نيست ، مي توانيد آن را با sudo systemctl start mysql شروع كنيد.
براي بررسي بيشتر، مي توانيد با استفاده از ابزار mysqladmin ، كه يك كلاينت است و به شما امكان اجراي دستورات ادمين را مي دهد ، به پايگاه داده وصل شويد. به عنوان مثال ، اين دستور مي گويد به عنوان ريشه به MySQL متصل شده (-u root) ، اعلان گذرواژه (-p) را پر كرده و نسخه را برگردانيد.
$ sudo mysqladmin -p -u root version

بايد خروجي مشابه اين را ببينيد:
Output
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec

Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

اين بدان معني است كه MySQL در حال كار است.
نتيجه
اكنون يك ستاپ اوليه MySQL نصب شده در سرور مجازي خود داريد. در اينجا چند نمونه از مراحل بعدي كه مي توانيد انجام دهيد آورده شده است:
• يك پشته LAMP تنظيم كنيد
• پرس و جوهاي در حال اجرا را با SQL تمرين كنيد

 

برچسب‌ها:MySQLPython

نحوه نصب MySQL در اوبونتو 20.04

۶۴ بازديد

MySQL يك سيستم مديريت پايگاه داده منبع باز است كه معمولاً به عنوان بخشي از پشته محبوب LAMP (Linux ، Apache ، MySQL ، PHP / Python / Perl) نصب مي شود. اين سيستم يك مدل رابطه اي را پياده سازي مي كند و براي مديريت داده هاي خود از زبان پرس و جوي ساختاريافته (معروف به SQL) استفاده مي كند.
در اين آموزش نحوه نصب MySQL نسخه 8 بر روي سرور مجازي Ubuntu 20.04 بررسي مي شود. با تكميل آن ، شما يك پايگاه داده رابطه اي در حال كار خواهيد داشت كه مي توانيد براي ساختن وب سايت يا برنامه بعدي خود استفاده كنيد.

پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور مجازي Ubuntu 20.04 با يك كاربر ادمين غير ريشه و فايروال تنظيم شده با UFW . براي راه اندازي ، راهنماي ستاپ اوليه سرور مجازي براي اوبونتو 20.04 را دنبال كنيد.

مرحله 1 – نصب MySQL
در Ubuntu 20.04 مي توانيد MySQL را با استفاده از مخزن بسته APT نصب كنيد. در زمان نوشتن اين مقاله، نسخه MySQL موجود در مخزن پيش فرض اوبونتو نسخه 8.0.19 است.
براي نصب آن ، اگر اخيراً اين كار را نكرده ايد ، فهرست بسته را روي سرور مجازي خود به روز كنيد:
$ sudo apt update

سپس بسته mysql-server را نصب كنيد:
$ sudo apt install mysql-server

اين كار MySQL را نصب مي كند ، اما از شما نميخواهد كه رمز عبوري تنظيم كنيد يا تغييرات ديگري در پيكربندي ايجاد كنيد. از آنجا كه اين امر باعث مي شود نصب MySQL ناامن باشد ، در ادامه به اين موضوع خواهيم پرداخت.

مرحله 2 – پيكربندي MySQL
براي نصب هاي جديد MySQL ، بهتر است اسكريپت امنيتي شامل DBMS را اجرا كنيد. اين اسكريپت برخي از گزينه هاي پيش فرض با ايمني كمتر را براي مواردي مانند ورود به سيستم ريشه از راه دور و كاربران نمونه تغيير مي دهد.
اسكريپت امنيتي را با sudo اجرا كنيد:
$ sudo mysql_secure_installation

اين امر مجموعه اي از اعلان ها را به شما نمايش ميدهد كه بتوانيد برخي از گزينه هاي امنيتي نصب MySQL خود را تغيير دهيد. اولين سؤال از شما ميپرسد كه آيا مي خواهيد افزونه Validate Password را تنظيم كنيد ، كه مي تواند براي تست قدرت رمز ورود MySQL استفاده شود.
اگر تصميم به تنظيم افزونه اعتبار سنجي گذرواژه بگيريد ، اسكريپت از شما مي خواهد كه يك سطح اعتبار رمز عبور را انتخاب كنيد. قوي ترين سطح – كه شما با وارد كردن 2 انتخاب مي كنيد – به حداقل 8 كاراكتر نياز دارد و شامل تركيبي از حروف بزرگ ، حروف كوچك ، عدد و علائم خاص است:
Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2

صرف نظر از اين كه آيا مي خواهيد افزونه رمز عبور معتبر را انتخاب كنيد ، اعلان بعدي تعيين رمز عبور براي كاربر ريشه MySQL خواهد بود. Enter را بزنيد و رمز عبور ايمن را تاييد كنيد:
Output
Please set the password for root here.

New password:

Re-enter new password:

اگر از افزونه اعتبار سنجي گذرواژه استفاده كرده ايد ، در مورد قدرت رمزعبور جديد خود بازخورد دريافت خواهيد كرد. سپس اسكريپت از شما سؤال مي كند كه آيا مي خواهيد رمز عبوري را كه وارد كرده ايد ادامه دهيد يا مي خواهيد يك رمز جديد را وارد كنيد. با فرض اينكه از قدرت رمز عبوري كه تازه وارد كرده ايد راضي هستيد ، Y را براي ادامه اسكريپت وارد كنيد:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

از اينجا به بعد ، مي توانيد Y و سپس ENTER را فشار دهيد تا پيش فرض براي همه سؤالات بعدي را بپذيريد. با اين كار برخي از كاربران ناشناس و بانك اطلاعاتي تستي حذف مي شوند ، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد را بارگذاري مي كند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايد منطبق شود.
توجه داشته باشيد كه حتي اگر يك رمز عبور براي كاربر ريشه MySQL تنظيم كرده ايد ، اين كاربر براي تأييد اعتبار با گذرواژه هنگام اتصال به پوسته MySQL پيكربندي نشده است. در صورت تمايل مي توانيد با دنبال كردن مرحله 3 اين تنظيمات را اعمال كنيد.

مرحله 3 – تنظيم تأييد اعتبار و امتيازات كاربر (اختياري)
در سيستم هاي اوبونتو كه MySQL 5.7 را اجرا مي كند (و نسخه هاي بعدي) ، كاربر ريشه MySQL براي تأييد اعتبار با استفاده از افزونه auth_socket بصورت پيش فرض و نه با گذرواژه تنظيم شده است. اين امر امنيت و قابليت استفاده بيشتر را در بسياري از موارد امكان پذير مي كند ، اما همچنين مي تواند مواردي را پيچيده تر كند كه شما نياز به دسترسي به كاربر توسط يك برنامه خارجي (مانند phpMyAdmin) داريد.
به منظور استفاده از رمز عبور براي اتصال به MySQL به عنوان root ، بايد روش تأييد اعتبار آن را از auth_socket به افزونه ديگري مانند caching_sha2_password يا mysql_native_password تغيير دهيد. براي اين كار ، اعلان MySQL را از پايانه خود باز كنيد:
$ sudo mysql

سپس ، با دستور زير بررسي كنيد كه هر يك از حسابهاي كاربري MySQL شما از كدام روش تأييد اعتبار استفاده ميكند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال ، مي بينيد كه كاربر ريشه با استفاده از افزونه auth_socket ، در واقع تأييد اعتبار مي كند. براي پيكربندي حساب ريشه براي تأييد اعتبار با رمز عبور ، عبارت ALTER USER را اجرا كنيد تا افزونه احراز هويت مورد استفاده خود را تغيير داده و يك رمز عبور جديد تنظيم كنيد.
مطمئن شويد كه رمز عبور را به رمز عبور قوي به انتخاب خود تغيير مي دهيد و آگاه باشيد كه اين دستور رمز ريشه را كه در مرحله 2 تنظيم كرده ايد تغيير مي دهد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

توجه: جمله قبلي ALTER USER كاربر ريشه MySQL را براي تأييد اعتبار با افزونه caching_sha2_password تنظيم مي كند. طبق مطالب رسمي MySQL ، caching_sha2_password افزونه ارجح تأييد هويت MySQL است ، زيرا رمزگذاري ايمن تر پسورد را نسبت به نسخه قديمي تر به همراه دارد ، اما هنوز هم به طور گسترده استفاده مي شود ، mysql_native_password.
با اين حال ، بسياري از برنامه هاي PHP براي مثال phpMyAdmin – با اطمينان با caching_sha2_password كار نمي كنند. اگر قصد استفاده از اين پايگاه داده را با برنامه PHP داريد ، بهتر است تأييد اعتبار ريشه را با mysql_native_password انجام دهيد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

سپس ، PRUSILEGES FLUSH را اجرا كنيد كه به سرور مجازي مي گويد جداول اعطاي امتياز را مجدد لود كرده و
تغييرات جديد را اعمال كند:
Mysql> FLUSH PRIVILEGES;

روش هاي تأييد اعتبار استفاده شده توسط هر يك از كاربران خود را دوباره بررسي كنيد تا تأييد كنيد كه ريشه ديگر با استفاده از افزونه auth_socket احراز هويت نمي كند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال مي توانيد مشاهده كنيد كه كاربر ريشه MySQL اكنون با استفاده از caching_sha2_password تأييد اعتبار مي كند. پس از تأييد اين موضوع روي سرور مجازي خود ، مي توانيد از پوسته MySQL خارج شويد:
Mysql> exit

از طرف ديگر ، به نظر برخي ممكن است اتصال به MySQL با يك كاربر اختصاصي براي گردش كارشان مناسب تر باشد. براي ايجاد چنين كاربري ، بار ديگر پوسته MySQL را باز كنيد:
$ sudo mysql

توجه: اگر احراز هويت رمز عبور را براي ريشه فعال كرده ايد ، همانطور كه در پاراگراف هاي قبلي توضيح داده شد ، براي دسترسي به پوسته MySQL بايد از دستور ديگري استفاده كنيد. موارد زير كلاينت MySQL شما را با حق امتياز كاربر به طور منظم اجرا مي كند و شما فقط با تأييد اعتبار ، امتيازات ادمين را در بانك اطلاعات دريافت خواهيد كرد:
$ mysql -u root -p

از آنجا ، يك كاربر جديد ايجاد كرده و يك رمزعبور قوي به آن بدهيد:
Mysql> CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;

سپس امتيازات مناسب را به كاربر جديد خود اعطا كنيد. به عنوان مثال ، شما مي توانيد امتيازات كاربر را به تمام جداول موجود در ديتابيس و همچنين قدرت اضافه كردن ، تغيير و حذف امتيازهاي كاربر با اين دستور اعطا كنيد:
Mysql> GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;

توجه داشته باشيد كه در اين مرحله ، ديگر نيازي به اجراي فرمان FLUSH PRIVILEGES نداريد. اين دستور فقط در صورت تغيير جدول هاي اعطاي امتياز با استفاده از عباراتي مانند INSERT ، UPDATE يا DELETE مورد نياز است. از آنجا كه شما به جاي تغيير يك كاربر موجود، كاربر جديدي ايجاد كرده ايد،FLUSH PRIVILEGES در اينجا غير ضروري است.
سپس ، از پوسته MySQL خارج شويد:
Mysql> exit

در آخر ، بياييد نصب MySQL را آزمايش كنيم.
مرحله 4 – تست MySQL
صرف نظر از نحوه نصب آن ، MySQL بايد به صورت خودكار شروع به كار كند. براي آزمايش اين موضوع ، وضعيت آن را بررسي كنيد.
$ systemctl status mysql.service

خروجي مشابه زير را مشاهده خواهيد كرد:
Output
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: “Server is operational”
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld

اگر MySQL در حال اجرا نيست ، مي توانيد آن را با sudo systemctl start mysql شروع كنيد.
براي بررسي بيشتر، مي توانيد با استفاده از ابزار mysqladmin ، كه يك كلاينت است و به شما امكان اجراي دستورات ادمين را مي دهد ، به پايگاه داده وصل شويد. به عنوان مثال ، اين دستور مي گويد به عنوان ريشه به MySQL متصل شده (-u root) ، اعلان گذرواژه (-p) را پر كرده و نسخه را برگردانيد.
$ sudo mysqladmin -p -u root version

بايد خروجي مشابه اين را ببينيد:
Output
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec

Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

اين بدان معني است كه MySQL در حال كار است.
نتيجه
اكنون يك ستاپ اوليه MySQL نصب شده در سرور مجازي خود داريد. در اينجا چند نمونه از مراحل بعدي كه مي توانيد انجام دهيد آورده شده است:
• يك پشته LAMP تنظيم كنيد
• پرس و جوهاي در حال اجرا را با SQL تمرين كنيد

 

برچسب‌ها:MySQLPython

نصب Python 3 روي سرور Ubuntu 18.04

۶۳ بازديد

پايتون يك زبان برنامه نويسي انعطاف پذير و همه كاره است كه مي تواند در بسياري از موارد به خاطر داشتن نقاط قوت در اسكريپت ، اتوماسيون ، تجزيه و تحليل داده ها ، يادگيري ماشين و توسعه back-end مورد استفاده قرار گيرد. تيم توسعه پايتون براي اولين بار در سال 1991 با نامي الهام گرفته از گروه طنز بريتانيايي مونتي پايتون، آن را منتشر كردند و ميخواستند پايتون را به زباني تبديل كنند كه استفاده از آن بسيار جالب باشد. ستاپ سريع و سبك نسبتاً ساده و بازخورد فوري در مورد خطاها، پايتون را به يك انتخاب عالي براي مبتديان و توسعه دهندگان با تجربه تبديل كرده است. پايتون 3 جديدترين نسخه اين زبان است و آينده پايتون به حساب مي آيد.
در اين آموزش سرور مجازي Ubuntu 18.04 شما با يك محيط برنامه نويسي Python 3 تنظيم مي شود. برنامه نويسي روي سرور مجازي مزاياي بسياري دارد و از همكاري در پروژه هاي توسعه پشتيباني مي كند. اصول كلي اين آموزش در مورد هرگونه توزيع Debian Linux كاربرد دارد.
پيش نيازها
براي تكميل اين آموزش ، شما بايد يك كاربر غير ريشه با امتيازات sudo در سرور مجازي Ubuntu 18.04 داشته باشيد. براي يادگيري چگونگي دستيابي به اين تنظيمات ، راهنماي ستاپ اوليه دستي سرور مجازي را دنبال كنيد يا اسكريپت خودكار ما را اجرا كنيد.
اگر قبلاً با محيط ترمينال آشنايي نداريد ، مي توانيد مقاله “مقدمه اي بر ترمينال لينوكس” را براي جهت گيري بهتر در مورد ترمينال مطالعه كنيد.
با راه اندازي سرور مجازي و كاربر ، آماده شروع كار هستيد.
مرحله 1 – تنظيم پايتون 3
اوبونتو 18.04 و ساير نسخه هاي دبيان لينوكس ، Python 3 و Python 2 را از قبل نصب شده دارد. براي اطمينان از به روز بودن نسخه هاي خود ، بياييد سيستم را با دستور APT به روز رساني كنيم تا با ابزار بسته بندي پيشرفته اوبونتو همكاري كند:
$ sudo apt update

$ sudo apt -y upgrade

پرچم -y تأييد خواهد كرد كه ما با نصب همه موارد موافق هستيم ، اما بسته به نسخه لينوكس شما ، ممكن است لازم باشد كه با به روزرساني و ارتقاي سيستم ، پيام هاي بيشتري را تأييد كنيد.
پس از اتمام روند ، مي توانيم با تايپ كردن دستور زير نسخه پايتون 3 كه در سيستم نصب شده است را بررسي كنيم:
$ python3 -V

در پنجره ترمينال خروجي دريافت خواهيد كرد كه شماره نسخه را به شما اطلاع مي دهد. در حالي كه ممكن است تعداد متفاوت باشد ، خروجي مشابه اين خواهد بود:
Output
Python 3.6.7

براي مديريت بسته هاي نرم افزاري براي پايتون ، بياييد pip را نصب كنيم ، ابزاري كه بسته هاي برنامه نويسي را كه ممكن است بخواهيم در پروژه هاي توسعه خود استفاده كنيم ، نصب و مديريت خواهد كرد. مي توانيد با خواندن “چگونگي وارد كردن ماژول ها در پايتون 3” در مورد ماژول ها يا بسته هايي كه مي توانيد با pip نصب كنيد اطلاعات كسب كنيد.
$ sudo apt install -y python3-pip

بسته هاي پايتون با تايپ اين دستور قابل نصب هستند:
$ pip3 install package_name

در اينجا ، pack_name مي تواند به هر بسته يا كتابخانه Python مانند Django براي توسعه وب يا NumPy براي محاسبات علمي اشاره كند. بنابراين اگر مي خواهيد NumPy را نصب كنيد ، مي توانيد با دستور pip3 install numpy اين كار را انجام دهيد.
چند بسته و ابزار توسعه ديگر وجود دارد كه بايد اطمينان حاصل شود كه يك مجموعه قوي براي محيط برنامه نويسي خود داريم:
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev

پس از راه اندازي پايتون و نصب pip و ساير ابزارها ، مي توانيم يك محيط مجازي براي پروژه هاي توسعه خود تنظيم كنيم.
مرحله 2 – تنظيم يك محيط مجازي
محيط هاي مجازي شما را قادر مي سازد براي پروژه هاي پايتون فضايي مجزا در سرور مجازي خود داشته باشيد ، اطمينان حاصل كنيد كه هر يك از پروژه هاي شما مي توانند مجموعه اي از متعلقات خاص خود را داشته باشند كه هيچ يك از پروژه هاي ديگر شما را مختل نمي كند.
تنظيم يك محيط برنامه نويسي ، كنترل بيشتري بر روي پروژه هاي Python و نحوه دستيابي به نسخه هاي مختلف بسته ها براي ما فراهم مي كند. اين امر به ويژه هنگام كار با بسته هاي شخص ثالث بسيار مهم است.
مي توانيد همانطور كه مي خواهيد محيط برنامه نويسي Python را تنظيم كنيد. هر محيط در واقع يك فهرست يا پوشه اي در سرور مجازي شماست كه چندين اسكريپت در آن وجود دارد تا بتواند به عنوان يك محيط عمل كند.
در حالي كه چند روش براي دستيابي به يك محيط برنامه نويسي در پايتون وجود دارد ، ما در اينجا از ماژول venv استفاده مي كنيم كه بخشي از كتابخانه استاندارد Python 3 است. بگذاريد venv را با تايپ كردن دستور زير نصب كنيم:
$ sudo apt install -y python3-venv

با استفاده از اين نصب ، آماده ايجاد محيط هستيم. بايد يا انتخاب كنيم كه مي خواهيم محيط هاي برنامه نويسي پايتون را در كدام ديركتوري قرار دهيم ، يا يك ديركتوري جديد با mkdir ايجاد كنيم ، مانند:
$ kdir environments

$ cd environments
وقتي در دايركتوري قرار گرفتيد كه ميخواهيد محيط در آن جا باشد ، مي توانيد با اجراي دستور زير محيطي ايجاد كنيد:
$ python3.6 -m venv my_env

در اصل ، pyvenv يك ديركتوري جديد ايجاد مي كند كه شامل چند آيتم است كه مي توانيم با دستور ls آنها را مشاهده كنيم:
$ ls my_env

Output
bin include lib lib64 pyvenv.cfg share

اين فايلها با هم كار مي كنند تا اطمينان حاصل كنند كه پروژه هاي شما از بستر وسيع دستگاه محلي شما جدا شده اند ، به گونه اي كه فايل هاي سيستم و فايل هاي پروژه مخلوط نشوند. اين روش خوبي براي كنترل نسخه و اطمينان از دسترسي هر يك از پروژه هاي شما به بسته هاي خاص مورد نياز خود است. Python Wheels يك فرمت بسته ساخته شده براي Python است كه مي تواند با كاهش تعداد دفعات لازم براي كامپايل ، باعث افزايش سرعت توليد نرم افزار شود ، و در ديركتوري share اوبونتو 18.04 قرار خواهد گرفت.
براي استفاده از اين محيط ، بايد آن را فعال كنيد ، كه مي توانيد با تايپ دستور زير كه اسكريپت activate  را فراخواني مي كند به آن دست پيدا كنيد.
$ source my_env/bin/activate

خط فرمان شما اكنون با نام محيط شما پيشوند داده مي شود ، در اين حالت my_env نام دارد. بسته به اينكه كدام نسخه لينوكس را اجرا ميكنيد، پيشوند شما ممكن است متفاوت باشد ، اما نام محيط شما در پرانتز بايد اولين چيزي باشد كه در خط python مشاهده مي كنيد:
(my_env) Sammy@ubuntu:~/environments$
اين پيشوند به ما اطلاع مي دهد كه محيط my_env در حال حاضر فعال است ، به اين معني كه وقتي ما در اينجا برنامه هايي را ايجاد مي كنيم آنها فقط از تنظيمات و بسته هاي خاص اين محيط استفاده مي كنند.
توجه: در محيط مجازي مي توانيد به جاي python3 از فرمان python استفاده كنيد و در صورت تمايل به جاي pip3 از pip استفاده كنيد. اگر در خارج از محيط خود از پايتون 3 در دستگاه خود استفاده مي كنيد ، لازم است كه از دستورات python3 و pip3 استفاده كنيد.

بعد از طي كردن اين مراحل ، محيط مجازي شما آماده استفاده است.
مرحله 3 – ايجاد يك برنامه ” hello, world ”
اكنون كه محيط مجازي ما تنظيم شده است ، بياييد يك برنامه ” “hello, world معمولي ايجاد كنيم. اين امر به ما امكان مي دهد تا محيط خود را مورد آزمايش قرار دهيم و اين امكان را براي ما فراهم مي كند كه اگر قبلاً با پايتون كار نكرده ايم، بيشتر با آن آشنا شويم.
براي اين كار ، يك ويرايشگر متن خط فرمان مانند nano را باز خواهيم كرد و يك فايل جديد ايجاد مي كنيم:
(my_env) Sammy@ubuntu:~/environments$ nano hello.py

پس از باز شدن فايل متني در پنجره ترمينال ، برنامه خود را تايپ مي كنيم:
print(“Hello, World!”)
Copy
با زدن كليدهاي CTRL و X از nano خارج شويد و هنگامي كه از شما خواسته شد فايل را ذخيره كنيد y را فشار دهيد.
پس از بيرون آمدن از nano و بازگشت به پوسته خود ، اجازه دهيد برنامه را اجرا كنيم:
(my_env) Sammy@ubuntu:~/environments$ python hello.py

برنامه hello.py كه به تازگي ايجاد كرده ايد بايد باعث شود ترمينال شما خروجي زير را توليد كند:
Output
Hello, World!

براي ترك محيط ، دستور deactivate را تايپ كنيد و به ديركتوري اصلي خود باز خواهيد گشت.
نتيجه
تبريك مي گويم! در اين مرحله شما يك محيط برنامه نويسي پايتون 3 در سرور مجازي Ubuntu Linux خود تنظيم كرده ايد و هم اكنون مي توانيد يك پروژه رمزگذاري را شروع كنيد!
اگر از يك دستگاه محلي به جاي سرور مجازي استفاده مي كنيد ، به مجموعه آموزشهاي مربوط به سيستم عامل خود در مجموعه “نحوه نصب و راه اندازي يك محيط برنامه نويسي محلي براي پايتون 3” مراجعه كنيد.
با آماده شدن سرور مجازي براي توسعه نرم افزار ، مي توانيد با خواندن كتاب الكترونيكي رايگان نحوه كد نويسي در Python 3 ، يا مراجعه به آموزش هاي پروژه برنامه نويسي ، اطلاعات بيشتري درباره كد نويسي در پايتون كسب كنيد.

 

برچسب‌ها:Debian LinuxDjangoNumPy

نحوه نصب Python 3 روي سرور Ubuntu 20.04

۶۱ بازديد

زبان برنامه نويسي پايتون يك انتخاب عالي هم براي مبتديان و هم توسعه دهندگان با تجربه ميباشد. اين زبان انعطاف پذير و همه كاره است و مي تواند در بسياري از موارد به خاطر داشتن نقاط قوت در اسكريپت ، اتوماسيون ، تجزيه و تحليل داده ها ، يادگيري ماشين و توسعه back-end مورد استفاده قرار گيرد. تيم توسعه پايتون براي اولين بار در سال 1991 با نامي الهام گرفته از گروه طنز بريتانيايي مونتي پايتون، آن را منتشر كردند و ميخواستند پايتون را به زباني تبديل كنند كه استفاده از آن بسيار جالب باشد.
در اين آموزش سرور مجازي Ubuntu 20.04 شما با يك محيط برنامه نويسي Python 3 تنظيم مي شود. برنامه نويسي روي سرور مجازي مزاياي بسياري دارد و از همكاري در پروژه هاي توسعه پشتيباني مي كند. اصول كلي اين آموزش در مورد هرگونه توزيع Debian Linux كاربرد دارد.
پيش نيازها
براي تكميل اين آموزش ، شما بايد يك كاربر غير ريشه با امتيازات sudo در سرور مجازي Ubuntu 20.04 داشته باشيد. براي يادگيري چگونگي دستيابي به اين راه اندازي ، راهنماي تنظيم اوليه سرور مجازي ما را دنبال كنيد.
اگر قبلاً با محيط ترمينال آشنايي نداريد ، مي توانيد مقاله “مقدمه اي بر ترمينال لينوكس” را براي جهت دهي بهتر مطالعه كنيد.
با راه اندازي سرور مجازي و كاربر ، آماده شروع كار هستيد.
مرحله 1 – تنظيم پايتون 3
اوبونتو 20.04 و ساير نسخه هاي دبيان لينوكس ، Python 3 و Python 2 را از قبل نصب شده دارد. براي اطمينان از به روز بودن نسخه هاي خود ، بياييد سيستم را با دستور APT به روز رساني كنيم تا با ابزار بسته بندي پيشرفته اوبونتو همكاري كند:
$ sudo apt update

$ sudo apt -y upgrade

پرچم -y تأييد خواهد كرد كه ما با نصب همه موارد موافق هستيم ، اما بسته به نسخه لينوكس شما ، ممكن است لازم باشد كه با به روزرساني و ارتقاي سيستم ، پيام هاي بيشتري را تأييد كنيد.
پس از اتمام روند ، مي توانيم با تايپ كردن دستور زير نسخه پايتون 3 كه در سيستم نصب شده است را بررسي كنيم:
$ python3 -V

در پنجره ترمينال خروجي دريافت خواهيد كرد كه شماره نسخه را به شما اطلاع مي دهد. در حالي كه ممكن است تعداد متفاوت باشد ، خروجي مشابه اين خواهد بود:
Output
Python 3.8.2

براي مديريت بسته هاي نرم افزاري براي پايتون ، بياييد pip را نصب كنيم ، ابزاري كه بسته هاي برنامه نويسي را كه ممكن است بخواهيم در پروژه هاي توسعه خود استفاده كنيم ، نصب و مديريت خواهد كرد. مي توانيد با خواندن “چگونگي وارد كردن ماژول ها در پايتون 3” در مورد ماژول ها يا بسته هايي كه مي توانيد با pip نصب كنيد اطلاعات كسب كنيد.
$ sudo apt install -y python3-pip

بسته هاي پايتون با تايپ اين دستور قابل نصب هستند:
$ pip3 install package_name

در اينجا ، pack_name مي تواند به هر بسته يا كتابخانه Python مانند Django براي توسعه وب يا NumPy براي محاسبات علمي اشاره كند. بنابراين اگر مي خواهيد NumPy را نصب كنيد ، مي توانيد با دستور pip3 install numpy اين كار را انجام دهيد.
چند بسته و ابزار توسعه ديگر وجود دارد كه بايد اطمينان حاصل شود كه يك مجموعه قوي براي محيط برنامه نويسي خود داريم:
$ sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

پس از راه اندازي پايتون و نصب pip و ساير ابزارها ، مي توانيم يك محيط مجازي براي پروژه هاي توسعه خود تنظيم كنيم.
مرحله 2 – تنظيم يك محيط مجازي
محيط هاي مجازي شما را قادر مي سازد براي پروژه هاي پايتون فضايي مجزا در سرور مجازي خود داشته باشيد ، اطمينان حاصل كنيد كه هر يك از پروژه هاي شما مي توانند مجموعه اي از متعلقات خاص خود را داشته باشند كه هيچ يك از پروژه هاي ديگر شما را مختل نمي كند.
تنظيم يك محيط برنامه نويسي ، كنترل بيشتري بر روي پروژه هاي Python و نحوه دستيابي به نسخه هاي مختلف بسته ها براي ما فراهم مي كند. اين امر به ويژه هنگام كار با بسته هاي شخص ثالث بسيار مهم است.
مي توانيد همانطور كه مي خواهيد محيط برنامه نويسي Python را تنظيم كنيد. هر محيط در واقع يك ديركتوري يا پوشه اي در سرور مجازي شماست كه چندين اسكريپت در آن وجود دارد تا بتواند به عنوان يك محيط عمل كند.
در حالي كه چند روش براي دستيابي به يك محيط برنامه نويسي در پايتون وجود دارد ، ما در اينجا از ماژول venv استفاده مي كنيم كه بخشي از كتابخانه استاندارد Python 3 است. بگذاريد venv را با تايپ كردن دستور زير نصب كنيم:
$ sudo apt install -y python3-venv

با استفاده از اين نصب ، آماده ايجاد محيط هستيم. بايد يا انتخاب كنيم كه مي خواهيم محيط هاي برنامه نويسي پايتون را در كدام ديركتوري قرار دهيم ، يا يك ديركتوري جديد با mkdir ايجاد كنيم ، مانند:
$ kdir environments

$ cd environments
وقتي در دايركتوري قرار گرفتيد كه ميخواهيد محيط در آن جا باشد ، مي توانيد با اجراي دستور زير محيطي ايجاد كنيد:
$ python3.6 -m venv my_env

در اصل ، pyvenv يك ديركتوري جديد ايجاد مي كند كه شامل چند آيتم است كه مي توانيم با دستور ls آنها را مشاهده كنيم:
$ ls my_env

Output
bin include lib lib64 pyvenv.cfg share

اين فايلها با هم كار مي كنند تا اطمينان حاصل كنند كه پروژه هاي شما از بستر وسيع دستگاه محلي شما جدا شده اند ، به گونه اي كه فايل هاي سيستم و فايل هاي پروژه مخلوط نشوند. اين روش خوبي براي كنترل نسخه و اطمينان از دسترسي هر يك از پروژه هاي شما به بسته هاي خاص مورد نياز خود است. Python Wheels يك فرمت بسته ساخته شده براي Python است كه مي تواند با كاهش تعداد دفعات لازم براي كامپايل ، باعث افزايش سرعت توليد نرم افزار شود ، و در ديركتوري share اوبونتو 20.04 قرار خواهد گرفت.
براي استفاده از اين محيط ، بايد آن را فعال كنيد ، كه مي توانيد با تايپ دستور زير كه اسكريپت activate  را فراخواني مي كند به آن دست پيدا كنيد.
$ source my_env/bin/activate

خط فرمان شما اكنون با نام محيط شما پيشوند داده مي شود ، در اين حالت my_env نام دارد. بسته به اينكه كدام نسخه لينوكس را اجرا ميكنيد، پيشوند شما ممكن است متفاوت باشد ، اما نام محيط شما در پرانتز بايد اولين چيزي باشد كه در خط python مشاهده مي كنيد:
(my_env) Sammy@ubuntu:~/environments$
اين پيشوند به ما اطلاع مي دهد كه محيط my_env در حال حاضر فعال است ، به اين معني كه وقتي ما در اينجا برنامه هايي را ايجاد مي كنيم آنها فقط از تنظيمات و بسته هاي خاص اين محيط استفاده مي كنند.
توجه: در محيط مجازي مي توانيد به جاي python3 از فرمان python استفاده كنيد و در صورت تمايل به جاي pip3 از pip استفاده كنيد. اگر در خارج از محيط خود از پايتون 3 در دستگاه خود استفاده مي كنيد ، لازم است كه از دستورات python3 و pip3 استفاده كنيد.

بعد از طي كردن اين مراحل ، محيط مجازي شما آماده استفاده است.
مرحله 3 – ايجاد يك برنامه ” hello, world ”
اكنون كه محيط مجازي ما تنظيم شده است ، بياييد يك برنامه ” “hello, world معمولي ايجاد كنيم. اين امر به ما امكان مي دهد تا محيط خود را مورد آزمايش قرار دهيم و اين امكان را براي ما فراهم مي كند كه اگر قبلاً با پايتون كار نكرده ايم، بيشتر با آن آشنا شويم.
براي اين كار ، يك ويرايشگر متن خط فرمان مانند nano را باز خواهيم كرد و يك فايل جديد ايجاد مي كنيم:
(my_env) Sammy@ubuntu:~/environments$ nano hello.py

پس از باز شدن فايل متني در پنجره ترمينال ، برنامه خود را تايپ مي كنيم:
print(“Hello, World!”)
Copy
با زدن كليدهاي CTRL و X از nano خارج شويد و هنگامي كه از شما خواسته شد فايل را ذخيره كنيد y را فشار دهيد.
پس از بيرون آمدن از nano و بازگشت به پوسته خود ، اجازه دهيد برنامه را اجرا كنيم:
(my_env) Sammy@ubuntu:~/environments$ python hello.py

برنامه hello.py كه به تازگي ايجاد كرده ايد بايد باعث شود ترمينال شما خروجي زير را توليد كند:
Output
Hello, World!

براي ترك محيط ، دستور deactivate را تايپ كنيد و به ديركتوري اصلي خود باز خواهيد گشت.
نتيجه
تبريك مي گويم! در اين مرحله شما يك محيط برنامه نويسي پايتون 3 در سرور مجازي Ubuntu Linux خود تنظيم كرده ايد و هم اكنون مي توانيد يك پروژه رمزگذاري را شروع كنيد!
اگر از يك دستگاه محلي به جاي سرور مجازي استفاده مي كنيد ، به مجموعه آموزشهاي مربوط به سيستم عامل خود در مجموعه “نحوه نصب و راه اندازي يك محيط برنامه نويسي محلي براي پايتون 3” مراجعه كنيد.
با آماده شدن سرور مجازي براي توسعه نرم افزار ، مي توانيد با خواندن كتاب الكترونيكي رايگان نحوه كد نويسي در Python 3 ، يا مراجعه به آموزش هاي پروژه برنامه نويسي ، اطلاعات بيشتري درباره كد نويسي در پايتون كسب كنيد.

 

برچسب‌ها:Ubuntu Linuxاسكريپت activate

نصب وب سرور Apache در CentOS 8

۶۱ بازديد

سرور مجازي Apache HTTP پركاربردترين وب سرور مجازي در جهان است. اين نرم افزار بسياري از ويژگي هاي قدرتمند از جمله ماژول هاي قابل لود پويا ، پشتيباني رسانه اي قوي و ادغام گسترده با ساير نرم افزارهاي محبوب را ارائه مي دهد.
در اين راهنما يك سرور مجازي وب Apache با هاست هاي مجازي روي سرور مجازي CentOS 8 خود نصب خواهيد كرد.
پيش نيازها
براي تكميل اين راهنما به موارد زير نياز داريد:
• يك كاربر غير ريشه با امتيازات sudo كه در سرور مجازي شما پيكربندي شده باشد ، و با دنبال كردن راهنماي اوليه ستاپ سرور مجازي براي CentOS 8 تنظيم شده باشد.
• با پيروي از مرحله 4 تنظيم اوليه سرور مجازي با CentOS 8 (مرحله توصيه شده) در راهنماي بالا ، اطمينان حاصل كنيد كه يك فايروال پايه پيكربندي شده است.
مرحله 1 – نصب Apache
Apache در مخازن پيش فرض نرم افزار CentOS موجود است ، به اين معني كه مي توانيد آن را با مدير بسته dnf نصب كنيد.
وقتي كه كاربر sudo غير ريشه در پيش نيازها پيكربندي شد ، بسته Apache را نصب كنيد:
⦁ $ sudo dnf install httpd

پس از تأييد نصب ، dnf ، Apache و كليه متعلقات مورد نياز را نصب مي كند.
با تكميل مرحله 4 راهنماي ستاپ اوليه سرور مجازي CentOS 8 ذكر شده در بخش پيش نيازها ، در حال حاضر firewalld  را بر روي سرور مجازي خود نصب كرده ايد تا درخواست هاي روي HTTP را انجام دهيد.
اگر همچنين قصد داريد Apache را براي ارائه محتوا از طريق HTTPS پيكربندي كنيد ، بهتر اسن با فعال كردن سرويس https ، پورت 443 را نيز باز كنيد:
⦁ $ sudo firewall-cmd –permanent –add-service=https

در مرحله بعد ، فايروال را مجدد لود كنيد تا اين قوانين جديد به مرحله اجرا در بيايند:
⦁ $ sudo firewall-cmd –reload

پس از لود مجدد فايروال ، شما آماده شروع سرويس و بررسي سرور مجازي وب هستيد.
مرحله 2 – بررسي سرور مجازي وب خود
Apache پس از اتمام نصب به طور خودكار از CentOS شروع نمي شود ، بنابراين شما نياز به شروع فرآيند Apache به صورت دستي داريد:
⦁ $ sudo systemctl start httpd

با دستور زير تأييد كنيد كه اين سرويس در حال اجرا است:
⦁ $ sudo systemctl status httpd

هنگام اجراي سرويس وضعيت فعال را دريافت خواهيد كرد:
Output
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa>
Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago
Docs: man:httpd.service(8)
Main PID: 14219 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 5059)
Memory: 24.9M
CGroup: /system.slice/httpd.service
├─14219 /usr/sbin/httpd -DFOREGROUND
├─14220 /usr/sbin/httpd -DFOREGROUND
├─14221 /usr/sbin/httpd -DFOREGROUND
├─14222 /usr/sbin/httpd -DFOREGROUND
└─14223 /usr/sbin/httpd -DFOREGROUND

در اين مرحله، اين سرويس با موفقيت شروع شده است. با اين حال ، بهترين راه براي آزمايش، درخواست يك صفحه از Apache است.
براي تأييد صحت اجراي نرم افزار از طريق آدرس IP خود ، مي توانيد به صفحه فرود پيش فرض Apache دسترسي پيدا كنيد. اگر آدرس IP سرور مجازي خود را نمي دانيد ، مي توانيد آن را چند راه مختلف از خط فرمان دريافت كنيد.
براي بازگشت به خط فرمان q و سپس دستور زير را تايپ كنيد:
⦁ $ hostname -I

اين دستور همه آدرس هاي شبكه هاست را نشان مي دهد ، بنابراين شما چند آدرس IP را كه با space جدا شده اند ، دريافت خواهيد كرد. مي توانيد هر يك از مرورگرهاي وب خود را امتحان كنيد تا مشخص شود كه آيا كار مي كنند يا خير.
از طرف ديگر ، مي توانيد از Curl براي درخواست IP خود از icanhazip.com استفاده كنيد ، كه آدرس IPv4 عمومي شما را به عنوان خوانده شده از يك مكان ديگر در اينترنت به شما مي دهد:
⦁ $ curl -4 icanhazip.com

هنگامي كه آدرس IP سرور مجازي خود را پيدا كرديد ، آن را در نوار آدرس مرورگر خود وارد كنيد:
http://your_server_ip
صفحه پيش فرض CentOS 8 Apache را مشاهده خواهيد كرد:

اين صفحه نشان مي دهد كه Apache درست كار مي كند. اين برنامه همچنين شامل برخي از اطلاعات اوليه در مورد فايل هاي مهم Apache و مكان هاي دايركتوري است.
مرحله 3 – مديريت فرايند Apache
اكنون كه سرويس نصب و راه اندازي شده است ، مي توانيد از دستورات مختلف systemctl براي مديريت سرويس استفاده كنيد.
براي متوقف كردن سرور مجازي وب خود ، تايپ كنيد:
⦁ $ sudo systemctl stop httpd

براي شروع سرور مجازي وب وقتي متوقف است ، تايپ كنيد:
⦁ $ sudo systemctl start httpd

براي متوقف كردن و شروع مجدد سرويس ، تايپ كنيد:
⦁ $ sudo systemctl restart httpd

اگر به سادگي تغييرات پيكربندي را انجام مي دهيد ، Apache اغلب مي تواند بدون افت اتصالات مجدد لود شود. براي انجام اين كار ، از اين دستور استفاده كنيد:
⦁ $ sudo systemctl reload httpd

به طور پيش فرض ، Apache به گونه اي تنظيم مي شود كه به طور خودكار شروع به كار كند. اگر اين چيزي نيست كه مي خواهيد ، با تايپ كردن دستور زير اين رفتار را غيرفعال كنيد:
⦁ $ sudo systemctl disable httpd

براي فعال كردن مجدد سرويس در هنگام بوت، اين دستور را تايپ كنيد:
⦁ $ sudo systemctl enable httpd

با دوباره بوت شدن سرور مجازي ، Apache به طور خودكار شروع مي شود.
پيكربندي پيش فرض براي Apache به سرور مجازي شما امكان ميزباني وب سايت واحد را مي دهد. اگر قصد داريد هاست چندين دامنه در سرور مجازي خود باشيد ، بايد هاست هاي مجازي را در سرور مجازي وب Apache خود پيكربندي كنيد.
مرحله 4 – تنظيم هاست هاي مجازي (توصيه مي شود)
هنگام استفاده از وب سرور مجازي Apache ، براي كپسوله كردن جزئيات پيكربندي و ميزباني بيش از يك دامنه از يك سرور مجازي واحد مي توانيد از هاست هاي مجازي استفاده كنيد )اگر با Nginx بيشتر آشنا هستيد ، اين ها به بلوك هاي سرور مجازي شباهت دارند). در اين مرحله دامنه اي به نام example.com را تنظيم مي كنيد ، اما بايد اين نام را با نام دامنه خود جايگزين كنيد.
Apache در CentOS 8 داراي يك هاست مجازي است كه بصورت پيش فرض فعال شده است تا براي ارائه اسناد از دايركتوري / var / www / html پيكربندي شود. اگرچه براي يك سايت واحد به خوبي كار مي كند ، اگر هاست چندين سايت باشيد ، مي تواند مشكل آفرين شود. به جاي تغيير / var / www / html ، يك ساختار دايركتوري را در / var / www براي سايت example.com ايجاد خواهيد كرد ، و / var / www / html را در جاي خود به عنوان دايركتوري پيش فرض قرار مي دهيد كه در صورتي كه درخواست كلاينت با هيچ سايت ديگري مطابقت نداشت، ارائه شود.
دايركتوري html را براي example.com به شرح زير بسازيد ، از پرچم -p براي ايجاد دايركتوري هاي لازم استفاده كنيد:
⦁ $ sudo mkdir -p /var/www/example.com/html

دايركتوري ديگري را براي ذخيره فايل هاي ورود به سايت ايجاد كنيد:
⦁ $ sudo mkdir -p /var/www/example.com/log

سپس ، مالكيت دايركتوري html را به متغير محيطي $ USER اختصاص دهيد:
⦁ $ sudo chown -R $USER:$USER /var/www/example.com/html

مطمئن شويد كه ريشه وب شما داراي مجموعه مجوزهاي پيش فرض است
⦁ $ sudo chmod -R 755 /var/www

سپس ، با استفاده از vi يا ويرايشگر مورد علاقه خود ، صفحه index.html نمونه را ايجاد كنيد:
⦁ $ sudo vi /var/www/example.com/html/index.html

i را فشار دهيد تا به حالت INSERT برويد و نمونه HTML زير را به فايل اضافه كنيد:
/var/www/example.com/html/index.html


Welcome to Example.com!


Success! The example.com virtual host is working!



با فشردن ESC ، تايپwq و زدن ENTER فايل را ذخيره كنيد و ببنديد.
با وجود دايركتوري سايت و نمونه فايل درج شده ، تقريباً آماده ايجاد فايل هاي هاست مجازي هستيد. فايلهاي هاست مجازي پيكربندي سايتهاي جداگانه شما را مشخص مي كنند و به سرور مجازي وب Apache نشان مي دهند كه چگونه به درخواستهاي دامنه مختلف پاسخ دهد.
قبل از ايجاد هاست مجازي خود ، بايد يك دايركتوري sites-available ايجاد كنيد تا آنها را در آن ذخيره كنيد. همچنين دايركتوري sites-enabled ايجاد خواهيد كرد كه به Apache مي گويد يك هاست مجازي آماده خدمت به بازديد كنندگان است. دايركتوري sites-enabled پيوندهاي سمبوليكي را براي هاست هاي مجازي كه مي خواهيم منتشر كنيم ، نگه مي دارد. هر دو دايركتوري را با دستور زير ايجاد كنيد:
⦁ $ sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

در مرحله بعد ، به Apache مي گوييد كه در دايركتوري sites-enabled به دنبال هاست هاي مجازي باشد. براي دستيابي به اين هدف ، فايل پيكربندي اصلي Apache را با استفاده از vi يا ويرايشگر متن مورد علاقه خود ويرايش كنيد و خطي را اضافه كنيد كه يك دايركتوري اختياري براي فايل هاي پيكربندي اضافي اعلام ميكند:
⦁ $ sudo vi /etc/httpd/conf/httpd.conf

براي رفتن به انتهاي فايل ، G بزرگ را فشار دهيد. سپس i را فشار دهيد تا به حالت INSERT برويد و خط زير را به انتهاي فايل اضافه كنيد:
/etc/httpd/conf/httpd.conf

# Supplemental configuration
#
# Load config files in the “/etc/httpd/conf.d” directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
پس از افزودن آن خط ، فايل را ذخيره كنيد و ببنديد. اكنون كه دايركتوري هاست مجازي خود را در اختيار داريد ، فايل هاست مجازي خود را ايجاد خواهيد كرد.
با ايجاد يك فايل جديد در دايركتوري سايتهاي موجود شروع كنيد:
⦁ $ sudo vi /etc/httpd/sites-available/example.com.conf

بلوك پيكربندي زير را اضافه كنيد ، و دامنه example.com را به نام دامنه خود تغيير دهيد:
/etc/httpd/sites-available/example.com.conf

ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/requests.log combined

با اين كار به Apache مي گوييد كه چگونه مستقيماً ريشه اي را كه در دسترس اسناد وب قرار دارد ، پيدا كند. همچنين به Apache مي گويد كه خطا و درخواست ورود به اين سايت خاص را كجا ذخيره كند.
پس از اتمام فايل را ذخيره كنيد و ببنديد.
اكنون كه فايلهاي هاست مجازي را ايجاد كرده ايد ، آنها را فعال خواهيد كرد تا Apache بداند كه مي تواند آنها را در اختيار بازديد كنندگان قرار دهد. براي انجام اين كار ، براي هر هاست مجازي در دايركتوري sites-enabled ، يك لينك نمادين ايجاد كنيد:
⦁ sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

هاست مجازي شما اكنون پيكربندي شده و آماده ارائه مطالب است. قبل از راه اندازي مجدد سرويس Apache ، مطمئن شويد كه SELinux سياست هاي صحيحي را براي هاست هاي مجازي شما اعمال كرده است.
مرحله 5 – تنظيم مجوزهاي SELinux براي هاست هاي مجازي (توصيه مي شود)
SELinux يك ماژول امنيتي هسته لينوكس است كه امنيت سيستم هاي لينوكس را افزايش مي دهد. CentOS 8 به SELinux پيكربندي شده براي كار با تنظيمات پيش فرض Apache مجهز شده است. از آنجا كه پيكربندي پيش فرض را با تنظيم دايركتوري ورود به سيستم سفارشي در فايل پيكربندي هاست مجازي تغيير داده ايد ، در صورت تلاش براي شروع سرويس Apache ، خطايي دريافت خواهيد كرد. براي رفع اين مشكل ، شما بايد رويكردهاي SELinux را به روز كنيد تا Apache بتواند در فايل هاي لازم بنويسد.
روشهاي مختلفي براي تنظيم رويكردها بر اساس نياز محيط شما وجود دارد زيرا SELinux به شما اجازه مي دهد سطح امنيتي خود را شخصي سازي كنيد. اين مرحله شامل دو روش تنظيم رويكردهاي Apache خواهد بود: جهاني و در يك دايركتوري خاص. تنظيم رويكرد در دايركتوري ها ايمن تر است ، و بنابراين رويكرد توصيه شده ميباشد.
تنظيم رويكردهاي Apache به صورت جهاني
تنظيم رويكردApache به صورت جهاني به SELinux مي گويد كه با استفاده از بولي httpd_unified ، با تمام مراحل Apache به طور يكسان رفتار كند. اگرچه اين رويكرد راحت تر است ، اما سطح كنترل يكسان با رويكردي كه روي يك فايل يا رويكرد دايركتوري تمركز دارد به شما نمي دهد.
دستور زير را براي تنظيم رويكرد عمومي Apache اجرا كنيد:
⦁ $ sudo setsebool -P httpd_unified 1

دستور setsebool مقادير بولي SELinux را تغيير مي دهد. پرچم -P مقدار زمان بوت را به روز مي كند ، و اين تغيير در ريبوت ادامه مي يابد. httpd_unified بولي است كه به SELinux مي گويد در تمام مراحل Apache به يك صورت رفتار كند ، بنابراين شما آن را با مقدار 1 فعال مي كنيد.
تنظيم رويكردهاي Apache در يك دايركتوري
تنظيم مجوزهاي SELinux به صورت جداگانه براي دايركتوري /var/www/example.com/log به شما امكان كنترل بيشتر روي رويكردهاي Apache را مي دهد ، اما ممكن است به نگهداري بيشتري نيز نياز داشته باشد. از آنجا كه اين گزينه رويكردهاي تنظيم جهاني نيست ، لازم است به طور دستي نوع متن را براي هر دايركتوري جديد وارد كنيد كه در تنظيمات هاست مجازي شما مشخص شده است.
ابتدا نوع زمينه اي را كه SELinux به دايركتوري /var/www/example.com/log داده است بررسي كنيد:
⦁ $ sudo ls -dlZ /var/www/example.com/log/

اين دستور محتواي SELinux دايركتوري را ليست و چاپ مي كند. خروجي مشابه زير را دريافت خواهيد كرد:
Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

زمينه فعلي httpd_sys_content_t است ، كه به SELinux مي گويد فرآيند Apache فقط مي تواند فايل هاي ايجاد شده در اين دايركتوري را بخواند. در اين آموزش ، نوع متن دايركتوري /var/www/example.com/log را به آدرس httpd_log_t تغيير مي دهيد. اين حالت به Apache امكان مي دهد فايل هاي ورود به سيستم برنامه وب را توليد و پيوست كند:
⦁ $ sudo semanage fcontext -a -t httpd_log_t “/var/www/example.com/log(/.*)?”

در مرحله بعدي ، از دستور restorecon براي اعمال اين تغييرات استفاده كنيد و آنها را در ريبوت ادامه دهيد:
⦁ $ sudo restorecon -R -v /var/www/example.com/log

پرچم -R اين دستور را به صورت بازگشتي اجرا مي كند ، به اين معني كه هر فايل موجود را براي استفاده از متن جديد به روز مي كند. پرچم -v تغييرات متني كه فرمان ايجاد كرده را چاپ مي كند. خروجي زير را دريافت خواهيد كرد
Output
Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0
براي ديدن تغييرات مي توانيد يك بار ديگر محتوا را ليست كنيد:
⦁ $ sudo ls -dlZ /var/www/example.com/log/

خروجي نوع متن به روز شده را منعكس مي كند:
Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

اكنون كه دايركتوري /var/www/example.com/log از نوع httpd_log_t استفاده مي كند ، آماده آزمايش پيكربندي هاست مجازي خود هستيد.
مرحله 6 – آزمايش هاست مجازي (توصيه مي شود)
پس از به روزرساني متن SELinux با هر روشي ، Apache مي تواند در دايركتوري /var/www/example.com/log بنويسد. اكنون مي توانيد سرويس Apache را با موفقيت مجدداً راه اندازي كنيد:
⦁ $ sudo systemctl restart httpd

محتويات دايركتوري /var/www/example.com/log را ليست كنيد تا ببينيد آيا Apache فايلهاي ورود را ايجاد كرده است:
⦁ $ ls -lZ /var/www/example.com/log

تأييديه اي دريافت خواهيد كرد كه Apache قادر به ايجاد فايل هاي error.log و requests.log مشخص شده در پيكربندي هاست مجازي است:
Output
-rw-r–r–. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log
-rw-r–r–. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

اكنون كه هاست مجازي خود را تنظيم كرده و مجوزهاي SELinux را به روز كرده ايد ، Apache اكنون نام دامنه شما را ارائه مي دهد. مي توانيد با رفتن به http://example.com ، اين را آزمايش كنيد، كه بايد چيزي شبيه به اين را مشاهده كنيد:

اين عبارت تأييد مي كند كه هاست مجازي شما با موفقيت پيكربندي شده و محتوا را ارائه ميكند. مراحل 4 و 5 را تكرار كنيد تا هاست مجازي جديدي با مجوز SELinux براي دامنه هاي بيشتر ايجاد كنيد.
نتيجه
در اين آموزش وب سرور مجازي Apache را نصب و مديريت كرده ايد. اكنون كه سرور مجازي وب خود را نصب كرده ايد ، گزينه هاي بسياري را براي نوع محتوايي كه مي توانيد ارائه كنيد و فناوري هايي كه مي توانيد براي ايجاد يك تجربه بهتر استفاده نماييد ، در اختيار داريد.
اگر مي خواهيد يك برنامه كاربردي كاملتر ايجاد كنيد ، مي توانيد در اين مقاله به نحوه پيكربندي پشته LAMP در CentOS 8 مراجعه نماييد.

 

برچسب‌ها:Apachecentos 8HTTPS

نحوه نصب Drupal با Docker Compose

۵۷ بازديد

نحوه نصب Nginx در اوبونتو 20.04

۶۱ بازديد

Nginx يكي از محبوب ترين سرورهاي وب در جهان است و مسئوليت ميزباني برخي از بزرگترين و پر ترافيك ترين سايتها در اينترنت را دارد. يك انتخاب ساده است كه مي تواند به عنوان سرور مجازي وب يا پروكسي معكوس استفاده شود.
در اين راهنما ، ما در مورد چگونگي نصب Nginx در سرور مجازي Ubuntu 20.04 خود ، تنظيم فايروال ، مديريت فرايند Nginx و ايجاد بلوك هاي سرور مجازي براي ميزباني بيش از يك دامنه از يك سرور واحد بحث خواهيم كرد.
پيش نيازها
قبل از شروع اين راهنما ، بايد يك كاربر معمولي و غير ريشه با امتيازات sudo در سرور مجازي خود تنظيم كنيد. با پيروي از راهنماي ستاپ اوليه سرور مجازي براي اوبونتو 20.04 مي توانيد نحوه پيكربندي يك حساب كاربري معمولي را ياد بگيريد.
هنگامي كه يك حساب كاربري در دسترس داشتيد ، به عنوان كاربر غير ريشه خود وارد شويد.
مرحله 1 – نصب Nginx
از آنجا كه Nginx در مخازن پيش فرض اوبونتو موجود است ، مي توان آن را از طريق اين مخازن با استفاده از سيستم بسته بندي apt نصب كرد.
از آنجا كه اين اولين تعامل ما با سيستم بسته بندي apt در اين بخش است ، ديركتوري بسته هاي محلي خود را به روز مي كنيم تا به جديدترين ليست هاي بسته دسترسي داشته باشيم. پس از آن ، مي توانيم nginx را نصب كنيم:
⦁ $ sudo apt update

⦁ $ sudo apt install nginx
پس از پذيرش روال ، apt ، Nginx و هرگونه متعلقات لازم را براي سرور مجازي شما نصب مي كند.
مرحله 2 – تنظيم فايروال
قبل از آزمايش Nginx ، براي دسترسي به سرويس بايد نرم افزار فايروال تنظيم شود. Nginx پس از نصب ، خود را به عنوان سرويسي با ufw ثبت مي كند ، و اين باعث مي شود دسترسي Nginx ساده باشد.
با تايپ دستور زير تنظيمات برنامه را كه ufw مي داند چگونه با آن كار كند ليست كنيد:
⦁ $ sudo ufw app list

بايد ليستي از پروفايل هاي برنامه را دريافت كنيد:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

همانطور كه از خروجي نشان داده شده است ، سه پروفايل براي Nginx در دسترس است:
⦁ Nginx Full: اين پروفايل هر دو پورت 80 (ترافيك وب عادي و بدون رمزگذاري) و پورت 443 (ترافيك رمزگذاري شده TLS / SSL) را باز مي كند
⦁ Nginx HTTP: اين نمايه فقط پورت 80 را باز مي كند (ترافيك وب عادي و بدون رمزگذاري)
⦁ Nginx HTTPS:اين پروفايل فقط پورت 443 را باز مي كند (ترافيك رمزگذاري شده TLS / SSL)
توصيه مي شود محدودترين نمايه اي را كه هنوز امكان ترافيك تنظيم شده خود را فراهم مي كند ، فعال كنيد. در حال حاضر ، ما فقط نياز به ترافيك در پورت 80 داريم.
مي توانيد آن را با تايپ كردن دستور زير فعال كنيد:
⦁ $ sudo ufw allow ‘Nginx HTTP’

مي توانيد تغيير را با تايپ اين دستور تأييد كنيد:
⦁ $ sudo ufw status

خروجي نشان خواهد داد كه ترافيك HTTP مجاز است:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

مرحله 3 – بررسي سرور مجازي وب خود
در پايان مراحل نصب ، اوبونتو 20.04 ، Nginx را شروع مي كند. وب سرور مجازي اكنون راه اندازي و در حال كار ميباشد.
ما مي توانيم با تايپ كردن اين دستور زير سيستم شروع كار systemd  را بررسي كنيم تا مطمئن شويم كه اين سرويس در حال اجراست:
⦁ $ systemctl status nginx

Output
● nginx.service – A high performance web server and a reverse غير مجاز مي باشد server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process

همانطور كه با اين دستور تأييد شده است ، اين سرويس با موفقيت شروع به كار نموده است. با اين حال ، بهترين راه براي آزمايش آن، درخواست صفحه از Nginx است.
شما مي توانيد با رفتن به آدرس IP سرور مجازيخود به صفحه فرود پيش فرض Nginx دسترسي داشته باشيد تا تأييد كنيد كه نرم افزار به درستي كار مي كند. اگر آدرس IP سرور مجازي خود را نمي دانيد ، مي توانيد آن را با استفاده از ابزار icanhazip.com پيدا كنيد ، كه آدرس IP عمومي شما را همانطور كه از يك مكان ديگر در اينترنت دريافت كرده است به شما مي دهد:
⦁ $ curl -4 icanhazip.com

اكنون كه آدرس IP سرور مجازي خود را داريد ، آن را در نوار آدرس مرورگر خود وارد كنيد:
http://your_server_ip

بايد صفحه فرود پيش فرض Nginx را دريافت كنيد:

اگر در اين صفحه هستيد ، سرور مجازي شما به درستي كار مي كند و آماده مديريت است.
مرحله 4 – مديريت فرايند Nginx
اكنون كه سرور مجازي وب خود را فعال كرده ايد ، اجازه دهيد برخي دستورات مديريت پايه را مرور كنيم.
براي متوقف كردن سرور مجازي وب خود ، تايپ كنيد:
⦁ $ sudo systemctl stop nginx

براي شروع سرور مجازي وب هنگام متوقف بودن ، تايپ كنيد:
⦁ $ sudo systemctl start nginx

براي متوقف كردن و شروع مجدد سرويس ، تايپ كنيد:
⦁ $ sudo systemctl restart nginx

اگر فقط تغييرات پيكربندي را انجام مي دهيد ، Nginx اغلب مي تواند بدون افت اتصالات مجدد لود شود. براي انجام اين كار ، تايپ كنيد:
⦁ $ sudo systemctl reload nginx

به طور پيش فرض ، Nginx به گونه اي پيكربندي شده است تا وقتي سرور مجازي بوت ميشود ، به طور خودكار شروع گردد. اگر اين چيزي نيست كه شما مي خواهيد ، مي توانيد با تايپ كردن دستور زير، اين رفتار را غيرفعال كنيد:
⦁ $ sudo systemctl disable nginx

براي فعال كردن مجدد سرويس براي راه اندازي در هنگام بوت شدن ، مي توانيد اين دستور را تايپ كنيد:
⦁ $ sudo systemctl enable nginx

اكنون دستورات مديريت پايه را آموخته ايد و بايد براي پيكربندي سايت آماده باشيد تا ميزبان بيش از يك دامنه باشد.
مرحله 5 – تنظيم بلوك هاي سرور مجازي (توصيه مي شود)
هنگام استفاده از وب سرور مجازي Nginx ، مي توان از بلوك هاي سرور مجازي (مشابه هاست هاي مجازي در Apache) براي كپسوله كردن جزئيات پيكربندي و ميزباني بيش از يك دامنه از يك سرور مجازي واحد استفاده كرد. دامنه اي به نام your_domain.com را راه اندازي مي كنيم ، اما شما بايد اين نام را با نام دامنه خود جايگزين كنيد.
Nginx در اوبونتو 20.04 داراي يك بلوك سرور مجازي است كه بصورت پيش فرض فعال شده است تا براي ارائه اسناد از يك ديركتوري در / var / www / html پيكربندي شود. اگرچه براي يك سايت واحد به خوبي كار مي كند ، اگر ميزبان چندين سايت باشيد ، مي تواند مشكل ساز شود. به جاي تغيير / var / www / html ، بياييد يك ساختار دايركتوري در / var / www براي سايت your_domain.com ايجاد كنيم ، و / var / www / html را به عنوان دايركتوري پيش فرض رها كنيم تا در صورت عدم تطابق درخواست كلاينت با هيچ سايت ديگر، اين ديركتوري ارائه شود.
دايركتوري براي your_domain.com را به شرح زير ايجاد كنيد ، از پرچم -p براي ايجاد هرگونه ديركتوري parent لازم
استفاده نماييد.
⦁ sudo mkdir -p /var/www/your_domain/html

سپس ، مالكيت دايركتوري را به متغير محيط USER $ اختصاص دهيد:
⦁ sudo chown -R $USER:$USER /var/www/your_domain/html

اگر مقدار umask خود را تغيير نداده باشيد ، مجوزهاي ريشه وب شما بايد صحيح باشد كه مجوزهاي پيش فرض فايل را تعيين مي كند. براي اطمينان از صحيح بودن مجوزهاي تان و اجازه دادن به مالك براي خواندن ، نوشتن و اجراي فايل ها در حالي كه فقط امكان خواندن و اجراي مجوزها براي گروه ها و ديگران مجاز است ، مي توانيد دستور زير را وارد كنيد:
⦁ $ sudo chmod -R 755 /var/www/your_domain

سپس ، با استفاده از nano يا ويرايشگر مورد علاقه خود ، صفحه index.html نمونه را ايجاد كنيد:
⦁ $ nano /var/www/your_domain/html/index.html

در داخل ، نمونه HTML زير را اضافه كنيد:
/var/www/your_domain/html/index.html


Welcome to your_domain!


Success! The your_domain server block is working!



پس از اتمام ، فايل را با تايپ كردن CTRL و X و سپس Y و ENTER ذخيره كنيد.
براي اينكه Nginx بتواند اين محتوا را ارائه دهد ، لازم است يك بلوك سرور مجازي را با دستورالعمل هاي درست ايجاد كنيد. به جاي تغيير مستقيم پيكربندي پيش فرض ، بياييد فايل جديدي را در /etc/nginx/sites-available/your_domain.com ايجاد كنيم:
⦁ $ sudo nano /etc/nginx/sites-available/your_domain

در بلوك پيكربندي زير پيست كنيد كه مشابه پيش فرض است ، اما براي ديركتوري جديد و نام دامنه به روز ميباشد:
/etc/nginx/sites-available/your_domain
server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}

توجه كنيد كه پيكربندي ريشه را به ديركتوري جديد و server_name را به نام دامنه خود به روز كرده ايم.
در مرحله بعد ، اجازه خواهيم داد فايل را با ايجاد پيوندي از آن به ديركتوري sites-enabled ، كه Nginx هنگام راه اندازي از آن مي خواند ، فعال كنيم:
⦁ $ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

اكنون دو بلوك سرور مجازي فعال و پيكربندي شده اند تا به درخواست ها بر اساس دستورالعمل هاي listen و server_name آنها پاسخ دهند (مي توانيد درباره نحوه پردازش Nginx اين دستورالعمل ها در اين لينك بيشتر بخوانيد):
⦁ your_domain.com: به درخواست هاي your_domain.com و www.your_domain.com پاسخ خواهد داد.
⦁ •default: به هر درخواست در پورت 80 كه با دو بلوك ديگر مطابقت ندارد پاسخ خواهد داد.
براي جلوگيري از بروز مشكل حافظه كه مي تواند ناشي از افزودن نام سرور مجازي اضافي باشد ، لازم است يك مقدار واحد را در فايل /etc/nginx/nginx.conf تنظيم كنيد. فايل را باز كنيد:
⦁ $ sudo nano /etc/nginx/nginx.conf

دستورالعمل server_names_hash_bucket_size را پيدا كنيد و نماد # را حذف كنيد تا خط را باطل كنيد. اگر از nano استفاده مي كنيد ، مي توانيد با فشار دادن CTRL و w به سرعت كلمات موجود در فايل را جستجو كنيد.
/etc/nginx/nginx.conf

http {

server_names_hash_bucket_size 64;

}

پس از اتمام فايل را ذخيره كنيد و ببنديد.
سپس ، بررسي كنيد تا مطمئن شويد كه هيچ خطاي نحوي در هيچ يك از فايل هاي Nginx شما وجود ندارد:
⦁ $ sudo nginx -t

اگر مشكلي وجود ندارد ، Nginx را ريستارت كنيد تا تغييرات خود را فعال نماييد:
⦁ $ sudo systemctl restart nginx

Nginx اكنون بايد نام دامنه شما را ارائه دهد. مي توانيد با رفتن به http://your_domain.com ، جايي كه بايد چيزي شبيه به اين تصوير را مشاهده كنيد ، اين فرآيند را آزمايش كنيد:

مرحله ششم – آشنايي با فايل ها و دستورالعمل هاي مهم Nginx
اكنون كه مي دانيد چگونه خود سرويس Nginx را مديريت كنيد ، بايد چند دقيقه وقت بگذاريد تا با چند ديركتوري و فايل مهم آشنا شويد.
محتوا
⦁ / var / www / html: محتواي وب واقعي ، كه به طور پيش فرض فقط شامل صفحه پيش فرض Nginx است كه قبلاً ديديد ، از ديركتوري / var / www / html ارائه مي شود. با تغيير فايل هاي پيكربندي Nginx قابل تغيير است.
پيكربندي سرور
⦁ / etc / nginx: ديركتوري پيكربندي Nginx . همه فايل هاي پيكربندي Nginx در اينجا قرار دارند.
⦁ /etc/nginx/nginx.conf: فايل اصلي پيكربندي Nginx . مي تواند براي ايجاد تغيير در تنظيمات جهاني Nginx اصلاح شود.
⦁ / etc / nginx / sites-available /: دايركتوري كه مي توان در آن بلوك هاي سرور مجازي هر سايت ذخيره شود. Nginx از فايل هاي پيكربندي موجود در اين ديركتوري استفاده نمي كند مگر اينكه به ديركتوري sites-enabled مرتبط باشند. به طور معمول ، تمام پيكربندي بلوك سرور مجازي در اين دايركتوري انجام مي شود ، و سپس با پيوند دادن به دايركتوري ديگر فعال مي شود.
⦁ / etc / nginx / sites-enabled /: دايركتوري كه در آن بلوكهاي سرور مجازي فعال در هر سايت ذخيره ميشوند. به طور معمول ، با پيوند دادن به فايلهاي پيكربندي موجود در ديركتوري sites-available ايجاد مي شوند.
⦁ / etc / nginx / snippets: اين ديركتوري شامل قطعات پيكربندي است كه مي توان در جايي ديگر در پيكربندي Nginx گنجانيد. بخش هاي پيكربندي قابل تكرار بالقوه گزينه هاي خوبي براي تجزيه قطعات هستند.
ورودهاي مربوط به سرور
⦁ /var/log/nginx/access.log: هر درخواستي به سرور مجازي وب شما در اين فايل log ثبت مي شود ، مگر اينكه Nginx به گونه اي پيكربندي شده باشد كه كاري غير از اين انجام دهد.
⦁ /var/log/nginx/error.log: هرگونه خطاي Nginx در اين ورود ثبت مي شود.
نتيجه
اكنون كه سرور مجازي وب خود را نصب كرده ايد ، گزينه هاي بسياري براي نوع محتوا و فناوري هايي كه مي خواهيد از آنها استفاده كنيد در اختيار داريد تا يك تجربه غني تر ايجاد نماييد.
اگر مايليد يك پشته برنامه كامل تر بسازيد، مقاله نحوه نصب پشته LEMP در اوبونتو 20.4 را بررسي كنيد.

 

برچسب‌ها:NginxTLS / SSLUbuntu 20.04فايروال

7 مورد از اقدامات امنيتي براي محافظت از سرورهاي شما

۵۹ بازديد

هنگام راه اندازي زيرساخت هاي cloud ، به روزرساني برنامه ها اغلب دغدغه اصلي شما خواهد بود. با اين حال ، عملكرد صحيح برنامه هاي كاربردي شما بدون پرداختن به نيازهاي امنيتي زيرساخت هاي تان مي تواند عواقب مخربي را در پي داشته باشد ، بنابراين بهتر است كه اين مورد را به عنوان بخشي از راه اندازي اوليه زيرساخت خود در نظر بگيريد.
در اين راهنما ، ما برخي از شيوه هاي اساسي امنيتي را براي پشتيباني از شما در پيكربندي و تنظيم زيرساخت ها ، انجام خواهيم داد.
كليدهاي SSH
SSH يا همان پوسته ايمن، پروتكل رمزگذاري شده است كه براي اداره و برقراري ارتباط با سرور مجازي ها استفاده مي شود. هنگام كار با يك سرور مجازي ، احتمالاً بيشتر وقت خود را در يك بخش ترمينال متصل به سرور مجازي خود از طريق SSH مي گذرانيد. گزينه هاي امن تر براي ورود به سيستم مبتني بر رمز عبور ، كليدهاي رمزنگاري SSH روشي مطمئن براي ورود به سرور مجازي شما فراهم مي كنند و براي همه كاربران توصيه مي شود.
با استفاده از كليدهاي SSH ، يك جفت كليد خصوصي و عمومي به منظور احراز هويت ايجاد مي شود. كليد خصوصي توسط كاربر مخفي و ايمن نگه داشته مي شود ، در حالي كه مي توان كليد عمومي را به اشتراك گذاشت.

براي پيكربندي احراز هويت كليد SSH ، بايد كليد عمومي كاربر را روي يك سرور مجازي در يك ديركتوري مخصوص قرار دهيد. هنگامي كه كاربر به سرور مجازي متصل ميشود، سرور مجازي از شما مي خواهد اثبات كنيد كه كلاينت داراي كليد خصوصي مرتبط است. كلاينت SSH براي تأييد اعتبار مالكيت، از كليد خصوصي استفاده مي كند. سرور مجازي سپس به كلاينت اجازه مي دهد بدون پسورد وصل شود. براي كسب اطلاعات بيشتر در مورد چگونگي عملكرد كليدهاي SSH ، مقاله ما درمورد درك فرآيند رمزگذاري و اتصال SSH را بررسي كنيد.
كليدهاي SSH چگونه امنيت را تقويت مي كنند؟
با SSH ، هر نوع تأييد هويت – از جمله تأييد گذرواژه – كاملاً رمزگذاري ميشود. با اين حال ، هنگامي كه ورود به سيستم مبتني بر رمز عبور مجاز است ، كاربران مخرب مي توانند براي دستيابي به سرور مجازي ، خصوصاً با سرور مجازي هايي كه داراي آدرس IP عمومي هستند ، بارها و بارها تلاش كنند. با داشتن قدرت محاسباتي مدرن ، مي توان با خودكار كردن اين فرآيند ها و امتحان رمزهاي پي در پي پسورد درست را پيدا كرد.
تنظيم تأييد اعتبار كليدي SSH به شما امكان مي دهد تأييد هويت مبتني بر گذرواژه را غيرفعال كنيد. كليدهاي SSH به طور كلي تعداد بيشتري بيت هاي داده نسبت به رمز عبور دارند ، به اين معني كه تركيب هاي احتمالي بسيار بيشتري وجود دارد كه يك حمله كننده مجبور به اجراي آن ها باشد. بسياري از الگوريتم هاي كليد SSH توسط سخت افزار محاسباتي مدرن غيرقابل ركورد محسوب مي شوند ، زيرا به مدت زمان زيادي براي اجراي همه حالت هاي قابل اجرا احتياج دارند.
نحوه اجراي كليدهاي SSH
كليدهاي SSH روش پيشنهادي براي ورود از راه دور به هر سرور مجازي لينوكس است. يك جفت كليد SSH در دستگاه محلي شما ايجاد مي شود و مي توانيد طي چند دقيقه كليد عمومي را به سرور مجازي هاي خود منتقل كنيد.
براي كسب اطلاعات در مورد نحوه تنظيم كليدها ، يكي از راهنماهاي ما را در مورد SSH ، مانند نحوه تنظيم كليدهاي SSH در اوبونتو 20.04 را دنبال كنيد. اگر هنوز هم احراز هويت مبتني بر رمز عبور را ميپسنديد ، براي محدود كردن حدس هاي رمزعبور ، راهكاري مانند fail2ban را روي سرور مجازي هاي خود در نظر بگيريد.
فايروال ها
فايروال بخشي از نرم افزار است كه كنترل مي كند چه سرويس هايي در معرض شبكه قرار دارند. اين به معناي سد كردن يا محدود كردن دسترسي به هر پورت به جز مواردي است كه بايد در دسترس عموم باشد.

در يك سرور مجازي معمولي ، خدمات متعددي به طور پيش فرض اجرا مي شوند. اينها را مي توان در گروههاي زير طبقه بندي كرد:
• خدمات عمومي كه براي هر كسي از طريق اينترنت ، غالباً به صورت ناشناس ، قابل دسترسي است. نمونه آن سرور مجازي وب است كه ممكن است به سايت شما دسترسي داشته باشد.
• خدمات خصوصي كه فقط بايد توسط گروه انتخابي از حسابهاي مجاز يا از مكانهاي خاص به آنها دسترسي پيدا كنيد. يك مثال ممكن ميتواند پنل كنترل بانك اطلاعاتي باشد.
• خدمات داخلي كه فقط بايد از درون خود سرور مجازي قابل دسترسي باشند ، بدون آنكه اين سرويس را در معرض ديد خارجي قرار دهند. به عنوان مثال ، ممكن است يك پايگاه داده باشد كه فقط اتصالات محلي را مي پذيرد.
فايروال ها مي توانند اطمينان حاصل كنند كه دسترسي به نرم افزار شما مطابق با مقوله هاي بالا با درجه هاي مختلف گرانولاريتي محدود شده است. خدمات عمومي مي توانند براي همه باز و در دسترس قرار بگيرند و خدمات خصوصي براساس معيارهاي مختلف از جمله انواع اتصال محدود شوند. خدمات داخلي مي توانند براي دنياي خارج كاملاً غيرقابل دسترس شوند. براي پورت هايي كه مورد استفاده قرار نمي گيرند ، دسترسي در اكثر پيكربندي ها كاملاً مسدود شده است.
فايروال ها چگونه امنيت را تقويت مي كنند؟
فايروال ها بخش اساسي هر پيكربندي سرور مجازي هستند. حتي اگر خدمات شما خود داراي ويژگي هاي امنيتي باشند يا به رابط هايي كه مي خواهيد روي آنها اجرا كنيد محدود شده باشند ، يك فايروال به عنوان لايه محافظت بيشتر عمل مي كند.
يك فايروال به درستي تنظيم شده ، دسترسي به همه چيز را به جز سرويس هاي خاصي كه بايد باز بمانند ، محدود مي كند. قرار گرفتن در معرض تنها چند قطعه نرم افزار ، سطح حمله سرور مجازي شما را كاهش مي دهد ، و مؤلفه هايي را كه در معرض سوء استفاده قرار مي گيرند ، محدود مي كند.
نحوه اجراي فايروال ها
فايروال هاي بسياري براي سيستم هاي لينوكس در دسترس هستند ، كه برخي از آنها پيچيده تر از سايرين ميباشند . به طور كلي ، راه اندازي فايروال فقط چند دقيقه طول مي كشد و فقط در هنگام تنظيم اوليه سرور مجازي شما يا هنگام تغيير در آنچه در رايانه شما ارائه مي شود ، بايد اين اتفاق بيفتد. در اينجا چند گزينه براي به روز رساني و اجرا وجود دارد:
⦁ UFW ، يا فايروال غير پيچيده ، به طور پيش فرض در برخي توزيع هاي لينوكس مانند اوبونتو نصب شده است. يك فايروال محبوب ، كه مي توانيد در مورد آن در آموزش نحوه تنظيم فايروال با UFW در اوبونتو 18.04 بيشتر اطلاعات كسب كنيد.
⦁ چگونه مي توان فايروال را با استفاده از Iptables در Ubuntu 14.04 تنظيم كرد
⦁ نحوه نصب و پيكربندي فايروال سرور مجازي (CSF) در اوبونتو
شبكه هاي VPC
شبكه هاي Virtual Private Cloud (VPC) شبكه هاي خصوصي براي منابع زيرساختي شما هستند. شبكه هاي VPC ارتباط امن تري بين منابع برقرار مي كنند زيرا رابط هاي شبكه از اينترنت عمومي و ديگر شبكه هاي VPC در Cloud غيرقابل دسترسي هستند.
چگونه شبكه هاي VPC امنيت را بالا ميبرند
استفاده از شبكه هاي خصوصي به جاي عمومي براي ارتباطات داخلي تقريباً هميشه ترجيح داده مي شود ، زيرا شبكه هاي VPC به شما امكان مي دهد گروه هايي از منابع را در شبكه هاي خصوصي خاص ايزوله كنيد. شبكه هاي VPC فقط با استفاده از رابط هاي شبكه خصوصي خود از طريق شبكه داخلي به يكديگر متصل مي شوند ، اين بدان معناست كه ترافيك بين منابع شما از طريق اينترنت عمومي هدايت نمي شود كه در آن ممكن است در معرض حمله يا رهگيري قرار گيرد. شبكه هاي VPC همچنين مي توانند براي جداسازي محيط هاي اجرايي استفاده شوند.
علاوه بر اين ، مي توانيد گيت هاي اينترنت را به عنوان تنها نقطه دسترسي بين منابع شبكه VPC و اينترنت عمومي خود تنظيم كنيد و به شما امكان كنترل و ديد بيشتري در ترافيك عمومي متصل به منابع خود مي دهد.
نحوه اجراي شبكه هاي VPC
بيشتر ارائه دهندگان زيرساخت هاي cloud اين امكان را به شما مي دهند تا منابع خود را به يك شبكه VPC در داخل ديتاسنترهاي خود اضافه كنيد.
پيكربندي دستي شبكه خصوصي شما مي تواند به پيكربندي پيشرفته سرور مجازي و دانش شبكه نياز داشته باشد.
بازرسي سرويس
بخش عمده اي از امنيت شامل تجزيه و تحليل سيستم هاي ما ، درك سطوح حمله موجود و قفل كردن مولفه ها به بهترين شكل ممكن است.
بازرسي سرويس (Service auditing) فرايندي است براي كشف سرويس هايي كه روي سرور مجازي هاي زيرساخت شما اجرا مي شوند. اغلب ، سيستم عامل پيش فرض براي اجراي برخي خدمات در هنگام بوت تنظيم مي شود. نصب نرم افزار اضافي گاهي اوقات مي تواند متعلقاتي را كه به صورت خودكار شروع به كار مي كنند به خود جلب كند.

بازرسي سرويس راهي است براي دانستن اينكه چه خدماتي روي سيستم شما اجرا مي شود ، از كدام پورت ها براي ارتباط استفاده مي كنند و پروتكل هاي پذيرفته شده چيست. اين اطلاعات مي تواند به شما در پيكربندي تنظيمات فايروال كمك كند.
بازرسي سرويس چگونه امنيت را تقويت مي كند؟
سرور مجازي ها فرآيندهاي بسياري را براي اهداف داخلي و مديريت كلاينت هاي خارجي شروع مي كنند. هر يك از اين موارد سطح حمله گسترده اي را براي كاربران مخرب نشان مي دهد. هرچه سرويس هاي در حال اجراي بيشتري داشته باشيد احتمال آسيب پذيري موجود در نرم افزار قابل دسترسي شما بالاتر است.
هنگامي كه اطلاعات كافي درباره خدمات شبكه در حال اجرا در دستگاه خود داشتيد ، مي توانيد شروع به تجزيه و تحليل اين سرويس ها كنيد. برخي از سؤالاتي كه براي هر يك از خود ميپرسيد عبارتند از:
• آيا اين سرويس بايد اجرا شود؟
• آيا اين سرويس با رابط هاي شبكه اي اجرا مي شود كه نبايد در آن اجرا شود ؟
⦁ آيا بايد به يك IP اختصاص داده شود؟
• آيا قوانين فايروال من ايجاد شده اند تا ترافيك قانوني را به اين خدمات بدهد؟
• آيا قوانين فايروال من ترافيك غيرقانوني را مسدود مي كند؟
• آيا من روشي براي دريافت هشدارهاي امنيتي درباره آسيب پذيري براي هر يك از اين خدمات دارم؟
هنگام پيكربندي هر سرور مجازي جديد در زيرساخت هاي شما اين نوع بررسي سرويس يك روش استاندارد است. همچنين انجام بررسي هاي خدمات هر 6 ماه يكبار به شما كمك مي كند تا هرگونه خدماتي كه پيكربندي هايي آن ها ناخواسته تغيير كرده اند را پيدا كنيد.
نحوه انجام مميزي هاي سرويس
براي انجام يك مميزي اوليه سرويس ، مي توانيد با استفاده از دستور netstat ببينيد كه كدام سرويس ها پورت را در هر رابط گوش مي دهند. فرمان مثال كه نام برنامه ، PID و آدرسهايي را كه براي گوش دادن به ترافيك TCP و UDP استفاده مي شود نشان مي دهد به اين شرح است:
⦁ $ sudo netstat -plunt

خروجي دريافت خواهيد كرد كه اينگونه ميباشد:
Output
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 887/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 919/nginx
tcp6 0 0 :::22 :::* LISTEN 887/sshd
tcp6 0 0 :::80 :::* LISTEN 919/nginx

ستونهاي اصلي كه مورد توجه شما هستند ستونهاي نام Proto ، Local Address و PID / Program هستند. اگر آدرس 0.0.0.0 باشد ، خدمات در كليه رابط هاي شبكه اتصالات را مي پذيرند.
به روزرساني هاي بدون نظارت
حفظ به روزرساني در سرور مجازي مي تواند ابزاري قدرتمند براي امنيت باشد. سرور مجازي هاي unpatched عامل اكثر ناسازگاري ها هستند ، اما به روزرساني منظم مي تواند از آسيب پذيري جلوگيري كند.
به روزرساني هاي معمول به يك ادمين نياز دارند تا به روز رساني بسته هاي مختلف روي سرور مجازي را به صورت دستي بررسي و نصب كند. اين كار مي تواند وقت گير باشد و ممكن است برخي از بروزرساني هاي اصلي فراموش شوند يا از دست بروند. در مقابل ، به روزرساني هاي بدون نظارت به سيستم اجازه مي دهند تا اكثر بسته ها را به صورت خودكار بروزرساني كنيد.
چگونه به روزرساني هاي بدون نظارت امنيت را تقويت مي كنند؟
اجراي به روزرساني هاي بدون نظارت سطح تلاش لازم براي ايمن نگه داشتن سرور مجازي شما و كوتاه كردن مدت زماني كه سرور مجازي شما در برابر يك اشكال شناخته شده آسيب پذير است را كاهش مي دهد. حتي با به روزرساني هاي بسيار منظم ، اشكال زدايي در روزهاي پنج شنبه يا جمعه به اين معني است كه شما احتمالاً حداقل تا دوشنبه unpatched و آسيب پذير خواهيد بود.
در رابطه با بازرسي سرويس كه قبلاً گفته شد ، انجام به روزرساني خودكار مي تواند قرار گرفتن در معرض حملات را به شدت كمتر كند و مدت زمان صرف شده براي حفظ امنيت سرور مجازي شما را كاهش دهد.
نحوه به روزرساني هاي بدون نظارت
اكثر توزيعهاي ر اكنون به روزرساني هاي بدون نظارت را به عنوان گزينه اي ميبينند. به عنوان مثال ، در اوبونتو يك ادمين مي تواند اين دستور را اجرا كند:
⦁ $ sudo apt install unattended-upgrades

براي اطلاعات بيشتر در مورد نحوه اجراي به روزرساني هاي بدون نظارت ، راهنماهاي مربوط به Ubuntu و Fedora را بررسي كنيد.
توجه: اين مكانيزم ها فقط نرم افزار به روزرساني خودكار را از طريق مدير بسته سيستم شما نصب مي كنند. اطمينان حاصل كنيد كه هر نرم افزار اضافي كه ممكن است در حال اجرا است (به عنوان مثال برنامه هاي وب) يا براي به روزرساني هاي خودكار پيكربندي شده اند يا به صورت دستي و بطور مرتب چك مي شوند.
غيرفعال كردن ايندكس هاي ديركتوري
بيشتر سرور مجازي هاي وب به طور پيش فرض پيكربندي شده اند تا وقتي كاربر به دايركتوري كه فاقد فايل ايندكس است دسترسي پيدا ميكند ، ايندكس هاي ديركتوري را نمايش دهد. به عنوان مثال ، اگر مي خواهيد دايركتوري به نام دانلودها در وب سرور مجازي خود و بدون پيكربندي اضافي ايجاد كنيد ، همه فايل ها براي هر كسي كه در ديركتوري جستجو مي كند قابل مشاهده است. براي بسياري از موارد ، يك نگراني امنيتي نيست ، اما بسيار محتمل است كه چيزي محرمانه در معرض نمايش قرار گيرد. به عنوان مثال ، اگر مي خواهيد براي وب سايت خود ديركتوري ايندكس را در سرور مجازي وب خود ايجاد كنيد ، اين ديركتوري ممكن است حاوي فايل براي صفحه اصلي وب سايت شما و يك فايل پيكربندي شامل اعتبارات براي پايگاه داده backend وب سايت باشد. بدون غيرفعال كردن ايندكس هاي ديركتوري ، هر دو فايل در پوشه براي هر كسي كه ديركتوري را سرچ مي كند قابل مشاهده است.
چگونه غيرفعال كردن ايندكس ديركتوري امنيت را افزايش مي دهد؟
ايندكس هاي ديركتوري اهداف قانوني دارند ، اما اغلب ناخواسته فايل ها را در معرض ديد بازديد كنندگان قرار مي دهند. غيرفعال كردن ايندكس هاي ديركتوري به عنوان پيش فرض براي سرور مجازي وب شما خطر از دست دادن داده هاي تصادفي ، نشت يا بهره برداري را با ساختن فايل هاي ديركتوري براي بازديدكنندگان غيرفعال مي كند. اگر بازديد كنندگان در ديركتوري وجود داشته باشند ، بازهم مي توانند به فايل ها دسترسي پيدا كنند ، اما غيرفعال كردن ايندكسينگ باعث مي شود يافتن فايل ها به طور ناخواسته دشوارتر شوند.
چگونه ايندكس هاي دايركتوري را غيرفعال كنيم
در اكثر موارد ، غيرفعال كردن ايندكس هاي ديركتوري اضافه كردن يك خط به پيكربندي سرور مجازي وب شماست.
اين آموزش حاوي دستورالعملهاي عميق در مورد چگونگي غيرفعال كردن ر هاي ديركتوري براي چندين سرور مجازي وب محبوب است.
بكاپ گيري مكرر
اگرچه اين ممكن است به عنوان يك نكته امنيتي به نظر نرسد ، بكاپ گيري مي تواند در حفظ سيستم ها و داده هاي در معرض خطر و همچنين تجزيه و تحليل چگونگي سازگاري سيستم براي شروع ، بسيار مهم باشد. به عنوان مثال ، اگر سرور مجازي شما با باج افزار به خطر بيفتد ، فقدان بكاپ ممكن است به اين معنا باشد كه تنها انتخاب شما پرداخت باج براي بازگرداندن اطلاعات شما است. اگر به طور مرتب از سيستم ها و داده هاي خود نسخه پشتيبان تهيه كنيد ، ميتوانيد بدون تعامل با سيستم به خطر افتاده ، به داده هاي خود دسترسي پيدا كنيد و آن ها را بازيابي كنيد.
بكاپ هاي مكرر چگونه امنيت را افزايش ميدهند؟
بكاپ گيري با حفظ نسخه هاي دست نخورده از داده ها قبل از وقوع حملات ، باعث كاهش خطر حذف تصادفي و كاهش خطر از بين رفتن اطلاعات مي شود.
علاوه بر موارد باج افزار ، بكاپ گيري منظم مي تواند به تجزيه و تحليل قانوني حملات طولاني مدت كمك كند. اگر تاريخچه داده هاي خود را نداريد ، تشخيص زمان شروع حمله و اطلاعات به خطر افتاده دشوار يا غيرممكن است.
نحوه اجراي بكاپ هاي مكرر
بر خلاف ساير روش هاي اين ليست ، اجراي بكاپ گيري مي تواند از چيزي بي اهميت تا فرآيندي بسيار دشوار متفاوت باشد. هنگام فعال كردن نسخه هاي پشتيبان ، بايد از خود بپرسيد: اگر سرور مجازي من فردا ناپديد شد ، چگونه مي توانيم آن را به عقب برگردانم و راه اندازي كنم؟
در اينجا چند سؤال ديگر وجود دارد كه بايد هنگام تهيه يك برنامه بازيابي حوادث در نظر بگيريد:
• آيا هميشه بايد آخرين نسخه پشتيبان تهيه شود؟ بسته به دفعات تغيير داده هاي شما ، ممكن است خطر را از پيش فرض به بكاپ قديمي كاهش دهد
• روند واقعي براي بازيابي نسخه پشتيبان چيست؟ آيا نياز به ايجاد يك سرور مجازي جديد يا بازگرداندن سرور مجازي موجود داريد؟
• چه مدت مي توانيد بدون اين سرور مجازي در عمل باقي بمانيد؟
• آيا به نسخه پشتيبان offsite احتياج دارم؟
نتيجه
استراتژي هاي ذكر شده در بالا ، مروري بر برخي از پيشرفتهايي است كه مي توانيد براي بهبود امنيت سيستم هاي خود داشته باشيد. مهم است كه بدانيد ، اگرچه دير انجام دادن بهتر از هرگز انجام ندادن است ، اما اثربخشي اقدامات امنيتي با تاخير طولاني در اجراي آن ها كاهش مي يابد. امنيت نمي تواند يك امر فرعي باشد و بايد از ابتدا در كنار سرويس ها و برنامه هايي كه ارائه مي دهيد اجرا شود.

 

برچسب‌ها:cloudfail2banIptablesnetstatVPC

نحوه نصب و ايمن سازي Redis در اوبونتو 20.04

۶۰ بازديد

Redis يك فروشگاه با حافظه داخلي و مقدار كليد است كه به دليل انعطاف پذيري ، عملكرد و پشتيباني گسترده از زبان شناخته شده است. اين آموزش نحوه نصب ، پيكربندي و ايمن سازي Redis در يك سرور مجازي Ubuntu 20.04 را نشان مي دهد.
پيش نيازها
براي تكميل اين راهنما ، به يك سرور مجازي اوبونتو 20.04 كه داراي يك كاربر غير ريشه با امتيازات sudo و داراي يك فايروال اساسي است ، نياز داريد. مي توانيد با دنبال كردن راهنماي راه اندازي سرور مجازي اوليه ما اين كار را تنظيم كنيد.
مرحله 1 – نصب و پيكربندي Redis
ما از مدير بسته APT براي نصب مجدد مخازن رسمي اوبونتو استفاده خواهيم كرد. از اين نوشتار ، نسخه موجود در مخازن پيش فرض 5.0.7 است.
با به روز كردن حافظه نهان بسته محلي apt خود شروع كنيد:
$ sudo apt update

سپس Redis را با تايپ اين دستور نصب كنيد:
$ sudo apt install redis-server

با اين كار Redis و متعلقات آن دانلود و نصب مي شوند. پس از اين ، يك تغيير پيكربندي مهم براي ايجاد در فايل پيكربندي Redis وجود دارد كه به طور خودكار در حين نصب ايجاد مي شود.
اين فايل را با ويرايشگر متن مورد نظر خود باز كنيد:
$ sudo nano /etc/redis/redis.conf

در داخل فايل ، دستورالعمل supervised  را پيدا كنيد. اين دستورالعمل به شما امكان مي دهد سيستم شروع را براي مديريت Redis به عنوان يك سرويس اعلام كنيد و كنترل بيشتري بر عملكرد آن به شما ارائه مي دهد. دستورالعمل supervised  به صورت پيش فرض تنظيم نشده است. از آنجا كه شما اوبونتو را اجرا مي كنيد ، كه از سيستم شروع systemd استفاده مي كند ، اين را به systemd تغيير دهيد:
/etc/redis/redis.conf
. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no – no supervision interaction
# supervised upstart – signal upstart by putting Redis into SIGSTOP mode
# supervised systemd – signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto – detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal “process is ready.”
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

اين تنها تغييري است كه در اين مرحله بايد در فايل پيكربندي Redis انجام دهيد ، بنابراين پس از اتمام آن را ذخيره كنيد و ببنديد. اگر از nano براي ويرايش فايل استفاده كرده ايد ، اين كار را با فشار دادن CTRL + X ، Y ، سپس enter انجام دهيد.
سپس ، سرويس Redis را مجدداً راه اندازي كنيد تا تغييراتي كه در فايل پيكربندي ايجاد كرده ايد اعمال شوند:
$ sudo systemctl restart redis.service

با اين كار ، شما Redis را نصب و پيكربندي كرده ايد و در دستگاه شما كار مي كند. با اين حال ، قبل از شروع استفاده از آن ، بهتر است براي احتياط ابتدا بررسي كنيد كه آيا Redis عملكرد صحيحي دارد يا خير.
مرحله 2 – تست Redis
مانند هر نرم افزاري كه به تازگي نصب ميشود ، بهتر است كه قبل از ايجاد هرگونه تغيير بيشتر در پيكربندي آن ، از عملكرد Redis مطابق آنچه انتظار مي رود ، اطمينان حاصل كنيم. ما چند روش را براي بررسي اينكه Redis در اين مرحله به درستي كار مي كند ، مرور ميكنيم.
ابتدا بررسي كنيد سرويس Redis در حال اجراست:
$ sudo systemctl status redis

اگر بدون خطا در حال اجرا باشد ، اين دستور خروجي مشابه زير را ايجاد مي كند:
Output
● redis-server.service – Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-04-30 23:26:54 UTC; 4s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 36552 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 36561 (redis-server)
Tasks: 4 (limit: 2345)
Memory: 1.8M
CGroup: /system.slice/redis-server.service
└─36561 /usr/bin/redis-server 127.0.0.1:6379
. . .

در اينجا ، مي بينيد كه Redis در حال اجرا فعال شده است ، به اين معني كه هر بار كه سرور مجازي بوت شود ، راه اندازي مي شود.
توجه: اين تنظيمات براي بسياري از موارد استفاده رايج از Redis مطلوب است. اما اگر ترجيح مي دهيد هر بار كه سرور مجازي خود را راه اندازي ميكنيد ، Redis را به صورت دستي راه اندازي كنيد ، مي توانيد اين كار را با دستور زير تنظيم كنيد:
$ sudo systemctl disable redis

براي آزمايش عملكرد صحيح Redis ، با استفاده از كلاينت خط فرمان به سرور مجازي وصل شويد:
$ redis-cli

در اعلان زير ، اتصال را با دستور ping تست كنيد:
127.0.0.1:6379> ping

Output
PONG
اين خروجي تأييد مي كند كه اتصال سرور مجازي هنوز باقي است. در مرحله بعد ، بررسي كنيد كه مي توانيد با اجراي دستور زير، كليدها را تنظيم كنيد:
127.0.0.1:6379> set test “It’s working!”

Output
OK
مقدار را با تايپ اين دستور بازيابي كنيد:
127.0.0.1:6379> get test

با فرض اينكه همه چيز كار مي كنيد ، مي توانيد مقدار ذخيره شده خود را بازيابي كنيد:
Output
“It’s working!”
پس از تأييد اين كه مي توانيد مقدار را بدست آوريد ، براي بازگشت به پوسته از قسمت Redis خارج شويد:
127.0.0.1:6379> exit

به عنوان يك آزمايش نهايي ، بررسي خواهيم كرد كه آيا Redis قادر به حفظ داده حتي پس از متوقف شدن يا راه اندازي مجدد آن هست يا خير. براي انجام اين كار ، ابتدا نمونه Redis را ريستارت كنيد:
$ sudo systemctl restart redis

سپس يك بار ديگر با كلاينت خط فرمان ارتباط برقرار كرده و تأييد كنيد كه مقدار تست شما هنوز در دسترس است:
$ redis-cli

مقدار كليد شما هنوز بايد در دسترس باشد:
Output
“It’s working!”
پس از اتمام دوباره از پوسته خارج شويد:
127.0.0.1:6379> exit

با اين كار ، نصب Redis شما كاملاً عملياتي است و براي استفاده شما آماده است. با اين حال ، برخي از تنظيمات پيكربندي پيش فرض آن ناايمن است و فرصت حملات و دسترسي به سرور مجازي و داده هاي آن را مي دهد. مراحل باقيمانده در اين آموزش ، روش هاي كاهش اين آسيب پذيري ها را مطابق با وب سايت رسمي Redis ارائه ميدهد. اگرچه اين مراحل اختياري است و اگر تصميم به دنبال كردن آنها نداريد ، هنوز هم Redis كار خواهد كرد ، توصيه مي شود آنها را انجام دهيد تا امنيت سيستم شما بيشتر شود.
مرحله 3 – اتصال به localhost
به طور پيش فرض ، Redis فقط از localhost قابل دسترسي است. با اين وجود ، اگر Redis را با پيروي از آموزش ديگري، نصب و پيكربندي كرده ايد ، ممكن است فايل پيكربندي را به روز كرده باشيد تا بتوانيد از هرجاي ديگر اتصالات را برقرار كنيد. اين روش به اندازه كافي براي اتصال به localhost مطمئن نيست.
براي اصلاح اين مشكل ، فايل پيكربندي Redis را براي ويرايش باز كنيد:
$ sudo nano /etc/redis/redis.conf

اين خط را پيدا كرده و اطمينان حاصل كنيد كه باطل شده است (در صورت وجود # ، آن را حذف كنيد):
/etc/redis/redis.conf
bind 127.0.0.1 ::1

پس از اتمام فايل را ذخيره كرده و ببنديد (CTRL + X ، Y ، سپس ENTER را فشار دهيد).
سپس ، سرويس را مجدداً راه اندازي كنيد تا اطمينان حاصل شود كه systemd تغييرات شما را خوانده است:
$ sudo systemctl restart redis

براي بررسي اينكه اين تغيير به مرحله اجرا گذاشته شده است ، دستور netstat زير را اجرا كنيد:
$ sudo netstat -lnp | grep redis

Output
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 14222/redis-server
tcp6 0 0 ::1:6379 :::* LISTEN 14222/redis-ser

توجه: ممكن است دستور netstat به طور پيش فرض در سيستم شما در دسترس نباشد. در اين صورت مي توانيد با دستور زير آن را نصب كنيد (به همراه تعدادي ديگر از ابزارهاي مفيد شبكه):
sudo apt install net-tools

اين خروجي نشان مي دهد كه برنامه redis-server به localhost (127.0.0.1) متصل شده است و تغييري را كه اخيراً در فايل پيكربندي ايجاد كرده ايد ، نشان مي دهد. اگر آدرس IP ديگري را در آن ستون مشاهده مي كنيد (به عنوان مثال 0.0.0.0) ، پس بايد دوبار بررسي كنيد كه خط صحيح را باطل كرده ايد و دوباره سرويس Redis را راه اندازي كنيد.
اكنون كه نصب Redis فقط به localhost گوش مي كند ، انجام درخواست يا دسترسي به سرور مجازي شما براي حمله گران دشوار خواهد بود. با اين حال ، در حال حاضر Redis قبل از ايجاد تغيير در پيكربندي يا داده هايي كه نگه ميدارد ، از كاربران درخواست نميكند كه خود را تأييد كنند. براي رفع اين مشكل ،Redis به شما امكان مي دهد تا كاربران را قبل از ايجاد تغيير از طريق كلاينت Redis (redis-cli) با گذرواژه تأييد كنيد.
مرحله 4 – پيكربندي رمز عبور Redis
پيكربندي رمز عبور Redis يكي از دو ويژگي امنيتي داخلي خود را ايجاد مي كند – دستور auth ، كه به تاييد اعتبار كلاينت ها براي دسترسي به پايگاه داده نياز دارد. رمز عبور مستقيماً در فايل پيكربندي Redis ، /etc/redis/redis.conf پيكربندي شده است ، بنابراين دوباره آن فايل را با ويرايشگر مورد نظر خود باز كنيد:
$ sudo nano /etc/redis/redis.conf

به بخش SECURITY برويد و به دنبال دستورالعملي باشيد كه وظيفه خواندن را دارد:
/etc/redis/redis.conf
. . .
# requirepass foobared
. . .

با حذف # آن را لغو كنيد و foobared  را به يك رمزعبور امن تغيير دهيد.
توجه: در بالاي دستورالعمل requirepass در فايل redis.conf ، يك اخطار كامنت وجود دارد:
/etc/redis/redis.conf
. . .
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
. . .
بنابراين ، مهم است كه يك مقدار بسيار قوي و بسيار طولاني را به عنوان رمزعبور خود تعيين كنيد. به جاي ايجاد رمز عبور ، مي توانيد از دستور opensl براي ايجاد پسورد تصادفي استفاده كنيد ، مانند مثال زير. با اتصال خروجي دستور اول به دستور دوم opensl ، همانطور كه در اينجا نشان داده شده است ، هرگونه وقفه بين خطوط را كه توسط آن دستور اول ايجاد مي شود حذف مي كند:
$ openssl rand 60 | openssl base64 -A

خروجي شما اينگونه خواهد بود:
Output
RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

پس از كپي پيست كردن خروجي آن فرمان به عنوان مقدار جديد مورد نياز ، بايد اين را بخواند:
$ sudo systemctl restart redis.service

پس از تنظيم گذرواژه ، فايل را ذخيره كرده و ببنديد ، و Redis را ريستارت كنيد:
$ redis-cli

در زير توالي دستورات مورد استفاده براي تست رمز Redis وجود دارد. دستور اول سعي مي كند قبل از تأييد اعتبار ، كليد را روي يك مقدار تنظيم كند:
127.0.0.1:6379> set key1 10

اين رمز كار نخواهد كرد زيرا شما تأييد اعتبار نكرديد ، بنابراين Redis خطايي را برمي گرداند:
Output
(error) NOAUTH Authentication required.

دستور بعدي با گذرواژه مشخص شده در فايل پيكربندي Redis تأييد اعتبار مي كند:
127.0.0.1:6379> auth your_redis_password

Redis تصديق مي كند:
Output
OK
پس از آن ، اجراي دوباره فرمان قبلي موفق خواهد شد:
127.0.0.1:6379> set key1 10

Output
OK

get key1 مقدار كليد جديد را از Redis پرس و جو ميكند.
127.0.0.1:6379> get key1

Output
“10”

پس از تأييد اينكه مي توانيد پس از تاييد اعتبار دستوراتي را در كلاينت Redis اجرا كنيد ، مي توانيد از redis-cli خارج شويد:
127.0.0.1:6379> quit

در مرحله بعد ، تغيير نام دستورات Redis را بررسي خواهيم كرد كه اگر به اشتباه يا توسط يك حمله گر مورد هدف قرار گيرد ، مي تواند آسيب جدي به دستگاه شما وارد كند.
مرحله 5 – تغيير نام دستورات خطرناك
ويژگي امنيتي ديگر قرار داده شده در Redis تغيير نام يا غيرفعال كردن كامل فرامين خاصي است كه خطرناك به نظر مي رسند.
هنگامي كه اين دستورات توسط كاربران غيرمجاز اجرا مي شوند ، مي توانند براي پيكربندي ، از بين بردن يا پاك كردن داده هاي شما استفاده شوند. مانند گذرواژه تأييد اعتبار ، تغيير نام يا غيرفعال كردن دستورات در همان بخش SECURITY فايل /etc/redis/redis.conf پيكربندي شده است.
برخي از دستوراتي كه خطرناك به حساب مي آيند عبارتند از FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, و  DEBUG
اين يك ليست جامع نيست ، اما تغيير نام يا غيرفعال كردن كليه دستورات موجود در آن ليست ، نقطه شروع خوبي براي افزايش امنيت سرور مجازي Redis شما است.
اين كه آيا شما بايد يك فرمان را غيرفعال كنيد يا تغيير نام دهيد ، به نيازهاي خاص شما يا نيازهاي سايت شما بستگي دارد. اگر مي دانيد هرگز از دستوري كه مورد سوءاستفاده قرار مي گيرد استفاده نمي كنيد ، مي توانيد آن را غيرفعال كنيد. در غير اين صورت ، تغيير نام آن مفيد خواهد بود.
براي فعال يا غيرفعال كردن دستورات Redis ، فايل پيكربندي را يك بار ديگر باز كنيد:
$ sudo nano /etc/redis/redis.conf

هشدار: مراحل زير نشانگر نحوه غيرفعال كردن و تغيير نام دستورات مثال است. شما فقط بايد انتخاب كنيد كه كه غيرفعال كردن يا تغيير نام چه دستوراتي منطقي ميباشد. مي توانيد ليست كامل دستورات را براي خود مرور كنيد و نحوه استفاده آنها در redis.io/commands را تعيين كنيد.

براي غيرفعال كردن يك دستور ، كافي است آن را به يك رشته خالي تغيير دهيد (كه توسط يك جفت علامت نقل قول بدون هيچ كاراكتري بين آنها مشخص شده است) ، همانطور كه در زير نشان داده شده:
/etc/redis/redis.conf
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB “”
rename-command FLUSHALL “”
rename-command DEBUG “”
. . .

براي تغييرنام يك فرمان، نام ديگري مانند زير به آن بدهيد. حدس زدن فرمان هاي تغيير نام يافته بايد براي ديگران دشوار باشد اما به راحتي بتوانيد آن ها را به خاطر بسپاريد.
/etc/redis/redis.conf
. . .
# rename-command CONFIG “”
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .

تغييرات خود را ذخيره كرده و فايل را ببنديد.
پس از تغيير نام يك فرمان ، با راه اندازي مجدد Redis ، تغيير را اعمال كنيد:
$ sudo systemctl restart redis.service

براي آزمايش دستور جديد ، وارد خط فرمان Redis شويد:
$ redis-cli

سپس ، تأييد اعتبار كنيد:
127.0.0.1:6379> auth your_redis_password

Output
OK
فرض كنيم كه شما دستور CONFIG را مانند مثال قبل به ASC12_CONFIGتغيير نام داديد . ابتدا سعي كنيد از دستور اصلي CONFIG استفاده كنيد. بايد با شكست مواجه شود ، زيرا شما آن را تغيير نام داده ايد:
127.0.0.1:6379> config get requirepass

Output
(error) ERR unknown command `config`, with args beginning with:

با اين وجود فراخواني فرمان تغيير نام داده شده موفقيت آميز خواهد بود. به كوچك و بزرگ بودن كاراكترها حساس نيست:
127.0.0.1:6379> asc12_config get requirepass

Output
1) “requirepass”
2) “your_redis_password”

درنهايت ، مي توانيد از redis-cli خارج شويد:
127.0.0.1:6379> exit

توجه داشته باشيد كه اگر قبلاً از خط فرمان Redis استفاده كرده ايد و دوباره Redis را ريستارت كرده ايد ، بايد مجددا تأييد اعتبار كنيد. در غير اين صورت ، اگر يك دستور تايپ كنيد ، اين خطا را دريافت خواهيد كرد:
Output
NOAUTH Authentication required.

به خاطر تغيير نام دستورات ، در پايان بخش SECURITY در /etc/redis/redis.conf يك عبارت احتياط وجود دارد:
/etc/redis/redis.conf
. . .
# Please note that changing the name of commands that are logged into the
# AOF file or transmitted to replicas may cause problems.
. . .

توجه: پروژه Redis از اصطلاحات “master” و “slave” استفاده ميكند ، در حالي كه vpsgol عموماً اصطلاحات “primary” و “secondary” را ترجيح مي دهد به معني اوليه و ثانويه.
براي جلوگيري از سردرگمي ، تصميم گرفتيم كه در اينجا از اصطلاحات استفاده شده در مستندات Redis استفاده كنيم.
اين بدان معناست كه اگر دستور تغيير نام يافته در فايل AOF نباشد ، يا اگر موجود باشد اما فايل AOF به slaves ارسال نشده باشد ، ديگر مشكلي وجود نخواهد داشت.
بنابراين ، هنگام تغيير نام دستورات ، اين را به خاطر داشته باشيد. بهترين زمان براي تغيير نام يك فرمان زماني است كه شما از ماندگاري AOF استفاده نمي كنيد ، يا درست بعد از نصب ، يعني قبل از استقرار برنامه مبتني بر Redis.
هنگامي كه از AOF استفاده مي كنيد و با يك نصب master slave سرو كار داريد ، اين پاسخ را از صفحه صدور GitHub پروژه در نظر بگيريد.
بنابراين ، بهترين روش براي تغيير نام در مواردي از اين دست ، اين است كه مطمئن شويد دستورات تغيير نام يافته به تمام مثال هاي نصب هاي master-slave اعمال ميشود.
نتيجه
در اين آموزش ، Redis را نصب و پيكربندي كرده ايد ، تأييد كرديد كه نصب Redis شما به درستي كار مي كند و از ويژگي هاي امنيتي داخلي استفاده كرده است تا در برابر حملات مخرب كمتر آسيب پذير باشد.
به خاطر داشته باشيد كه پس از ورود شخصي به سرور مجازي شما ، دور زدن ويژگي هاي امنيتي ويژه Redis كه ما در آن قرار داده ايم بسيار آسان است. بنابراين ، مهمترين ويژگي امنيتي در سرور مجازي Redis ، فايروال شماست (كه در صورت پيروي از آموزش مقدماتي راه اندازي اوليه سرور مجازي اوليه، آن را پيكربندي كرده ايد) ، زيرا اين كار پرش از آن حصار امنيتي را براي حمله گران بسيار دشوار مي كند.

 

برچسب‌ها:nanoRedisUbuntu 20.04

نحوه نصب و ايمن سازي Redis در اوبونتو 18.04

۵۶ بازديد

Redis يك فروشگاه با حافظه داخلي و مقدار كليد است كه به دليل انعطاف پذيري ، عملكرد و پشتيباني گسترده از زبان شناخته شده است. اين آموزش نحوه نصب ، پيكربندي و ايمن سازي Redis در يك سرور مجازي Ubuntu 18.04 را نشان مي دهد.
پيش نيازها
براي تكميل اين راهنما ، به يك سرور مجازي اوبونتو 18.04 كه داراي يك كاربر غير ريشه با امتيازات sudo و داراي يك فايروال اساسي است ، نياز داريد. مي توانيد با دنبال كردن راهنماي راه اندازي سرور مجازي اوليه ما اين كار را تنظيم كنيد.
پس از آماده شدن ، به عنوان كاربر sudo خود به سرور مجازي Ubuntu 18.04 خود وارد شويد و در زير ادامه دهيد.
مرحله 1 – نصب و پيكربندي Redis
براي به دست آوردن آخرين نسخه Redis ، ما از apt براي نصب آن از مخزن رسمي اوبونتو استفاده خواهيم كرد.
حافظه نهان بسته محلي apt خود را به روز كنيد و Redis را با تايپ دستور زير نصب كنيد:
$ sudo apt update

$ sudo apt install redis-server

با اين كار Redis و متعلقات آن دانلود و نصب مي شوند. پس از اين ، يك تغيير پيكربندي مهم براي ايجاد در فايل پيكربندي Redis وجود دارد كه به طور خودكار در حين نصب ايجاد مي شود.
اين فايل را با ويرايشگر متن مورد نظر خود باز كنيد:
$ sudo nano /etc/redis/redis.conf

در داخل فايل ، دستورالعمل supervised  را پيدا كنيد. اين دستورالعمل به شما امكان مي دهد سيستم شروع را براي مديريت Redis به عنوان يك سرويس اعلام كنيد و كنترل بيشتري بر عملكرد آن به شما ارائه مي دهد. دستورالعمل supervised  به صورت پيش فرض تنظيم نشده است. از آنجا كه شما اوبونتو را اجرا مي كنيد ، كه از سيستم شروع systemd استفاده مي كند ، اين را به systemd تغيير دهيد:
/etc/redis/redis.conf
. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no – no supervision interaction
# supervised upstart – signal upstart by putting Redis into SIGSTOP mode
# supervised systemd – signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto – detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal “process is ready.”
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

اين تنها تغييري است كه در اين مرحله بايد در فايل پيكربندي Redis انجام دهيد ، بنابراين پس از اتمام آن را ذخيره كنيد و ببنديد. سپس ، سرويس Redis را مجدداً راه اندازي كنيد تا تغييراتي كه در فايل پيكربندي ايجاد كرده ايد اعمال شوند:
$ sudo systemctl restart redis.service

با اين كار ، شما Redis را نصب و پيكربندي كرده ايد و در دستگاه شما كار مي كند. با اين حال ، قبل از شروع استفاده از آن ، بهتر است براي احتياط ابتدا بررسي كنيد كه آيا Redis عملكرد صحيحي دارد يا خير.
مرحله 2 – تست Redis
مانند هر نرم افزاري كه به تازگي نصب ميشود ، بهتر است كه قبل از ايجاد هرگونه تغيير بيشتر در پيكربندي آن ، از عملكرد Redis مطابق آنچه انتظار مي رود ، اطمينان حاصل كنيم. ما چند روش را براي بررسي اينكه Redis در اين مرحله به درستي كار مي كند ، مرور ميكنيم.
ابتدا بررسي كنيد سرويس Redis در حال اجراست:
$ sudo systemctl status redis

اگر بدون خطا در حال اجرا باشد ، اين دستور خروجي مشابه زير را ايجاد مي كند:
Output
● redis-server.service – Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-06-27 18:48:52 UTC; 12s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 2421 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 2424 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 2445 (redis-server)
Tasks: 4 (limit: 4704)
CGroup: /system.slice/redis-server.service
└─2445 /usr/bin/redis-server 127.0.0.1:6379
. . .

در اينجا ، مي بينيد كه Redis در حال اجرا فعال شده است ، به اين معني كه هر بار كه سرور مجازي بوت شود ، راه اندازي مي شود.
توجه: اين تنظيمات براي بسياري از موارد استفاده رايج از Redis مطلوب است. اما اگر ترجيح مي دهيد هر بار كه سرور مجازي خود را راه اندازي ميكنيد ، Redis را به صورت دستي راه اندازي كنيد ، مي توانيد اين كار را با دستور زير تنظيم كنيد:
$ sudo systemctl disable redis

براي آزمايش عملكرد صحيح Redis ، با استفاده از كلاينت خط فرمان به سرور مجازي وصل شويد:
$ redis-cli

در اعلان زير ، اتصال را با دستور ping تست كنيد:
127.0.0.1:6379> ping

Output
PONG

اين خروجي تأييد مي كند كه اتصال سرور مجازي هنوز باقي است. در مرحله بعد ، بررسي كنيد كه مي توانيد با اجراي دستور زير، كليدها را تنظيم كنيد:
127.0.0.1:6379> set test “It’s working!”

Output
OK
مقدار را با تايپ اين دستور بازيابي كنيد:
127.0.0.1:6379> get test

با فرض اينكه همه چيز كار مي كنيد ، مي توانيد مقدار ذخيره شده خود را بازيابي كنيد:
Output
“It’s working!”
پس از تأييد اين كه مي توانيد مقدار را بدست آوريد ، براي بازگشت به پوسته از قسمت Redis خارج شويد:
127.0.0.1:6379> exit

به عنوان يك آزمايش نهايي ، بررسي خواهيم كرد كه آيا Redis قادر به حفظ داده حتي پس از متوقف شدن يا راه اندازي مجدد آن هست يا خير. براي انجام اين كار ، ابتدا نمونه Redis را ريستارت كنيد:
$ sudo systemctl restart redis

سپس يك بار ديگر با كلاينت خط فرمان ارتباط برقرار كرده و تأييد كنيد كه مقدار تست شما هنوز در دسترس است:
$ redis-cli

127.0.0.1:6379> get test
مقدار كليد شما هنوز بايد در دسترس باشد:
Output
“It’s working!”
پس از اتمام دوباره وارد پوسته شويد:
127.0.0.1:6379> exit

با اين كار ، نصب Redis شما كاملاً عملياتي است و براي استفاده شما آماده است. با اين حال ، برخي از تنظيمات پيكربندي پيش فرض آن ناايمن است و فرصت حملات و دسترسي به سرور مجازي و داده هاي آن را مي دهد. مراحل باقيمانده در اين آموزش ، روش هاي كاهش اين آسيب پذيري ها را مطابق با وب سايت رسمي Redis ارائه ميدهد. اگرچه اين مراحل اختياري است و اگر تصميم به دنبال كردن آنها نداريد ، هنوز هم Redis كار خواهد كرد ، توصيه مي شود آنها را انجام دهيد تا امنيت سيستم شما بيشتر شود.
مرحله 3 – اتصال به localhost
به طور پيش فرض ، Redis فقط از localhost قابل دسترسي است. با اين وجود ، اگر Redis را با پيروي از آموزش ديگري، نصب و پيكربندي كرده ايد ، ممكن است فايل پيكربندي را به روز كرده باشيد تا بتوانيد از هرجاي ديگر اتصالات را برقرار كنيد. اين روش به اندازه كافي براي اتصال به localhost مطمئن نيست.
براي اصلاح اين مشكل ، فايل پيكربندي Redis را براي ويرايش باز كنيد:
$ sudo nano /etc/redis/redis.conf

اين خط را پيدا كرده و اطمينان حاصل كنيد كه آن باطل است (در صورت وجود # ، آن را حذف كنيد):
/etc/redis/redis.conf
bind 127.0.0.1 ::1

پس از اتمام فايل را ذخيره كرده و ببنديد (CTRL + X ، Y ، سپس ENTER را فشار دهيد).
سپس ، سرويس را مجدداً راه اندازي كنيد تا اطمينان حاصل شود كه systemd تغييرات شما را خوانده است:
$ sudo systemctl restart redis

براي بررسي اينكه اين تغيير به مرحله اجرا گذاشته شده است ، دستور netstat زير را اجرا كنيد:
$ sudo netstat -lnp | grep redis

Output
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 14222/redis-server
tcp6 0 0 ::1:6379 :::* LISTEN 1422

اين خروجي نشان مي دهد كه برنامه redis-server به localhost (127.0.0.1) متصل شده است و تغييري را كه اخيراً در فايل پيكربندي ايجاد كرده ايد ، نشان مي دهد. اگر آدرس IP ديگري را در آن ستون مشاهده مي كنيد (به عنوان مثال 0.0.0.0) ، پس بايد دوبار بررسي كنيد كه خط صحيح را باطل كرده ايد و دوباره سرويس Redis را راه اندازي كنيد.
اكنون كه نصب Redis فقط به localhost گوش مي كند ، انجام درخواست يا دسترسي به سرور مجازي شما براي حمله گران دشوار خواهد بود. با اين حال ، در حال حاضر Redis قبل از ايجاد تغيير در پيكربندي يا داده هايي كه نگه ميدارد ، از كاربران درخواست نميكند كه خود را تأييد كنند. براي رفع اين مشكل ،Redis به شما امكان مي دهد تا كاربران را قبل از ايجاد تغيير از طريق كلاينت Redis (redis-cli) با گذرواژه تأييد كنيد.
مرحله 4 – پيكربندي رمز عبور Redis
پيكربندي رمز عبور Redis يكي از دو ويژگي امنيتي داخلي خود را ايجاد مي كند – دستور auth ، كه به تاييد اعتبار كلاينت ها براي دسترسي به پايگاه داده نياز دارد. رمز عبور مستقيماً در فايل پيكربندي Redis ، /etc/redis/redis.conf پيكربندي شده است ، بنابراين دوباره آن فايل را با ويرايشگر مورد نظر خود باز كنيد:
$ sudo nano /etc/redis/redis.conf

به بخش SECURITY برويد و به دنبال دستورالعملي باشيد كه وظيفه خواندن را دارد:
/etc/redis/redis.conf
# requirepass foobared

با حذف # آن را لغو كنيد و foobared  را به يك رمزعبور امن تغيير دهيد.
توجه: در بالاي دستورالعمل requirepass در فايل redis.conf ، يك اخطار كامنت وجود دارد:
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#

بنابراين ، مهم است كه يك مقدار بسيار قوي و بسيار طولاني را به عنوان رمزعبور خود تعيين كنيد. به جاي ايجاد رمز عبور ، مي توانيد از دستور opensl براي ايجاد پسورد تصادفي استفاده كنيد ، مانند مثال زير. با اتصال خروجي دستور اول به دستور دوم opensl ، همانطور كه در اينجا نشان داده شده است ، هرگونه وقفه بين خطوط را كه توسط آن دستور اول ايجاد مي شود حذف مي كند:
$ openssl rand 60 | openssl base64 -A

خروجي شما بايد شبيه به چيزي باشد
Output
RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

پس از كپي پيست كردن خروجي آن فرمان به عنوان مقدار جديد requirepass ، بايد اين را بخواند:
/etc/redis/redis.conf
requirepass RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

پس از تنظيم گذرواژه ، فايل را ذخيره كرده و ببنديد ، و دوباره Redis را ريستارت كنيد:
$ sudo systemctl restart redis.service

براي آزمايش اينكه رمز عبور كار مي كند ، به خط فرمان Redis دسترسي پيدا كنيد:
$ redis-cli

در زير توالي دستورات مورد استفاده براي تست كار با رمز Redis وجود دارد. دستور اول سعي مي كند قبل از تأييد اعتبار ، كليد را روي يك مقدار تنظيم كند:
127.0.0.16379> set key1 10

از آنجا كه شما تأييد اعتبار نكرديد ، كار نخواهد كرد . بنابراين Redis خطايي را برمي گرداند:
Output
(error) NOAUTH Authentication required.

دستور بعدي با گذرواژه مشخص شده در فايل پيكربندي Redis تأييد اعتبار مي كند:
127.0.0.16379> auth your_redis_password

Redis تصديق مي كند:
Output
OK
پس از آن ، اجراي دوباره فرمان قبلي موفق خواهد شد:
127.0.0.16379> set key1 10

Output
OK

get key1 براي دريافت كليد جديد ، از Redis پرس و جو ميكند.
127.0.0.16379> get key1

Output
“10”

پس از تأييد اينكه مي توانيد بعد از تأييد اعتبار ، دستوراتي را در كلاينت Redis اجرا كنيد ، مي توانيد از redis-cli خارج شويد:
127.0.0.16379> quit

در مرحله بعد ، تغيير نام دستورات Redis را بررسي خواهيم كرد كه اگر به اشتباه يا توسط يك حمله گر وارد شود ، مي تواند آسيب جدي به دستگاه شما وارد كند.
مرحله 5 – تغيير نام دستورات خطرناك
ويژگي امنيتي ديگر قرار داده شده در Redis تغيير نام يا غيرفعال كردن كامل فرامين خاصي است كه خطرناك به نظر مي رسند.
هنگامي كه اين دستورات توسط كاربران غيرمجاز اجرا مي شوند ، مي توانند براي پيكربندي ، از بين بردن يا پاك كردن داده هاي شما استفاده شوند. مانند گذرواژه تأييد اعتبار ، تغيير نام يا غيرفعال كردن دستورات در همان بخش SECURITY فايل /etc/redis/redis.conf پيكربندي شده است.
برخي از دستوراتي كه خطرناك به حساب مي آيند عبارتند از FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, و  DEBUG.
اين يك ليست جامع نيست ، اما تغيير نام يا غيرفعال كردن كليه دستورات موجود در آن ليست ، نقطه شروع خوبي براي افزايش امنيت سرور مجازي Redis شما است.
اين كه آيا شما بايد يك فرمان را غيرفعال كنيد يا تغيير نام دهيد ، به نيازهاي خاص شما يا نيازهاي سايت شما بستگي دارد. اگر مي دانيد هرگز از دستوري كه مورد سوءاستفاده قرار مي گيرد استفاده نمي كنيد ، مي توانيد آن را غيرفعال كنيد. در غير اين صورت ، تغيير نام آن مفيد خواهد بود.
براي فعال يا غيرفعال كردن دستورات Redis ، فايل پيكربندي را يك بار ديگر باز كنيد:
$ sudo nano /etc/redis/redis.conf

هشدار: مراحل زير نشانگر نحوه غيرفعال كردن و تغيير نام دستورات مثال است. شما فقط بايد انتخاب كنيد كه كه غيرفعال كردن يا تغيير نام چه دستوراتي منطقي ميباشد. مي توانيد ليست كامل دستورات را براي خود مرور كنيد و نحوه استفاده آنها در redis.io/commands را تعيين كنيد.

براي غيرفعال كردن يك دستور ، كافي است آن را به يك رشته خالي تغيير دهيد (كه توسط يك جفت علامت نقل قول بدون هيچ كاراكتري بين آنها مشخص شده است) ، همانطور كه در زير نشان داده شده:
/etc/redis/redis.conf
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB “”
rename-command FLUSHALL “”
rename-command DEBUG “”
. . .
براي تغيير نام يك فرمان ، مانند مثالهاي زير نام ديگري به آن بدهيد. حدس دستورات تغيير نام يافته بايد براي ديگران دشوار باشد ، اما يادآوري آن براي شما آسان باشد:
/etc/redis/redis.conf
. . .
# rename-command CONFIG “”
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .

تغييرات خود را ذخيره كرده و فايل را ببنديد.
پس از تغيير نام يك فرمان ، با راه اندازي مجدد Redis ، تغيير را اعمال كنيد:
$ sudo systemctl restart redis.service

براي آزمايش دستور جديد ، وارد خط فرمان Redis شويد:
$ redis-cli

سپس ، تأييد اعتبار كنيد:
127.0.0.1:6379> auth your_redis_password

Output
OK
فرض كنيم كه شما دستور CONFIG را مانند مثال قبل به ASC12_CONFIGتغيير نام داديد . ابتدا سعي كنيد از دستور اصلي CONFIG استفاده كنيد. بايد با شكست مواجه شود ، زيرا شما آن را تغيير نام داده ايد:
127.0.0.1:6379> config get requirepass

Output
(error) ERR unknown command ‘config’

با اين وجود فراخواني فرمان تغيير نام داده شده موفقيت آميز خواهد بود. به كوچك و بزرگ بودن كاراكترها حساس نيست:
127.0.0.1:6379> asc12_config get requirepass

Output
1) “requirepass”
2) “your_redis_password”

درنهايت ، مي توانيد از redis-cli خارج شويد:
127.0.0.1:6379> exit

توجه داشته باشيد كه اگر قبلاً از خط فرمان Redis استفاده كرده ايد و دوباره Redis را ريستارت كرده ايد ، بايد مجددا تأييد اعتبار كنيد. در غير اين صورت ، اگر يك دستور تايپ كنيد ، اين خطا را دريافت خواهيد كرد:
Output
NOAUTH Authentication required.

به خاطر تغيير نام دستورات ، در پايان بخش SECURITY در /etc/redis/redis.conf يك عبارت احتياط وجود دارد:
/etc/redis/redis.conf
. . .
# Please note that changing the name of commands that are logged into the
# AOF file or transmitted to replicas may cause problems.
. . .

توجه: پروژه Redis از اصطلاحات “master” و “slave” استفاده ميكند ، در حالي كه vpsgol عموماً اصطلاحات “primary” و “secondary” را ترجيح مي دهد به معني اوليه و ثانويه.
براي جلوگيري از سردرگمي ، تصميم گرفتيم كه در اينجا از اصطلاحات استفاده شده در مستندات Redis استفاده كنيم.
اين بدان معناست كه اگر دستور تغيير نام يافته در فايل AOF نباشد ، يا اگر موجود باشد اما فايل AOF به slaves ارسال نشده باشد ، ديگر مشكلي وجود نخواهد داشت.
بنابراين ، هنگام تغيير نام دستورات ، اين را به خاطر داشته باشيد. بهترين زمان براي تغيير نام يك فرمان زماني است كه شما از ماندگاري AOF استفاده نمي كنيد ، يا درست بعد از نصب ، يعني قبل از استقرار برنامه مبتني بر Redis.
هنگامي كه از AOF استفاده مي كنيد و با يك نصب master slave سرو كار داريد ، اين پاسخ را از صفحه صدور GitHub پروژه در نظر بگيريد.
بنابراين ، بهترين روش براي تغيير نام در مواردي از اين دست ، اين است كه مطمئن شويد دستورات تغيير نام يافته به تمام مثال هاي نصب هاي master-slave اعمال ميشود.
نتيجه
در اين آموزش ، Redis را نصب و پيكربندي كرده ايد ، تأييد كرديد كه نصب Redis شما به درستي كار مي كند و از ويژگي هاي امنيتي داخلي استفاده كرده است تا در برابر حملات مخرب كمتر آسيب پذير باشد.
به خاطر داشته باشيد كه پس از ورود شخصي به سرور مجازي شما ، دور زدن ويژگي هاي امنيتي ويژه Redis كه ما در آن قرار داده ايم بسيار آسان است. بنابراين ، مهمترين ويژگي امنيتي در سرور مجازي Redis ، فايروال شماست (كه در صورت پيروي از آموزش مقدماتي راه اندازي اوليه سرور مجازي اوليه، آن را پيكربندي كرده ايد) ، زيرا اين كار پرش از آن حصار امنيتي را براي حمله گران بسيار دشوار مي كند.

 

برچسب‌ها:AOFGithubmaster slaveprimary