Tumgik
vpsgol33-blog · 4 years
Text
اجرای چند نسخه PHP بر روی یک سرور
سرور وب Apache از هاست های مجازی برای مدیریت دامنه های متعدد بر روی یک نمونه واحد استفاده می کند. به طور مشابه ، PHP-FPM از یک Daemon برای مدیریت چندین نسخه PHP در یک نمونه واحد استفاده می کند. می توانید از Apache و PHP-FPM با هم استفاده کنید تا هاست چند برنامه وب PHP باشید که هر یک از نسخه متفاوت PHP استفاده میکند و همه روی یک سرور یکسان و به طور همزمان کار کنند. این ویژگی از این لحاظ مفید است که برنامه های مختلف ممکن است به نسخه های مختلف PHP نیاز داشته باشند ، اما برخی از پشته های سرور ، مانند پشته LAMP که به طور معمول پیکربندی شده است ، فقط می توانند یکی را مدیریت کنند. ترکیب Apache با PHP-FPM همچنین یک راه حل مقرون به صرفه تر از میزبانی هر برنامه به طور خاص است. PHP-FPM همچنین گزینه های پیکربندی برای ورود به سیستم stderr و stdout ، ریستارت اضطراری و spawning روند تطبیقی ​​را ارائه می دهد ، که برای سایت های دارای بار سنگین مفید است. در حقیقت ، استفاده از Apache با PHP-FPM یکی از بهترین پشته ها برای هاستینگ برنامه های PHP ، به خصوص از لحاظ عملکرد میباشد. در این آموزش دو سایت PHP را به صورت یکجا تنظیم خواهید کرد. هر سایت از دامنه خود استفاده می کند و هر دامنه نسخه PHP خود را مستقر می کند. اولی ، site1.your_domain ، PHP 7.0 را مستقر می کند. دومی ، site2.your_domain ، PHP 7.2 را مستقر می کند. پیش نیازها • یک سرور CentOS 7 با حداقل 1 گیگابایت رم که طبق راهنمای راه اندازی سرور اولیه با تنظیم شده باشد ، شامل کاربر sudo غیر ریشه و فایروال. •وب سرور Apache که با دنبال کردن آموزش نحوه نصب وب سرور Apache در CentOS 7 راه اندازی شود. • نام دامنه پیکربندی شده برای اشاره به سرور CentOS 7 شما. برای اهداف این آموزش ، از دو زیر دامنه استفاده خواهیم کرد که هر یک با یک رکورد A در تنظیمات DNS ما مشخص شده اند: site1.your_domain و site2.your_domain. مرحله 1 – نصب PHP ورژن های 7.0 و 7.2 با PHP-FPM با تکمیل پیش نیازها، اکنون نسخه های PHP 7.0 و 7.2 را نصب خواهید کرد. مخزن SCL )مجموعه نرم افزار) نسخه های بیشماری از پشته PHP را برای سیستم CentOS 7 نگه می دارد. اگر به جدیدترین نسخه PHP نیاز دارید و در SCL موجود نیست ، به جای آن ، Remi PPA (بایگانی بسته شخصی) را بررسی کنید. با نصب مخزن SCL در سیستم خود شروع کنید: ⦁ $ sudo yum install centos-release-scl -y ⦁ ابتدا بیابیم جستجو کنیم که نسخه های PHP 7 در SCL در دسترس هستند: ⦁ $ sudo yum list rh-php7[0-9].x86_64
خروجی مانند این را خواهید دید: Output Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7
توجه داشته باشید که جدیدترین نسخه ، PHP 7.3 نیز موجود است. برای مثال ما نسخه های 7.0 و 7.2 را نصب خواهیم کرد. بیایید با نسخه قدیمی تر شروع کنیم. rh-php70 و rh-php70-php-fpm را نصب کنید: ⦁ $ sudo yum install rh-php70 rh-php70-php-fpm -y ⦁ ⦁ rh-php70 متابسته ای است که برنامه های PHP را اجرا می کند. ⦁ rh-php70-php-fpm مترجم Fast Manager Manager را فراهم می کند که به عنوان یک Daemon اجرا می شود و درخواست های Fast / CGI را دریافت می کند. حالا فرایند را برای نسخه PHP 7.2 تکرار کنید. rh-php72 و rh-php72-php-fpm را نصب کنید. ⦁ $ sudo yum install rh-php72 rh-php72-php-fpm -y ⦁ در مرحله بعدی ، دستورات زیر را برای شروع استفاده از هر دو مجموعه نرم افزار اجرا کنید: ⦁ $ sudo scl enable rh-php70 bash ⦁ ⦁ $ sudo scl enable rh-php72 bash
به طور پیش فرض ، هر دو نسخه PHP پورت 9000 را گوش می دهند. اما در این آموزش می خواهیم دو نسخه را همزمان اجرا کنیم. بنابراین ، بیایید دو پورت جدید را تعیین کنیم: برای تحقق این امر می توانید /etc/opt/rh/rh-php70/php-fpm.d/www.conf را در ویرایشگر متن مورد علاقه خود باز کرده و هر عدد 9000 را به 9002 تغییر دهید. سپس فایل را ذخیره کرده و ببندید و فرآیند را برای /etc/opt/rh/rh-php72/php-fpm.d/www.conf تکرار کنید ، اکنون 9000 را با 9003 جایگزین کنید. در غیر این صورت ، می توانید از این دو دستور sed برای انجام جایگزینی استفاده کنید: ⦁ $ sudo sed -i ‘s/:9000/:9002/’ /etc/opt/rh/rh-php70/php-fpm.d/www.conf ⦁ ⦁ $ sudo sed -i ‘s/:9000/:9003/’ /etc/opt/rh/rh-php72/php-fpm.d/www.conf
اکنون برای هر یک از خدمات PHP خود پورت اختصاصی تعیین کرده اید. با این حال ، قبل از این که این تغییرات کار کنند ، باید پورت ها را به پیکربندی SELinux اضافه کنید. SELinux مخفف Security Enhanced Linux است و به طور پیش فرض در CentOS 7 فعال می شود. شما باید پورت های جدید 9002 و 9003 خود را به پایگاه داده SELinux اضافه کنید و آنها را به خدمات httpd خود اختصاص دهید ، در غیر این صورت برنامه های شما اجرا نمی شوند. برای انجام این کار از دستور semanage استفاده کنید: ⦁ $ sudo semanage port -a -t http_port_t -p tcp 9002 ⦁ ⦁ $ sudo semanage port -a -t http_port_t -p tcp 9003
پرچم -a مشخص می کند که شما یک آبجکت را به بانک اطلاعاتی اضافه می کنید. پرچم -t نوع آبجکت را مشخص می کند ، که در این حالت http_port_t است. و پرچم -p پروتکل tcp را تعیین می کند. می توانید در این آموزش و یا با مراجعه به مطالب رسمی SELinux درباره SELinux و فرمان semanage اطلاعات بیشتری کسب کنید. اکنون آماده شروع و فعال کردن خدمات PHP خود هستید. با سرویس rh-php70-php-fpm خود شروع کنید و آن را فعال کنید تا در بوت شروع شود: ⦁ $ sudo systemctl start rh-php70-php-fpm ⦁ ⦁ $ sudo systemctl enable rh-php70-php-fpm
در مرحله بعدی ، وضعیت سرویس rh-php70-php-fpm خود را تأیید کنید: ⦁ $ sudo systemctl status rh-php70-php-fpm ⦁ خروجی مانند این را خواهید دید: Output ● rh-php70-php-fpm.service – The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/rh-php70-php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-04-18 04:49:59 UTC; 1min 6s ago Main PID: 1852 (php-fpm) Status: “Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec” CGroup: /system.slice/rh-php70-php-fpm.service ├─1852 php-fpm: master process (/etc/opt/rh/rh-php70/php-fpm.conf) ├─1853 php-fpm: pool www ├─1854 php-fpm: pool www ├─1855 php-fpm: pool www ├─1856 php-fpm: pool www └─1857 php-fpm: pool www
Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager… Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.
با تکرار این فرایند ، سرویس rh-php72-php-fpm را راه اندازی کنید و آن را فعال کنید تا از بوت شروع شود: ⦁ $ sudo systemctl start rh-php72-php-fpm ⦁ ⦁ $ sudo systemctl enable rh-php72-php-fpm
در مرحله بعد ، وضعیت سرویس rh-php72-php-fpm خود را تأیید کنید: ⦁ $ sudo systemctl status rh-php72-php-fpm ⦁ خروجی دیگری مانند این را مشاهده خواهید کرد: Output ● rh-php72-php-fpm.service – The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-04-18 04:50:04 UTC; 1min 59s ago Main PID: 1876 (php-fpm) Status: “Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec” CGroup: /system.slice/rh-php72-php-fpm.service ├─1876 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf) ├─1877 php-fpm: pool www ├─1878 php-fpm: pool www ├─1879 php-fpm: pool www ├─1880 php-fpm: pool www └─1881 php-fpm: pool www
Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager… Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.
در این مرحله شما دو نسخه PHP را روی سرور خود نصب کرده اید. در مرحله بعد ، برای هر وب سایتی که می خواهید مستقر کنید ، یک ساختار دایرکتوری ایجاد خواهید کرد. مرحله 2 – ایجاد ساختارهای دیرکتوری برای هر دو وب سایت در این بخش یک دایرکتوری ریشه مستند و یک صفحه ایندکس برای هر یک از وب سایت ها ایجاد می کنید ابتدا دایرکتوری های ریشه مستندات را برای هر دوی site1.your_domain و site2.your_domain ایجاد کنید: ⦁ $ sudo mkdir /var/www/site1.your_domain ⦁ ⦁ $ sudo mkdir /var/www/site2.your_domain
به طور پیش فرض ، وب سرور Apache به عنوان یک کاربر Apache و یک گروه Apache اجرا می شود. بنابراین / var / www / و کلیه فایل ها و زیرشاخه های آن نیز باید متعلق به آنها باشد. دستورالعمل های زیر را برای تأیید صحت مالکیت و مجوزهای دیرکتوری های ریشه وب سایت خود اجرا کنید: ⦁ $ sudo chown -R apache:apache /var/www/site1.your_domain ⦁ ⦁ $ sudo chown -R apache:apache /var/www/site2.your_domain ⦁ ⦁ $ sudo chmod -R 755 /var/www/site1.your_domain ⦁ ⦁ $ sudo chmod -R 755 /var/www/site2.your_domain
دستور chown مالکیت دو دایرکتوری وب سایت شما را به کاربر apache و گروه apache تغییر می دهد. دستور chmod مجوزهای مرتبط با آن کاربر و گروه و سایر افراد را تغییر می دهد. در مرحله بعد یک فایل info.php را در هر فهرست ریشه وب سایت ایجاد خواهید کرد. با این کار اطلاعات نسخه PHP هر وب سایت نمایش داده می شود. با site1 شروع کنید: ⦁ $ sudo vi /var/www/site1.your_domain/info.php ⦁ خط زیر را اضافه کنید: /var/www/site1.your_domain/info.php <?php phpinfo(); ?>
فایل را ذخیره کنید و ببندید. اکنون فایل info.php که در site2 ایجاد کرده اید را کپی کنید: ⦁ $ sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php ⦁
سرور وب شما اکنون دارای دیرکتوری های ریشه مستند است که هر سایت برای ارائه داده ها به بازدید کنندگان به آن نیاز دارد. در مرحله بعدی ، وب سرور Apache خود را پیکربندی خواهید کرد تا با دو نسخه مختلف PHP کار کند. مرحله 3 – پیکربندی Apache برای هر دو وب سایت در این بخش دو فایل پیکربندی هاست مجازی ایجاد خواهید کرد. با این کار دو وب سایت شما قادر خواهند بود همزمان با دو نسخه مختلف PHP کار کنند. برای اینکه Apache بتواند این محتوا را ارائه دهد ، باید یک فایل هاست مجازی با دستورالعمل های صحیح ایجاد کنید. شما دو فایل پیکربندی هاست مجازی جدید را درون دیرکتوری (/etc/httpd/conf.d/) ایجاد خواهید کرد. ابتدا یک فایل پیکربندی هاست مجازی جدید برای وب سایت site1.your_domain ایجاد کنید. در اینجا Apache را برای ارائه محتوا با استفاده از PHP 7.0 هدایت می کنید: ⦁ $ sudo vi /etc/httpd/conf.d/site1.your_domain.conf ⦁ محتوای زیر را اضافه کنید. اطمینان حاصل کنید که مسیر فهردیرکتوریست وب سایت ، نام سرور ، پورت و نسخه PHP با تنظیمات شما مطابقت دارد: /etc/httpd/conf.d/site1.your_domain.conf
<VirtualHost *:80> ServerAdmin [email protected]_domain ServerName site1.your_domain DocumentRoot /var/www/site1.your_domain DirectoryIndex info.php SetHandler “proxy:fcgi://127.0.0.1:9002 ScriptAlias /cgi-bin/ “/var/www/cgi-bin/” AddHandler php70-fcgi .php Action php70-fcgi /cgi-bin/php70.fcgi ErrorLog /var/log/httpd/site1.your_domain_error.log CustomLog /var/log/httpd/site1.your_domain_access.log combined </VirtualHost>
برای DocumentRoot مسیر دایرکتوری ریشه وب سایت خود را مشخص می کنید. برای ServerAdmin ایمیلی را اضافه می کنید که مدیر سایت your_domain بتواند به آن دسترسی پیدا کند. برای ServerName آدرس url زیر دامنه خود را اضافه می کنید. برای SetHandler پورت9002 را مشخص می کنید. دستورالعمل های باقیمانده نیز خدمات شما را برای پیاده سازی PHP 7.0 پیکربندی می کنند. فایل را ذخیره کنید و ببندید. در مرحله بعدی ، یک فایل پیکربندی هاست مجازی جدید برای وب سایت site2.your_domain ایجاد کنید. شما برای استقرار PHP 7.2 این زیر دامنه را مشخص می کنید: ⦁ $ sudo vi /etc/httpd/conf.d/site2.your_domain.conf ⦁ محتوای زیر را اضافه کنید. دوباره مطمئن شوید که مسیر دیرکتوری وب سایت ، نام سرور ، پورت و نسخه PHP با اطلاعات منحصر به فرد شما مطابقت دارد: /etc/httpd/conf.d/site2.your_domain.conf <VirtualHost *:80> ServerAdmin [email protected]_domain ServerName site2.your_domain DocumentRoot /var/www/site2.your_domain DirectoryIndex info.php SetHandler “proxy:fcgi://127.0.0.1:9003 ScriptAlias /cgi-bin/ “/var/www/cgi-bin/” AddHandler php72-fcgi .php Action php72-fcgi /cgi-bin/php72.fcgi ErrorLog /var/log/httpd/site2.your_domain_error.log CustomLog /var/log/httpd/site2.your_domain_access.log combined </VirtualHost>
پس از اتمام فایل را ذخیره کنید و ببندید. سپس فایل پیکربندی Apache را برای هرگونه خطای نحوی بررسی کنید: ⦁ sudo apachectl configtest ⦁ خروجی زیر را مشاهده خواهید کرد : Output ⦁ Syntax OK
در آخر ، سرویس Apache را ریستارت کنید تا تغییرات خود را به اجرا درآورید: ⦁ $ sudo systemctl restart httpd ⦁
اکنون که Apache را برای سرویس دهی به هر سایت پیکربندی کرده اید ، آنها را آزمایش می کنید تا مطمئن شوید که نسخه های مناسب PHP در حال اجرا هستند. مرحله 4 – آزمایش هر دو وب سایت در این مرحله ، شما برای اجرای دو نسخه مختلف از PHP ، دو وب سایت پیکربندی کرده اید. حالا نتایج را آزمایش کنید. مرورگر وب خود را باز کنید و از هر دو سایت http: //site1.your_domain و http: //site2.your_domain بازدید کنید. دو صفحه را مشاهده خواهید کرد که به شکل زیر است:
به عناوین توجه کنید. صفحه اول نشان می دهد که site1.your_domain نسخه 7.0 را مستقر کرده است. دومی نشان می دهد که site1.your_domain نسخه 7.2 را مستقر کرده است. اکنون که سایت های خود را آزمایش کرده اید ، فایل های info.php را حذف کنید. از آنجا که آنها حاوی اطلاعات حساس در مورد سرور شما هستند و در دسترس کاربران غیرمجاز قرار میگیرند ، آسیب پذیری امنیتی ایجاد می کنند. فایل ها را حذف کنید: ⦁ $ sudo rm -rf /var/www/site1.your_domain/info.php ⦁ ⦁ $ sudo rm -rf /var/www/site2.your_domain/info.php
اکنون یک سرور CentOS 7 واحد دارید که دو وب سایت با دو نسخه مختلف PHP را اداره می کند. با این حال PHP-FPM به این یک برنامه محدود نمی شود. نتیجه اکنون هاست های مجازی و PHP-FPM را برای ارائه خدمات به چندین وب سایت و نسخه های مختلف PHP در یک سرور واحد ترکیب کرده اید. تنها محدودیت عملی روی تعداد سایت های PHP و نسخه های PHP که سرویس Apache شما قادر به کنترل آن است ، قدرت پردازش نمونه شماست. از اینجا شما ممکن است به کاوش در مورد ویژگی های پیشرفته تر PHP-FPM بپردازید ، مانند فرآیند spawning تطبیقی یا اینکه چگونه می تواند sdtout و stderr را وارد کند. اکنون می توانید وب سایت های خود را ایمن کنید. برای دستیابی به این هدف ، می توانید آموزش ما در مورد چگونگی تأمین امنیت سایتهای خود با مجوزهای رایگان TLS / SSL از Let’s Encrypt را دنبال کنید.
برچسب‌ها:
Daemon
,
PHP-FPM
,
Remi PPA
,
stdout
0 notes
vpsgol33-blog · 4 years
Text
نصب Nginx، MySQL، PHP در CentOS 7
یک پشته نرم افزاری LEMP گروهی از نرم افزارهای منبع باز است که به طور معمول در کنار هم نصب می شوند تا سرور بتواند میزبان وب سایت های پویا و برنامه های وب باشد. این اصطلاح در واقع حاصل یک مخفف است که سیستم عامل لینوکس ، با سرور وب ENginx (که جایگزین مولفه Apache یک پشته LAMP می شود) را نشان میدهد. داده های سایت در یک پایگاه داده مبتنی بر MySQL ذخیره می شوند و محتوای پویا توسط PHP پردازش می شود. در این راهنما ، یک پشته LEMP را با PHP 7.4 که روی یک سرور CentOS 7 نصب شده است ، با استفاده از MariaDB به عنوان سیستم مدیریت پایگاه داده ، دریافت خواهیم کرد. MariaDB به عنوان یک جایگزین برای سرور اصلی MySQL کار می کند ، که در عمل به این معنی است که می توانید بدون نیاز به ایجاد پیکربندی یا تغییر کد در برنامه ، به MariaDB سوییچ کنید. پیش نیازها قبل از شروع این راهنما ، باید یک حساب کاربری جداگانه و غیر ریشه در سرور خود تنظیم کنید. با انجام مراحل 1-4 در تنظیم اولیه سرور برای CentOS 7 می توانید نحوه انجام این کار را یاد بگیرید. مرحله 1 – نصب Nginx به منظور نمایش صفحات وب برای بازدید کنندگان سایت ، قصد داریم از Nginx ، سرور وبی با کارایی بالا استفاده کنیم. برای به دست آوردن آخرین نسخه Nginx ، ابتدا مخزن EPEL را نصب خواهیم کرد که حاوی نرم افزار اضافی برای سیستم عامل CentOS 7 است. برای اضافه کردن مخزن CentOS 7 EPEL ، دستور زیر را اجرا کنید: ⦁ $ sudo yum install epel-release ⦁ از آنجا که ما از یک دستور sudo استفاده می کنیم ، این عملیات با امتیازات اصلی انجام می شود. از شما رمزعبور کاربر معمولی را میخواهد تا تأیید کند که شما اجازه اجرای دستورات دارای امتیازات اصلی را دارید. همچنین از شما خواسته می شود نصب را تأیید کنید ، بنابراین Y را برای ادامه فشار دهید. اکنون که مخزن EPEL روی سرور شما نصب شده است ، Nginx را با استفاده از دستور yum زیر نصب کنید: ⦁ $ sudo yum install nginx ⦁ پس از اتمام نصب ، سرویس Nginx را با این دستور راه اندازی کنید: ⦁ $ sudo systemctl start nginx ⦁ با مراجعه به آدرس IP عمومی سرور خود در مرورگر وب ، می توانید بلافاصله چک کنید که همه چیز مطابق پیش بینی جلو میرود (اگر این اطلاعات را ندارید ، میتوانید آدرس IP عمومی خود را در زیر عنوان بعدی ببینید): Open in a web browser: http://server_domain_name_or_IP/
صفحه پیش فرض CentOS 7 Nginx را مشاهده خواهید کرد ، که برای اهداف اطلاع رسانی و آزمایش میباشد. باید چ��زی شبیه به این ببینید:
اگر این صفحه را مشاهده کردید ، اکنون سرور وب شما به درستی نصب شده است. برای فعال کردن Nginx در بوت ، دستور زیر را اجرا کنید: ⦁ $ sudo systemctl enable nginx ⦁ چگونه آدرس IP عمومی سرور خود را پیدا کنید اگر نمی دانید آدرس IP عمومی سرور شما چیست ، روش های مختلفی برای یافتن آن وجود دارد. معمولاً آدرسی است که شما برای اتصال به سرور خود از طریق SSH استفاده می کنید. از خط فرمان می توانید این چند روش را پیدا کنید. ابتدا می توانید از ابزار iproute2 استفاده کنید تا آدرس خود را دریافت کنید: ⦁ $ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’ ⦁ این دستور یک یا دو خط شما را به عقب باز می گرداند. هر دو آدرس صحیح هستند ، اما رایانه شما فقط می تواند یکی از آنها را استفاده میکند ، بنابراین به راحتی هر یک را امتحان کنید. یک روش دیگر استفاده از یک جناح خارج است تا به شما بگوید سرور شما را چگونه می بیند. می توانید با پرسیدن از یک سرور خاص آدرس IP خود را پیدا کنید: ⦁ $ curl http://icanhazip.com ⦁ صرف نظر از روشی که برای دریافت آدرس IP خود استفاده می کنید ، می توانید آن را در نوار آدرس مرورگر وب خود وارد کنید تا به سرور خود برسید. مرحله 2 – نصب MariaDB اکنون که سرور وب خود را راه اندازی کرده ایم ، زمان آن است که MariaDB ، یک جایگزین داخلی MySQL را نصب کنید. MariaDB یک فورک توسعه یافته از سیستم مدیریت پایگاه داده رابطه ای MySQL است. باز هم ، می توانیم از yum برای به دست آوردن و نصب نرم افزار خود استفاده کنیم. این بار ، ما بسته های کمکی دیگری را نیز نصب خواهیم کرد که در برقراری ارتباط با مؤلفه ها به ما کمک می کنند: ⦁ $ sudo yum install mariadb-server mariadb ⦁ پس از اتمام نصب ، باید MariaDB را با دستور زیر شروع کنیم: ⦁ $ sudo systemctl start mariadb ⦁ اکنون که پایگاه داده MariaDB ما در حال اجراست ، می خواهیم یک اسکریپت امنیتی را اجرا کنیم که برخی پیش فرض های پرخطر را حذف کرده و دسترسی به پایگاه داده ما را خاموش می کند. اسکریپت تعاملی را با اجرای این دستور شروع کنید: ⦁ $ sudo mysql_secure_installation ⦁ اعلان از شما می خواهد رمز عبور فعلی MariaDB خود را وارد کنید. از آنجا که شما به تازگی MariaDB را نصب کرده اید ، به احتمال زیاد رمز را نخواهید داشت ، بنابراین با فشار دادن enter آن را خالی بگذارید. سپس اعلان از شما سؤال می کند که آیا می خواهید رمز اصلی را تنظیم کنید. پیش بروید و Y را وارد کنید ، و دستورالعمل ها را دنبال کنید: mysql_secure_installation prompts: Enter current password for root (enter for none): OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.
Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. … Success!
برای بقیه سؤالات ، باید مقادیر پیش فرض را با زدن “ENTER” بپذیرید. این کار باعث حذف برخی از کاربران و دیتابیس های نمونه میشود، ورود به سیستم ریشه از راه دور غیرفعال می شود و این قوانین جدید را بارگذاری می کند تا MySQL فوراً با تغییراتی که ایجاد کرده ایم منطبق شود. آخرین کاری که باید انجام دهید این است که MariaDB را فعال کنید که در بوت شروع شود. برای انجام این کار از دستور زیر استفاده کنید: ⦁ $ sudo systemctl enable mariadb ⦁ در این مرحله ، سیستم پایگاه داده شما اکنون تنظیم شده است و ما می توانیم پیش برویم. مرحله 3 – نصب PHP PHP مؤلفه ای از ستاپ ما است که کد را برای نمایش محتوای پویا پردازش می کند. این برنامه می تواند اسکریپت ها را اجرا کند ، برای بدست آوردن اطلاعات به پایگاه داده های MySQL ما متصل شود و محتوای پردازش شده را برای نمایش به سرور وب ما تحویل دهد. نسخه PHP موجود به طور پیش فرض در سرورهای CentOS 7 منسوخ شده است ، و به همین دلیل ، باید یک مخزن بسته شخص ثالث را نصب کنیم تا PHP 7+ را دریافت کرده و آن بر روی سرور CentOS 7نصب کنیم. Remi یک مخزن بسته محبوب است که جدیدترین نسخه های PHP را برای سرورهای CentOS ارائه می دهد. برای نصب مخزن Remi برای CentOS 7 ، دستور زیر را اجرا کنید: ⦁ $ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm ⦁ پس از اتمام نصب ، باید دستوری اجرا کنید تا مخزن حاوی نسخه دلخواه PHP شما فعال شود. برای بررسی اینکه نسخه های PHP 7+ در مخزن Remi در دسترس هستند ، این دستور را اجرا کنید: ⦁ $ yum –disablerepo=”*” –enablerepo=”remi-safe” list php[7-9][0-9].x86_64 ⦁ خروجی مانند این را خواهید دید: Output Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * remi-safe: mirrors.ukfast.co.uk Available Packages php70.x86_64 2.0-1.el7.remi remi-safe php71.x86_64 2.0-1.el7.remi remi-safe php72.x86_64 2.0-1.el7.remi remi-safe php73.x86_64 2.0-1.el7.remi remi-safe php74.x86_64 1.0-3.el7.remi remi-safe php80.x86_64
در این راهنما ، PHP 7.4 را نصب خواهیم کرد که در حال حاضر به روزترین نسخه PHP است. برای فعال کردن بسته صحیح Remi برای نصب PHP 7.4 ، اجرا کنید: ⦁ $ sudo yum-config-manager –enable remi-php74 ⦁ اکنون می توانیم پیش برویم و از yum برای نصب PHP استفاده کنیم. دستور زیر کلیه بسته های لازم را برای تنظیم PHP 7.4 در Nginx نصب می کند و به آن اجازه می دهد تا به پایگاه داده های مبتنی بر MySQL متصل شود: ⦁ $ sudo yum install php php-mysqlnd php-fpm ⦁ برای تأیید اینکه PHP به عنوان نسخه انتخابی شما موجود است ، این دستور را اجرا کنید: ⦁ $ php –version ⦁ خروجی مانند این را خواهید دید: Output PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
اکنون PHP با موفقیت روی سیستم شما نصب شده است. در مرحله بعد ، باید تغییراتی در تنظیمات پیش فرض ایجاد کنیم. برای تسهیل ویرایش فایل ها در CentOS ، ابتدا nano که ویرایشگر متن کاربر پسند تری نسبت به vi است نصب خواهیم کرد: ⦁ $ sudo yum install nano ⦁ فایل پیکربندی /etc/php-fpm.d/www.conf را با استفاده از nano یا ویرایشگر مورد نظر خود باز کنید: ⦁ $ sudo nano /etc/php-fpm.d/www.conf ⦁ اکنون به دنبال دستورالعمل های user  و group  باشید. اگر از nano استفاده می کنید ، می توانید با فشردن CTRL + W این عبارات را در فایل باز جستجو کنید. /etc/php-fpm.d/www.conf … ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user’s group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = apache ; RPM: Keep a group allowed to write in log dir. group = apache …
توجه خواهید کرد که متغیرهای کاربر و گروه روی apache تنظیم شده اند. ما باید این موارد را به nginx تغییر دهیم: /etc/php-fpm.d/www.conf … ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx …
سپس ، دستورالعمل listen را پیدا کنید. به طور پیش فرض ، php-fpm به هاست و پورت خاصی از طریق TCP گوش می دهد. ما می خواهیم این تنظیمات را تغییر دهیم تا در یک فایل سوکت محلی شنود کند ، زیرا این کار باعث بهبود عملکرد کلی سرور می شود. خط حاوی دستورالعمل listen را به شرح زیر تغییر دهید: /etc/php-fpm.d/www.conf listen = /var/run/php-fpm/php-fpm.sock;
در آخر ، ما باید تنظیمات مالک و گروه را برای فایل سوکت که اخیراً در دستورالعمل listen تعریف کرده ایم ، تغییر دهیم. دستورالعمل listen.owner ، listen.group و listen.mode را پیدا کنید. این خطوط بطور پیش فرض حذف می شوند. با حذف علامت ; در شروع خط آنها را باطل کنید. سپس ، مالک و گروه را به nginx تغییر دهید: /etc/php-fpm.d/www.conf listen.owner = nginx listen.group = nginx listen.mode = 0660
هنگام ویرایش ، فایل را ذخیره کنید و ببندید. اگر از nano استفاده می کنید ، این کار را با فشار دادن CTRL + X ، سپس Y و ENTER انجام دهید. برای فعال و شروع سرویس php-fpm ، دستور زیر را اجرا کنید: ⦁ $ sudo systemctl start php-fpm ⦁ اکنون محیط PHP شما آماده است. در مرحله بعد ، Nginx را پیکربندی خواهیم کرد تا همه درخواست های ارسال شده برای اسکریپت های PHP توسط php-fpm پردازش شود. مرحله 4 – پیکربندی Nginx برای پردازش صفحات PHP اکنون همه اجزای لازم نصب شده است. تنها تغییر پیکربندی که باید انجام دهیم این است که به Nginx بگوییم از پردازنده PHP ما برای محتوای پویا استفاده کند. Nginx یک دایرکتوری اختصاصی دارد که می توانیم با استفاده از بلوک سرور ، هر وب سایت هاست را به عنوان یک فایل پیکربندی جداگانه تعریف کنیم. در واقع شبیه به هاست های مجازی Apache است. با وجود نصب پیش فرض ، این دایرکتوری خالی است. ما یک فایل جدید ایجاد خواهیم کرد تا به عنوان وب سایت پیش فرض PHP در این سرور ، سرویس دهی کند ، که باعث لغو بلوک سرور پیش فرض مشخص شده در فایل /etc/nginx/nginx.conf خواهد شد. ابتدا یک فایل جدید را در دیرکتوری /etc/nginx/conf.d باز کنید: ⦁ $ sudo nano /etc/nginx/conf.d/default.conf ⦁ بلوک تعریف سرور PHP زیر را در فایل پیکربندی خود کپی کنید و فراموش نکنید که دستورالعمل server_name را جایگزین کنید تا به نام دامنه یا آدرس IP سرور شما اشاره کند: /etc/nginx/conf.d/default.conf server { listen 80; server_name server_domain_or_IP;
root /usr/share/nginx/html; index index.php index.html index.htm;
location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { root /usr/share/nginx/html; }
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
پس از پایان کار ، فایل را ذخیره کنید و ببندید. پس ، Nginx را مجدداً ریستارت کنید تا تغییرات اعمال شود: ⦁ $ sudo systemctl restart nginx ⦁ اکنون سرور وب شما کاملاً تنظیم شده است. در مرحله بعدی ، ادغام PHP را با Nginx آزمایش خواهیم کرد. مرحله 5 – تست پردازش PHP در وب سرور خود اکنون که سرور وب شما تنظیم شده است ، می توانیم یک اسکریپت آزمایشی PHP ایجاد کنیم تا مطمئن شویم Nginx با کمک php-fpm به درستی اسکریپت های .php را اداره می کند. قبل از ایجاد اسکریپت ، ما در تنظیمات پیش فرض مالکیت در ریشه سند Nginx تغییری ایجاد خواهیم کرد ، به طوری که کاربر sudo معمولی ما قادر به ایجاد فایل هایی در آن مکان باشد. دستور زیر مالکیت ریشه اصلی پیش فرض Nginx را به کاربر و گروهی به نام sammy تغییر می دهد ، بنابراین حتماً نام کاربری و گروه هایلایت شده را در این دستور جایگزین کنید تا نام کاربری و گروه سیستم شما منعکس شود. ⦁ $ sudo chown -R sammy.sammy /usr/share/nginx/html/ ⦁ اکنون یک صفحه PHP تست ایجاد میکنیم تا مطمئن شویم که سرور وب همانطور که انتظار می رود کار میکند. یک فایل PHP جدید با نام info.php در دیرکتوری / usr / share / nginx / html ایجاد کنید: ⦁ $ nano /usr/share/nginx/html/info.php ⦁ کد PHP زیر اطلاعات مربوط به محیط PHP فعلی را که روی سرور در حال اجرا است نمایش می دهد: /usr/share/nginx/html/info.php <?php
phpinfo();
پس از اتمام ، فایل را ذخیره کنید و ببندید. اکنون می توانیم آزمایش کنیم که آیا سرور وب ما می تواند محتوای تولید شده توسط یک اسکریپت PHP را به درستی نمایش دهد. به مرورگر خود بروید و به نام میزبان یا آدرس IP سرور خود که به دنبال آن /info.phpنوشته شده است، دسترسی پیدا کنید: http://server_host_or_IP/info.php
صفحه ای شبیه به این را مشاهده خواهید کرد:
پس از بررسی اطلاعات مربوط به سرور PHP خود از طریق آن صفحه ، بهتر است فایل ایجاد شده را حذف کنید زیرا حاوی اطلاعات حساسی در مورد محیط PHP و سرور CentOS شما است. برای حذف آن فایل می توانید از rm استفاده کنید: ⦁ rm /usr/share/nginx/html/info.php ⦁ در صورت نیاز بعداً می توانید این فایل را دوباره بازیابی کنید. نتیجه در این راهنما ، با استفاده از Nginx به عنوان سرور وب و آخرین نسخه PHP ، یک پایه انعطاف پذیر برای ارائه وب سایت های PHP و برنامه ها به بازدید کنندگان خود ایجاد کردید. شما Nginx را به گونه ای تنظیم کرده اید تا بتوانید درخواست های PHP را از طریق php-fpm انجام دهید ، همچنین یک پایگاه داده MariaDB را برای ذخیره اطلاعات وب سایت خود تنظیم نموده اید.
برچسب‌ها:
ENginx
,
LEMP
,
MariaDB
,
Nginx
,
PHP 7.4
0 notes
vpsgol33-blog · 4 years
Text
راه اندازی سرور اولیه با اوبونتو 20.04
هنگامی که برای اولین بار سرور مجازی جدید اوبونتو 20.04 را ایجاد می کنید ، باید برخی از مراحل مهم تنظیمات را به عنوان بخشی از ستاپ اصلی انجام دهید. این مراحل باعث افزایش امنیت و قابلیت استفاده سرور مجازی شما می شود و پایه و اساس محکمی را برای اقدامات بعدی به شما می دهد. مرحله 1 – ورود به سیستم به عنوان ریشه برای ورود به سرور مجازی خود ، باید آدرس IP عمومی سرور مجازی خود را بدانید. شما همچنین به رمز عبور یا در صورت نصب کلید SSH برای تأیید اعتبار – به کلید خصوصی برای حساب کاربر root نیاز دارید. اگر قبلاً به سرور مجازی خود وارد نشده اید ، بهتر است راهنمای ما در مورد نحوه اتصال به دراپلت ها با SSH را دنبال کنید ، که این روند را با جزئیات پوشش می دهد. اگر از قبل به سرور مجازی خود وصل نشده اید ، اکنون به عنوان کاربر اصلی با استفاده از دستور زیر وارد سیستم شوید (بخش هایلایت شده فرمان را با آدرس IP عمومی سرور مجازی خود جایگزین کنید): $ ssh root@your_server_ip
در صورت وجود هشدار درباره تایید هویت هاست، آن را بپذیرید. اگر از تأیید اعتبار استفاده می کنید ، رمز ورود خود را وارد کنید. اگر از یک کلید SSH استفاده می کنید که عبارت عبور آن محافظت می شود ، ممکن است از شما خواسته شود اولین بار که از هر کلید استفاده می کنید ، کلمه عبور را وارد کنید. اگر اولین بار است که با گذرواژه وارد سرور مجازی می شوید ، ممکن است از شما خواسته شود رمزعبور root را تغییر دهید. درباره ریشه کاربر ریشه کاربر ادمین در محیط لینوکس است که امتیازات بسیار گسترده ای دارد. به دلیل افزایش امتیازات حساب ریشه ، استفاده از آن به صورت منظم اصلا پیشنهاد نمیشود. این امر به این دلیل است که بخشی از قدرت ذاتی حساب ریشه ، توانایی ایجاد تغییرات بسیار مخرب ، حتی به طور تصادفی است. مرحله بعدی تنظیم یک حساب کاربری جدید با امتیازات کمتر برای استفاده روزانه است. بعداً ، به شما یاد می دهیم که چگونه تنها در مواقعی که به آنها احتیاج دارید ، امتیازات بیشتر را کسب کنید. مرحله 2 – ایجاد یک کاربر جدید پس از ورود به عنوان root ، آماده اضافه کردن حساب کاربری جدید هستیم. در آینده ، به جای root وارد این حساب جدید می شویم. این مثال یک کاربر جدید به نام sammy ایجاد می کند ، اما شما باید آن را با نام کاربری که دوست دارید جایگزین کنید: # adduser sammy
با وارد کردن رمز ورود به حساب ، چند سؤال از شما پرسیده خواهد شد. یک رمزعبور قوی وارد کنید و در صورت تمایل ، هر یک از اطلاعات اضافی را پر کنید. این کار ضروری نیست و در هر فیلدی که مایل به عبور هستید می توانید ENTER را بزنید. مرحله 3 – اعطای امتیازات ادمین اکنون ، یک حساب کاربری جدید با امتیازات معمول حساب داریم. با این حال ، ممکن است گاهی اوقات به انجام کارهای اجرایی نیاز داشته باشیم. برای جلوگیری از خارج شدن از حساب کاربری عادی و ورود به سیستم به عنوان حساب ریشه ، می توانیم برای حساب عادی خود چیزی به اسم superuser یا امتیازات اصلی معرفی کنیم. این امر به کاربر عادی ما امکان می دهد با قرار دادن کلمه sudo قبل از هر دستور ، دستوراتی را با امتیازات ادمین اجرا کند. برای افزودن این امتیازات به کاربر جدید خود ، باید کاربر را به گروه sudo اضافه کنیم. به طور پیش فرض ، در اوبونتو 20.04 ، کاربرانی که عضو گروه sudo هستند مجاز به استفاده از دستور sudo هستند. به عنوان root ، این دستور را اجرا کنید تا کاربر جدید خود را به گروه sudo اضافه کنید (نام کاربری هایلایت شده را با کاربر جدید خود جایگزین کنید): # usermod -aG sudo sammy
اکنون ، هنگامی که به عنوان کاربر معمولی خود وارد سیستم میشوید ، می توانید قبل از دستورات sudo را تایپ کنید تا اقدامات خود را با امتیازات فوق کاربری انجام دهید. مرحله 4 – تنظیم فایروال پایه سرور مجازی های Ubuntu 20.04 می توانند از فایروال UFW استفاده کنند تا اطمینان حاصل شود که فقط اتصال به برخی سرویس ها مجاز است. ما می توانیم با استفاده از این برنامه یک فایروال پایه را به راحتی تنظیم کنیم. توجه: اگر سرور مجازی های شما روی vpsgol در حال اجرا هستند ، می توانید به طور اختیاری به جای فایروال UFW از فایروال vpsgol Cloud
برنامه ها می توانند پس از نصب نمایه های خود را در UFW ثبت کنند. این پروفایل ها به UFW اجازه می دهند تا این برنامه ها را با نامشان مدیریت کند. OpenSSH ، سرویسی که به ما امکان اتصال کنونی به سرور مجازی خود را می دهد ، دارای نمایه ای است که در UFW ثبت شده است. می توانید این را با تایپ کردن دستور زیر مشاهده کنید: # ufw app list
Output Available applications: OpenSSH
ما باید اطمینان حاصل کنیم که فایروال امکان اتصالات SSH را می دهد تا بتوانیم دفعه دیگر وارد سیستم شویم. می توانیم با تایپ کردن این دستور اتصالات را برقرار کنیم: # ufw allow OpenSSH
پس از آن ، می توانیم با تایپ کردن دستور زیر فایروال را فعال کنیم: # ufw enable
y را تایپ کرده و ENTER را برای ادامه فشار دهید. می توانید با تایپ دستور زیر ببینید که اتصالات SSH هنوز مجاز هستند: # ufw status
Output Status: active
To Action From — —— —- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
از آنجا که فایروال در حال حاضر همه اتصالات به جز SSH را مسدود می کند ، اگر سرویس های اضافی را نصب و پیکربندی کنید ، باید تنظیمات فایروال را تنظیم کنید تا ترافیک در آن وارد شود. شما می توانید برخی از عملیات معمول UFW را در راهنمای UFW Essentials ما بیاموزید. مرحله 5 – فعال کردن دسترسی خارجی برای کاربر معمولی شما اکنون که ما یک کاربر معمولی برای استفاده روزانه داریم ، باید اطمینان حاصل کنیم که می توانیم مستقیماً SSH را وارد حساب کاربری خود کنیم. توجه: تا زمانی که تأیید نکنید که می توانید با کاربر جدید خود وارد سیستم شوید و از sudo استفاده کنید ، توصیه می کنیم به عنوان root وارد شوید. به این ترتیب ، اگر مشکل دارید می توانید به عنوان ریشه عیب یابی کرده و هرگونه تغییر لازم را انجام دهید. اگر از دراپلت vpsgol استفاده می کنید و با اتصال SSH ریشه خود مشکل دارید ، می توانید با استفاده از کنسول vpsgol وارد دراپلت شوید. روند پیکربندی دسترسی SSH برای کاربر جدید شما به این بستگی دارد که آیا حساب ریشه سرور مجازی شما از رمز عبور یا کلیدهای SSH برای تأیید اعتبار استفاده می کند. اگر حساب root از احراز هویت رمز عبور استفاده می کند اگر با استفاده از گذرواژه وارد حساب ریشه خود شده اید ، تأیید رمز عبور برای SSH فعال می شود. با باز کردن بخش ترمینال جدید و استفاده از SSH با نام کاربری جدید خود می توانید به حساب کاربری جدید خود SSH کنید: $ssh sammy@your_server_ip
بعد از وارد کردن رمزعبور کاربر معمولی ، وارد سیستم می شوید. به یاد داشته باشید اگر نیاز به اجرای یک فرمان ��ا امتیازات ادمین دارید ، قبل از این کار sudo را تایپ کنید: $ sudo command_to_run
برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شود. برای تقویت امنیت سرور مجازی خود ، ما به شدت توصیه می کنیم به جای استفاده از احراز هویت رمز عبور ، کلیدهای SSH را تنظیم کنید. برای یادگیری نحوه پیکربندی احراز هویت مبتنی بر کلید ، راهنمای ما را در مورد تنظیم کلیدهای SSH در اوبونتو 20.04 دنبال کنید. اگر حساب ریشه از احراز هویت کلید SSH استفاده می کند اگر با استفاده از کلیدهای SSH به حساب ریشه خود وارد شده اید ، تأیید رمز عبور برای SSH غیرفعال است. برای ورود موفقیت آمیز به سیستم ، باید یک نسخه از کلید عمومی محلی خود را در فایل کاربر new / .ssh / autor_keys کاربر جدید اضافه کنید. از آنجا که کلید عمومی شما قبلاً در فایل ~/.ssh/authorized_keys حساب اصلی ریشه در سرور مجازی است ، می توانیم در بخش موجود ، آن فایل و ساختار دیرکتوری را در حساب کاربری جدید خود کپی کنیم. ساده ترین روش برای کپی کردن فایل ها با مالکیت صحیح و مجوزها ، با دستور rsync است. این کار دایرکتوری .ssh کاربر ریشه را کپی می کند ، مجوزها را نگه می دارد و صاحبان فایل را اصلاح می کند که همه در یک دستور واحد انجام میشوند. اطمینان حاصل کنید که قسمت هایلایت شده فرمان زیر را تغییر دهید تا با نام کاربر معمولی شما مطابقت داشته باشد: توجه: فرمان rsync با منابع و مقاصدی که با یک اسلش جدا شده اند متفاوت از مواردی که اسلش ندارند ، برخورد می کند. هنگام استفاده از rsync در زیر ، مطمئن شوید که دیرکتوری منبع (~ / .ssh) شامل اسلش نیست (بررسی کنید تا مطمئن شوید که از ~ / .ssh /) استفاده نمی کنید. اگر به طور اتفاقی یک اسلش را به این فرمان اضافه کنید ، rsync محتویات دیرکتوری ~ / .ssh حساب اصلی را به جای کپی کردن کل ساختار دیرکتوری/ .ssh در فهرست خانه اصلی کاربر sudo کپی می کند. فایل ها در مکان اشتباه قرار دارند و SSH قادر به یافتن و استفاده از آنها نخواهد بود. # rsync –archive –chown=sammy:sammy ~/.ssh /home/sammy
اکنون یک بخش ترمینال جدید را روی دستگاه محلی خود باز کنید و از SSH با نام کاربری جدید خود استفاده کنید: $ ssh sammy@your_server_ip
بدون استفاده از رمز ورود باید به حساب کاربری جدید وارد شوید. به یاد داشته باشید ، اگر نیاز به اجرای یک فرمان با امتیازات ادمین دارید ، sudo را قبل از آن تایپ کنید: $ sudo command_to_run
برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) از شما رمزعبور کاربر معمولی خواسته می شود. از اینجا به کجا برویم؟ در این مرحله ، شما یک پایه محکم برای سرور مجازی خود دارید. اکنون می توانید هرکدام از نرم افزارهای مورد نیاز خود را بر روی سرور مجازی خود نصب کنید.
برچسب‌ها:
UFW Essentials
اخرین مطالب9 می,2020
نصب و استفاده از Composer در اوبونتو 20.04
9 می,2020
نصب و ایمن سازی phpMyAdmin در اوبونتو 20.04
9 می,2020
نظارت بر اطلاعیه و مسیر BGP با BGPalerter اوبونتو 18.04
9 می,2020
چگونه می توان فایروال را با UFW در اوبونتو 20.04 تنظیم کرد
9 می,2020
اضافه کردن فضای Swap در اوبونتو 20.04
5 می,2020
نحوه نصب و ایمن سازی Redis در اوبونتو 18.04
5 می,2020
نحوه نصب و ایمن سازی Redis در اوبونتو 20.04
5 می,2020
7 مورد از اقدامات امنیتی برای محافظت از سرورهای شما
4 می,2020
نحوه نصب Nginx در اوبونتو 20.04
4 می,2020
نحوه نصب Drupal با Docker Compose
1 می,2020
نصب وب سرور Apache در CentOS 8
1 می,2020
نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04
30 آوریل,2020
نحوه نصب Python 3 روی سرور Ubuntu 20.04
30 آوریل,2020
نصب Python 3 روی سرور Ubuntu 18.04
30 آوریل,2020
نحوه نصب MySQL در اوبونتو 20.04
30 آوریل,2020
نصب و استفاده از PostgreSQL در اوبونتو 20.0
30 آوریل,2020
تنظیم کلیدهای SSH در Ubuntu 20.04
30 آوریل,2020
راه اندازی سرور اولیه با اوبونتو 20.04
30 آوریل,2020
نصب و پیکربندی Elasticsearch در اوبونتو 18.04
26 آوریل,2020
نصب Nginx، MySQL، PHP در CentOS 7
26 آوریل,2020
اجرای چند نسخه PHP بر روی یک سرور
26 آوریل,2020
نظارت بر سلامت سرور با Checkmk در اوبونتو
25 آوریل,2020
نصب MySQL در اوبونتو 18.04
25 آوریل,2020
نصب و پیکربندی Ansible در اوبونتو 18.04
25 آوریل,2020
نصب Jitsi Meet در Ubuntu 18.04
25 آوریل,2020
نصب و پیکربندی pgAdmin 4 در Server Mode
25 آوریل,2020
راه اندازی سرور Prisma روی اوبونتو 18.04
22 آوریل,2020
نصب Python 3 و تنظیم یک محیط برنامه نویسی
22 آوریل,2020
نصب و ایمن سازی phpMyAdmin با Nginx در سرور
22 آوریل,2020
ساخت و استقرار سرور GraphQL با Node.js و MongoDB
0 notes
vpsgol33-blog · 4 years
Text
تنظیم کلیدهای SSH در Ubuntu 20.04
SSH یا همان پوسته ایمن، پروتکل رمزگذاری شده است که برای اداره و برقراری ارتباط با سرور مجازی ها استفاده می شود. هنگام کار با سرور مجازی Ubuntu ، احتمال دارد بیشتر وقت خود را در یک بخش ترمینال متصل به سرور مجازی خود از طریق SSH بگذرانید. در این راهنما ، ما روی تنظیم کلیدهای SSH برای نصب Ubuntu 20.04 تمرکز خواهیم کرد. کلیدهای SSH روشی آسان و مطمئن برای ورود به سرور مجازی شما فراهم کرده و برای همه کاربران توصیه می شود. مرحله 1 – ایجاد جفت کلید اولین قدم ایجاد یک جفت کلید در دستگاه کلاینت (معمولاً رایانه شما) میباشد: $ ssh-keygen
به طور پیش فرض نسخه های اخیر ssh-keygen یک جفت کلید RSA ، 3072 بیتی ایجاد می کنند ، که برای بیشتر موارد استفاده به اندازه کافی ایمن است (میتوانید به صورت اختیاری از پرچم -b 4096 عبور کنید تا یک کلید بزرگتر 4096 بیتی ایجاد نمایید). پس از وارد کردن دستور ، باید خروجی زیر را مشاهده کنید: Output Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):
Enter را فشار دهید تا جفت کلید را در زیردیرکتوری .ssh / در دیرکتوری هوم خود ذخیره کنید ، یا یک مسیر جایگزین را مشخص کنید. اگر قبلاً یک جفت کلید SSH ایجاد کرده اید ، ممکن است اعلان زیر را مشاهده کنید: Output /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?
اگر تصمیم به بازنویسی کلید در دیسک دارید ، دیگر نمی توانید با استفاده از کلید قبلی ، تأیید اعتبار کنید. در انتخاب بله بسیار مراقب باشید ، زیرا یک روند مخرب است که قابل برگشت نخواهد بود. سپس باید اعلان زیر را مشاهده کنید: Output Enter passphrase (empty for no passphrase):
در اینجا میتوانید به صورت اختیاری یک عبارت عبور مطمئن را وارد کنید ، که بسیار توصیه می شود. عبارات عبور برای جلوگیری از ورود کاربران غیرمجاز ، یک لایه امنیتی دیگر اضافه می کند. برای کسب اطلاعات بیشتر در مورد امنیت ، به آموزش ما در مورد چگونگی پیکربندی احراز هویت مبتنی بر کلید SSH در سرور مجازی لینوکس مراجعه کنید. سپس باید خروجی مشابه زیر را مشاهده کنید: Output Your identification has been saved in /your_home/.ssh/id_rsa Your public key has been saved in /your_home/.ssh/id_rsa.pub The key fingerprint is: SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key’s randomart image is: +—[RSA 3072]—-+ | .| | + | | + | | . o . | |o S . o | | + o. .oo. .. .o| |o = oooooEo+ …o| |.. o *o+=.*+o….| | =+=ooB=o…. | +—-[SHA256]—–+
اکنون یک کلید عمومی و خصوصی دارید که می توانید از آن برای تأیید اعتبار استفاده کنید. مرحله بعدی قرار دادن کلید عمومی روی سرور مجازی خود میباشد تا بتوانید برای ورود به سیستم از تأیید اعتبار مبتنی بر SSH استفاده کنید. مرحله 2 – کپی کردن کلید عمومی روی سرور مجازی Ubuntu سریع ترین راه برای کپی کردن کلید عمومی خود در هاست Ubuntu ، استفاده از ابزاری به نام ssh-copy-id است. به دلیل سادگی ، این روش در صورت وجود بسیار توصیه می شود. اگر شناسه ssh-copy-id را در دستگاه کلاینت خود ندارید ، میتوانید از یکی از دو روش جایگزین ارائه شده در این بخش استفاده کنید (کپی کردن از طریق SSH مبتنی بر رمز عبور ، یا کپی کردن کلید به صورت دستی). کپی کردن کلید عمومی با استفاده از ssh-copy-id ابزار ssh-copy-id بصورت پیش فرض در بسیاری از سیستم عامل ها گنجانده شده است ، بنابراین احتمالا آن را در سیستم محلی خود در دسترس داشته باشید. برای کار با این روش ، باید از قبل دسترسی SSH به سرور مجازی مبتنی بر رمزعبور را داشته باشید. برای استفاده از این ابزار ، هاست از راه دور را که می خواهید به آن متصل شوید و حساب کاربری که دسترسی SSH مبتنی بر رمز عبور به آن دارید را تعیین می کنید. این حسابی است که کلید عمومی SSH شما کپی می شود. ترکیب به این صورت است: $ ssh-copy-id username@remote_host
ممکن است پیام زیر را مشاهده کنید: Output The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
این بدان معنی است که رایانه محلی شما هاست از راه دور را تشخیص نمی دهد. اگر اولین بار است که به هاست جدید وصل می شوید. “yes” را تایپ کنید و ENTER را برای ادامه فشار دهید. در مرحله بعد ، ابزار، حساب محلی شما را برای کلید id_rsa.pub که قبلاً ایجاد کردیم ، اسکن می کند. وقتی کلید را پیدا کرد ، رمز ورود به حساب کاربری از راه دور را از شما میخواهد: Output /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys [email protected]’s password:
گذرواژه را وارد کنید (تایپ شما برای اهداف امنیتی نمایش داده نمی شود) و ENTER را فشار دهید. این ابزار با استفاده از گذرواژه ای که ارائه داده اید ، به هاست از راه دور متصل می شود. سپس محتویات کلید ~ / .ssh / id_rsa.pub شما را در فایلی در دیرکتوری ~/.ssh هوم حساب کاربری از راه دور به نام authorized_keys کپی می کند. باید خروجی زیر را مشاهده کنید: Output Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘[email protected]′” and check to make sure that only the key(s) you wanted were added.
در این مرحله ، کلید id_rsa.pub شما در حساب راه دور بارگذاری شده است. می توانید به مرحله 3 بروید. کپی کردن کلید عمومی با استفاده از SSH اگر ssh-copy-id را در دسترس ندارید ، اما دسترسی SSH مبتنی بر رمز عبور به یک حساب کاربری روی سرور مجازی خود دارید ، می توانید کلیدهای خود را با استفاده از یک روش معمولی SSH بارگذاری کنید. ما می توانیم این کار را با استفاده از دستور cat انجام دهیم تا محتوای کلید عمومی SSH را در رایانه محلی خود بخوانیم و از طریق اتصال SSH به سرور مجازی از راه دور اتصال برقرار کنیم. از طرف دیگر ، می توانیم اطمینان حاصل کنیم که دیرکتوری ~ / .ssh وجود دارد و دارای مجوزهای صحیح تحت اکانتی است که ما از آن استفاده می کنیم. سپس می توانیم محتویاتی را که به آن پیوند زده ایم را درون یک فایل به نام authorized_keys در این دیرکتوری وارد کنیم. ما از نماد >> تغییر مسیر برای افزودن محتوا به جای نوشتن آن استفاده خواهیم کرد. این به ما امکان می دهد بدون از بین بردن کلیدهای قبلی اضافه شده ، کلیدهایی را اضافه کنیم. فرمان کامل مانند این است: ممکن است پیام زیر را مشاهده کنید: $ cat ~/.ssh/id_rsa.pub | ssh username@remote_host “mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys”
این بدان معنی است که رایانه محلی شما هاست از راه دور را تشخیص نمی دهد. اگر اولین بار است که به هاست جدید وصل می شوید. yes را تایپ کنید و ENTER را برای ادامه فشار دهید. پس از آن ، از شما خواسته می شود رمزعبور حساب کاربری از راه دور را وارد کنید: Output [email protected]’s password:
پس از وارد کردن گذرواژه ، محتوای کلید id_rsa.pub شما در انتهای فایل authorized_keys حساب کاربری از راه دور کپی می شود. اگر موفقیت آمیز بود ، به مرحله 3 بروید. کپی کردن کلید عمومی به صورت دستی اگر دسترسی SSH مبتنی بر رمز عبور به سرور مجازی خود را ندارید ، باید مراحل فوق را به صورت دستی انجام دهید. ما به طور دستی محتوای فایل id_rsa.pub خود را به فایل ~/.ssh/authorized_keys روی دستگاه از راه دور شما اضافه خواهیم کرد. برای نمایش محتوای کلید id_rsa.pub ، این دستور را در رایانه محلی خود تایپ کنید: $ cat ~/.ssh/id_rsa.pub
محتوای کلید را مشاهده خواهید کرد ، که باید چیزی شبیه به این باشد: Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test
با استفاده از روش دیگری که در دسترس دارید ، به هاست راه دور خود دسترسی پیدا کنید. پس از دسترسی به حساب کاربری خود در سرور مجازی راه دور ، باید اطمینان حاصل کنید که دیرکتوری ~ / .ssh وجود دارد. این دستور در صورت لزوم دایرکتوری ایجاد می کند یا در صورت وجود هیچ کاری انجام نمی دهد: $ mkdir -p ~/.ssh
اکنون ، می توانید فایل authorized_keys را ایجاد کنید و یا تغییر دهید. می توانید مطالب مربوط به فایل id_rsa.pub خود را به انتهای فایل authorized_keys اضافه کنید و در صورت لزوم با استفاده از این دستور آن را ایجاد کنید: $ echo public_key_string >> ~/.ssh/authorized_keys
در دستور فوق ، public_key_string را با خروجی دست��ر cat ~/.ssh/id_rsa.pub که بر روی سیستم محلی خود اجرا کرده اید ، جایگزین کنید. باید با ssh-rsa AAAA شروع شود … سرانجام ، اطمینان خواهیم یافت که دیرکتوری ~ / .shsh و فایل authorized_keys مجموعه مجوزهای مناسب را دارند: $ chmod -R go= ~/.ssh
این دستور به طور بازگشتی همه مجوزهای “group” و “other” را برای دیرکتوری ~ / .ssh / حذف می کند. اگر برای تنظیم کلیدهای یک حساب کاربری از کاربر ریشه استفاده می کنید ، مهم است که دیرکتوری ~ / .ssh متعلق به کاربر باشد و نه ریشه: $ chown -R sammy:sammy ~/.ssh
در این آموزش کاربر Sammy نامگذاری شده است اما باید نام کاربری مناسب را در دستور فوق جایگزین کنید. اکنون می توانیم با سرور مجازی Ubuntu ، احراز هویت بدون رمز عبور را امتحان کنیم. مرحله 3 – تأیید اعتبار برای سرور مجازی Ubuntu با استفاده از کلیدهای SSH اگر یکی از روشهای فوق را با موفقیت انجام داده اید ، باید بتوانید بدون ارائه رمز ورود به حساب راه دور ، وارد هاست راه دور شوید. فرایند پایه یکسان است: $ ssh username@remote_host
اگر اولین بار است که به این هاست متصل می شوید (و در صورتی که از آخرین روش در بالا استفاده کردید) ، ممکن است چیزی شبیه به این را مشاهده کنید: Output The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
این بدان معنی است که رایانه محلی شما هاست از راه دور را تشخیص نمی دهد. “yes” را تایپ کرده و ENTER را برای ادامه فشار دهید. اگر کلمه عبور برای کلید خصوصی خود ارائه نکرده اید ، بلافاصله وارد سیستم می شوید. اگر هنگام ایجاد کلید ، یک عبارت عبور را برای کلید خصوصی تهیه کرده باشید ، از شما خواسته می شود اکنون آن را وارد کنید (توجه داشته باشید که کلیدهایی گه فشار میدهید برای امنیت در بخش ترمینال نمایش داده نمیشوند). پس از تأیید اعتبار ، باید یک بخش پوسته جدید با حساب پیکربندی شده روی سرور مجازی Ubuntu باز شود. اگر تأیید هویت مبتنی بر کلید موفقیت آمیز بود ، ادامه بدهید تا ببینید که چگونه با غیرفعال کردن احراز هویت رمز عبور ، امنیت بیشتری در سیستم خود داشته باشید. مرحله 4 – غیرفعال کردن احراز هویت رمز عبور روی سرور مجازی خود اگر توانستید با استفاده از SSH بدون پسورد وارد حساب کاربری خود شوید ، تأیید هویت مبتنی بر کلید SSH را با موفقیت پیکربندی کرده اید. با این حال ، مکانیسم تأیید اعتبار مبتنی بر رمز عبور شما هنوز فعال است ، به این معنی که سرور مجازی شما هنوز در معرض حملات خطرناک میباشد. قبل از انجام مراحل در این بخش ، مطمئن شوید که احراز هویت مبتنی بر کلید SSH را برای حساب اصلی در این سرور مجازی پیکربندی کرده اید ، یا ترجیحاً احراز هویت مبتنی بر کلید SSH را برای یک حساب غیر ریشه با امتیازات sud در این سرور مجازی پیکربندی کرده اید. در این مرحله ورود به سیستم های مبتنی بر رمز عبور قفل خواهد شد ، بنابراین اطمینان از اینکه همچنان می توانید دسترسی ادمین داشته باشید بسیار مهم است. هنگامی که تأیید کردید که حساب از راه دور شما دارای امتیازات ادمین است ، با کلیدهای SSH ، به صورت ریشه یا با یک حساب دارای امتیازات sudo وارد سرور مجازی راه دور خود شوید. سپس فایل پیکربندی Daemon SSH را باز کنید: $ sudo nano /etc/ssh/sshd_config
در داخل فایل ، یک دستورالعمل با نام PasswordAuthentication را جستجو کنید. این خط ممکن است در ابتدا با یک # شروع شود. خط را با حذف # باطل کرده ، و مقدار را بر روی no قرار دهید. با این کار توانایی ورود به سیستم از طریق SSH با استفاده از گذرواژه های حساب غیرفعال می شود: /etc/ssh/sshd_config . . . PasswordAuthentication no . . .
پس از اتمام فایل را با فشار دادن CTRL + X ، سپس Y ذخیره کرده و آن را ببندید تا تأیید کنید که فایل ذخیره شود و درنهایت ENTER را برای خروج از nano وارد کنید. برای فعال کردن این تغییرات ، باید سرویس sshd را مجدداً راه اندازی کنیم: $ sudo systemctl restart ssh
برای احتیاط ، قبل از بستن بخش فعلی خود ، یک پنجره ترمینال جدید باز کنید و آزمایش کنید که سرویس SSH به درستی کار می کند: $ ssh username@remote_host
پس از تأیید صحت عملکرد سرویس SSH ، می توانید با اطمینان تمام بخش های فعلی سرور مجازی را ببندید. اکنون SSH daemon در سرور مجازی Ubuntu شما فقط به احراز هویت مبتنی بر کلید SSH پاسخ می دهد. ورود به سیستم مبتنی بر رمز عبور غیرفعال شده است. نتیجه اکنون باید تأیید هویت مبتنی بر کلید SSH را روی سرور مجازی خود پیکربندی کنید که به شما اجازه میدهد بدون ارائه رمز ورود به حساب کاربری خود وارد شوید. اگر می خواهید در مورد کار با SSH اطلاعات بیشتری کسب کنید ، به راهنمای ضروریات SSH نگاهی بیندازید.
برچسب‌ها:
SSH
,
Ubuntu 20.04
0 notes
vpsgol33-blog · 4 years
Text
نصب و استفاده از PostgreSQL در اوبونتو 20.0
سیستم های مدیریت پایگاه داده رابطه ای ، عنصر اصلی بسیاری از وب سایت ها و برنامه ها هستند. آنها روشی ساختاری برای ذخیره ، سازماندهی و دسترسی به اطلاعات را ارائه می دهند. PostgreSQL یا Postgres یک سیستم مدیریت پایگاه داده رابطه ای است که اجرای زبان جستجوی SQL را فراهم می کند. سازگار با استانداردها میباشد و دارای بسیاری از ویژگی های پیشرفته مانند تراکنش های قابل اعتماد و همزمانی بدون قفل خواندن است. این راهنما نحوه نصب Postgres را در یک سرور مجازی Ubuntu 20.04 نشان می دهد. همچنین برخی از دستورالعمل ها برای مدیریت عمومی پایگاه داده را ارائه می نماید. پیش نیازها برای دنبال کردن این آموزش ، به یک سرور مجازی Ubuntu 20.04 نیاز دارید که با پیروی از راهنمای ستاپ اولیه سرور مجازی برای Ubuntu 20.04 ،پیکربندی شده باشد. بعد از مطالعه این آموزش پیش نیاز ، سرور شما باید کاربر غیر ریشه ای با امتیازات sudo و یک فایروال پایه داشته باشد. مرحله 1 – نصب PostgreSQL مخازن پیش فرض اوبونتو شامل بسته های Postgres است ، بنابراین می توانید با استفاده از سیستم بسته بندی apt آنها را نصب کنید. اگر اخیراً این کار را نکرده اید ، فهرست بسته محلی سرور مجازی خود را ریفرش کنید: $ sudo apt update
سپس ، بسته Postgres را به همراه یک بسته -contrib نصب کنید که برخی از امکانات و کاربردهای دیگر را اضافه می کند: $ sudo apt install postgresql postgresql-contrib
اکنون که نرم افزار نصب شده است ، می توانیم به نحوه عملکرد آن و چگونگی تفاوت آن با سایر سیستم های مدیریت پایگاه داده رابطه ای که ممکن است از آنها استفاده کرده باشید ، بپردازیم. مرحله 2 – استفاده از نقشها (roles) و بانکهای اطلاعاتی PostgreSQL به طور پیش فرض ، Postgres از مفهومی به نام “role” برای مدیریت احراز هویت و اعتباربخشی استفاده می کند. این رول ها به نوعی شبیه به اکانت های معمولی سبک یونیکس هستند ، اما Postgres بین کاربران و گروه ها فرق نمی گذارد و در عوض اصطلاح انعطاف پذیرتر “role” را ترجیح می دهد. پس از نصب ، Postgres برای استفاده از احراز هویت تنظیم میشود ، به این معنی که نقش های Postgres را با یک حساب کاربری سیستم Unix / Linux مرتبط می کند. اگر نقشی در Postgres وجود داشته باشد ، یک نام کاربری یونیکس / لینوکس با همین نام قادر به ورود به عنوان آن نقش است. فرآیند نصب یک حساب کاربری به نام postgres ایجاد کرده است که با نقش پیش فرض Postgres همراه است. برای استفاده از Postgres می توانید وارد آن حساب شوید. چند روش برای استفاده از این حساب برای دسترسی به Postgres وجود دارد. انتقال به حساب Postgres با تایپ دستور زیر به حساب Postgres در سرور مجازی خود سوییچ کنید: $ sudo -i -u postgres
اکنون می توانید با تایپ دستور زیر به اعلان PostgreSQL دسترسی پیدا کنید: $ psql
از آنجا می توانید در صورت لزوم با سیستم مدیریت بانک اطلاعاتی ارتباط برقرار کنید. با تایپ دستور زیر از اعلان PostgreSQL خارج شوید: Postgres=# \q
این دستور شما را به خط فرمان postgres Linux بازمیگرداند. دسترسی به یک اعلان Postgres بدون تعویض حساب همچنین می توانید دستور مورد نظر خود را با حساب postgres مستقیماً با sudo اجرا کنید. به عنوان نمونه ، در مثال آخر ، به شما گفته شد که ابتدا با سوییچ کردن به کاربر postgres و سپس اجرای psql به اعلان Postgres برسید. شما می توانید این کار را در یک مرحله با اجرای یک دستور psql منفرد به عنوان کاربر postgres با sudo انجام دهید ، به این شکل: $ sudo -u postgres psql
با این کار شما مستقیماً در Postgres وارد می شوید بدون اینکه پوسته واسطه ای bash در بین آنها باشد. دوباره می توانید با تایپ کردن این دستور از بخش Postgres تعاملی خارج شوید: Postgres=# \q
بسیاری از موارد به بیش از یک نقش Postgres نیاز دارند. در ادامه یاد میگیرید که چگونه این موارد را پیکربندی کنید. مرحله 3 – ایجاد نقش (رول) جدید در حال حاضر ، شما فقط نقش Postgres را در پایگاه داده پیکربندی کرده اید. می توانید با استفاده از دستور Createrole نقش های جدیدی را از خط فرمان ایجاد کنید. پرچم –interactive نام نقش جدید را از شما میپرسد و همچنین سؤال میکند که آیا مجوزهای superuser دارد یا خیر. اگر به عنوان حساب postgres وارد شوید ، می توانید با تایپ کردن دستور زیر کاربر جدیدی ایجاد کنید: postgres@server:~$ createuser –interactive
در عوض ، اگر ترجیح می دهید بدون تغییر حساب کاربری خود از sudo برای هر دستور استفاده کنید ، تایپ کنید: $ sudo -u postgres createuser –interactive
این اسکریپت انتخاب های مختلفی را به شما نشان میدهد و بر اساس پاسخ های شما ، دستورات صحیح Postgres را اجرا می کند تا کاربر را با مشخصات دلخواه شما ایجاد کند. Output Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y
با عبور از برخی از پرچم های اضافی می توانید کنترل بیشتری به دست آورید. گزینه ها را با مراجعه به صفحه man بررسی کنید: $ man createuser
نصب شما در Postgres اکنون کاربر جدیدی دارد ، اما شما هنوز هیچ پایگاه داده ای اضافه نکرده اید. در بخش بعدی این روند توضیح داده شده است. مرحله 4 – ایجاد یک پایگاه داده جدید فرض دیگری که سیستم تأیید اعتبار Postgres بصورت پیش فرض انجام می دهد این است که برای هر نقشی که برای ورود به سیستم استفاده می شود ، آن نقش یک بانک اطلاعاتی با همان نام دارد که می تواند به آن دسترسی داشته باشد. این بدان معنی است که اگر کاربری که در آخرین بخش ایجاد کرده اید ، sammy نامیده شود ، آن نقش سعی خواهد کرد به بانک اطلاعاتی وصل شود که به طور پیش فرض “sammy” نامیده می شود. می توانید با دستور ایجاد شده ، بانک اطلاعاتی مناسب ایجاد کنید. اگر به عنوان حساب postgres وارد شوید ، چیزی مانند این تایپ میکنید: postgres@server:~$ createdb sammy
از سوی دیگر ، اگر ترجیح می دهید بدون تغییر حساب عادی خود ، از sudo برای هر فرمان استفاده کنید ، تایپ کنید: $ sudo -u postgres createdb sammy
این انعطاف پذیری در صورت نیاز چندین مسیر ایجاد می کند. مرحله 5 – باز کردن اعلان Postgres با نقش جدید برای ورود با تأیید هویت مبتنی بر ident ، به استفاده از کاربر لینوکس با همان نام نقش و پایگاه داده Postgres خود نیاز خواهید داشت. اگر یک کاربر لینوکس با این ویژگی ها در دسترس ندارید ، می توانید یک کاربر با دستور adduser ایجاد کنید. شما باید این کار را از حساب غیر ریشه خود با امتیازات sudo انجام دهید (به این معنی که به عنوان کاربر postgres وارد نشوید): $ sudo adduser sammy
پس از در دسترس بودن این حساب جدید ، می توانید با تایپ کردن این دستور به پایگاه داده وصل شوید: $ sudo -i -u sammy
$ psql یا می توانید این کار را بصورت درون خطی انجام دهید: $ sudo -u sammy psql
با فرض اینکه همه مولفه ها به درستی پیکربندی شده اند ، این دستور شما را به طور خودکار وارد سیستم می کند. اگر می خواهید کاربر شما به یک پایگاه داده دیگر متصل شود ، می توانید با مشخص کردن دیتابیس این کار را انجام دهید: $ psql -d postgres
پس از ورود به سیستم ، می توانید اطلاعات مربوط به اتصال فعلی خود را با تایپ کردن بررسی کنید: Sammy=# \conninfo
Output You are connected to database “sammy” as user “sammy” via socket in “/var/run/postgresql” at port
این امر در صورت اتصال به پایگاه داده های غیر پیش فرض یا با کاربران غیر پیش فرض مفید خواهد بود. مرحله 6 – ایجاد و حذف جداول اکنون که می دانید چگونه به سیستم پایگاه داده PostgreSQL وصل شوید ، می توانید برخی از وظایف اساسی مدیریت Postgres را یاد بگیرید. ترکیب اصلی برای ایجاد جداول به شرح زیر است: CREATE TABLE table_name ( column_name1 col_type (field_length) column_constraints, column_name2 col_type (field_length), column_name3 col_type (field_length) );
همانطور که مشاهده می کنید ، این دستورات جدول را نامگذاری میکنند و سپس ستون ها و همچنین نوع ستون و حداکثر طول داده های فیلد را مشخص می کنند. همچنین می توانید محدودیت های جدول را برای هر ستون به صورت اختیاری اضافه کنید. در اینجا می توانید درباره نحوه ایجاد و مدیریت جداول در Postgres اطلاعات بیشتری کسب کنید. برای اهداف نمایشی ، جدول زیر را ایجاد کنید: Sammy=# CREATE TABLE playground (
Sammy=# equip_id serial PRIMARY KEY,
Sammy=# type varchar (50) NOT NULL,
Sammy=# color varchar (25) NOT NULL,
Sammy=# location varchar(25) check (location in (‘north’, ‘south’, ‘west’, ‘east’, ‘northeast’, ‘southeast’, ‘southwest’, ‘northwest’)),
Sammy=# install_date date
Sammy=#);
این دستور یک جدول ایجاد می کند که تجهیزات زمین بازی را ذخیره می کند. اولین ستون در جدول شماره شناسه تجهیزات از نوع سریال را نگه می دارد که یک عدد صحیح است و به صورت خودکار افزایش می یابد. این ستون همچنین دارای محدودیت PRIMARY KEY میباشد ، بدین معنی که مقادیر موجود در آن باید منحصر به فرد باشند و null (صفر) نباشند. دو خط بعدی به ترتیب ستون هایی برای نوع و رنگ تجهیزات ایجاد می کنند که هیچ یک از آنها نمی تواند خالی باشد. خط بعد از اینها یک ستون موقعیت مکانی و همچنین محدودیتی ایجاد می کند که باید یکی از هشت مقدار ممکن باشد. خط آخر یک ستون تاریخ ایجاد می کند که تاریخ نصب تجهیزات را ثبت می نماید. برای دو ستون (equip_id و install_date) ، دستورموجود طول فیلد را مشخص نمی کند. دلیل این امر این است که برخی از انواع داده ها به طول مشخص نیاز ندارند زیرا طول یا قالب آن بیان میشود. می توانید جدول جدید خود را با تایپ کردن این دستور مشاهده کنید: Sammy=# \d
Output List of relations Schema | Name | Type | Owner ——–+————————-+———-+——- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)
جدول زمین بازی شما اینجاست ، اما چیزی به نام playground_equip_id_seq نیز وجود دارد که از نوع توالی است. در واقع نمایشی از نوع سریال است که شما به ستون equip_id خود داده اید. این ستون شماره بعدی در توالی را دنبال می کند و به طور خودکار برای ستون های این نوع ایجاد می شود. اگر می خواهید فقط جدول بدون ترتیب را ببینید ، می توانید تایپ کنید: Sammy=# \dt
Output List of relations Schema | Name | Type | Owner ——–+————+——-+——- public | playground | table | sammy (1 row)
اکنون جدول آماده است ، بیایید از آن برای تمرین مدیریت داده استفاده کنیم. مرحله 7 – افزودن ، پرس و جو و حذف داده ها در یک جدول اکنون که جدولی دارید ، می توانید برخی از داده ها را در آن وارد کنید. به عنوان نمونه ، با فراخوانی جدول مورد نظر برای اضافه کردن ، نامگذاری ستونها و سپس تهیه داده برای هر ستون ، slide و swing اضافه کنید ، مانند این: Sammy=# INSERT INTO playground (type, color, location, install_date) VALUES (‘slide’, ‘blue’, ‘south’, ‘2017-04-28’);
Sammy=# INSERT INTO playground (type, color, location, install_date) VALUES (‘swing’, ‘yellow’, ‘northwest’, ‘2018-08-16’);
باید هنگام وارد کردن داده ها مراقب باشید تا از مشکلات و قطعی های معمول جلوگیری کنید. اولا نام ستون ها را در علامت نقل قول قرار ندهید ، فقط مقادیر ستونی که وارد می کنید به نقل قول نیاز دارند. نکته دیگری که باید در نظر داشته باشید این است که برای ستون equip_id مقداری وارد نمی کنید. دلیل این امر این است که هر زمان که یک ردیف جدید به جدول اضافه کنید ، به طور خودکار ایجاد می شود. با تایپ کردن این دستور اطلاعاتی که اضافه کرده اید بازیابی کنید: Sammy=# SELECT * FROM playground;
Output equip_id | type | color | location | install_date ———-+——-+——–+———–+————– 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)
در اینجا ، می بینید که equip_id شما با موفقیت پر شده است و تمام داده های دیگر شما به درستی سازماندهی شده اند. اگر اسلاید روی زمین بازی خراب شد و مجبور شدید آن را حذف کنید ، می توانید با تایپ دستور زیر آن سطر از جدول خود حذف کنید: Sammy=# DELETE FROM playground WHERE type = ‘slide’;
جدول را دوباره پرس و جو کنید: Sammy=# SELECT * FROM playground;
Output equip_id | type | color | location | install_date ———-+——-+——–+———–+————– 2 | swing | yellow | northwest | 2018-08-16 (1 row)
توجه کنید که ردیف اسلاید دیگر جزئی از جدول نیست. مرحله 8 – اضافه کردن و حذف ستون ها از یک جدول پس از ایجاد جدول می توانید با اضافه کردن یا حذف ستون ها آن را تغییر دهید. با تایپ دستور زیر، برای نمایش آخرین بازدید از نگهداری از هر قطعه تجهیزات ، یک ستون اضافه کنید: Sammy=# ALTER TABLE playground ADD last_maint date; اگر اطلاعات جدول خود را دوباره مشاهده کنید ، می بینید که ستون جدید اضافه شده است اما هیچ داده ای وارد نشده است: Sammy=# SELECT * FROM playground;
Output equip_id | type | color | location | install_date | last_maint ———-+——-+——–+———–+————–+———— 2 | swing | yellow | northwest | 2018-08-16 | (1 row)
اگر متوجه شدید که خدمه کاری شما از یک ابزار جداگانه برای پیگیری سابقه نگهداری استفاده می کنند ، می توانید ستون را با تایپ دستور زیر حذف کنید: Sammy=# ALTER TABLE playground DROP last_maint;
این دستور ستون last_maint و مقادیر موجود در آن را حذف می کند ، اما تمام داده های دیگر را دست نخورده نگه میدارد. مرحله 9 – بروزرسانی داده ها در یک جدول تاکنون یاد گرفته اید که چگونه می توانید سوابق را به یک جدول اضافه کنید و چگونه آنها را حذف کنید ، اما این آموزش هنوز نحوه تغییر ورودی های موجود را پوشش نداده است. می توانید مقادیر ورودی موجود را با جستجوی رکورد مورد نظر خود به روز کنید و ستون را روی مقدار مورد نظر خود تنظیم کنید. می توانید رکورد swing را درخواست کنید (با هر swing در جدول شما مطابقت دارد) و رنگ آن را به رنگ قرمز تغییر دهید. وقتی swing را برای رنگ کاری تنظیم کنید، این امر می تواند مفید باشد : Sammy=# UPDATE playground SET color = ‘red’ WHERE type = ‘swing’;
با پرس و جوی دوباره داده ها ، می توانید تأیید کنید که این عملیات با موفقیت انجام شد: Sammy=# SELECT * FROM playground;
Output equip_id | type | color | location | install_date ———-+——-+——-+———–+————– 2 | swing | red | northwest | 2018-08-16 (1 row)
همانطور که مشاهده می کنید ، اکنون اسلاید به عنوان قرمز ثبت شده است. نتیجه اکنون PostgreSQL را روی سرور مجازی Ubuntu 20.04 خود تنظیم کرده اید. اگر می خواهید در مورد Postgres و نحوه استفاده از آن اطلاعات بیشتری کسب کنید، توصیه می کنیم راهنماهای زیر را بررسی کنید: • مقایسه سیستم های مدیریت پایگاه داده راب��ه ای • کار با پرس و جوهای در حال اجرا با SQL
برچسب‌ها:
Postgres
,
PostgreSQL
,
Ubuntu 20.04
0 notes
vpsgol33-blog · 4 years
Text
اضافه کردن فضای Swap در اوبونتو 20.04
یکی از راه های محافظت در برابر خطاهای اتمام حافظه در برنامه ها ، اضافه کردن فضای Swap به سرور مجازی شما است. در این راهنما نحوه اضافه کردن فایل swap به یک سرور مجازی Ubuntu 20.04 را پوشش خواهیم داد. هشدار: اگرچه Swap برای سیستم هایی که از هارد دیسک های معمول چرخشی استفاده میکنند ، توصیه میشود اما قرار دادن Swap در SSD ها می تواند با گذشت زمان مشکلاتی را برای تخریب سخت افزار ایجاد کند. به همین دلیل ، ما امکان فعال کردن Swap در vpsgol یا هر ارائه دهنده دیگری که از حافظه SSD استفاده می کند را توصیه نمی کنیم. Swap چیست؟ Swap بخشی از حافظه هارد دیسک است که برای سیستم عامل کنار گذاشته شده است تا داده هایی را که دیگر نمی تواند در RAM نگهداری کند ، به طور موقت ذخیره کند. این به شما امکان می دهد مقدار اطلاعاتی را که سرور مجازی شما می تواند در حافظه کاری خود نگه دارد افزایش یابد. فضای Swap در هارد دیسک عمدتاً زمانی استفاده می شود که دیگر فضای کافی در حافظه رم برای نگهداری داده های برنامه وجود نداشته باشد. اطلاعات ارسال شده روی دیسک به طور قابل توجهی کندتر از اطلاعات موجود در RAM خواهد بود ، اما سیستم عامل ترجیح می دهد داده های برنامه را در حافظه نگه داشته و از داده های قدیمی تر swap استفاده کند. به طور کلی ، داشتن فضای Swap به عنوان fallback برای زمانی که رم رو به اتمام است، می تواند یک شبکه ایمنی مناسب در برابر استثناهای اتمام حافظه در سیستم های با حافظه غیر SSD باشد. مرحله 1 – بررسی سیستم برای اطلاعات Swap قبل از شروع ، می توانیم بررسی کنیم که آیا سیستم از قبل فضای Swap در دسترس دارد یا خیر. ممکن است چندین فایل Swap یا پارتیشن swap داشته باشد ، اما به طور کلی یکی از آنها کافی می باشد. با تایپ کردن این دستور می توانیم ببینیم که آیا این سیستم Swap پیکربندی شده دارد: $ sudo swapon –show
اگر هیچ خروجی دریافت نکردید ، بدان معنی است که سیستم شما در حال حاضر فضای Swap در دسترس ندارد. با استفاده از ابزار free می توانید تأیید کنید که هیچ Swap فعالی وجود ندارد: $ free -h
Output total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B 0B
همانطور که در ردیف Swap خروجی مشاهده می کنید ، هیچ Swap روی سیستم فعال نیست. مرحله 2 – بررسی فضای موجود در پارتیشن هارد دیسک قبل از ایجاد فایل Swap ، استفاده فعلی دیسک خود را بررسی خواهیم کرد تا مطمئن شویم که فضای کافی داریم. این کار را با وارد کردن دستور زیر انجام دهید: $ df -h
Output Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 932K 98M 1% /run /dev/vda1 25G 1.4G 23G 7% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi /dev/loop0 55M 55M 0 100% /snap/core18/1705 /dev/loop1 69M 69M 0 100% /snap/lxd/14804 /dev/loop2 28M 28M 0 100% /snap/snapd/7264 tmpfs 99M 0 99M 0% /run/user/1000
دستگاه با / در ستون Mounted on در این مورد دیسک ماست. در این مثال فضای زیادی در دسترس داریم (فقط از 1.4گیگ استفاده شده است). استفاده شما احتمالاً متفاوت خواهد بود. اگرچه نظرات زیادی در مورد اندازه مناسب فضای swap وجود دارد ، اما واقعاً بستگی به ترجیحات شخصی شما و نیازهای برنامه شما دارد. به طور کلی ، مقداری برابر یا دو برابر مقدار RAM روی سیستم مناسب خواهد بود. یک قانون دیگر این است که اگر فقط از آن به عنوان fallback رم استفاده کنید ، احتمالاً چیزی بیش از 4 گیگ Swapنیاز نمیباشد. مرحله 3 – ایجاد فایل swap اکنون که فضای هارد دیسک موجود خود را می دانیم ، می توانیم یک فایل swap در سیستم فایل خود ایجاد کنیم. ما فایلی را به اندازه ای که می خواهیم به نام swapfile  در دیرکتوری ریشه (/)خود قرار خواهیم داد. بهترین راه برای ایجاد فایل swap با برنامه fallocate است. این دستور بلافاصله یک فایل با اندازه مشخص ایجاد می کند. از آنجا که سرور مجازی در مثال ما 1 گیگ RAM دارد ، ما یک فایل 1 گیگی را در این راهنما ایجاد خواهیم کرد. این رم را متناسب با نیازهای سرور مجازی خود تنظیم کنید: $ sudo fallocate -l 1G /swapfile
با تایپ این دستور می توانیم تأیید کنیم که مقدار صحیح فضا محفوظ است: $ ls -lh /swapfile
$ -rw-r–r– 1 root root 1.0G Apr 25 11:14 /swapfile
فایل ما با مقدار صحیحی از فضای کنار گذاشته شده ایجاد شده است. مرحله 4 – فعال کردن فایل swap اکنون که فایلی با اندازه مناسب در دسترس داریم ، باید در عمل این را به فضای swap تبدیل کنیم. ابتدا باید مجوزهای فایل را قفل کنیم تا فقط کاربرانی که دارای حق امتیاز هستند بتوانند مطالب را بخوانند. این کار مانع از دسترسی کاربران عادی به فایل می شود که پیامدهای امنیتی قابل توجهی دارد. با تایپ کردن دستور زیر فایل فقط در دسترس ریشه قرار میگیرد: $ sudo chmod 600 /swapfile
تغییر مجوزها را با تایپ دستور زیر تأیید کنید: $ ls -lh /swapfile
Output -rw——- 1 root root 1.0G Apr 25 11:14 /swapfile
همانطور که مشاهده می کنید ، فقط کاربر اصلی دارای پرچم های خواندن و نوشتن است. اکنون می توانیم با تایپ کردن این دستور فایل را به عنوان فضای swap مشخص کنیم: $ sudo mkswap /swapfile
Output Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
پس از علامت گذاری فایل ، می توانیم فایل swap را فعال کنیم و به سیستم ما امکان استفاده از آن را می دهد: $ sudo swapon /swapfile
با تایپ این دستور تأیید کنید که swap در دسترس است: $ sudo swapon –show
Output NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2 ما می توانیم بازده ابزار free را دوباره بررسی کنیم تا یافته هایمان را تأیید کنیم: $ free -h
Output total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 1.0Gi 0B 1.0Gi
swap ما با موفقیت تنظیم شده است و سیستم عامل ما در صورت لزوم شروع به استفاده از آن خواهد کرد. مرحله 5 – دائمی کردن فایل Swap تغییرات اخیر ما فایل Swap بخش فعلی را فعال کرده است. اما اگر راه اندازی مجدد کنیم ، سرور مجازی تنظیمات swap را به طور خودکار حفظ نمی کند. ما می توانیم با اضافه کردن فایل swap به فایل / etc / fstab خود ، این تنظیمات را تغییر دهیم. از فایل / etc / fstab نسخه پشتیبان تهیه کنید تا در صورت بروز هرگونه خطا با مشکلی مواجه نشوید: $ sudo cp /etc/fstab /etc/fstab.bak
با تایپ کردن این دستور اطلاعات فایل swap را به انتهای فایل / etc / fstab خود اضافه کنید: $ echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
در مرحله بعدی برخی از تنظیماتی را میتوانیم به روز کنیم بررسی مینماییم تا فضای swap خود را تنظیم کنیم. مرحله 6 – تنظیمات swap خود را تعیین کنید چند گزینه وجود دارد که می توانید پیکربندی کنید که در عملکرد سیستم شما هنگام برخورد با swap تأثیر می گذارد. تنظیم ویژگی Swappiness پارامتر swappiness پیکربندی میکند که سیستم شما چند بار داده را از RAM به فضای swap در گردش قرار دهد. این مقدار بین 0 تا 100 است که درصد را نشان می دهد. با مقادیر نزدیک به صفر ، هسته داده ها را به دیسک منتقل نمیکند مگر اینکه واقعا لازم باشد. به یاد داشته باشید ، تعامل با فایل swap “هزینه بر” است زیرا مدت زمان زیادی نسبت به تعامل با RAM طول می کشد و می تواند باعث کاهش قابل توجه عملکرد شود. به طور کلی اعلام به سیستم مبنی بر متکی نبودن زیاد به swap ، باعث سریعتر شدن سیستم شما خواهد شد. مقادیر نزدیک به 100 ، سعی می کنند تا داده های بیشتری را در swap قرار دهند تا فضای خالی RAM بیشتری حفظ کنند. بسته به مشخصات حافظه برنامه های شما یا آنچه از سرور مجازی خود برای آن استفاده می کنید ، این کار ممکن است در بعضی موارد ارحج باشد. می توانیم با تایپ کردن دستور زیر مقدار swappiness فعلی را مشاهده کنیم: $ cat /proc/sys/vm/swappiness
Output 60
برای دسکتاپ ، تنظیم swappiness روی 60 مقدار بدی نیست. برای یک سرور مجازی ، ممکن است بخواهید آن را به 0 نزدیک کنید. ما می توانیم swappiness را با استفاده از دستور sysctl به مقدار دیگری تبدیل کنیم. به عنوان مثال ، برای تنظیم swappiness روی 10 ، می توانیم تایپ کنیم: $ sudo sysctl vm.swappiness=10
Output vm.swappiness = 10
این تنظیم تا ریبوت بعدی ادامه خواهد داشت. ما می توانیم با اضافه کردن خط به فایل /etc/sysctl.conf ، این مقدار را به طور خودکار در ریستارت تنظیم کنیم: $ sudo nano /etc/sysctl.conf
در پایین می توانید اضافه کنید: /etc/sysctl.conf vm.swappiness=10 پس از اتمام فایل را ذخیره کنید و ببندید. تعیین تنظیمات فشار Cache مقدار مرتبط دیگری که ممکن است بخواهید آن را تغییر دهید vfs_cache_pressure است. این تنظیمات چگونگی انتخاب سیستم برای ذخیره اطلاعات inode  و dentry  نسبت به سایر داده ها را پیکربندی می کند. در اصل ، داده های دسترسی در مورد سیستم فایل است. به طور کلی جستجوی آن هزینه بر است و بسیار درخواست میشود، بنابراین یک حافظه پنهان برای سیستم شما بسیار عالی خواهد بود. با پرس و جوی مجدد سیستم فایل proc می توانید مقدار فعلی را مشاهده کنید: $ cat /proc/sys/vm/vfs_cache_pressure
Output 100 همانطور که سیستم ما در حال حاضر پیکربندی شده است ، خیلی سریع اطلاعات inode  را از حافظه نهان پاک می کند. می توانیم با تایپ کردن دستور زیر، میتوانیم آن را روی تنظیمات محافظه کارانه تری مانند 50 تنظیم کنیم: $ sudo sysctl vm.vfs_cache_pressure=50
Output vm.vfs_cache_pressure = 50
باز هم ، این فقط برای بخش فعلی ما معتبر است. ما می توانیم با اضافه کردن آن به فایل پیکربندی خود مانند تنظیمات swappiness آن را تغییر دهیم: $ sudo nano /etc/sysctl.conf
در پایین ، خطی را اضافه کنید که مقدار جدید شما را مشخص می کند: /etc/sysctl.conf vm.vfs_cache_pressure=50
پس از اتمام فایل را ذخیره کنید و ببندید. نتیجه پیروی از مراحل موجود در این راهنما در مواردی که منجر به استثناهای اتمام حافظه شود ، به شما فضای تنفس می دهد. فضای swap می تواند برای جلوگیری از برخی از این مشکلات متداول فوق العاده مفید باشد. اگر به خطاهای OOM (اتمام حافظه) برخورد می کنید ، یا می بینید که سیستم شما قادر به استفاده از برنامه های مورد نیاز شما نیست ، بهترین راه حل این است که تنظیمات برنامه خود را بهینه کنید یا سرور مجازی خود را به روز کنید.
برچسب‌ها:
fallback
,
RAM
,
SSD
,
swap
0 notes
vpsgol33-blog · 4 years
Text
چگونه می توان فایروال را با UFW در اوبونتو 20.04 تنظیم کرد
UFW ، یا فایروال ساده (غیر پیچیده) ، یک رابط مدیریت ساده فایروال است که پیچیدگی فن آوری های فیلترینگ سطح پایین تر مانند iptables و nftables را پنهان می کند. اگر به دنبال شروع به کار در تأمین امنیت شبکه خود هستید و مطمئن نیستید از کدام ابزار استفاده کنید ، UFW میتواند انتخاب مناسبی برای شما باشد. در این آموزش نحوه تنظیم فایروال با UFW در اوبونتو 20.04 به شما نشان داده خواهد شد. پیش نیازها برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید: • یک سرور مجازی Ubuntu 20.04 با یک کاربر sudo غیر ریشه ، که می توانید با دنبال کردن ستاپ اولیه سرور مجازی با آموزش اوبونتو 20.04 آن را تنظیم کنید. UFW به طور پیش فرض در اوبونتو نصب شده است. اگر به دلایلی نصب نشده ، می توانید آن را با sudo apt install ufw نصب کنید. مرحله 1 – استفاده از IPv6 با UFW (اختیاری) این آموزش با در نظرگیری IPv4 نوشته شده است ، اما وقتی آن را فعال کنید ، برای IPv6 نیز کار خواهد کرد. اگر سرور مجازی Ubuntu شما IPv6 را فعال کرده است ، اطمینان حاصل کنید که UFW برای پشتیبانی از IPv6 تنظیم شده باشد تا بتواند علاوه بر IPv4 ، قوانین فایروال را برای IPv6 نیز مدیریت کند. برای انجام این کار ، پیکربندی UFW را با nano یا ویرایشگر مورد علاقه خود باز کنید. $ sudo nano /etc/default/ufw
سپس مطمئن شوید که مقدار IPV6 بله است. می بایست شبیه به این باشد: /etc/default/ufw excerpt IPV6=yes
فایل را ذخیره کنید و ببندید. حال ، هنگامی که UFW فعال است ، به گونه ای تنظیم می شود که قوانین IPv4 و IPv6 را بنویسید. با این حال ، قبل از فعال کردن UFW ، می خواهیم اطمینان حاصل کنیم که فایروال شما پیکربندی شده است تا به شما امکان اتصال از طریق SSH را بدهد. بیایید با تنظیم رویکرد پیش فرض شروع کنیم. مرحله 2 – تنظیم رویکرد های پیش فرض اگر به تازگی کار با فایروال را شروع کرده اید ، اولین قوانینی که باید تعریف کنید رویکرد پیش فرض شما هستند. این قوانین نحوه کنترل ترافیک را که صریحاً با سایر قوانین مطابقت ندارد ، کنترل می کنند. به طور پیش فرض ، UFW قرار است تمام اتصالات ورودی را رد کند و به همه اتصالات خروجی اجازه دهد. این بدان معناست که هرکسی که سعی در دستیابی به سرور مجازی شما داشته باشد قادر به اتصال نخواهد بود ، در حالی که هر برنامه ای در سرور مجازی قادر به دستیابی به دنیای خارج خواهد بود. بیایید قوانین UFW را به صورت پیش فرض تنظیم کنیم ، بنابراین می توانیم اطمینان حاصل کنیم که شما قادر خواهید بود این آموزش را دنبال کنید. برای تنظیم پیش فرض های استفاده شده توسط UFW ، از این دستورات استفاده کنید: $ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
این دستورات پیش فرض ها را برای رد ورودی و اجازه دسترسی به اتصالات تنظیم می کنند. این پیش فرض های فایروال به تنهایی ممکن است برای یک رایانه شخصی کافی باشد ، اما به طور معمول سرور مجازی ها باید به درخواست های دریافتی از کاربران خارجی پاسخ دهند. در ادامه به آن خواهیم پرداخت. مرحله 3 – اجازه اتصال به SSH اگر اکنون فایروال UFW خود را فعال کنیم ، تمام اتصالات ورودی را رد می کند. این بدان معناست که باید قوانینی را ایجاد کنیم که صریحاً اجازه ورود به اتصالات ورودی قانونی را بدهد – برای مثال اتصالات SSH یا HTTP- اگر میخواهیم سرور مجازی ما به آن نوع درخواستها پاسخ دهد. اگر از سرور مجازی ابری استفاده می کنید ، احتمالاً باید به اتصالات SSH ورودی اجازه دهید تا بتوانید به سرور مجازی خود متصل شوید و مدیریت کنید. برای پیکربندی سرور مجازی خود جهت اجازه دادن به اتصالات SSH ، می توانید از این دستور استفاده کنید: $ sudo ufw allow ssh
با این کار قوانین فایروال ایجاد می شود که به کلیه اتصالات در پورت 22 اجازه می دهد ، یعنی پورتی که Daemon SSH بطور پیش فرض در آن گوش می دهد. UFW می داند که پورت allow ssh به چه معنی است زیرا به عنوان یک سرویس در فایل / etc / service لیست شده است. با این وجود ، ما در واقع می توانیم با مشخص کردن پورت به جای نام سرویس ، قانون معادل آن را بنویسیم. به عنوان مثال ، این دستور مانند دستور فوق کار می کند: $ sudo ufw allow 22
اگر Daemon SSH خود را برای استفاده از پورت دیگری پیکربندی کرده اید ، باید پورت مناسب را مشخص کنید. به عنوان مثال ، اگر سرور مجازی SSH شما پورت 2222 را گوش می دهد ، می توانید از این دستور برای اتصال در آن پورت استفاده کنید: $ sudo ufw allow 2222
اکنون که فایروال شما پیکربندی شده است تا امکان اتصال SSH ورودی را فراهم کند ، می توانیم آن را فعال کنیم. مرحله 4 – فعال کردن UFW برای فعال کردن UFW ، از این دستور استفاده کنید: $ sudo ufw enable
هشداری دریافت خواهید کرد که می گوید ممکن است این فرمان اتصالات SSH موجود را مختل کند. ما قبلاً یک قانون فایروال تنظیم کرده ایم که اتصالات SSH را امکان پذیر می سازد ، بنابراین میتوان ادامه داد. در پاسخ به اعلان y را وارد کنید و ENTER را بزنید. فایروال اکنون فعال است. برای مشاهده قوانینی که تنظیم شده است ، دستور verbose status sudo ufw را اجرا کنید. بقیه این آموزش نحوه استفاده از UFW را با جزئیات بیشتر ، مانند قبول یا رد انواع مختلف اتصالات را ارائه می دهد. مرحله 5 – اجازه برقراری سایر اتصالات در این مرحله ، شما باید به سایر اتصالات مورد نیاز سرور مجازی خود برای پاسخگویی اجازه دهید. اتصالاتی که شما باید به آنها اجازه دهید بستگی به نیازهای خاص شما دارد. خوشبختانه ، شما می دانید چگونه می توانید قوانینی را بنویسید که به اتصالات مبتنی بر نام سرویس یا پورت اجازه می دهد. ما قبلاً این کار را برای SSH در پورت 22 انجام دادیم. HTTP در پورت 80 ، همان چیزی که سرور مجازی های وب رمز گذاری نشده از آن استفاده می کنند ، از sudo ufw allow http  یا sudo ufw allow 80 استفاده مینماید. HTTPS در پورت 443 ، همان چیزی که سرور مجازی های رمزگذاری شده از آن استفاده می کنند ، از sudo ufw allow https  یا sudo ufw allow 443 استفاده مینماید. به غیر از مشخص کردن پورت یا سرویس شناخته شده ، راه های ��یگری برای اجازه سایر اتصالات وجود دارد. محدوده های خاص پورت شما می توانید محدوده پورت را با UFW مشخص کنید. برخی از برنامه ها به جای یک پورت واحد از پورت های مختلف استفاده می کنند. به عنوان مثال ، برای اجازه دادن به اتصالات X11، که از پورت های 6000-6007 استفاده می کنند ، از این دستورات استفاده کنید: $ sudo ufw allow 6000:6007/tcp
$ sudo ufw allow 6000:6007/udp
هنگام مشخص کردن محدوده پورت با UFW ، باید پروتکل (tcp یا udp) را مشخص کنید که قوانین باید روی آن اعمال شود. ما قبلاً به این موضوع اشاره نکرده ایم زیرا مشخص نکردن پروتکل، به طور خودکار به هر دو پروتکل اجازه می دهد ، که در اکثر موارد مطلوب است. آدرس های IP خاص هنگام کار با UFW ، می توانید آدرس IP را نیز مشخص کنید. به عنوان مثال ، اگر می خواهید از یک آدرس IP خاص مانند آدرس IP محل کار یا خانه 203.0.113.4 به اتصالات اجازه دهید ، باید from و سپس آدرس IP را مشخص کنید: $ sudo ufw allow from 203.0.113.4
همچنین می توانید با افزودن to any port به اضافه شماره پورت ، پورت خاصی را تعیین کنید که آدرس IP مجاز به اتصال به آن باشد. به عنوان مثال ، اگر می خواهید 203.0.113.4 به پورت 22 (SSH) وصل شود ، از این دستور استفاده کنید: $ sudo ufw allow from 203.0.113.4 to any port 22
زیرشبکه ها اگر می خواهید به یک زیر شبکه از آدرس های IP اجازه دهید ، می توانید با استفاده از نماد CIDR این کار را برای مشخص کردن یک netmask انجام دهید. به عنوان مثال ، اگر می خواهید تمام آدرسهای IP از 203.0.113.1 تا 203.0.113.254 را مجاز کنید ، می توانید از این دستور استفاده کنید: $ sudo ufw allow from 203.0.113.0/24
به همین ترتیب ، همچنین می توانید پورت مقصد را تعیین کنید که زیر شبکه 203.0.113.0/24 به آن وصل شود. باز هم ، ما از پورت 22 (SSH) به عنوان نمونه استفاده خواهیم کرد: $ sudo ufw allow from 203.0.113.0/24 to any port 22
اتصالات به یک رابط شبکه خاص اگر می خواهید یک قانون فایروال ایجاد کنید که فقط مربوط به یک رابط شبکه خاص باشد ، می توانید با مشخص کردن ” allow in on ” و به دنبال آن نام رابط شبکه ، این کار را انجام دهید. ممکن است بخواهید قبل از ادامه ، رابط های شبکه خود را جستجو کنید. برای انجام این کار ، از این دستور استفاده کنید: $ ip addr
Output Excerpt 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .
خروجی هایلایت شده نشانگر نام های رابط شبکه است. معمولاً چیزی مانند eth0 یا enp3s2 نامگذاری میشوند. بنابراین ، اگر سرور مجازی شما یک رابط شبکه عمومی به نام eth0 دارد ، می توانید با این دستور ترافیک HTTP (پورت 80) را به آن مجاز کنید: $ sudo ufw allow in on eth0 to any port 80
این کار به سرور مجازی شما امکان می دهد درخواستهای HTTP را از طریق اینترنت عمومی دریافت کند. یا اگر می خواهید به عنوان مثال سرور مجازی پایگاه داده MySQL (پورت 3306) شما را به اتصالات رابط شبکه خصوصی eth1 گوش دهد ، می توانید از این دستور استفاده کنید: $ sudo ufw allow in on eth1 to any port 3306
این دستور به سرور مجازی های دیگر در شبکه خصوصی شما اجازه می دهد تا به پایگاه داده MySQL متصل شوند. مرحله 6 – رد اتصالات اگر رویکرد پیش فرض اتصالات ورودی را تغییر نداده اید ، UFW به گونه ای پیکربندی میشود تا تمام اتصالات ورودی را رد کند. به طور کلی ، این کار با ملزم کردن شما به ایجاد قوانینی که صریحاً اجازه ورود به پورت های خاص و آدرس های IP را میدهند ، فرایند ایجاد یک فایروال ایمن را ساده تر می کند. با این وجود ، گاهی اوقات می خواهید اتصالات خاص را بر اساس آدرس IP منبع یا زیر شبکه رد کنید ، شاید به این دلیل که می دانید که سرور مجازی شما از آنجا مورد حمله قرار می گیرد. همچنین ، اگر می خواهید رویکرد ورودی پیش فرض خود را به allow تغییر دهید (که توصیه نمی شود) ، لازم است برای هرگونه خدمات یا آدرسهای IP که نمی خواهید مجوزهای اتصال را ایجاد کنید ، قوانین deny را ایجاد کنید. برای نوشتن قوانین deny (رد)، می توانید از دستوراتی که در بالا توضیح داده شده استفاده کنید ، و allow را با deny جایگزین کنید. به عنوان مثال ، برای رد اتصالات HTTP ، می توانید از این دستور استفاده کنید: $ sudo ufw deny http
یا اگر می خواهید تمام اتصالات را از 203.0.113.4 رد کنید ، می توانید از این دستور استفاده کنید: $ sudo ufw deny from 203.0.113.4
حال اجازه دهید نگاهی به نحوه حذف قوانین بیندازیم. مرحله 7 – حذف قوانین دانستن چگونگی حذف قوانین فایروال به همان اندازه مهم است که بدانید چگونه می توانید آنها را ایجاد کنید. دو روش مختلف برای تعیین اینکه کدام قوانین باید حذف شوند وجود دارد: با شماره قانون یا با قانون واقعی (شبیه به نحوه تعیین قوانین هنگام ایجاد ان ها). ما با روش حذف با شماره قانون شروع خواهیم کرد زیرا ساده تر است. به واسطه شماره قانون اگر از شماره قانون برای حذف قوانین فایروال استفاده می کنید ، اولین کاری که باید انجام دهید این است که لیستی از قوانین فایروال خود را تهیه کنید. فرمان وضعیت UFW گزینه ای برای نمایش شماره ها در کنار هر قانون دارد ، همانطور که در اینجا نشان داده شده است: $ sudo ufw status numbered
Numbered Output: Status: active
To Action From — —— —- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere
اگر تصمیم بگیریم که می خواهیم قانون 2 را حذف کنیم ، یکی از مواردی که امکان اتصال به پورت 80 (HTTP) را فراهم می کند ، می توانیم آن را در یک فرمان حذف UFW مانند این مشخص کنیم: $ sudo ufw delete 2
یک تأیید اعلان را نشان میدهد و سپس قانون 2 را، که به اتصالات HTTP اجازه می دهد، حذف میکند. توجه داشته باشید که اگر IPv6 را فعال کرده اید ، باید قانون IPv6 مربوطه را نیز حذف کنید. به واسطه قانون واقعی گزینه جایگزین برای شماره ها ، تعیین قانون واقعی برای حذف است. به عنوان مثال ، اگر می خواهید قانون http را حذف کنید ، می توانید آن را به صورت زیر بنویسید: $ sudo ufw delete allow http
همچنین می توانید به جای نام سرویس ، قانون را با allow 80 مشخص کنید: $ sudo ufw delete allow 80
این روش، در صورت وجود، هر دو قانون IPv4 و IPv6 را حذف می کند. مرحله 8 – بررسی وضعیت و قوانین UFW در هر زمان ، می توانید وضعیت UFW را با این دستور بررسی کنید: $ sudo ufw status verbose
اگر UFW غیرفعال باشد ، که به طور پیش فرض چنین است ، خروجی زیر را مشاهده خواهید کرد: Output Status: inactive
اگر UFW فعال باشد ، که اگر مرحله 3 را دنبال کرده باشید ، فعال خواهد بود، خروجی می گوید که فعال است و قوانینی را که تنظیم شده لیست می کند. به عنوان مثال ، اگر فایروال تنظیم شود تا اتصالات SSH (پورت 22) را از هر مکانی امکان پذیر کند ، ممکن است خروجی چیزی شبیه به این باشد: Output Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip
To Action From — —— —- 22/tcp ALLOW IN Anywhere
اگر می خواهید بررسی کنید چگونه UFW فایروال را تنظیم کرده است ، از دستور وضعیت استفاده کنید. مرحله 9 – غیرفعال کردن یا تنظیم مجدد UFW (اختیاری) اگر تصمیم دارید که از UFW استفاده نکنید ، می توانید با این دستور آن را غیرفعال کنید: $ sudo ufw disable
هر قانونی که با UFW ایجاد کرده باشید دیگر فعال نخواهد بود. اگر لازم باشد بعداً آن را فعال کنید ، همواره می توانید sudo ufw را اجرا کنید. اگر قبلاً قوانین UFW را پیکربندی کرده اید اما تصمیم دارید که دوباره شروع کنید ، می توانید از دستور تنظیم مجدد استفاده کنید: $ sudo ufw reset
با این کار UFW غیرفعال می شود و قوانینی را که قبلاً تعریف شده بودند حذف می شوند. به خاطر داشته باشید که اگر هر موقع آنها را تغییر دهید ، رویکرد پیش فرض به تنظیمات اصلی آنها تغییر نمی کند. این کار شروع تازه ای با UFW به شما ارائه میدهد. نتیجه فایروال شما اکنون پیکربندی شده است که (حداقل) اتصالات SSH را امکان پذیر کند. مطمئن شوید که هرگونه اتصالات ورودی دیگر که سرور مجازی شما نیاز دارد امکان پذیر هستند ، و در عین حال اتصالات غیر ضروری را محدود میکند ، بنابراین سرور مجازی شما عملکردی و ایمن خواهد بود. برای کسب اطلاعات بیشتر در مورد تنظیمات رایج UFW ، از راهنمای ضروریات UFW: قوانین و فرمان های معمول فایروال استفاده کنید.
برچسب‌ها:
Iptables
,
IPv4
,
IPv6
,
nftables
,
SSH
0 notes
vpsgol33-blog · 4 years
Text
نظارت بر اطلاعیه و مسیر BGP با BGPalerter اوبونتو 18.04
BGP protocol Border Gateway یکی از پروتکل های اصلی مسئول مسیریابی بسته ها از طریق اینترنت است ، بنابراین هنگامی که اشتباه پیش برود ، ممکن است قطعی های قابل توجهی رخ دهد. به عنوان مثال ، در سال 2019 ، یک ISP کوچک یک پیکربندی غلط BGP ایجاد کرد که متأسفانه در بالادست منتشر شد و بخش های بزرگی از Cloudflare و AWS را بصورت آفلاین بیش از یک ساعت در اختیار گرفت. همچنین ، یک سال قبل ، یک BGP به منظور رهگیری ترافیک یک ارائه دهنده مشهور کیف پول ارز رمزی ربوده شد و وجوه مشتریان مورد سرقت قرار گرفت. BGPalerter ابزاری منبع باز برای نظارت بر شبکه BGP است که می تواند هشدارهایی را در مورد فعالیت BGP در زمان واقعی ارائه دهد ، از جمله قابلیت مشاهده مسیر و اعلام مسیر جدید و همچنین فعالیت های بالقوه نامناسب مانند ربودن مسیر یا وجود نشتی اطلاعات در مسیر. توجه: BGPalerter به طور خودکار اطلاعات مسیریابی شبکه را در دسترس عموم قرار می دهد ، به این معنی که دیگر نیازی به سطح دسترسی ممتاز یا ادغام شبکه (هایی) که مایل به نظارت آن هستید نمیباشد. کلیه نظارت ها کاملاً مطابق با قانون سوءاستفاده رایانه ای ، قانون کلاهبرداری کامپیوتری و سایر قوانین مشابه است. با این حال ، توصیه می شود هرگونه یافته مرتبط با اپراتور شبکه آسیب دیده را افشا کنید.
در این آموزش ،BGPalerter را نصب و پیکربندی می کنید تا شبکه های مهم خود را برای فعالیت های مشکوک پایش کنید. پیش نیازها برای تکمیل این آموزش ، به موارد زیر نیاز دارید: سرور مجازی Ubuntu 18.04 که طبق راهنمای ستاپ اولیه سرور مجازی با اوبونتو 18.04 راه اندازی، و شامل یک کاربر غیر ریشه sudo باشد. یک یا چند شبکه یا دستگاهی که مایل به نظارت بر آن هستید، به عنوان مثال: o سرور مجازی که نگهداری می کنید o شبکه شرکت تان o ISP محلی تان برای هر دستگاه یا شبکه باید آدرس IP شخصی ، محدوده آدرس IP یا شماره سیستم خودمختاری را که بخشی از آن است شناسایی کنید. این قسمت در مرحله 1 پوشانده شده است. پس از آماده شدن ، به عنوان کاربر غیر ریشه خود وارد سرور مجازی شوید. مرحله 1 – شناسایی شبکه ها برای نظارت در این مرحله جزئیات مربوط به شبکه هایی که می خواهید نظارت کنید را مشخص می کنید. BGPalerter می تواند بر اساس آدرسهای IP یا پیشوندهای شبکه نظارت کند. همچنین می تواند براساس شماره سیستم خودمختار (AS) ، که یک شناساگر جهانی منحصر به فرد برای شبکه متعلق به یک نهاد اداری خاص است ، کل شبکه ها را رصد کند. برای یافتن این اطلاعات ، می توانید از سرویس جستجوی IP-to-ASN WHOIS ارائه شده توسط سرویس هوشمند تهدید Team Cymru استفاده کنید. درواقع یک سرور WHOIS سفارشی است که به دنبال جستجوی آدرس IP و اطلاعات مسیریابی شبکه است. اگر قبلاً whois  را نصب نکرده اید ، می توانید آن را با استفاده از دستورات زیر نصب کنید: $ sudo apt update
$ sudo apt install whois
پس از تأیید اینکه Whois نصب شده است ، با انجام جستجوی آدرس IP سرور مجازی خود ، با استفاده از آرگومان -h برای تعیین سرور مجازی اختصاصی ، شروع به کار کنید: $ whois -h whois.cymru.com your-ip-address
با این کار نتیجه ای مشابه زیر حاصل می شود ، که نام و شماره AS را نشان می دهد که سرور مجازی شما بخشی از آن است. این معمولاً به عنوان ارائه دهنده میزبان سرور مجازی شما خواهد بود. Output AS | IP | AS Name 14061 | your-ip-address | vpsgol-ASN, US
در مرحله بعد ، می توانید برای شناسایی پیشوند / گستره شبکه ای که سرور مجازی شما بخشی از آن است ، یک جستجو انجام دهید. این کار را با اضافه کردن آرگومان -p به درخواست خود انجام می دهید: $ whois -h whois.cymru.com ” -p your-ip-address”
خروجی بسیار شبیه به دستور قبلی خواهد بود ، اما پیشوند آدرس IP را که آدرس IP سرور مجازی شما به آن تعلق دارد نشان می دهد: utput AS | IP | BGP Prefix | AS Name 14061 | your-ip-address | 157.230.80.0/20 | vpsgol-ASN, US
در آخر ، می توانید جزئیات بیشتری از AS را که سرور مجازی شما بخشی از آن است ، جستجو کنید ، از جمله منطقه جغرافیایی و تاریخ تخصیص. در شماره AS که با استفاده از دستورات قبلی مشخص کرده اید جایگزین کنید. شما از آرگومان -v برای فعال کردن خروجی طویل استفاده می کنید ، که تضمین می کند تمام جزئیات مربوطه نشان داده شده اند: $ whois -h whois.cymru.com ” -v as14061″
خروجی اطلاعات بیشتری در مورد AS نشان می دهد: Output AS | CC | Registry | Allocated | AS Name 14061 | US | arin | 2012-09-25 | vpsgol-ASN, US
شما جزئیات اصلی در مورد شبکه (های) را که می خواهید نظارت کنید شناسایی کرده اید. یادداشتی از این جزئیات را در جایی نگه دارید ، زیرا بعداً به آنها احتیاج دارید. در مرحله بعد ، تنظیم BGPalerter را شروع می کنید. مرحله 2 – ایجاد یک کاربر بدون امتیازت برای BGPalerter در این مرحله ، یک حساب کاربری جدید بدون امتیازات برای BGPalerter ایجاد خواهید کرد ، زیرا این برنامه نیازی به اجرای امتیازات sudo / root ندارد. در مرحله اول ، یک کاربر جدید با رمز عبور غیرفعال ایجاد کنید: $ sudo adduser –disabled-password bgpalerter
نیازی به تنظیم گذرواژه یا کلیدهای SSH نیست ، زیرا از این کاربر فقط به عنوان یک حساب کاربری برای اجرا / نگهداری BGPalerter استفاده خواهید کرد. با استفاده از su به کاربر جدید سوییچ کنید: $ sudo su bgpalerter
اکنون به عنوان کاربر جدید وارد سیستم می شوید: bgpalerter@droplet:/home/user$ برای رفتن به دیرکتوری اصلی کاربر جدید خود از دستور cd استفاده کنید: bgpalerter@droplet:/home/user$ cd bgpalerter@droplet:~$
یک کاربر جدید بدون امتیازت برای BGPalerter ایجاد کرده اید. در مرحله بعد ، BGPalerter را روی سیستم خود نصب و پیکربندی خواهید کرد. مرحله 3 – نصب و پیکربندی BGPalerter در این مرحله BGPalerter را نصب و پیکربندی می کنید. اطمینان حاصل کنید که هنوز به عنوان کاربر جدید بدون امتیازات خود وارد سیستم شده اید. در مرحله اول ، برای اطمینان از دانلود جدیدترین نسخه ، باید آخرین نسخه BGPalerter را شناسایی کنید. به صفحه BGPalerter Releases بروید و یک کپی از لینک دانلود برای جدیدترین نسخه Linux x64 بگیرید. اکنون می توانید یک کپی از BGPalerter را با استفاده از wget دانلود کنید ، مطمئن شوید که در لینک دانلود صحیح جایگزین می کنید: $ wget https://github.com/nttgin/BGPalerter/releases/download/v1.24.0/bgpalerter-linux-x64
پس از اتمام دانلود فایل ، آن را به عنوان قابل اجرا علامت گذاری کنید: $ chmod +x bgpalerter-linux-x64
در مرحله بعد ، با بررسی شماره نسخه ، بررسی کنید که BGPalerter دانلود و نصب شده است: $ ./bgpalerter-linux-x64 –version
شماره نسخه فعلی را به خروجی می فرستد: Output 1.24.0
قبل از اجرای صحیح BGPalerter ، باید شبکه هایی را که می خواهید نظارت کنید را در یک فایل پیکربندی مشخص کنید. فایل prefixes.yml را در ویرایشگر متن مورد علاقه خود ایجاد و باز کنید: $ nano ~/prefixes.yml
در این فایل پیکربندی ، هر یک از آدرس های IP اختصاصی ، محدوده آدرس IP و شماره AS را که می خواهید نظارت کنید تعیین می کنید. مثال زیر را اضافه کنید و مقادیر پیکربندی را مطابق نیاز با استفاده از اطلاعات شبکه ای که در مرحله 1 مشخص کرده اید تنظیم کنید: ~/prefixes.yml your-ip-address/32: description: My Server asn: – 14061 ignoreMorespecifics: false
157.230.80.0/20: description: IP range for my Server asn: – 14061 ignoreMorespecifics: false
options: monitorASns: ‘14061’: group: default
شما می توانید بسیاری از محدوده های آدرس IP یا شماره AS را به صورت مورد نظر خود نظارت کنید. برای نظارت بر آدرسهای IP اختصاصی ، آنها را با استفاده از / 32 برای IPv4 و / 128 برای IPv6 نمایش دهید. مقدار injoreMorespecifics برای این استفاده میشود که کنترل کند آیا BGPalerter باید فعالیت را برای مسیرهایی که خاص تر (کوچکتر) از مسیری که مشاهده می کنید ، هستند نادیده بگیرد یا خیر. به عنوان مثال ، اگر شما یک / 20 را رصد می کنید و یک تغییر مسیر برای یک / 24 در داخل آن تشخیص داده می شود ، به نظر می رسد خاص تر باشد. در بیشتر موارد ، نباید این موارد را نادیده بگیرید ، اما اگر در حال نظارت بر شبکه بزرگی با پیشوندهای مشتری نماینده م��عدد هستید ، این کار ممکن است به کاهش نویز پس زمینه کمک کند. اکنون می توانید برای اولین بار BGPalerter را برای شروع نظارت بر شبکه های خود اجرا کنید: $ ./bgpalerter-linux-x64
اگر BGPalerter با موفقیت شروع شود ، خروجی مشابه زیر را مشاهده خواهید کرد. توجه داشته باشید که بعضی اوقات ممکن است چند دقیقه طول بکشد تا مانیتورینگ شروع شود: Output Impossible to load config.yml. A default configuration file has been generated. BGPalerter, version: 1.24.0 environment: production Loaded config: /home/bgpalerter/config.yml Monitoring 157.230.80.0/20 Monitoring your-ip-address/32 Monitoring AS 14061
BGPalerter تا زمانی که با استفاده از Ctrl + C آن را متوقف کنید ، ادامه خواهد یافت. در مرحله بعد برخی از هشدارهایی را که BGPalerter می تواند ایجاد کند ، تفسیر می کنید. مرحله 4 – تفسیر هشدارهای BGPalerter در این مرحله ، چند نمونه از هشدارهای BGPalerter را مرور می کنید. BGPalerter هشدارهایی را به عنوان منبع اصلی خروجی و همچنین به صورت اختیاری برای هر نقطه انتهایی گزارش اضافی ارسال می کند که می تواند در config.yml پیکربندی شود ، همانطور که در مستندات BGPalerter شرح داده شده است. به طور پیش فرض ، BGPalerter در مورد موارد زیر هشدار می دهد: ربوده شدن مسیر: هنگامی اتفاق می افتد كه AS پیشوندی را كه مجاز به آن نیست اعلام كند و باعث می شود ترافیك به اشتباه هدایت شود. این مسئله می تواند یک حمله عمدی باشد یا یک خطای پیکربندی تصادفی. از دست رفتن دید در مسیر: وقتی اکثر روترهای BGP در اینترنت قادر به مسیریابی با اطمینان هستند ، یک مسیر قابل مشاهده است. از دست دادن دید به عدم امکان دسترسی شبکه شما مربوط می شود ، به عنوان مثال اگر همتای BGP شما متوقف شده باشد. اطلاعیه های زیر پیشوند جدید: زمانی اتفاق میافتد که AS شروع به اعلام پیشوند می کند که از آنچه پیش بینی می شود کوچکتر باشد. این می تواند حاکی از تغییر پیکربندی عمدی ، پیکربندی غلط تصادفی یا در برخی موارد نشانگر حمله باشد. فعالیت در AS: معمولاً به اطلاعیه های جدید مسیر اشاره می کند. اگر BGPalerter هنوز از آن آگاهی نداشته باشد ، به صورت “new” در نظر گرفته می شود. در زیر برخی از هشدارهای مثال ، همراه با توضیحی کوتاه از معنای آنها آمده است: Alert #1 The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540
این هشدار شواهدی از ربودن مسیر را نشان می دهد ، جایی که جایی که AS64496 ، 203.0.113.0/24 را اعلام کرده است ولی پیش بینی می شود این مسیر توسط AS65540اعلام شود. این یک نشانگر قوی از تنظیم نادرست منجر به نشت مسیر یا ربوده شدن عمدی توسط یک مهاجم میباشد. Alert #2 The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers
این هشدار نشان می دهد که شبکه 203.0.113.0/24 دیگر قابل مشاهده نیست. که ممکن است به دلیل یک مشکل مسیریابی در بالادست باشد یا یک روتر دچار نقص برق شده باشد. Alert #3 A new prefix 203.0.113.0/25 is announced by AS64496. It should be instead 203.0.113.0/24 annou
این هشدار نشان می دهد که پیشوند خاص تری در جایی که پیش بینی نشده است اعلام شده است ، برای مثال با اعلام یک / 25 هنگامی که فقط یک / 24 انتظار می رود. به احتمال زیاد یک پیکربندی نادرست است ، اما در برخی موارد می تواند شواهدی از ربودن مسیر باشد. Alert #4 AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of
در نهایت ، این هشدار نشان می دهد كه AS64496 پیشوندی را اعلام كرده است كه BGPalerter هنوز از آن چیزی نمی داند. این امر می تواند به این دلیل باشد که شما به طور قانونی پیشوند جدید را اعلام می کنید ، یا می تواند نشان دهنده پیکربندی غلط باشد و منجر به این شود که به طور اتفاقی پیشوند متعلق به شخص دیگری را اعلام کنید. در این مرحله ، شما چندین نمونه از هشدارهای BGPalerter را مرور کردید. در مرحله بعد ، BGPalerter را پیکربندی می کنید تا به طور خودکار در بوت اجرا شود. مرحله 5 – شروع BGPalerter در Boot در این مرحله آخر ، BGPalerter را پیکربندی می کنید تا در بوت اجرا شود. اطمینان حاصل کنید که هنوز به عنوان کاربر جدید بدون امتیازت در سیستم هستید و سپس ویرایشگر crontab را باز کنید: $ crontab -e
در مرحله بعد ، ورودی زیر را در انتهای فایل crontab اضافه کنید: crontab @reboot sleep 10; screen -dmS bgpalerter “./bgpalerter-linux-x64”
هر بار که سیستم شما بوت می شود ، یک بخش screen جداشده با نام “bgpalerter” ایجاد می کند و BGPalerter را در داخل آن شروع می کنید. ویرایشگر crontab را ذخیره کرده و از آن خارج شوید. اکنون می توانید سیستم خود را ریبوت کنید تا مطمئن شوید که BGPalerter به درستی از بوت شروع می شود. ابتدا باید از کاربر BGPalerter خود خارج شوید: $ logout
سپس با ریبوت عادی سیستم ادامه دهید: $ sudo reboot
پس از ریبوت سیستم ، دوباره به سرور مجازی خود وارد شوید و برای دسترسی دوباره به کاربر BGPalerter خود ، از su استفاده کنید: $ sudo su bgpalerter
سپس می توانید در هر زمان به بخش وصل شوید تا خروجی BGPalerter را مشاهده کنید:
$ screen -r bgpalerter
در این مرحله آخر ، شما BGPalerter را پیکربندی کرده اید تا در بوت اجرا شود. نتیجه در این مقاله BGPalerter را تنظیم کرده اید و از آن برای نظارت بر شبکه برای تغییرات مسیریابی BGP استفاده می کنید. اگر می خواهید BGPalerter کاربر پسندتر شود ، می توانید آن را برای ارسال هشدار به کانال Slack از طریق یک webhook پیکربندی کنید: Configure Slack Reporting for BGPalerter اگر می خواهید در مورد خود BGP اطلاعات بیشتری کسب کنید ، اما به یک محیط تولید BGP دسترسی ندارید ، میتوانید از DN42 برای آزمایش BGP در یک محیط امن و منزوی بهره ببرید: Decentralized Network 42
برچسب‌ها:
BGP
,
BGPalerter
,
Cloudflare
,
sudo
0 notes
vpsgol33-blog · 4 years
Text
نحوه نصب 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 تمرین کنید
برچسب‌ها:
MySQL
,
Python
0 notes
vpsgol33-blog · 4 years
Text
نصب 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 Linux
,
Django
,
NumPy
0 notes
vpsgol33-blog · 4 years
Text
نحوه نصب 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
0 notes
vpsgol33-blog · 4 years
Text
نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04
پشته “LAMP” گروهی از نرم افزارهای منبع باز است که به طور معمول به منظور فعال کردن سرور مجازی برای میزبانی وب سایتهای پویا و برنامه های وب که به زبان PHP نوشته شده است ، با هم نصب می شوند. این اصطلاح مخفف سیستم عامل لینوکس دارای سرور مجازی وب Apache است. داده های سایت در یک پایگاه داده MySQL ذخیره می شوند و محتوای پویا توسط PHP پردازش می شود. در این راهنما ، یک پشته LAMP را روی یک سرور مجازی Ubuntu 20.04 نصب خواهیم کرد. پیش نیازها برای تکمیل این آموزش ، نیاز به داشتن یک سرور مجازی اوبونتو 20.04 با یک حساب کاربری غیر ریشه فعال با sudo و یک فایروال پایه دارید که می توان با استفاده از راهنمای تنظیم اولیه سرور مجازی ما برای اوبونتو 20.04 این کار را انجام داد. مرحله 1 – نصب Apache و به روزرسانی فایروال وب سرور مجازی Apache از محبوب ترین سرور مجازی های وب در جهان است. به خوبی مستند شده است ، جامعه فعالی از کاربران دارد و در بیشتر تاریخ وب مورد استفاده گسترده قرار گرفته است ، و این باعث می شود آن را به عنوان یک گزینه پیش فرض عالی برای میزبانی وب سایت انتخاب کنیم. Apache را با استفاده از مدیر بسته Ubuntu یعنی apt نصب کنید: ⦁ $ sudo apt update ⦁ ⦁ $ sudo apt install apache2
اگر اولین بار است که در این بخش از sudo استفاده می کنید ، از شما خواسته می شود که رمزعبور کاربر خود را ارائه کنید تا تأیید کنید که از امتیازات مناسب برای مدیریت بسته های سیستم با apt برخوردار هستید. از شما خواسته می شود که با فشار دادن Y ، سپس enter نصب Apache را تأیید کنید. پس از اتمام نصب ، باید تنظیمات فایروال خود را تنظیم کنید تا ترافیک HTTP و HTTPS امکان پذیر باشد. UFW دارای پروفایل های متفاوتی است که می توانید برای دستیابی به این هدف اهرم کنید. برای لیست کردن تمام پروفایل های برنامه UFW موجود ، می توانید این دستور را اجرا کنید: ⦁ $ sudo ufw app list ⦁
خروجی مانند این را خواهید دید: Output Available applications: Apache Apache Full Apache Secure OpenSSH
معنی هر یک از این پروفایل ها آورده شده است: ⦁ Apache: این نمایه فقط پورت 80 (ترافیک وب عادی و بدون رمزگذاری) را باز می کند. ⦁ Apache Full: این پروفایل هر دو پورت 80 (ترافیک وب عادی و بدون رمزگذاری) و پورت 443 (ترافیک رمزگذاری شده TLS / SSL) را باز می کند. ⦁ Apache Secure: این نمایه فقط پورت 443 (ترافیک رمزگذاری شده TLS / SSL) را باز می کند. در حال حاضر ، بهتر است فقط اجازه دسترسی اتصالات در پورت 80 را بدهید ، زیرا این یک نصب جدید Apache است و هنوز گواهی TLS / SSL پیکربندی شده برای اجازه ترافیک HTTPS در سرور مجازی خود ندارید. فقط برای ترافیک در پورت 80 ، از نمایه Apache استفاده کنید: ⦁ $ sudo ufw allow in “Apache” ⦁ می توانید تغییر را با این دستور تأیید کنید: ⦁ $ sudo ufw status ⦁ Output Status: active
To Action From — —— —- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)
ترافیک پورت 80 اکنون از طریق فایروال مجاز است. با مراجعه به آدرس IP عمومی سرور مجازی خود در مرورگر وب ، می توانید بلافاصله بررسی را انجام دهید تا تأیید کنید که همه چیز به درستی پیش میرود ( اگر در حال حاضر این اطلاعات را ندارید ، نوشته زیر این عنوان را ببینید تا بفهمید آدرس IP عمومی تان چیست): http://your_server_ip
صفحه پیش فرض Ubuntu 20.04 Apache را مشاهده می کنید ، که برای اهداف اطلاع رسانی و آزمایشی میباشد. باید چیزی شبیه به این باشد:
اگر این صفحه را مشاهده کردید ، اکنون سرور مجازی وب شما به درستی از طریق فایروال نصب شده و در دسترس است. چگونه آدرس IP عمومی سرور مجازی خود را پیدا کنید اگر نمی دانید آدرس IP عمومی سرور مجازی شما چیست ، روش های مختلفی برای یافتن آن وجود دارد. معمولاً آدرسی است که برای اتصال به سرور مجازی خود از طریق SSH استفاده می کنید. چند روش مختلف برای انجام این کار از خط فرمان وجود دارد. ابتدا می توانید با تایپ دستور زیر از ابزار iproute2 برای دریافت آدرس IP خود استفاده کنید: ⦁ $ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’ ⦁ این دستور دو یا سه خط قبلی را به شما باز می گرداند. همه آنها آدرس های صحیحی هستند ، اما رایانه شما فقط می تواند از یکی از آنها استفاده کند ، بنابراین هر یک از آنها را امتحان کنید. روش دیگر استفاده از ابزار curl برای تماس با طرف خارجی است تا به شما بگوید سرور مجازی شما را چگونه مشاهده میکند. این کار با پرسیدن آدرس IP شما از یک سرور مجازی خاص انجام میشود: ⦁ $ curl http://icanhazip.com ⦁ صرف نظر از روشی که برای دریافت آدرس IP خود استفاده می کنید ، آن را در نوار آدرس مرورگر وب خود وارد کنید تا صفحه پیش فرض Apache را مشاهده کنید. مرحله 2 – نصب MySQL اکنون که وب سرور خود را فعال و راه اندازی کرده اید ، باید سیستم پایگاه داده را نصب کنید تا بتوانید داده های سایت خود را ذخیره و مدیریت کنید. MySQL یک سیستم مدیریت پایگاه داده محبوب است که در محیط های PHP استفاده می شود. دوباره ، برای به دست آوردن و نصب این نرم افزار از apt استفاده کنید: ⦁ $ sudo apt install mysql-server ⦁ در صورت درخواست ، نصب را با تایپ Y و سپس ENTER تأیید کنید. پس از اتمام نصب ، توصیه می شود اسکریپت امنیتی را اجرا کنید که از طریق MySQL از قبل نصب شده باشد. این اسکریپت برخی از تنظیمات پیش فرض ناامن را حذف کرده و دسترسی به سیستم پایگاه داده شما را غیرفعال می کند. اسکریپت تعاملی را با اجرای این دستور شروع کنید: ⦁ $ sudo mysql_secure_installation ⦁ با استفاده از این گزینه می توانید پلاگین Validate PASSWORD را پیکربندی کنید. توجه: فعال کردن این ویژگی چیزی مثل فراخوانی قضاوت است. در صورت فعال بودن ، گذرواژهای ناسازگار با معیارهای مشخص توسط خطای MySQL رد می شوند. بهتر است اعتبارسنجی را غیرفعال رها کنید ، اما همیشه باید از رمز عبورهای قوی و منحصر به فرد برای اعتبارات پایگاه داده استفاده کنید.
برای بله yes را تایپ کنید و یا هر چیز دیگری که بدون فعال سازی کار را ادامه میدهد. VALIDATE PASSWORD PLUGIN 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 plugin?
Press y|Y for Yes, any other key for No:
اگر yes را جواب بدهید ، از شما خواسته می شود یک سطح اعتبار گذرواژه را انتخاب کنید. به خاطر داشته باشید اگر 2 را برای قویترین سطح وارد کنید ، باید گذرواژه ای شامل اعداد ، حروف بزرگ و کوچک و علائم خاص وارد کنید ، در غیر این صورت خطایی دریافت خواهید کرد. 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: 1
صرف نظر از این که شما تصمیم به تنظیم PLUGIN VALIDATE PASSWORD گرفته اید ، سرور مجازی از شما درخواست می کند که یک رمز عبور را برای کاربر ریشه MySQL انتخاب و تأیید کنید. این کاربر نباید با کاربر ریشه سیستم اشتباه گرفته شود. کاربر ریشه بانک اطلاعاتی یک کاربر ادمین با امتیازات کامل برای دسترسی به سیستم دیتابیس است. حتی اگر روش احراز هویت پیش فرض برای کاربر ریشه MySQL ، استفاده از یک رمزعبور را نادیده می گیرد ، حتی اگر پسوردی تنظیم شده باشد ، باید یک رمزعبور قوی را در اینجا به عنوان یک اقدام امنیتی اضافی تعریف کنید. به صورت مختصر به این مورد خواهیم پرداخت. اگر اعتبار سنجی رمز عبور را فعال کرده باشید ، قدرت رمز عبور برای رمز ریشه که تازه وارد کرده اید به شما نشان داده می شود و سرور مجازی تان از شما سؤال می کند که آیا می خواهید با آن رمز عبور ادامه دهید یا خیر. اگر از گذرواژه فعلی خود راضی هستید ، “yes” را وارد کنید: 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 وارد شوید: ⦁ sudo mysql ⦁ با این کار به سرور مجازی MySQL به عنوان کاربر ریشه پایگاه داده ادمین متصل می شوید ، که با استفاده از sudo هنگام اجرای این دستور استنباط می شود. باید خروجی مانند این را مشاهده کنید: Output Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 Server version: 8.0.19-0ubuntu5 (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.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
برای خروج از کنسول MySQL ، این دستور را تایپ کنید: mysql> exit ⦁
توجه کنید که لازم نیست برای اتصال به عنوان کاربر اصلی ، گذرواژه ارائه کنید ، حتی اگر هنگام اجرای اسکریپت mysql_secure_installation ، پسوردی تعریف کرده باشید. این بدان دلیل است که روش تأیید اعتبار پیش فرض برای کاربر MySQL ادمین به جای رمز عبور، روش unix_socket است. حتی اگر ممکن است این مسئله در ابتدا یک نگرانی امنیتی به نظر برسد ، باعث می شود سرور مجازی پایگاه داده ایمن تر شود زیرا تنها کاربرانی که اجازه ورود به عنوان کاربر ریشه MySQL را دارند ، کاربران سیستم با امتیازات sudo هستند که از طریق کنسول یا برنامه ای با همان امتیازات ، وارد سیستم می شوند. در عمل ، این بدان معناست که شما قادر نخواهید بود از کاربر ریشه پایگاه داده ادمین برای اتصال به برنامه PHP خود استفاده کنید. در صورت تغییر روش احراز هویت پیش فرض از unix_socket به رمز عبور، تنظیم گذرواژه برای حساب ریشه MySQL به عنوان محافظ عمل می کند. برای افزایش امنیت ، بهتر است برای هر بانک اطلاعاتی ، حسابهای کاربری اختصاصی با امتیازات گسترده تری تنظیم کنید ، به خصوص اگر قصد دارید چندین پایگاه داده را در سرور مجازی خود داشته باشید. توجه: در زمان نوشتن این راهنما، کتابخانه بومی MySQL PHP ، یعنی mysqlnd از caching_sha2_authentication، روش احراز هویت پیش فرض برای MySQL 8، پشتیبانی نمی کند. به همین دلیل ، هنگام ایجاد کاربران دیتابیس برای برنامه های PHP در MySQL 8 ، باید مطمئن باشید که به گونه ای پیکربندی کرده اید که به جای آن از mysql_native_password استفاده کنند. ما در مرحله 6 نحوه انجام این کار را نشان خواهیم داد.
سرور مجازی MySQL شما اکنون نصب و ایمن شده است. در مرحله بعد ، PHP ، مؤلفه نهایی را در پشته LAMP نصب خواهیم کرد. مرحله 3 – نصب PHP شما Apache را برای ارائه خدمات خود و MySQL را برای ذخیره سازی و مدیریت داده های خود نصب کرده اید. PHP مؤلفه ای از ستاپ ما است که کد را برای نمایش محتوای پویا به کاربر نهایی پردازش می کند. علاوه بر بسته php ، به php-mysql ، یک ماژول PHP نیاز خواهید داشت که به PHP اجازه می دهد تا با بانکهای اطلاعاتی مبتنی بر MySQL ارتباط برقرار کند. برای فعال سازی Apache برای مدیریت فایل های PHP ، به libapache2-mod-php نیز نیاز خواهید داشت. بسته های اصلی PHP بصورت خودکار به عنوان متعلقات نصب می شوند. برای نصب این بسته ها ، این دستور را اجرا کنید: ⦁ $ sudo apt install php libapache2-mod-php php-mysql ⦁ پس از اتمام نصب ، می توانید دستور زیر را برای تأیید نسخه PHP خود اجرا کنید: ⦁ $ php -v ⦁ Output PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
در این مرحله ، پشته LAMP شما کاملاً عملیاتی است ، اما قبل از اینکه بتوانید تنظیمات خود را با یک اسکریپت PHP تست کنید ، بهتر است یک هاست مناسب Apache Virtual را برای نگهداری فایل ها و پوشه های وب سایت خود تنظیم کنید. ما این کار را در مرحله بعدی انجام خواهیم داد. مرحله 4 – ایجاد یک هاست مجازی برای وب سایت خود هنگام استفاده از وب سرور مجازی Apache ، می توانید هاست های مجازی (��شابه بلوک های سرور مجازی در Nginx) ایجاد کنید تا جزئیات پیکربندی را کپسوله کنید و هاست بیش از یک دامنه از یک سرور واحد باشید. در این راهنما دامنه ای به نام your_domain تنظیم خواهیم کرد ، اما شما باید آن را با نام دامنه خود جایگزین کنید. Apache در Ubuntu 20.04 دارای یک بلوک سرور مجازی است که بصورت پیش فرض فعال شده است تا برای ارائه اسناد از دیرکتوری / var / www / html پیکربندی شود. اگرچه برای این یک سایت واحد به خوبی کار می کند ، اما اگر هاست چندین سایت باشید ، می تواند مشکل ساز شود. به جای اصلاح / var / www / html ، یک ساختار دایرکتوری را در / var / www برای سایت your_domain ایجاد خواهیم کرد ، و / var / www / html را در جای خود به عنوان دایرکتوری پیش فرض قرار می دهیم که در صورتی که درخواست کلاینت با هیچ یک از سایت ها منطبق نبود، ارائه شود. دایرکتوری برای your_domain را به شرح زیر ایجاد کنید: ⦁ $ sudo mkdir /var/www/your_domain ⦁ در مرحله بعد ، مالکیت دایرکتوری را به متغیر محیط $USER اختصاص دهید ، که کاربر فعلی سیستم شما را ارجاع خواهد داد: ⦁ $ sudo chown -R $USER:$USER /var/www/your_domain ⦁ سپس ، با استفاده از ویرایشگر خط فرمان مورد نظر خود ، یک فایل پیکربندی جدید در دیرکتوری sites-available Apache باز کنید. در اینجا ، ما از nano استفاده خواهیم کرد: ⦁ $ sudo nano /etc/apache2/sites-available/your_domain.conf ⦁ با این کار یک فایل جدید خالی ایجاد می شود. پیکربندی بدون اسکلت زیر را در آن قرار دهید: /etc/apache2/sites-available/your_domain.conf <VirtualHost *:80> ServerName your_domain ServerAlias www.your_domain ServerAdmin webmaster@localhost DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
پس از اتمام کار فایل را ذخیره کنید و ببندید. اگر از nano استفاده میکنید میتوانید با فشردن CTRL+X سپس Yو ENTERاین کار را انجام دهید. با استفاده از این پیکربندی VirtualHost ، به Apache می گوییم تا با استفاده از / var / www / your_domain به عنوان دایرکتوری ریشه وب ، به your_domain سرویس دهی کند. اگر می خواهید Apache را بدون نام دامنه تست کنید ، می توانید با اضافه کردن یک کاراکتر # در ابتدای خطوط هر گزینه ، گزینه های ServerName و ServerAlias ​​را حذف یا اضافه کنید. اکنون می توانید از a2ensite برای فعال کردن هاست مجازی جدید استفاده کنید: ⦁ $ sudo a2ensite your_domain ⦁ ممکن است بخواهید وب سایت پیش فرض نصب شده با Apache را غیرفعال کنید. در صورت عدم استفاده از نام دامنه سفارشی لازم نیست زیرا در این حالت پیکربندی پیش فرض Apache باعث می شود هاست مجازی شما بازنویسی شود. برای غیرفعال کردن وب سایت پیش فرض Apache ، این دستور را تایپ کنید: ⦁ $ sudo a2dissite 000-default ⦁
برای اطمینان از اینکه فایل پیکربندی شما حاوی خطاهای نحوی نیست ، اجرا کنید: ⦁ $ sudo apache2ctl configtest ⦁ در آخر ، Apache را مجدد لود کنید تا این تغییرات به مرحله اجرا درآیند: ⦁ $ sudo systemctl reload apache2 ⦁ وب سایت جدید شما اکنون فعال است ، اما ریشه وب / var / www / your_domain هنوز خالی است. یک فایل index.html در آن مکان ایجاد کنید تا بتوانیم آزمایش کنیم که هاست مجازی مطابق آنچه انتظار می رود کار میکند: ⦁ $ nano /var/www/your_domain/index.html ⦁ محتوای زیر را در این فایل وارد کنید: /var/www/your_domain/index.html <html> <head> <title>your_domain website</title> </head> <body> <h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p> </body> </html>
اکنون به مرورگر خود بروید و یک بار دیگر به نام دامنه یا آدرس IP سرور مجازی خود دسترسی پیدا کنید: http://server_domain_or_IP
صفحه ای را به این شکل مشاهده خواهید کرد:
اگر این صفحه را مشاهده کردید ، به این معنی است که هاست مجازی Apache شما مطابق آنچه انتظار می رود کار می کند. می توانید تا زمانی که یک فایل index.php تنظیم کنید تا جایگزین آن شود ، این فایل را به صورت یک صفحه فرود موقت برای برنامه خود باقی بگذارید. پس از انجام این کار ، به یاد داشته باشید که فایل index.html را از ریشه سند خود حذف یا تغییر نام دهید ، زیرا به طور پیش فرض بر یک فایل index.php پیشی می گیرد. نکته ای درباره DirectoryIndex در Apache با تنظیمات پیش فرض DirectoryIndex در Apache ، فایلی با نام index.html همیشه بر فایل index.php اولویت خواهد داشت. این ویژگی برای ایجاد صفحات نگهداری در برنامه های PHP ، با ایجاد یک فایل موقت index.html حاوی یک پیام آموزنده برای بازدید کنندگان ، مفید است. از آنجا که این صفحه بر صفحه index.php ارجحیت دارد ، سپس به صفحه فرود برنامه تبدیل خواهد شد. پس از اتمام نگهداری، index.html تغییر نام داده یا از ریشه سند خارج می شود و صفحه برنامه معمولی را برمی گرداند. اگر می خواهید این رفتار را تغییر دهید ، باید فایل /etc/apache2/mods-enabled/dir.conf را ویرایش کرده و نظمی را که در آن دیرکتوری index.php در دستورالعمل DirectoryIndex ذکر شده است اصلاح کنید: ⦁ $ sudo nano /etc/apache2/mods-enabled/dir.conf ⦁ /etc/apache2/mods-enabled/dir.conf <IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
پس از ذخیره و بستن فایل ، باید Apache را مجدد لود کنید تا تغییرات به مرحله اجرا در بیایند: ⦁ $ sudo systemctl reload apache2 ⦁ در مرحله بعد ، ما یک اسکریپت PHP ایجاد خواهیم کرد تا آزمایش کنیم که PHP به درستی روی سرور مجازی شما نصب شده و پیکربندی شده است. مرحله 5 – تست پردازش PHP در وب سرور مجازی خود اکنون که یک مکان سفارشی برای میزبانی فایل ها و پوشه های وب سایت خود دارید ، یک اسکریپت تست PHP ایجاد خواهیم کرد تا تأیید کند که Apache قادر به مدیریت و پردازش درخواست های فایل های PHP است. یک فایل جدید با نام info.php را در پوشه ریشه وب سفارشی خود ایجاد کنید: ⦁ $ nano /var/www/your_domain/info.php ⦁ این دستور یک فایل خالی را باز می کند. متن زیر را که کد PHP معتبر است ، داخل فایل اضافه کنید: /var/www/your_domain/info.php <?php phpinfo();
پس از اتمام ، فایل را ذخیره کنید و ببندید. برای تست این اسکریپت ، به مرورگر وب خود بروید و به نام دامنه یا آدرس IP سرور مجازی خود ، که پس از آن نام اسکریپت وجود دارد دسترسی پیدا کنید ، که در این حالت info.php است: http://server_domain_or_IP/info.php صفحه ای شبیه به این را مشاهده خواهید کرد:
این صفحه اطلاعاتی را در مورد سرور مجازی شما از منظر PHP ارائه می دهد که برای اشکال زدایی مفید است و اطمینان حاصل میکند که تنظیمات شما به درستی اعمال می شوند. اگر می توانید این صفحه را در مرورگر خود مشاهده کنید ، نصب PHP شما مطابق آنچه انتظار می رود کار می کند. پس از بررسی اطلاعات مربوط به سرور مجازی PHP خود از طریق آن صفحه ، بهتر است فایل ایجاد شده را حذف کنید زیرا حاوی اطلاعات حساسی در مورد محیط PHP شما و سرور مجازی Ubuntu شماست. برای این کار می توانید از rm استفاده کنید: ⦁ $ sudo rm /var/www/your_domain/info.php ⦁ در صورت نیاز به دسترسی مجدد به اطلاعات ، همیشه می توانید این صفحه را مجدداً ایجاد کنید. مرحله 6 – آزمایش اتصال به بانک اطلاعاتی از PHP (اختیاری) اگر می خواهید تست کنید که آیا PHP قادر به اتصال به MySQL و اجرای پرس و جوهای پایگاه داده است، می توانید یک جدول آزمایشی با داده های ساختگی و جستجوی مطالب آن از یک اسکریپت PHP ایجاد کنید. قبل از اینکه بتوانیم این کار را انجام دهیم ، باید یک پایگاه داده آزمایشی و یک کاربر جدید MySQL برای دسترسی به آن را به درستی پیکربندی کنیم. در زمان نوشتن این مقاله، کتابخانه بومی MySQL PHP ، mysqlnd از caching_sha2_authentication، روش تأیید اعتبار پیش فرض برای MySQL 8 پشتیبانی نمی کند. برای اینکه بتوانیم از PHP به آن متصل شویم ، نیاز به ایجاد کاربر جدید با تایید اعتبار mysql_native_password داریم. یک دیتابیس با نام example_database و کاربری با نام example_user ایجاد خواهیم کرد ، اما می توانید این نام ها را با مقادیر مختلف جایگزین کنید. ابتدا با استفاده از حساب ریشه به کنسول MySQL وصل شوید: ⦁ $ sudo mysql ⦁ برای ایجاد یک پایگاه داده جدید ، دستور زیر را از کنسول MySQL خود اجرا کنید: ⦁ mysql> CREATE DATABASE example_database; ⦁
اکنون می توانید یک کاربر جدید ایجاد کنید و در پایگاه داده سفارشی که اخیراً ایجاد کرده اید ، به آنها امتیاز دهید. دستور زیر با استفاده از mysql_native_password به عنوان یک روش تأیید اعتبار پیش فرض کاربر جدیدی به نام example_user ایجاد می کند. ما رمزعبور این کاربر را به عنوان PASWORD تعریف می کنیم ، اما شما باید این مقدار را با یک رمز عبور مطمئن به انتخاب خود جایگزین کنید. ⦁ mysql> CREATE USER ‘example_user’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’; ⦁ اکنون باید به این کاربر اجازه به پایگاه داده example_database را بدهیم: ⦁ mysql> GRANT ALL ON example_database.* TO ‘example_user’@’%’; ⦁ این کار به کاربر example_user دسترسی کامل به بانک اطلاعاتی example_database را می دهد ، در حالی که از ایجاد یا تغییر سایر پایگاه های داده روی سرور مجازی شما جلوگیری می کند. اکنون از پوسته MySQL خارج شوید: ⦁ Mysql> exit ⦁ با ورود دوباره به کنسول MySQL ، این بار با استفاده از اعتبار کاربر سفارشی می توانید آزمایش کنید که آیا کاربر جدید دارای مجوزهای مناسب است. ⦁ $ mysql -u example_user -p ⦁ در این دستور ، به پرچم -p توجه کنید ، که رمز عبوری که در هنگام ایجاد کاربر example_user استفاده کردید را از شما میخواهد. پس از ورود به کنسول MySQL ، تأیید کنید که به بانک اطلاعاتی example_database دسترسی دارید: ⦁ Mysql> SHOW DATABASES; ⦁ این کار خروجی زیر را به شما می دهد: Output +——————–+ | Database | +——————–+ | example_database | | information_schema | +——————–+ 2 rows in set (0.000 sec)
در مرحله بعد ، یک جدول آزمایشی با نام todo_list ایجاد خواهیم کرد. از کنسول MySQL عبارت زیر را اجرا کنید: ⦁ Mysql> CREATE TABLE example_database.todo_list ( ⦁ ⦁ Mysql> item_id INT AUTO_INCREMENT, ⦁ ⦁ Mysql> content VARCHAR(255), ⦁ ⦁ Mysql> PRIMARY KEY(item_id) ⦁ ⦁ Mysql> );
چند ردیف محتوا را در جدول آزمون وارد کنید. ممکن است بخواهید با استفاده از مقادیر مختلف دستور بعدی را چند بار تکرار کنید: ⦁ Mysql> INSERT INTO example_database.todo_list (content) VALUES (“My first important item”); ⦁ برای تأیید اینکه داده ها با موفقیت در جدول شما ذخیره شده اند ، اجرا کنید: ⦁ Mysql> SELECT * FROM example_database.todo_list; ⦁
خروجی زیر را مشاهده خواهید کرد: Output +———+————————–+ | item_id | content | +———+————————–+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +———+————————–+ 4 rows in set (0.000 sec)
پس از تأیید اینکه داده های معتبری در جدول آزمون خود دارید ، می توانید از کنسول MySQL خارج شوید: Mysql> exit اکنون می توانید اسکریپت PHP را ایجاد کنید که به MySQL متصل شود و محتوای شمار را پرس و جو کنید. با استفاده از ویرایشگر مورد نظر خود ، یک فایل PHP جدید را در دیرکتوری ریشه وب خود ایجاد کنید. ما برای این کار از nano استفاده خواهیم کرد: ⦁ $ nano /var/www/your_domain/todo_list.php ⦁ اسکریپت PHP زیر به پایگاه داده MySQL متصل میشود و برای محتوای جدول todo_list پرس و جو میکند و نتایج را در یک لیست نمایش می دهد. اگر در ارتباط با بانک اطلاعاتی مشکلی وجود داشته باشد ، یک استثنا به وجود می آورد. این محتوا را در متن todo_list.php کپی کنید: /var/www/your_domain/todo_list.php <?php $user = “example_user”; $password = “password”; $database = “example_database”; $table = “todo_list”;
try { $db = new PDO(“mysql:host=localhost;dbname=$database”, $user, $password); echo “<h2>TODO</h2><ol>”; foreach($db->query(“SELECT content FROM $table”) as $row) { echo “<li>” . $row[‘content’] . “</li>”; } echo “</ol>”; } catch (PDOException $e) { print “Error!: ” . $e->getMessage() . “<br/>”; die(); }
پس از پایان ویرایش ، فایل را ذخیره کنید و ببندید. اکنون می توانید با مراجعه به نام دامنه یا آدرس IP عمومی که برای وب سایت شما پیکربندی شده و پس از آن /todo_list.php نوشته شده، به این صفحه در مرورگر وب خود دسترسی پیدا کنید : http://your_domain_or_IP/todo_list.php
باید صفحه ای مانند این را مشاهده کنید ، که محتویاتی را که در جدول آزمایش خود وارد کرده اید نشان دهد:
این بدان معناست که محیط PHP شما آماده اتصال و تعامل با سرور مجازی MySQL است. نتیجه در این راهنما ، ما با استفاده از Apache به عنوان سرور مجازی وب و MySQL به عنوان سیستم پایگاه داده ، پایه ای انعطاف پذیر برای ارائه وب سایت ها و برنامه های PHP به بازدید کنندگان شما ایجاد کرده ایم. به عنوان مرحله فوری بعدی ، باید با ارائه اتصالات از طریق HTTPS اطمینان حاصل کنید که اتصالات به سرور مجازی وب شما ایمن هستند. به منظور تحقق این امر ، می توانید از Let’s Encrypt برای امنیت سایت خود با مجوز TLS / SSL رایگان استفاده کنید.
برچسب‌ها:
Apache
,
Linux
,
MySQL
,
PHP
0 notes
vpsgol33-blog · 4 years
Text
نصب وب سرور 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 <html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body> </html>
با فشردن 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 <VirtualHost *:80> 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 </VirtualHost>
با این کار به 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 مراجعه نمایید.
برچسب‌ها:
Apache
,
centos 8
,
HTTPS
0 notes
vpsgol33-blog · 4 years
Text
نحوه نصب 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 proxy 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 <html> <head> <title>Welcome to your_domain!</title> </head> <body> <h1>Success! The your_domain server block is working!</h1> </body> </html>
پس از اتمام ، فایل را با تایپ کردن 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 را بررسی کنید.
برچسب‌ها:
Nginx
,
TLS / SSL
,
Ubuntu 20.04
,
فایروال
0 notes
vpsgol33-blog · 4 years
Text
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 احتیاج دارم؟ نتیجه استراتژی های ذکر شده در بالا ، مروری بر برخی از پیشرفتهایی است که می توانید برای بهبود امنیت سیستم های خود داشته باشید. مهم است که بدانید ، اگرچه دیر انجام دادن بهتر از هرگز انجام ندادن است ، اما اثربخشی اقدامات امنیتی با تاخیر طولانی در اجرای آن ها کاهش می یابد. امنیت نمی تواند یک امر فرعی باشد و باید از ابتدا در کنار سرویس ها و برنامه هایی که ارائه می دهید اجرا شود.
برچسب‌ها:
cloud
,
fail2ban
,
Iptables
,
netstat
,
VPC
0 notes
vpsgol33-blog · 4 years
Text
نحوه نصب و ایمن سازی 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 ، فایروال شماست (که در صورت پیروی از آموزش مقدماتی راه اندازی اولیه سرور مجازی اولیه، آن را پیکربندی کرده اید) ، زیرا این کار پرش از آن حصار امنیتی را برای حمله گران بسیار دشوار می کند.
برچسب‌ها:
nano
,
Redis
,
Ubuntu 20.04
0 notes
vpsgol33-blog · 4 years
Text
نحوه نصب و ایمن سازی 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 ، فایروال شماست (که در صورت پیروی از آموزش مقدماتی راه اندازی اولیه سرور مجازی اولیه، آن را پیکربندی کرده اید) ، زیرا این کار پرش از آن حصار امنیتی را برای حمله گران بسیار دشوار می کند.
برچسب‌ها:
nano
,
Redis
,
Ubuntu 20.04
0 notes