<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های صادق خادمی</title>
        <link>https://virgool.io/feed/@niiiixd</link>
        <description>DevOps Engineer / personal Site : sadeghkhademi.com</description>
        <language>fa</language>
        <pubDate>2026-06-16 15:00:12</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/622/avatar/FJ04Dh.png?height=120&amp;width=120</url>
            <title>صادق خادمی</title>
            <link>https://virgool.io/@niiiixd</link>
        </image>

                    <item>
                <title>امن کردن دسترسی SSH</title>
                <link>https://virgool.io/sadeghkhademi/%D8%A7%D9%85%D9%86-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-ssh-yefpi5ysxftx</link>
                <description>بررسی اجمالیپروتکل SSH، تقریباً برای همه توزیع های لینوکسی پروتکل مدیریت از راه دور پیش فرض است. SSH با استفاده از رمزگذاری داده ها، محرمانگی و یکپارچگی را فراهم می کند و رمزهای عبور را دیگر به صورت متنی ساده از طریق شبکه ارسال نمی کند. با این وجود، پیکربندی پیش فرض SSH می تواند سرور را در معرض خطر امنیتی قرار دهد.به همین دلیل چند مرحله ساده برای امن‌تر کردن سرور SSH را در این مطلب مطرح می‌کنیم که می تواند خطر را به طرز چشمگیری کاهش دهد.sshپیش نیازهادر این مطلب فرض بر این است که شما قبلاً سرور RHEL / CentOS  را نصب و راه اندازی کرده اید.۱. غیرفعال کردن Root Loginsاستفاده از کاربر root برای ورود به سیستم از طریق SSH توصیه نمی شود. بهترین روش استفاده از کاربر عادی برای ورود به سرور و استفاده از دستور sudo برای انجام وظیفه ای است که به root نیاز دارد. برای غیرفعال کردن ورود کاربر root به سیستم از طریق SSH ، پرونده etc/ssh/sshd_config را به شکل زیر تغییر دهید و سرویس SSH را مجدداً راه اندازی کنید.#vim /etc/ssh/sshd_config
PermitRootLogin no
#systemctl restart sshd۲. ورود کاربران به سیستم را محدود کنیدبطور پیش فرض، کلیه کاربران معتبر در سیستم قادر به دسترسی به سرور هستند. به دلایل امنیتی، ما باید این دسترسی را فقط برای کاربرانی که نیاز به دسترسی SSH دارند محدود کنیم. پارامتر AllowUsers و به دنبال آن یک لیست جداگانه از نام کاربری ها را به پرونده etc/ssh/sshd_config اضافه کنید. در مثال زیر ، فقط دو کاربر &quot;nix&quot; و &quot;jamshid&quot; وجود دارند که می توانند از طریق SSH به سرور وصل شوند.$sudo vim /etc/ssh/sshd_config
AllowUsers  nix jamshid
$sudo systemctl restart sshd۳. پروتکل 1 را غیرفعال کنیداستفاده از پروتکل 1 SSH از امنیت کمتری برخوردار است. ما باید آن را غیرفعال کنیم و همیشه از پروتکل 2 استفاده کنیم. پرونده etc/ssh/sshd_config را ویرایش کرده و سرویس SSH را به شرح زیر مجدداً راه اندازی کنید.$sudo vim /etc/ssh/sshd_config
Protocol 2
$sudo systemctl restart sshd۴. پورت پیش فرض را تغییر دهیدپورت 22 درگاه پیش فرض SSH برای اتصالات ورودی است. یک روش مؤثر تغییر درگاه پیش فرض SSH است، با این کار قسمتی از حملات که توسط روبات ها انجام می‌شود را خنثی می‌کنید.$sudo vim /etc/ssh/sshd_config
Port 2223
$sudo systemctl restart sshdاکنون باید SELinux را بررسی کنیم که اجرای دستور زیر، درگاه های sshd که مجاز به گوش دادن هستند را نمایش می‌دهد.$sudo semanage port -l | grep ssh
ssh_port_t                     tcp      22برای اینکه sshd بتواند به درگاه جدید 2223 گوش دهد، باید یک قانون به SELinux اضافه کنیم و سرویس SSH را به شرح زیر محدد راه اندازی کنیم.$sudo semanage port -a -t ssh_port_t -p tcp 2223
$sudo systemctl restart sshd۵. فایروال را پیکرپندی کنیدبرای تقویت امنیت، باید فایروال رو تنظیم نماییم تا دسترسی به پورت تغییر یافته 2223 فقط از طریق آدرسهای IP مجاز محدود شود. پس از تغییرات قوانین فایروال لازم است که فایروال را reload کنید.firewall-cmd --permanent --zone=public --add-rich-rule=&#039;
  rule family=&amp;quotipv4&amp;quot
  source address=&amp;quot1.2.3.4/32&amp;quot
  port protocol=&amp;quottcp&amp;quot port=&amp;quot2223&amp;quot accept&#039;firewall-cmd --reload۶. فاصله زمانی اتصال را محدود کنیداگر دوره اتمام اتصال SSH در سرور تنظیم نشده باشد، یک خطر امنیتی است. در بسیاری موارد، افراد بدون قفل کردن رایانه خود آن را ترک می‌کنند و SSH هنوز به سرور متصل است. بنابراین، این می تواند مشکل ساز شود. پرونده etc/ssh/sshd_config را ویرایش کنید و مدت زمان را بر حسب ثانیه تغییر دهید.$sudo vim /etc/ssh/sshd_config
 ClientAliveInterval 300
 ClientAliveCountMax 0
 $sudo systemctl restart sshd۷. حداکثر &quot;عدم تأیید اعتبار&quot; را محدود کنیدمحدود کردن حداکثر عدم تأیید هویت با SSH روش خوبی برای متوقف کردن حملات brute-forcing است. اگر کاربر رمز ورود نادرست را N-1 بار از N بار را به اشتباه وارد کند ، اتصال SSH قطع خواهد شد.$sudo vim /etc/ssh/sshd_config
MaxAuthTries 5
$sudo systemctl restart sshd۸. آدرس گوش دادن را محدود کنیدپیکربندی پیش فرض SSH به تمام اینترفیس‌های موجود گوش می دهد. اگر چندین اینترفیس‌ در سرور وجود دارد که با آدرس های مختلف IP پیکربندی شده اند، همیشه بهتر است فقط با استفاده از آدرس IP مدیریت، کاربر را برای ورود به سرور محدود کنید.$sudo vim /etc/ssh/sshd_config
ListenAddress 192.168.10.112
$sudo systemctl restart sshd۹. پشتیبانی از فایل های Rhosts را غیرفعال کنیدفایل rhosts کنترل می‌کند که سرور برای دسترسی SSH به سایر سرورها با یک حساب کاربری خاص به آنها اعتماد دارند. اگر سروری به سرور دیگری اعتماد کند، آنگاه به کاربر مشخص شده امکان دسترسی SSH به سرور های قابل اعتماد را بدون نیاز به وارد کردن رمز عبور می دهد.$sudo vim /etc/ssh/sshd_config
IgnoreRhosts yes
$sudo systemctl restart sshd۱۰. غیرفعال کردن Empty Passwordsدر بعضی موارد ، ممکن است یک حساب کاربری خاص روی سرور رمز عبوری تنظیم نکرده باشد یا دارای رمز خالی باشد. بهتر است همیشه دسترسی این کاربران از طریق SSH به سرور را غیرفعال کنید.$sudo vim /etc/ssh/sshd_config
PermitEmptyPasswords no
$sudo systemctl restart sshd۱۱. تأیید هویت مبتنی بر میزبان را غیرفعال کنیدتأیید هویت مبتنی بر میزبان به میزبان اجازه می دهد از طرف همه یا برخی از کاربران میزبان خاص تأیید هویت کنند. این حسابها می توانند همه حسابهای یک سیستم یا زیرمجموعه مشخص شده باشند. این نوع احراز هویت می تواند برای مدیریت cluster مفید باشد.$sudo vim /etc/ssh/sshd_config
HostbasedAuthentication no
$sudo systemctl restart sshd۱۲. فعال کردن Informational Log Levelخوب است که سرور SSH را پیکربندی کنید تا اطلاعات سطح INFO را ثبت کند. از آنجا که SSH یک نقطه ورود به سرور است، توصیه می شود تا حد امکان log سیستم جمع‌آوری شود، بنابراین در هنگام بروز مشکل، اطلاعات جامعی را داریم.$sudo vim /etc/ssh/sshd_config
LogLevel INFO
$sudo systemctl restart sshd۱۳. کاهش حداکثر تعداد اتصالات همزمانکاهش حداکثر تعداد اتصالات همزمان به Daemon SSH می تواند در مقابل حمله brute-force کمک کننده باشد. تنظیم MaxStartups 4 به سرور ssh می گوید فقط 4 کاربر می توانند همزمان وارد سیستم شوند.$sudo vim /etc/ssh/sshd_config
MaxStartups 4
$sudo systemctl restart sshd۱۴. کاهش Grace Timeهنگامی که ما سعی می کنیم از طریق SSH به یک سرور راه دور وصل شویم، پیکربندی پیش فرض برای ورود به ما 2 دقیقه زمان خواهد داد. اگر کاری را انجام ندهیم یا نتوانیم با موفقیت در مدت 2 دقیقه وارد سیستم شویم، SSH قطع خواهد شد. زمان پیش فرض 2 دقیقه برای موفقیت در ورود به سیستم بسیار زیاد است. آن را به 1 دقیقه کاهش دهید.$sudo vim /etc/ssh/sshd_config
LoginGraceTime 1m
$sudo systemctl restart sshd۱۵.غیرفعال کردن رمزعبور SSHتا زمانی که از رمزهای عبور قوی استفاده می کنید ، لازم نیست که ورود با استفاده از رمز را برای سرور خود غیرفعال کنید. با این حال ، اگر دوست دارید می توانید آن را غیرفعال کنید و از کلید SSH برای ورود به سرور خود استفاده کنید.$sudo vim /etc/ssh/sshd_config
PasswordAuthentication no
$sudo systemctl restart sshdاگر با کلید های SSH آشنایی ندارید، میتوانید مطلب &quot;احراز هویت مبتنی بر SSH key در لینوکس&quot; را دنبال نمایید.نتیجه گیریدر این مطلب، تکنیک های که برای ایمن سازی سرور SSH لازم بود مطرح شد. این پست تقریباً تمام کارهایی را که اکثر کاربران برای hardening سرور SSH انجام می دهند را شامل می شود. اگر سؤال یا پیشنهادی دارید، مواردی وجود دارد که می‌توان به این مطلب اضافه نمود را می توانید در قسمت نظرات بگذارید.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sun, 19 Jul 2020 15:00:52 +0430</pubDate>
            </item>
                    <item>
                <title>نصب و پیکربندی Grafana برای ترسیم نمودارهای زیبا از Zabbix</title>
                <link>https://virgool.io/@niiiixd/configuring-grafana-with-zabbix-dnqzqrcelyft</link>
                <description>Configuring Grafana with Zabbixمقدمهنرم افزار Zabbix یک ابزار مانیتورینگ عالی است که داده ها را از سرورها، ماشین های مجازی و سایر دستگاه های شبکه جمع آوری می کند، بنابراین می توانید از آن برای بررسی روند یا آنالیز مشکلات استفاده کنید. شما می توانید نمودارها را در داشبورد ترکیب کنید، اما ابتدا باید آنها را بسازید و برای ایجاد نمودارها کار ساده ای نخواهید داشت.گرافانا جایگزین خوبی برای داشبورد Zabbix است. این امکان را به شما می دهد تا نمودارها و داشبورد را بر اساس داده های سیستم های مختلف ایجاد کنید.در این آموزش، Grafana را نصب کرده و آن را پیکربندی می کنید تا داده های Zabbix را نمایش دهد.پیش نیازهاسرور CentOS با کاربر sudo که Zabbix روی آن نصب شده است.آگر Zabbix  را نصب ندارید،  آموزش نصب Zabbix را دنبال کنید.نحوه نصب Zabbix در CentOS 8مرحله اول: نصب Grafanaبصورت پیش فرض Grafana از طریق مدیر بسته در دسترس نیست، بنابراین ما مخزن را تنظیم می کنیم. ابتدا یک فایل مخزن جدید برای Grafana ایجاد کنید:sudo vim /etc/yum.repos.d/grafana.repoپیکربندی زیر را وارد کنید :[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crtمتن را ذخیره کرده و از آن خارج شوید و دستور زیر را برای نصب Grafana اجرا کنید:sudo yum install grafanaدر طی مراحل نصب از شما خواسته می شود تا یک کلید GPG را وارد کنید. تأیید کنید که مایلید این کلید را وارد کنید تا نصب ادامه یابد.پس از اتمام نصب ، سرویس Grafana را start کنید:sudo systemctl daemon-reload
sudo systemctl start grafana-serverسپس بررسی کنید که آیا سرویس Grafana به درستی اجرا شده است:sudo systemctl status grafana-serverوضعیت زیر را مشاهده خواهید کرد:Output
● grafana-server.service - Starts and stops a single grafana instance on this system
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2016-11-07 06:18:27 UTC; 1 day 4h ago
     Docs: http://docs.grafana.org
 Main PID: 16639 (grafana-server)
  ...در آخر:sudo systemctl enable  grafana-serverمرحله دوم: نصب افزونه Zabbix برای Grafanaبا نصب افزونه ها می توانید عملکرد Grafana را گسترش دهید. می توانید افزونه های موجود را از اینجا بررسی کنید.ما از افزونه Zabbix app استفاده می کنیم، که شامل Zabbix data source و triggers panel به همراه یک داشبورد و یک الگوی برای مشاهده داده ها است.ساده ترین راه برای نصب افزونه ها استفاده از ابزار grafana-cli است که همراه با Grafana نصب شده است. برای نصب افزونه Zabbix App دستور زیر را اجرا کنید:sudo grafana-cli plugins install alexanderzobnin-zabbix-appخروجی زیر را مشاهده خواهید کرد که نشان می دهد افزونه نصب شده است:Output
✔ Installed alexanderzobnin-zabbix-app successfullyهر وقت پلاگین ها را تغییر دهید، باید تغییرات لازم را اعمال کنید.sudo systemctl restart grafana-serverبا نصب افزونه، می توانید به Grafana وارد شوید و پیکربندی کنید تا به Zabbix وصل شود.مرحله سوم: پیکربندی پلاگین Zabbixبه آدرس http: // your_zabbix_server_ip_address: 3000 بروید و به رابط وب Grafana وارد شوید.توجه: Grafana اتصالات ورودی را روی پورت 3000 گوش می دهد. اگر فایروال دارید، باید این پورت را باز کنید.نام کاربری و رمزعبور پیش فرض ورود به سیستم admin/admin است. می توانید پس از ورود به سیستم ، رمز ورود خود را در صفحه پروفایل تغییر دهید.Configuring Grafana with ZabbixConfiguring Grafana with Zabbixمطابق شکل زیر به قسمت Plugins بروید، سپس در قسمت جست‌وجو Zabbix را جست و جو نمایید و آن را Enable نمایید.Configuring Grafana with ZabbixConfiguring Grafana with ZabbixConfiguring Grafana with Zabbixاکنون می توانید یک منبع داده جدید اضافه کنید. دوباره به قسمت Configuration و Data Source بروید. سپس بر روی دکمه افزودنData Sources کلیک کنید. صفحه پیکربندی را مشاهده خواهید کرد:Configuring Grafana with ZabbixConfiguring Grafana with Zabbixمنبع داده را به شرح زیر پیکربندی کنید: یک نام برای این منبع داده جدید در قسمت Name وارد کنید.گزینه پیش فرض را انتخاب کنید تا این منبع داده در پنل های جدیدی که ایجاد می کنید از پیش انتخاب شود. قسمت Url را با مسیری کامل به API Zabbix پر کنید که http: //your_zabbix_server_ip_address/zabbix/api_jsonrpc.php خواهد بود.قسمت های نام کاربری و رمز عبور را با نام کاربری و رمزعبور برای Zabbix وارد کنید. نام کاربری پیش فرض Admin و رمزعبور پیش فرض zabbix است. (به حروف بزرگ و کوچک دقت کنید)گزینه Trends را فعال کنید؛ این عملکرد Grafana را هنگام نمایش دوره های طولانی بهبود می دهد.می توانید گزینه های دیگر را در مقادیر پیش فرض آنها بگذارید.برای تست و ذخیره پیکربندی ، روی دکمه Add کلیک کنید. یک پیام موفقیت آمیز خواهید دید.اگر این پیام را ندیدید، نام کاربری و رمزعبور خود را بررسی کنید و دوباره تست کنید.بیایید به داشبورد Zabbix که با این افزونه آمده است نگاهی بیندازیم. به قسمت داشبورد بروید و Zabbix Server Dashboard را انتخاب کنید.Configuring Grafana with Zabbixاین داشبورد اطلاعات خوبی را نمایش می‌دهد ، اما می توانید داشبورد دلخواه خود را ایجاد کنید.  می توانید داشبورد‌های موجود را از اینجا بررسی کنید.در این آموزش یاد گرفتید که چگونه Grafana را نصب و پیکربندی کنید. Grafana امکان داشبورد سفارشی را با پنل‌های مختلف به شما می‌دهد. هر پنل روی داشبورد می تواند داده ها را از یک سرور نمایش دهد و شما می توانید از Grafana برای فیلتر کردن داده ها استفاده کنید. توصیف همه ویژگی های Grafana در یک آموزش دشوار است، بنابراین داشبورد زیبا خود را بسازید، پیکر بندی کنید و لذت ببرید.اگر این مطلب را دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید.  باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک  بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sun, 12 Jul 2020 10:12:02 +0430</pubDate>
            </item>
                    <item>
                <title>نحوه نصب Zabbix در CentOS 8</title>
                <link>https://virgool.io/sadeghkhademi/%D9%86%D8%B5%D8%A8-zabbix-%D8%AF%D8%B1-centos-8-bfl9njlnkp8c</link>
                <description>zabbixمانیتورینگ Zabbix یک ابزار نظارتی Open Source برای خدمات شبکه، سخت افزار شبکه، سرورها، برنامه‌ها و سرویس هاست که برای ردیابی و نظارت بر وضعیت سیستم و سرورها طراحی شده است. Zabbix برای ذخیره داده ها از بسیاری از سیستم های پایگاه داده از جمله MySQL ، PostgreSQL ، SQLite و IBM DB2 پشتیبانی می کند. backend زبیکس به زبان C نوشته شده است ، و frontend به زبان PHP نوشته شده است.در این آموزش گام به گام نصب و پیکربندی Zabbix 4.0 LTS در  CentOS 8 را به شما نشان خواهیم داد. این راهنما مباحثی از جمله نصب و پیکربندی LAMP Stack را برای نصب Zabbix و نحوه تغییر رمز پیش فرض برای مدیر UI وب ، پوشش می دهد.پیش نیازهاسرور CentOS 8دسترسی rootدانش پایه ای در مورد دستورات لینوکس CentOSمرحله اول: نصب Apacheبرای این راهنما، ما قصد داریم Apache / httpd را برای سرور وب خود استفاده کنیم که با استفاده از دستور dnf می توانید بسته Apache / httpd را نصب کنید.dnf install httpdپس از اتمام نصب، دستورات زیر را وارد کنید. systemctl enable httpd
 systemctl start httpdاکنون سرویس httpd را با استفاده از دستور netstat بررسی کنید و مطمئن شوید که پورت HTTP &#x27;80&#x27; در حالت &quot;LISTEN&quot; قرار دارد.netstat -plntuدر نتیجه، سرویس httpd روی پورت پیش فرض HTTP &#x27;80&#x27; روی سرور CentOS 8 کار می کند.مرحله دوم: نصب PHPبعد از نصب وب سرور Apache / httpd ، قصد داریم بسته های PHP و افزونه های لازم برای نصب Zabbix را نصب کنیم. بسته های PHP را با استفاده از دستور زیر نصب کنید.dnf install php-cli php-common php-devel php-pear php-gd php-mbstring php-mysqlnd php-xml php-bcmathپس از اتمام نصب، پیکربندی PHP را با استفاده از ویرایش سند etc/php.ini تنظیم کنید.vim /etc/php.iniمقادیر پیکربندی را مطابق شکل زیر تغییر دهید.date.timezone = Asia/Tehran
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16Mفایل را ذخیره کنید و خارج شوید.اکنون سرویس Apache / httpd را مجدداً راه اندازی کنید.systemctl restart httpdنصب و پیکربندی PHP در سرور CentOS 8 به پایان رسیده است.مرحله سوم: نصب و پیکربندی MariaDBبه طور پیش فرض، Zabbix  بسیاری از پایگاههای داده از جمله MySQL ، PostgreSQL ، SQLite و Oracle را پشتیبانی می کند. برای این راهنما از MariaDB به عنوان پایگاه داده برای نصب Zabbix استفاده خواهیم کرد.سرور mariadb را با استفاده از دستور dnf نصب کنید.dnf install mariadb-serverپس از اتمام نصب، دستورات زیر را وارد کنید.systemctl enable mariadb
systemctl start mariadbدر مرحله بعد می خواهیم کلمه عبور root را پیکربندی کنیم. دستور &quot;mysql_secure_installation&quot; را برای پیکربندی رمز عبور اجرا کنید.mysql_secure_installationرمزعبور کاربر root دیتابیس را تایپ کرده و Enter را بزنید.Set a root password? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Yدر مرحله بعد، قصد داریم برای نصب Zabbix یک پایگاه داده و کاربر جدید با نام &#x27;zabbix&#x27; با گذرواژه &#x27;ZquJuwC9rNmv9fTu&#x27; ایجاد کنیم.با استفاده از دستور mysql در زیر وارد پوسته MariaDB / mysql شوید.mysql -u root -p
TYPE YOUR ROOT PASSWORD:و دستورات زیر را در زیر پوسته MariaDB اجرا کنید.create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@&#039;localhost&#039; identified by &#039;ZquJuwC9rNmv9fTu&#039;; 
grant all privileges on zabbix.* to zabbix@&#039;%&#039; identified by &#039;ZquJuwC9rNmv9fTu&#039;; 
flush privileges;و در نتیجه ، بانک اطلاعاتی جدید و کاربر برای نصب Zabbix ایجاد شده است.مرحله چهارم: نصب Zabbix 4.0 LTS در این مرحله قصد داریم Zabbix 4.0 LTS را نصب کنیم. نسخه Zabbix LTS را از مخزن رسمی Zabbix نصب خواهیم کرد.در مرحله اول باید با استفاده از دستور rpm در زیر مخزن Zabbix 4.0 LTS را به سیستم اضافه کنیم.rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpmdnf clean all
dnf repolistمخزن Zabbix به سیستم CentOS 8 اضافه شده است.حالا دستور dnf را در زیر اجرا کنید تا Zabbix Server و Agent را نصب کنید.dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-agentصبر کنید تا نصب Zabbix تمام شود.به آدرس &#x27;usr/share/doc/zabbix-server-mysql&#x27; بروید و دستور زیر را اجرا نمایید.cd /usr/share/doc/zabbix-server-mysql
gunzip create.sql.gzاکنون با استفاده از دستور MySQL ، پایگاه داده را به پایگاه داده &quot;zabbix&quot; وارد کنید.mysql -u root -p zabbix &lt; create.sqlپیکربندی سرور Zabbix و Zabbix-agentسرور Zabbix فرایند اصلی سیستم نرم افزاری Zabbix است. ما zabbix-server را با ویرایش فایل &#x27;/etc/zabbix/zabbix_server.conf&#x27; پیکربندی می کنیم.با استفاده از ویرایشگر vim پرونده پیکربندی &#x27;etc/zabbix/zabbix_server.conf&#x27; را ویرایش کنید.vim /etc/zabbix/zabbix_server.confدر فایل پیکربندی مقادیر زیر را تغییر دهید:DBHost=localhost
DBPassword=ZquJuwC9rNmv9fTuفایل را ذخیره کنید و خارج شوید.پس از آن سرور zabbix را به بوت سیستم اضافه کنید.systemctl enable zabbix-serverپیکربندی سرور zabbix به پایان رسید.پیکربندی zabbix-agent باید zabbix-agent بر روی کلیه دستگاههایی که مورد نظارت قرار می گیرند نصب شود.پیکربندی zabbix-agent را با استفاده از ویرایش فایل etc/zabbix/zabbix_agentd.conf انجام می‌دهید.vim /etc/zabbix/zabbix_agentd.confاکنون مقدار &quot;Server&quot; و &quot;ServerActive&quot; را با آدرس IP server-zabbix مانند آدرس زیر تغییر دهید.Server=185.235.40.82
ServerActive=185.235.40.82فایل را ذخیره کنید و خارج شوید.اکنون سرویس zabbix-agent را به بوت سیستم اضافه کنید.systemctl enable zabbix-agentپیکربندی zabbix-agent به پایان رسید.مرحله پنجم: پیکربندی Firewalldبرای پیکربندی فایروال، ما می خواهیم سرویس‌های جدیدی از جمله HTTP ، HTTPS و پورت مورد استفاد zabbix-server و zabbix-agent را اضافه کنیم.درگاههای HTTP ، HTTPS و پورت های &#x27;10050-10051&#x27; را با استفاده از دستورات زیر به firewalld اضافه کنید.firewall-cmd --add-service={http,https} --permanent
firewall-cmd --add-port={10051/tcp,10050/tcp} --permanentپس از آن ، فایروال را مجدد بارگذاری کنید و کلیه سرویس‌ و پورت های موجود را روی آن بررسی کنید.firewall-cmd --reload
firewall-cmd --list-allدر نتیجه ، HTTP ، HTTPS و Zabbix Ports &#x27;10050-10051&#x27; به فایروال اضافه شده است.مرحله ششم: پیکربندی SELinuxاگر Zabbix را در CentOS 8 با SELinux که روی آن فعال است اجرا می کنید، باید تمام دستورات این بخش را انجام دهید. اگر SELinux را غیرفعال کرده اید، این مرحله را انجام ندهید.برنامه های SELinux را با استفاده از دستور dnf در زیر نصب کنید.dnf install policycoreutils checkpolicy setroubleshoot-serverپس از اتمام نصب، یک دایرکتوری جدید به نام &#x27;&#x27; zabbix-selinux &quot; ایجاد کنید و به داخل آن بروید.mkdir -p ~/zabbix-selinux
cd ~/zabbix-selinux/اکنون با استفاده از ویرایشگر vim یک فایل جدید با نام &#x27;zabbix_server_add.te&#x27; ایجاد کنید.vim zabbix_server_add.teمقادیر زیر را در فایل paste نمایید:module zabbix_server_add 1.1;
require {
        type zabbix_var_run_t;
        type tmp_t;
        type zabbix_t;
        class sock_file { create unlink write };
        class unix_stream_socket connectto;
        class process setrlimit;
        class capability dac_override;
}
#============= zabbix_t ==============
#!!!! This avc is allowed in the current policyallow zabbix_t self:process setrlimit;
#!!!! This avc is allowed in the current policy
allow zabbix_t self:unix_stream_socket connectto;
#!!!! This avc is allowed in the current policy
allow zabbix_t tmp_t:sock_file { create unlink write };
#!!!! This avc is allowed in the current policy
allow zabbix_t zabbix_var_run_t:sock_file { create unlink write };
#!!!! This avc is allowed in the current policy
allow zabbix_t self:capability dac_override;فایل را ذخیره کنید و خارج شوید.اکنون با استفاده از دستور checkmodule فایل &quot;zabbix_server_add.te&quot; را به ماژول پالیسی تبدیل کنید.checkmodule -M -m -o zabbix_server_add.mod zabbix_server_add.teفایل را ذخیره کنید و خارج شوید.اکنون ماژول پالیسی &#x27;zabbix_server_add.mod&#x27; را با استفاده از دستور semodule_package کامپایل کنید.semodule_package -m zabbix_server_add.mod -o zabbix_server_add.ppسپس ماژول پالیسی کامپایل شده &#x27;zabbix_server_add.pp&#x27; را روی سیستم بارگذاری کنید.semodule -i zabbix_server_add.ppسپس دستور setbool را اجرا کنید.setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_connect_zabbix 1
setsebool zabbix_can_network onپیکربندی SELinux برای Zabbix به پایان رسید.مرحله هفتم: تنظیم اولیه Zabbixابتدا سرور zabbix را با استفاده از دستورات زیر راه اندازی کنید.systemctl start zabbix-server
systemctl status zabbix-serverاکنون سرویس zabbix-agent را راه اندازی کنید.systemctl start zabbix-agent
systemctl status zabbix-agentو سپس سرویس httpd را مجدداً راه اندازی کنید.systemctl restart httpdدر مرحله بعد مرورگر وب خود را باز کرده و آدرس IP سرور را به شرح زیر تایپ کنید.http://185.235.40.82/zabbix/و پیام خوش آمد گویی را از Zabbix دریافت خواهید کرد.zabbix 4.0zabbix 4.0zabbix 4.0zabbix 4.0zabbix 4.0خب نصب zabbix به اتمام رسید.مرحله هشتم: ورود به پنل کاربری zabbixاز نام کاربری و رمزعبور پیش‌فرض Zabbix برای ورود به پنل کاربری زبیکس به آدرس http://server_ip_or_name/zabbix استفاده کنید:نام کاربری: Adminرمز عبور: zabbixاگر این مطلب را دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Tue, 07 Jul 2020 15:50:43 +0430</pubDate>
            </item>
                    <item>
                <title>دواپس؛ ارائه نرم‌افزار، با دغدغه و مسئولیت‌پذیری مشترک</title>
                <link>https://virgool.io/sadeghkhademi/%D8%AF%D9%88%D8%A7%D9%BE%D8%B3-%D8%A7%D8%B1%D8%A7%D8%A6%D9%87-%D9%86%D8%B1%D9%85%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%AF%D8%BA%D8%AF%D8%BA%D9%87-%D9%88-%D9%85%D8%B3%D8%A6%D9%88%D9%84%DB%8C%D8%AA%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C-%D9%85%D8%B4%D8%AA%D8%B1%DA%A9-nm9zdengut3e</link>
                <description>DevOpsمقدمهدواپس تلاش می‌کند توسعه (Development) و عملیات (Operations) را با یکدیگر ترکیب کند که با این کار مسئولیت تولید، پیاده‌سازی و کسب درآمد از بخش مرتبط به مشتری نرم‌افزار، بر عهده یک گروه خواهد بود. به عبارتی، مهندس دواپس فردی است که چرخه‌ی توسعه‌ی نرم‌افزار را می‌فهمد و با کمک ابزارها و فرآیندهای مهندسی نرم‌افزار، سعی می‌کند چالش‌های عملیاتی تکراری را برطرف کند.همکاریدواپس محیطی را فراهم می کند که تیم های مختلف برای دستیابی به اهداف مشترک سازمانی با یکدیگر همکاری کنند. شرکت های بزرگ می توانند از ابزارهای مختلفی برای انجام این کار استفاده کنند. دواپس با تفکیک در بین تیم های Dev / Ops / QA همکاری را تسهیل می کند و آنها را ترغیب می کند تا در جهت دستیابی به یک هدف واحد همکاری کنند: ایجاد ارزش بیشتر برای سازمان ، که در نهایت به ارائه ارزش بیشتر به مشتریان کمک می کند.مطمئن باشید همکاری مشترک سختی های کار خود را دارد. افراد فقط به این مسئله اهمیت نمی دهند که تیم آنها چگونه می تواند وظایف خود را به نحو احسن انجام دهد، بخاطر اینکه همه افراد پاسخگوی محصول نهایی هستند. این افراد بخش های مختلف را تشویق می کنند تا با هم زمینه های پیشرفت یک محصول را بر اساس workflow محصول ایجاد کنند. یک فرایند برد-برد برای کسب و کار و کارمندان سازمان است.سرعتیکی از مزایای ذاتی دواپس این است كه سرعت عملكرد كسب و كار را تسریع می کند.هر چه سریعتر نرم افزار را منتشر کنید، سریعتر می توانید ارزش تجاری ویژگی های جدید محصول را تجربه کنید. آزمایش یک محصول جدید زمان زیادی را صرف می کند. دواپس از طریق نرم افزار های تست خودکار و ادغام خودکار به این فرایند ها سرعت می بخشد.دواپس به توسعه دهندگان کمک می کند تا تمرکز خود را در تمام چرخه بروزرسانی ها و رفع اشکالات محصول حفظ نمایند. با این کار زمان نظارت، تعیین و رفع اشکالات کاهش می یابد و این باعث تسریع توسعه می‌شود. همچنین می توانید در دواپس از Value Stream Mapping استفاده کنید که به شما کمک می کند تا bottleneck ها و فرآیندهای غیر ضروری را شناسایی و برای رفع آن در سریعترین زمان ممکن اقدام کنید.نوآوریبرای بیشتر افراد، دواپس فقط ممکن است به معنای سریعتر انجام دادن کارها با کاهش هزینه باشد. اما، یک مزیت بالینی دیگری دارد که غالباً نادیده گرفته می شود - نوآوری در تجارت. اغلب اوقات نوآوری با تغییر یک فرآیند یا سیستم موجود، ساختن مراحل جدید یا معرفی جایگزین بهتری برای یک فرایند قدیمی انجام می شود. اغلب اوقات نوآوری با ساختن مراحل جدید یا معرفی جایگزین بهتری برای یک فرایند قدیمی انجام می شود.دواپس کلید باز کردن قفل نوآوری در توسعه نرم افزار را دارد. دواپس به شما امکان می دهد محصولات نرم افزاری خود را به سرعت ارائه کنید. تحویل سریع نرم افزار، وقت و فکر برنامه نویسان را آزاد می کند، بنابراین می توانند آن را صرف آزمایش ویژگی جدید یا بهبود اثربخشی موارد موجود کنند.نوآوری به طور معمول ناشی از دیدگاه های مختلف و تفسیر ایده های مختلف از یکدیگر است. دواپس چنین محیطی را ایجاد می کند که برنامه نویسان به مجموعه ای از دستورالعمل های انعطاف پذیر محدود نمی شوند. این بدان معنی است که دامنه هر پروژه معین تا زمانی که نتایج نهایی برآورده شود ، همیشه برای نوآوری باز است. به عنوان مثال ، ایده ای که یکی از کارمندان برای یک برنامه کاربردی توسعه می دهد ممکن است با آن محصول خاص امکان پذیر نباشد ، اما با یک برنامه دیگر کار بزرگی انجام دهد. محصول جانبی این کار مشترک ، ایده پردازی و آزمایش سریع است که دواپس به نوآوری تبدیل می کند.رضایت مشتریرضایت مشتری یکی از مواردی است که می تواند باعث ایجاد یا خراب کردن تجارت شما شود. پیشرفت کسب و کار بسیار مهم است زیرا جذب مشتریان جدید چند برابر گران تر از نگه داشتن مشتریان موجود از طریق افزایش رضایت مشتری است. خوشبختانه یکی از مهمترین مزایای دواپس، افزایش رضایت مشتری است.بازخورد یکی از مؤلفه های مهم دواپس است. در بیشتر موارد توسعه نرم افزار سازمانی، بازخورد کاربران نهایی (به طور معمول مشتریان ) امکان پیشرفت ساخت برنامه در مراحل مختلف را می دهد و تغییرات مورد نظر را پیشنهاد می‌دهد. بازخورد به طور کلی پویاست و  مشتریان شما از اینکه در انتظار محصولات شما باشند متنفرند و هر چه مدت بیشتر منتظر بمانند ، تأثیر منفی ناشی از آن بدتر خواهد شد. همانطور که در ابتدا گفته شد ، دواپس تحویل نرم افزار را تسریع می کند، این امر به طور مستقیم تاثیر مثبتی بر رضایت مشتری خواهد گذاشت. همچنین از آنجا که دواپس جنبه های مختلف گردش کار را ساده تر می کند، می توانید محصولات خود را با هزینه کمتری در مقایسه با رقیبی که دواپس انجام نمی دهد ، ارائه دهید.چابکیچابکی قابلیت های پیشرفته مختلفی را در بر می گیرد. دواپس تمام جنبه هایی را که عموماً به عنوان زیر مجموعه های چابکی در نظر گرفته می شوند را نشان می دهد، بنابراین تجارتها را قادر می سازد که چابک تر باشند. همچنین امکان مدیریت ویژگی ها و شرایط مورد نیاز برای چندین برنامه کاربردی که در سیستم عامل های مختلف در حال اجرا هستند را ممکن می سازد. علاوه بر این، دواپس نحوه عملکرد  مدیریت تغییر را بهبود می بخشد.اما هنگام استفاده از ابزارهای مختلف در بین تیم ها با چالش هایی روبرو خواهید شد که دواپس می تواند به شما کمک کند تا این چالش ها را حل کنید.کیفیت و قابلیت اطمینانکیفیت نرم افزار به دلایل واضحی مهم است و دواپس می تواند به شما در به حداکثر رساندن این کیفیت کمک کند. دواپس نحوه عملکرد سازمانها را برای آزمایش نرم افزارهای سنتی خود تغییر می دهد. این تست یک جزء مهم در Software Development Life Cycle (SDLC) است و مسئولیت آن بر عهده‌ی همه مهندسین درگیر می باشد. می توانید کیفیت نرم افزار را با فهمیدن راه هایی برای Test های موثر جنبه های مختلف نرم افزار تولید شده افزایش دهید.قابلیت اطمینان سرویس یکی دیگر از روشهای مهم دستیابی به روش دواپس است. قابلیت اطمینان به سادگی توانایی یک سیستم برای عملکرد یکپارچه در محدودیت های محیطی خود است. اتخاذ دواپس قابلیت اطمینان سرویس را بهبود می بخشد ، زیرا دسترسی و اتصال سرویس های مورد نیاز برای اجرای صحیح یک تجارت را بهبود می بخشد.امنیتیکی دیگر از مزایایی که یک استراتژی خوب دواپس به ارمغان می آورد ، تقویت امنیت است.مطمئناً، شما باید محصولات خود را با سرعت ارائه کنید تا بتوانید تجارت خود را با موفقیت اداره کنید. اما ، همواره میزان جرایم سایبری رو به افزایش بوده است. بنابراین، چگونه خود را برای مقابله با آن مجهز می کنید؟ اینجاست که DevSecOps می آید و از جنبه امنیتی برنامه های شما مراقبت می کند.اما DevSecOps چی هست؟اجزای اصلی توسعه و عملیات دواپس را گسترش می دهد و امنیت را به عنوان یک جزء جداگانه در pipeline معرفی می کند. اصل DevSecOps این است که همه - و نه فقط تیم های امنیتی - مسئولیت امنیت را بر عهده دارند. DevSecOps به کاهش هزینه کمک می کند. با استفاده از آن ، شما می توانید مسائل امنیتی را در مراحل اولیه توسعه ردیابی و کشف کنید.مزیت رقابتیاین گفته &quot;every business is a software business&quot; در این عصر غیرقابل انکار است و رونق اخیر شرکتهای نرم افزاری این بیانیه را تایید می کند. هر سازمان باید به اندازه کافی توانایی داشته باشد تا اطمینان حاصل کند که موج رقابت نمی تواند آنها را از بین ببرد. اجرای دواپس می تواند برترین مزیت در ارائه این مزیت رقابتی باشد. مهمترین فاکتورهای تمایز که به یک تجارت در رقابت کمک می کند انتشار سریعتر نرم افزار ، ویژگی های با کیفیت بالا ، ادغام بازخورد مداوم است.کاهش هزینه هابه احتمال زیاد، بزرگترین مزیت استراتژی دواپس از دیدگاه کسب و کار، افزایش سودآوری است. جالب است که، روش های مختلفی وجود دارد که از طریق آنها دواپس می تواند هزینه های متحمل شده در یک تجارت را کاهش دهد - مستقیم یا غیرمستقیم.هزینه‌ی خرابی‌هادر دسترس نبودن شبکه می تواند فاجعه بار باشد. شرکت ها برای خرابی شبکه میلیون ها تومان پرداخت می کنند. چه چیزی بدتر از دست دادن پول در یک تجارت است؟ از دست دادن پول و مشتری.امروزه در IT ، نباید به راحتی دچار اختلال مکرر در شبکه شوید. این روزها تعداد ارائه دهنده های خدمات اینترنت متنوعی در دسترس هستند که همزمان میتوان از چند سرویس استفاده کرد.دواپس با آزمایش خودکار و ادغام مداوم (CI) و شیوه های تحویل مداوم (CD) ، می تواند به توسعه دهندگان کمک کند تا کدهای کارآمد تری تولید کنند و همچنین به سرعت اشکالات را شناسایی و رفع کنند. ابزارهای نظارت بر عملکرد برنامه (APM) می توانند دید عمیق را برای همه ذینفعان ارائه دهد، زیرا می توانند تغییرات را بطور مداوم رصد و پیگیری کنند. یکی دیگر از ویژگی های اصلی ابزارهای APM قابلیت ردیابی است که باعث می شود اطلاعات دقیق درباره آنچه در کد شما اتفاق می افتد و چگونگی تأثیر آن بر کاربران نهایی است. زیرساخت های مبتنی بر ابر می توانند در مدیریت زیرساخت های شما بسیار مفید باشند.هزینه های انتشار نرم افزارمدیریت نسخه های نرم افزاری سازمان می تواند پیچیده و گران قیمت باشد - به خصوص وقتی که با تعداد زیادی نسخه همزمان کار می کنید. دواپس با خودکار کردن pipeline انتشار، شما را قادر می سازد سریعتر نرم افزار خود را منتشر کنید. همچنین نیروی انسانی مورد نیاز این فرآیند را کاهش می دهد و هزینه های انتشار نرم افزار را به میزان قابل توجهی کاهش می دهد.دیگر هزینه هاعلاوه بر این ، پذیرش خدمات خرد در محیط دواپس ایده ای عالی است. برنامه های میکروسرویس بر روی کد مدولار ساخته شده اند که بهترین روش دواپس است که منجر به افزایش خاصیت ارتجاعی می شود ، و این باعث می شود که برنامه های شما به بارهای مختلف کار را چگونه پاسخ دهند. این موضوع به شما کمک می کند تا هزینه های زیرساخت خود را به مقدار زیادی کاهش دهید. دواپس همچنین سرعت شما را با استفاده از بازخورد مشتری در تولید سرعت می بخشد.۶ مرحله برای رسیدن به موفقیت۱- برای یک تغییر فرهنگی آماده شویددواپس فرآیندها و ابزارها را با هم ادغام می کند تا یک سازمان را به یک نهاد واحد تبدیل کند. بزرگترین چالش پیش روی دواپس تغییر فرهنگ سازمانی، معرفی و پیاده سازی رویه های جدید است. فرآیند دواپس در شرکتی موفق است که تغییرات از بالاترین سطح مدیریتی شروع و به کارمندان سطح پایین می‌رسد.موثرترین الگو، الگوی تشویقی و پاداش دادن به تیم ها برای ارائه تجربه بهتر مشتری و در عین حال هرگونه خرابی به عنوان ارزان ترین هزینه برای سازمان است.۲ - ایجاد بستر ادغام و تحویل مداوم (CI/CD)در اینجا مسئله اصلی تهیه اطلاعات دقیق و به روز از محیط محصول (production) است که در اختیار توسعه دهندگان قرار میگیرد تا آنها بتوانند برنامه ریزی مناسبی برای deployment داشته باشند.این موضوع تضمین میکند که توسعه دهندگان می توانند روی &quot;build and run&quot; تمرکز کنند که در آن توسعه دهنده ای که یک محصول یا سرویس را تولید میکند مالک آن محصول یا سرویس میباشد.تیم دواپس تمام service life cycle، از الزامات و برنامه ریزی ، استقرار و نگهداری را کنترل خواهد کرد. این تیم با آگاهی عمیق در مورد سیستم عامل و زیرساخت، عیب یابی مشکلات و اشکال زدایی را نیز بر عهده خواهد داشت ( وظایفی که به طور سنتی بر عهده‌ی Operation بود). در اینجا نکته اصلی ایجاد pipeline خودکار deployment است که در آن deployment یک اسکریپت کاملاً خودکار است که در هر محیطی طی چند دقیقه اتفاق می افتد. deployment pipeline باید ادغام مداوم ، توسعه مداوم ، آزمایش مداوم و استقرار مداوم را در یک نهاد واحد ادغام کند. (CI &gt; CD &gt; CT &gt; CD)نحوه عملکرد آن به صورت زیر است:تغییر کد و انتقال آن به یک سیستم کنترل منبع (source control) باعث ایجاد فرآیند ساخت در build server می‌شود.این فرآیند کد را گردآوری می کند و artifacts لازم برای deployment را در بسته های قابل استقرار جمع می کند.سپس تست های خودکار روی این بسته ها انجام می شود تا کیفیت کد حفظ شود و کد مطابق انتظار 	انجام شود.برنامه به یک محیط آزمایش deploy می شود که به عنوان مثال توسط یک تیم کنترل کیفیت قابل بازرسی است.سرانجام، پس از تأیید برنامه، همان نسخه را می توان منتشر کرد.۳ - یک محیط آزمایش مداوم ایجاد کنیدهر چه سریعتر در مورد تغییرات بازخورد دریافت کنید، کیفیت نرم افزار شما بهتر خواهد بود. در فرآیند آبشار سنتی کد کامل، از development به محیط آزمایش منتقل می شود و در صورت گذراندن آزمون با موفقیت به production منتقل می شود. اگر آزمایش موفق نباشد، کد برای ویرایش به توسعه ارسال می شود. این کار زمان بیشتری می برد. با استفاده از دواپس، آزمایش به بخشی جدایی ناپذیر از توسعه تبدیل می شود و پرسنل QA بخشی از عملکرد متقابل تیم دواپس میشوند. آزمایش، چه دستی و چه خودکار ، بطور مداوم در طول delivery pipeline انجام می شود.بهترین روش های آزمایش مداوم شامل موارد زیر است:مراحل تست خودکار را تا حد ممکن انجام دهید (آزمایش دستی در قسمت های خاص مانند آزمایش قابلیت استفاده و آزمایش اکتشافی لازم است).مجموعه‌ی تست های سلسله مراتبی، آسان و سریع (به 	عنوان مثال ، توسعه دهندگان می توانند 	سریعاً unit tests را قبل از commit انجام دهند، در حالی که تست های integration را می توان در build servers اجرا کرد).بررسی لاگ هاتست مکررحتما روش های QA را اضافه کنید۴- ایجاد یک سیستم استقرار مداوماستقرار مداوم، تحویل مداوم را گسترش می دهد. هر build که با موفقیت از یک چرخه کامل آزمایش عبور کند به طور خودکار deploy (استقرار) می شود. این امر نیاز به مداخله انسان را برای تصمیم گیری در مورد deploy و زمان آن از بین می برد.  از آنجا که تایید دستی قبل از deploy کد وجود ندارد ، استقرار مداوم می تواند کمی ترسناک به نظر برسد. وقتی delivery pipeline خوبی طراحی کرده باشید نیازی نیست نگران از دست دادن کنترل روی production شوید.توسعه دهندگان شما باید اطمینان حاصل کنند که کدی که می نویسند به خوبی طراحی شده است و QA باید مجموعه آزمایش هایی را ایجاد کند که همیشه به روز باشد. هنگامی که delivery pipeline شما به درستی طراحی شده باشد ، سیستم بطور خودکار تصمیم می گیرد که چه موقع به مخزن commit شود، چه چیزی و چه موقع برای production و غیره release شود. deployment مداوم باید با نظارت و بازخورد مداوم تقویت شود.۵- استقرار آبی / سبزبرای کاهش خرابی و کاهش خطرات ، سازمانها می توانند آنچه را که به عنوان deployment آبی و سبز شناخته می شود، در نظر بگیرند. در این روش ، هنگامی که تغییر ایجاد شده و deployment جدید (آبی) ایجاد می شود، به موازات روش قدیمی (سبز) deploy می شود. هر دو deployment کنار هم قرار دارند و در ابتدا مقدار کمی از ترافیک به سمت آبی هدایت می شود. در صورت موفقیت آمیز ، بقیه ترافیک به آرامی به محل آبی هدایت می شود و سبز به تدریج از بین می رود. در صورت عدم موفقیت، ترافیک به سبز باز می گردد و رنگ آبی حذف می شود. این امکان را برای شما فراهم می کند که بدون ایجاد خرابی سیستم ، بین محیط های استقرار جابجا شوید.۶- به طور مداوم عملکرد را رصد کنیددر یک محیط خودکار ، نظارت بر عملکرد مهم است و ابزارهای مختلفی برای کمک به آنها وجود دارد. قبل از انتخاب ابزارهای خود ، باید معیارهای کلیدی مورد نظر برای نظارت را شناسایی کنید. با توجه به اینکه صدها سرویس و رویه در سیستم خود خواهید داشت ، نمی توانید همه چیز را رصد کنید. در عوض ، روی پنج مقوله مهم زیر تمرکز کنید:چرخه توسعه Development cycles: 	برای درک این موضوع که pipeline deployment خودکار چگونه است، بررسی کنید که چند بار کد در حال تغییر است، چه ویژگی‌هایی در آن گنجانده شده است، چند اشکال شناسایی شده 	و برطرف می شوند و غیره.استقرار Deployments: زمانی که یک استقرار خودکار انجام نشد، ابزاری را میخواهید که به تیم مشخص شده هشدار دهد. بیشتر سرورهای ادغام پیوسته دارای ویژگی های اعلان هستند که در صورت عدم موفقیت در کار یا ساخت، به کارمندان مشخص شده هشدار می دهند.آسیب پذیری Vulnerabilities: با تغییر کد به سمت production، آسیب پذیری ها باید بطور خودکار کنترل شوند. از آسیب پذیری های شناخته شده یا آسیب پذیری های ناشناخته که نتیجه اقدامات ناامن است، باید یک سیستم برای شناسایی و کاهش آنها داشته باشید.سلامتی سرور Server health: نظارت بر سرور در هر نوع زیرساختی ضروری است. توافقات عملکرد و سطح سرویس (SLA) سیستم به سلامتی سرور بستگی دارد. ابزارهای مختلفی برای انجام این کار وجود دارد. به همین ترتیب ، شما باید نظارت بر زیرساخت ها را نیز انجام دهید.عملکرد برنامه Application performance: برای شناسایی موارد کلیدی مانند عملکرد برنامه ها، نظارت بر فعالیت های برنامه ابزارهای مختلفی وجود دارد.همچنین اگر می خواهید log مربوط به برنامه را تجزیه و تحلیل کنید ابزارهای Log monitoring مقادیر زیادی از داده ها را از منابع مختلف جمع آوری کرده و آنها را در یک پایگاه داده متمرکز می کنند. نظارت بر فعالیت کاربر نیز مهم است. با به دست آوردن بینش در مورد استفاده از منابع و الگوهای رفتاری کاربر، می توانید ضمن معرفی ویژگی های جدید یا بهبود عملکرد، زیرساخت ها را مرتب سازی کنید.همچنین باید به انطباق مقررات بپردازید. علاوه بر طراحی و اجرای سیاست های امنیتی قوی ، شما باید سیستمی را نیز برای نظارت بر ممیزی های ناکام یا تنظیمات نادرست امنیتی داشته باشید.اگرچه موفقیت دواپس تا حد زیادی به تغییر اساسی فرهنگ بستگی دارد اما ابزارها هنوز هم مهم هستند. در اینجا لیستی مختصر از برخی از ابزارهایی که بطور معمول در محیط دواپس مورد استفاده قرار می گیرند آورده شده است:Source code repository: Git, CloudForce, TFS, SubversionBuild server: SonarQube, Jenkins, ArtifactoryConfiguration management:	Puppet, Ansible, Salt, ChefTest automation: Selenium, WaterVirtual infrastructure: Amazon Web Services, Microsoft Azure, VMware vCloudاگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sun, 28 Jun 2020 16:45:33 +0430</pubDate>
            </item>
                    <item>
                <title>چرا باید از سیستم کنترل نسخه (Version Control System) استفاده کنیم؟</title>
                <link>https://virgool.io/sadeghkhademi/%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%86%D8%B3%D8%AE%D9%87-version-control-system-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-b1d4suiurwld</link>
                <description>استفاده از سیستم کنترل نسخه برای پروژه های شما مزایای بسیاری دارد. در این مقاله به تفصیل برخی از آنها را توضیح می‌دهیم.کنترل نسخه چیست؟کنترل نسخه (version control) که به عنوان کنترل تجدید نظر (revision control)، کنترل منبع (source control) یا سیستم های مدیریت کد منبع (source code management) نیز معرفی می‌گردند سیستم هایی هستند که وظیفه مدیریت تغییرات در اسناد، برنامه های رایانه ای وب سایت های بزرگ و سایر مجموعه اطلاعات را دارند. تغییرات معمولاً توسط یک شماره یا کدنامه مشخص می شوند، &quot;شماره تجدید نظر&quot; ، &quot;سطح تجدید نظر&quot; یا به سادگی &quot;تجدید نظر&quot; نامیده می شوند. همکاری:بدون وجود VCS ، احتمالاً شما در یک پوشه مشترک (Shared Folder) با هم کار می کنید. توی شرکت فریاد می‌زنید که مشغول کار بر روی پرونده &quot;xyz&quot; هستید و هم تیمی های شما باید دست نگه دارند تا کار شما تمام شود. این سناریو بسیار مستعد خطا است.با داشتن یک VCS ، همه افراد حاضر در این تیم قادر به کار کاملا آزادانه ( در هر پرونده در هر زمان) هستند. VCS این امکان را می دهد که همه تغییرات در یک نسخه مشترک ادغام شود. آخرین نسخه یک پرونده یا کل پروژه در یک مکان مشترک و اصلی به‌نام &quot;سیستم کنترل نسخه&quot; است.ذخیره نسخه ها (به درستی):ذخیره نسخه ای از پروژه پس از ایجاد تغییرات یک عادت اساسی است. اما بدون VCS خیلی سریع خسته کننده و گیج کننده می شود:فقط پرونده های تغییر یافته را ذخیره میکنید یا پروژه کامل را؟ در حالت اول ، شما سخت می توانید پروژه کامل را در یک لحظه مشاهده کنید، در حالت دوم ، داده های غیر ضروری زیادی را روی هارد دیسک خود خواهید داشت.چگونه این نسخه ها را نام گذاری میکنید؟ اگر یک فرد بسیار سازمان یافته هستید ، ممکن است بتوانید به یک طرح نامگذاری واقعاً قابل فهم برسید ( از &quot;me-inc-redesign-2013-11-12-v23&quot; خوشحال هستید). با این حال ، به محض اینکه نسخه های مختلفی ارائه شود، احتمال پیروی از این طرح نامگذاری به شدت کم خواهد شد.اما مهمترین سؤال احتمالاً این یکی است: چگونه می دانید در این نسخه ها دقیقاً چه تفاوتی وجود دارد؟ تعداد معدودی از افراد در واقع وقت لازم را برای بررسی دقیق هر تغییر مهم را دارند و این مورد را در یک پرونده README در پوشه‌ی پروژه درج می کنند.یک سیستم کنترل نسخه مطمئن می شود که تنها یک پروژه وجود دارد. بنابراین ، فقط یک نسخه در دیسک شما وجود دارد که در حال حاضر روی آن کار می کنید. همه موارد دیگر - همه نسخه های قبلی و انواع مختلف - به طور مرتب داخل VCS نگهداری می شوند. هنگامی که به آن احتیاج دارید، می توانید هر نسخه را در هر زمان درخواست کنید و یک کپی از پروژه کامل را در دسترس داشته باشید.بازیابی نسخه های قبلیتوانایی بازیابی نسخه های قدیمی تر یک فایل (یا حتی کل پروژه) به طور مؤثر به معنای یک چیز است: شما می توانید اشتباه کنید! اگر تغییراتی که اخیراً ایجاد کرده اید ، به درد نمیخورد، می توانید با چند کلیک آنها را بی اثر کنید. دانستن این امر هنگام کار روی قسمت‌های مهم یک پروژه، آرامش بیشتری به شما می‌دهد.درک آنچه اتفاق افتاده استهر بار که نسخه جدیدی از پروژه خود را ذخیره می کنید ، VCS از شما می خواهد که توضیحی کوتاه درباره آنچه تغییر یافته ارائه دهید. علاوه بر این (اگر این یک فایل کد/متن است) ، می توانید ببینید که دقیقاً چه چیزی در محتوای پرونده تغییر یافته است. این به شما کمک می کند تا درک کنید چگونه پروژه شما بین نسخه ها تکمیل شده است.پشتیبان گیرییک اثر جانبی استفاده از یک VCS توزیع شده مانند Git این است که می تواند به عنوان پشتیبان عمل کند. هر عضو تیم یک نسخه کامل از پروژه در دیسک خود دارد - از جمله تاریخچه کامل پروژه. اگر سرور مرکزی شما خراب شود (و درایوهای پشتیبان شما خراب شوند) ، تمام آنچه برای بازیابی لازم دارید یکی از مخازن محلی Git شما است.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sun, 28 Jun 2020 14:41:02 +0430</pubDate>
            </item>
                    <item>
                <title>مقدمه‌ای بر اصطلاحات شبکه و پروتکل‌ها</title>
                <link>https://virgool.io/sadeghkhademi/networking-terminology-and-protocols-jieufug8jeme</link>
                <description>معرفیدرک پایه‌ای از شبکه برای هر کسی که با کامپیوتر کار می‌کند مهم است. شبکه نه تنها به دریافت خدمات در اینترنت کمک می‌کند، بلکه به شما بینشی برای تشخیص مشکلات را می‌دهد.در اینجا یک مرور کلی از برخی مفاهیم شبکه‌ای رایج ارائه می‌دهم. ما در مورد اصطلاحات پایه، پروتکل‌های مشترک، و مسئولیت‌ها و ویژگی‌های لایه‌های مختلف شبکه صحبت خواهیم کرد. اصطلاحات شبکه و پروتکل‌هاواژه‌نامه شبکهقبل از شروع بحث درباره شبکه، باید برخی از اصطلاحات رایج را که شما در این راهنما و همچنین در راهنماها و مستندات مربوط به شبکه‌ها مشاهده می‌کنید، تعریف کنیم.*** قبل از هر اصطلاح یک حرف &quot;و&quot; قرار داده‌ام که متن راست‌چین شود ***و Connection : در شبکه، connection به قطعات اطلاعات اشاره دارد که از طریق یک شبکه منتقل می‌شود و به طور کلی نشان می‌دهد که اتصال قبل از انتقال داده ساخته شده است و در پایان انتقال داده‌ها قطع شده است.و Packet : به طور کلی بسته (Packet)، پایه‌ای‌ترین واحدی است که در یک شبکه منتقل می شود. هنگام برقراری ارتباط با یک شبکه، بسته‌ها هستند که اطلاعات شما را از یک نقطه به نقطه‌ی دیگری حمل می کنند.بسته‌ها دارای یک بخش Header هستند که حاوی اطلاعاتی مثل مبدأ و مقصد و ... می‌باشد. بخش اصلی بسته که شامل اطلاعات واقعی است body یا payload نامیده می‌شود.و HOP : قسمتی از یک مسیر (Path) بین مبدأ و مقصد بسته اطلاعاتی است. بسته‌های  اطلاعاتی از طریق روترهای موجود در شبکه بین مبدأ و مقصد بسته پیموده می‌شود. هر بسته اطلاعاتی زمانی که از یک روتر در شبکه عبور میکند یک عمل Hop انجام میشود.و Network Interface : در واقع همان پورت شبکه است که تجهیزات دیجیتالی را به شبکه‌های کامپیوتری متصل می کند. رابط شبکه یا Network Interface می‌تواند سخت‌افزاری یا نرم‌افزاری و مجازی باشد. به عنوان مثال loopback یک رابط مجازی شبکه است.و LAN: به معنای &quot;شبکه محلی&quot; یا Local Area Network است. به شبکه یا بخشی از یک شبکه اشاره دارد که در اینترنت نیست!!! یک شبکه خانگی یا اداری نمونه ای از یک شبکه LAN است.و WAN: &quot;شبکه گسترده &quot; نامیده می شود و به معنای شبکه ای است که بسیار گسترده تر از شبکه LAN است. WAN اصطلاح مناسبی برای توصیف شبکه های بزرگ و پراکنده است.اگر گفته می شود interface به WAN متصل است، عموما فرض می شود که از طریق اینترنت قابل دسترس است اما این فرض لزوماً صحیح نمی‌باشد.با اتصال چندین شبکه LAN به یکدیگر می‌توان یک شبکه LAN بزرگ‌تر یا یک شبکه‌ WAN ایجاد کرد. این موضوع کاملا به ساختار شبکه‌ی ایجاد شده بستگی دارد و لزوماً اتصال چندین شبکه LAN باعث ایجاد شبکه WAN نمی‌شود.شبکه WAN مناسب برای توصیف شبکه‌های بزرگ و پراکنده است و خیلی از مواقع این جمله را خواهید شنید که: &quot;اینترنت یک شبکه WAN است&quot;؛ این جمله کاملا صحیح است اما یک شبکه‌ی WAN اینترنت نیست! یک شبکه‌ی WAN می‌تواند دسترسی به اینترنت نداشته باشد.و Protocol: یک پروتکل مجموعه‌ای از قوانین و استانداردها است که اساسا یک زبان را تعریف می‌کند که دستگاه‌ها می توانند برای برقراری ارتباط استفاده کنند. تعداد زیادی از پروتکل‌ها در شبکه وجود دارد که در لایه‌های مختلف شبکه اجرا می‌شوند.از پروتکل های سطح پایین میتوان TCP، UDP، IP و ICMP را نام برد. برخی از نمونه های آشنا از پروتکل های لایه application که بر اساس پروتکل های سطح پایین ساخته شده اند عبارتند از HTTP، SSH، TLS/SSL و FTP.و Port: پورت یک آدرس در یک دستگاه واحد است که می‌تواند به یک قطعه خاص از نرم افزار متصل شود. این یک رابط فیزیکی نیست، اما اجازه می دهد که کامپیوتر(سرور و ...) شما بتواند با استفاده از آن با بیش از یک برنامه ارتباط برقرار کند.و Firewall: یک فایروال برنامه‌ایست که تصمیم می گیرد چه ترافیکی مجاز است به یک دستگاه (کامپیوتر، سرور و ...) وارد و یا خارج ‌شود. به طور کلی، فایروال‌ها پورت‌هایی را که توسط برنامه خاصی بر روی سرور استفاده نمی شوند، مسدود می کنند.و NAT:  در شبکه های محلی از Private IP استفاده می‌شود و برای شبکه تعداد محدودی  IP معتبر (Public) گرفته می شود و با استفاده از سرویس NAT ارتباط دستگاه‌ها به اینترنت برقرار می شود.NAT تبدیل یک IP به IP دیگر را انجام می‌دهد یا عبارتی Private IP را به Public IP تبدیل می کند. به طور مثال یک شبکه را در نظر بگیرد که دارای 20  کامپیوتر است که می خواهند از اینترنت استفاده کنند با استفاده از سرویس NAT  به جای اینکه برای هر کامپیوتر یک Public IP تهیه شود کلا یک Public IP تهیه  می شود و این دستگاه‌ها  با استفاده از یک Public IP به اینترنت متصل می شوند. با اینکار در مصرف IP  و هزینه صرفه‌جویی می‌شود.و VPN: مخفف virtual private network است. یک شبکه خصوصی مجازی (VPN) برنامه‌ای‌است که یک اتصال امن و رمزگذاری شده را در یک شبکه ناامن مانند اینترنت ایجاد می‌کند. در واقع، پروتکل ها با رمزگذاری داده ها و رمزگشایی آن در مقصد، داده ها را از طریق یک &quot;تونل&quot; ارسال می‌کنند و داده‌هایی که به درستی رمزگذاری نشده‌اند، نمی‌توانند وارد تونل شوند.اصطلاحات بسیاری وجود دارد که ممکن است با آن روبرو شوید. در این مرحله، شما باید برخی از مفاهیم پایه و سطح بالا را درک کنید.لایه های شبکهدر حالی که شبکه، از نظر توپولوژی بین میزبان‌ها (hosts) اغلب به صورت افقی مورد بحث قرار می گیرد، اجرای آن به شکل عمودی در یک کامپیوتر یا شبکه لایه‌بندی می‌شود.این به این معنی است که تکنولوژی‌ها و پروتکل‌های چندگانه‌ای وجود دارد که در بالای یکدیگر ساخته می‌شوند تا ارتباطات به راحتی کار کند. هر لایه متوالی، اطلاعات اولیه‌ی لایه بالاتر را کمی بیشتر می کند و باعث می‌شود که برای برنامه‌ها و کاربران آسان تر باشد.زبان مورد استفاده ما برای صحبت در مورد هر یک از طرح‌های لایه‌بندی، بسته به مدل مورد صحبت متفاوت است. صرف نظر از مدل مورد استفاده برای بحث در مورد لایه‌ها، مسیر داده‌ها یکسان است.ارسال داده از یک دستگاه از بالای پشته شروع می‌شوند و به سمت پایین حرکت می‌کنند. در پایین ترین سطح، انتقال واقعی به ماشین دیگری اتفاق می افتد.هر لایه توانایی اضافه کردن &quot;بسته بندی&quot; خود را در اطراف داده‌های دریافت شده از لایه بالاتر دارد، که به لایه های پایین‌تر برای تصمیم گیری در مورد نحوه انجام کار با این داده ها کمک می‌کند.مدل OSIیک روش صحبت در مورد لایه‌های مختلف ارتباطات شبکه است. OSI مخفف Open Systems Interconnect است.این مدل هفت لایه جداگانه را تعریف می‌کند. لایه‌ها در این مدل عبارتند از:لایه‌ هفتم یا Application: لایه کاربرد، لایه‌ای است که کاربران و برنامه‌های کاربردی با آن ارتباط برقرار می‌کنند. این لایه تنها لایه‌ای است که کاربر می‌تواند آن را بصورت ملموس حس کند و  با آن ارتباط برقرار کند. از نمونه پروتکل‌هایی که در این لایه فعالیت می‌کنند می‌توان به HTTP ، FTP ، TELNET ، SNMP ، POP3 و مشابه آنها اشاره کرد.لایه‌ ششم یا Presentation layer: لایه نمایش ، همانطور که از اسم این لایه پیداست نحوه نمایش اطلاعات را به ما نشان می‌دهد. به عنوان مثال در این لایه تعیین می‌شود که اطلاعات چگونه رمزنگاری یا فشرده‌سازی شوند. از این لایه‌ برای انتقال داده‌های سطح پایین شبکه به اطلاعاتی که برنامه‌ها انتظار دیدن آن را دارند استفاده می‌شود.لایه پنجم یا Session layer: لایه جلسه یک پردازنده اتصال است و ایجاد، نگهداری و از بین بردن ارتباطات بین گره‌ها را انجام میدهد.لایه چهارم یا Transport layer: این لایه یک اتصال منطقی نقطه به نقطه بین دو بین دو دستگاه (مثلا کامپیوتر) ایجاد می‌کند.در این لایه دو روش برای این کار وجود دارد :اتصال‌گرا ( connection-oriented ) : اتصال‌گرا وسیله‌ای برای انتقال داده‌هاست که در آن دستگاه‌های دوسر ارتباط قبل از ارسال هر گونه اطلاعات از یک پروتکل اولیه برای ایجاد یک اتصال (end-to-end) استفاده می‌کنند. سرویس پروتکل اتصال‌گرا یک سرویس &quot;قابل اعتماد&quot; شبکه نامیده می شود، زیرا تضمین می‌دهد که داده‌ها در توالی مناسب وارد می‌شوند. Transmission Control Protocol (TCP) یک پروتکل اتصال‌گرا است.غیر‌ اتصال‌گرا ( connectionless ) : ارتباط بین دو نقطه پایانی شبکه را بیان می‌کند که می‌توان بدون توافق قبلی پیام را از یک نقطه به دیگری ارسال کرد. بدون اینکه ابتدا اطمینان حاصل شود که گیرنده در دسترس است. User Datagram Protocol (UDP) یک پروتکل غیراتصال‌گراست.لایه‌ سوم یا Network : این لایه همان لایه‌ایست که عمل روتینگ یا مسیریابی در آن انجام می‌شود و پروتکل معروف IP در این لایه کار می‌کند. روتینگ را می‌توان با 2 سوالی تصور نمود :برای مقصد داده شده از روتر محلی چند مسیر معتبر وجود دارد ؟&quot;بهترین&quot; مسیر برای رسیدن به آن مقصد کدامیک است ؟لایه دوم یا Data Link : در اين لايه اطلاعات، كشف خطا و  اصلاح و بدون خطا و به صورت مطمئن به سوی مقصد ارسال می شوند. وظيفه‌ی  ديگر اين لايه مطمئن شدن از رسيدن اطلاعات به مقصد است كه اين كار توسط  بيت‌های (Parity check , checksum ,crc ) انجام می‌پذيرد.كه در صورت بروز خطا مجدداً اطلاعات ارسال خواهند شد.لایه اول یا Physical Layer  : همانطور که از نام این لایه پیداست موارد اولیه برای ارسال بسته در این لایه اتفاق می‌افتد در واقع هر Data که بین تجهیزات ارسال می شود به صورت مجموعه‌ای از بیت‌هاست و هیچ مشخصه‌ی دیگری در این مرحله وجود ندارد جز اینکه بیت‌ها ارسال خواهند شد.این لایه در ارتباط مستقیم با سخت افزار بوده و خصوصیت های فیزیکی شبکه مثل اتصالات، کابلها ، کانکتورها و ولتاژها و نرخ انتقال داده را بررسی می‌کند.همانطور که مشاهده می‌کنید ، لایه‌های مختلفی وجود دارد که می توان براساس سخت‌افزار و کارایی که ارائه می دهند، بحث کرد.مدل TCP/IPمدل TCP / IP ، که بیشتر به عنوان پروتکل اینترنت شناخته می شود، یک مدل لایه‌بندی دیگر است که ساده‌تر از مدل OSI است و به صورت گسترده مورد استفاده قرار گرفته است. TCP/IP چهار لایه‌ی جداگانه را تعریف می‌کند ، که برخی از آنها با مدل OSI همپوشانی دارند:لایه‌ Application: بالاترين لايه در پشته TCP/IP است. پروتکل‌های موجود در اين لايه به منظور فرمت‌دهی و مبادله اطلاعات کاربران استفاده می‌گردند. HTTP و FTP دو نمونه از پروتکل‌های موجود در اين لايه هستند.لایه Transport: لايه &quot; حمل &quot; ، قابليت ايجاد نظم و ترتيب و تضمين ارتباط بين کامپيوترها و ارسال داده به لايه Application (لايه بالای خود) و يا لايه اينترنت ( لايه پايين خود) را بر عهده دارد. لايه‌ی فوق، همچنين مشخصه‌ی  منحصر به‌ فرد، از برنامه‌ای که داده را عرضه نموده است، مشخص می‌کند. اين لايه دارای دو پروتکل اساسی است که نحوه توزيع داده را کنتر‌ل می‌نمايند.و TCP)Transmission Control Protocol) مسئول تضمين صحت توزيع اطلاعات است.و UDP)User Datagram Protocol) امکان عرضه سريع اطلاعات، بدون پذيرفتن مسئوليتی در رابطه با تضمين صحت توزيع اطلاعات را برعهده دارد.لايه Internet: لايه &quot;اينترنت&quot;، مسئول آدرس‌دهی، بسته بندی و روتينگ داده‌ها است. لايه‌ی فوق، شامل چهار پروتکل اساسی است:و IP)Internet Protocol) مسئول آدرسی داده‌ها به منظور ارسال به مقصد مورد نظر است.و ARP)Address Resoulation Protocol) مسئول مشخص نمودن آدرس MAC)Media Access Control) آداپتور شبکه بر روی کامپيوتر  مقصد است.و ICMP)Internet Control Message Protocol) مسئول ارائه توابع عيب‌يابی و گزارش خطا در صورت عدم توزيع صحیح اطلاعات است.و IGMP)Internet Group Managemant Protocol) مسئولیت مديريت Multicasting در TCP/IP را بر عهده دارد.لايه Network Access: لايه‌ی &quot; اينترفيس شبکه &quot; ، مسئول استقرار داده بر روی محيط انتقال و  دريافت داده از محيط انتقال است. لايه‌ی فوق، شامل دستگاه‌های فيزيکی نظير کابل شبکه و آداپتورهای شبکه است. لايه &quot; اينترفيس شبکه &quot;، شامل پروتکل‌های مبتنی بر نرم‌افزار مشابه لايه های قبل نیست. پروتکل‌های Ethernet و ATM)Asynchronous Transfer Mode)، نمونه‌هایی از پروتکل‌های موجود در اين لايه هستند. پروتکل‌های فوق، نحوه‌ی ارسال داده در شبکه را مشخص می‌نمايند.همانطور که مشاهده می‌کنید، مدل TCP / IP کمی انتزاعی‌تر و روان‌تر است. این امر باعث می‌شود اجرای آن آسان‌تر شود.Protocolsشبکه با پیکربندی تعدادی از پروتکل‌های مختلف در بالای یکدیگر کار می‌کند. به این ترتیب، می‌توان یک قطعه از داده‌ها را با استفاده از پروتکل های متعدد، که محصور شده در یکدیگرند، منتقل کرد.در اینجا برخی از پروتکل‌های متداول که ممکن است با آنها روبرو شوید را سعی میکنم توضیح دهم.Media Access Control (MAC)پروتکل ارتباطی است که برای تشخیص دستگاه‌های خاص استفاده می‌شود. هر دستگاه در طی فرآیند ساخت، یک آدرس MAC یکتا دریافت می‌کند که آن را از سایر دستگاه‌های موجود در اینترنت متمایز می‌کند. يک عدد دوازده رقمی مبنای شانزده ( نظير : B5-50-04-22-D4-66 ) است. MAC پروتكل لایه Data Link یا Network Access است.IPپروتکل IP یکی از پروتک‌های اساسی است که باعث می‌شود اینترنت کار کند. آدرس‌های IP در هر شبکه یکتا هستند. IP در مدل TCP/IP در لایه اینترنت پیاده‌سازی شده است.شبکه‌ها می‌توانند به هم وصل شوند، اما هنگام عبور از مرزهای شبکه، باید ترافیک هدایت شود. IP دارای دو ورژن مختلف است که متداول ترین ورژن IPv4 است؛ اگرچه IPv4 به سرعت توسط IPv6 در حال جایگزینی است.ICMPبرای ارسال پیام بین دستگاه‌ها به منظور نشان دادن شرایط در دسترس بودن یا خطا استفاده می‌شود. این بسته‌ها در انواع مختلفی از ابزارهای تشخیص مانند ping و traceroute مورد استفاده قرار می‌گیرند. اصولاً از آنها به عنوان مکانیسم بازخورد ارتباطات شبکه‌ای استفاده می‌شود.TCPبرای ایجاد اتصالات قابل اعتماد استفاده می‌شود.TCP یکی از پروتکل‌هایی است که داده‌ها را در بسته‌ها محصور می‌کند، سپس آن‌ها را با استفاده از روش‌های موجود در لایه‌های پایین، به دستگاه راه دور منتقل می‌کند. از طرف دیگر می تواند خطاها را بررسی کند و درخواست کند برخی از قسمت‌ها مجدداً ارسال شوند.این پروتکل قبل از انتقال داده‌ها با استفاده از سیستمی به نام three-way handshake، اتصال ایجاد می‌کند. این راهی است که دو طرف ارتباطات می‌توانند درخواست را بپذیرند. پس از ارسال داده‌ها ، اتصال با استفاده از four-way handshake قطع می‌شود. TCP پروتکل انتخابی‌ بسیاری از برنامه‌های کاربردی محبوب برای اینترنت از جمله WWW  ، SSH و ایمیل است. به راحتی می‌توان گفت اینترنتی که ما امروز می‌شناسیم بدون TCP در اینجا نخواهد بود.UDPتفاوت اساسی UDP و TCP در این است که UDP انتقال داده غیرقابل اعتماد را ارائه می‌دهد و تأیید نمی‌کند که داده در انتهای دیگر اتصال دریافت شده است. این ممکن است بد به نظر برسد و برای بسیاری از اهداف همینطور است. با این حال، برای برخی از کارها بسیار مهم است.از آنجا که نیازی به انتظار برای تأیید دریافت داده‌ها و مجبور به ارسال مجدد داده ها نیست بسیار سریعتر از TCP است.HTTPاین پروتکل در لایه برنامه تعریف شده است که اساس ارتباطات در وب را تشکیل می‌دهد.HTTP تعدادی از توابع را تعریف می‌کند که به سیستم راه دور می‌گویند چه درخواستی دارید. به عنوان مثال ، GET ، POST و DELETE همه با داده‌های درخواست شده به روشی متفاوت تعامل دارند.FTPاین پروتکل نیز در لایه برنامه قرار دارد و راهی را برای انتقال پرونده‌های کامل از یک میزبان به میزبان دیگر فراهم می‌کند.این پروتکل ذاتاً ناامن است، بنابراین برای هیچ شبکه خارجی توصیه نمی‌شود.DNSپروتکل لایه برنامه است که برای تهیه یک مکانیسم نامگذاری برای منابع اینترنتی مورد استفاده قرار می‌گیرد. این همان چیزی است که نام دامنه را با یک آدرس IP پیوند می‌دهد و به شما امکان را می‌دهد به سایت‌هایی با نام در مرورگر خود دسترسی پیدا کنید.SSHپروتکل رمزگذاری شده‌ای است که در لایه برنامه اعمال می‌شود و می تواند برای برقراری ارتباط با یک سرور از راه دور به روشی مطمئن استفاده شود.&quot;پروتکل های دیگر که ما آنها را پوشش نداده ایم کاملاً مهم هستند. با این حال ، هدف این مقاله نگاه کلی به برخی از فن آوری‌های اساسی است که اینترنت و شبکه را ممکن می‌سازند&quot;شما باید با برخی اصطلاحات اساسی شبکه ای آشنا باشید و بتوانید درک کنید چگونه اجزای مختلف قادر به برقراری ارتباط با یکدیگر هستند. این امر به شما در درک سایر مقالات کمک می‌کند.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 07 Sep 2019 13:53:39 +0430</pubDate>
            </item>
                    <item>
                <title>احراز هویت مبتنی بر SSH key در لینوکس</title>
                <link>https://virgool.io/sadeghkhademi/%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2-%D9%87%D9%88%DB%8C%D8%AA-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-ssh-key-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-ucg7is9iscpp</link>
                <description>پروتکل SSH، یا Secure SHel، یک پروتکل رمزگذاری شده است که برای مدیریت و ارتباط با سرورها مورد استفاده قرار می گیرد. کلید SSH چگونه کار می کند؟سرور SSH می تواند کاربران را با استفاده از روش های مختلف تأیید کند. اساسی ترین آنها احراز هویت با استفاده از گذرواژه است که آسانترین روش برای استفاده است، اما امن ترین نیست.اگر چه گذرواژه ها به شیوه ای امن به سرور ارسال می شوند، اما به طور کلی پیچیده یا به اندازه کافی بلند نیستند تا در مقابل حملات مکرر مهاجمان مقاوم باشند. اگر چه روش های دیگری برای اضافه کردن امنیت اضافی (fail2ban، و غیره) وجود دارد، کلیدهای SSH ثابت کردن که یک جایگزین قابل اعتماد و مطمئن هستند.جفت کلید SSH دو کلید رمزنگاری امن است که می تواند برای تأیید هویت یک مشتری به یک سرور SSH مورد استفاده قرار گیرد. هر جفت کلیدی شامل یک کلید عمومی و یک کلید خصوصی است.کلید خصوصی توسط مشتری حفظ می شود و باید کاملا مخفی نگه داشته شود. هرگونه در معرض خطر قرار دادن کلید خصوصی به hacker اجازه می دهد تا به سرورهایی که با کلید عمومی مربوطه پیکربندی شده اند بدون احراز هویت اضافی وارد شوند. میتوان کلید خصوصی را روی دیسک رمزگذاری شده نگهداری کرد.کلید عمومی را می توان بدون هیچ گونه عواقب منفی آزادانه به اشتراک گذاشت. کلید عمومی پیام ها را رمزگذاری میکند بطوری که تنها با کلید خصوصی می توان رمزگشایی کرد. از این ویژگی به عنوان راهی برای اعتبار سنجی با استفاده از جفت کلید استفاده می شود.کلید عمومی در ریموت سروری آپلود می شود که می خواهید با SSH وارد شوید. کلید در یک فایل خاص در حساب کاربری شما به نام authorized_keys ذخیره میشود که در مسیر زیر نگهداری میشود. ~/.ssh/authorized_keysچگونه کلید SSH بسازیم؟گام اول برای پیکربندی SSH key، ایجاد یک جفت کلید SSH بر روی کامپیوتر شما است.برای انجام این کار، می توانیم از یک ابزار ویژه به نام ssh-keygen استفاده کنیم که شامل مجموعه ای از ابزارهای استاندارد OpenSSH می باشد. به طور پیش فرض یک جفت کلید RSA 2048 بیتی ایجاد می کند که برای اکثر موارد استفاده می شود.در کامپیوتر خود، دستور زیر را وارد نمایید: ssh-keygen خروجی دستور شبیه زیر خواهد بود :Generating public/private rsa key pair. Enter file in which to save the key (/username/.ssh/id_rsa):این ابزار به شما این امکان را می دهد که برای کلیدهای تولید شده یک مکان انتخاب کنید. به طور پیش فرض کلید در دایرکتوری ssh. در دایرکتوری home کاربر ذخیره می شود. کلید خصوصی id_rsa نامیده می شود و کلید عمومی مرتبط آن id_rsa.pub نامیده می شود.معمولا بهتر است در محل پیش فرض در این مرحله باقی بمانند. انجام این کار به SSH client این اجازه را می دهد به صورت خودکار هنگام تلاش برای authenticate کلید های SSH را پیدا کند.اگر قبلا یک جفت کلید SSH ایجاد کرده باشید، ممکن است پیامی شبیه به این را ببینید:/home/username/.ssh/id_rsa already exists. 
Overwrite (y/n)?اگر انتخاب کنید کلید را بازنویسی کنید، دیگر نمی توانید با استفاده از کلید قبلی authenticate کنید. هنگام انتخاب Yes بسیار مراقب باشید، این فرآیند غیر قابل برگشت است.بعد، از شما خواسته خواهد شد تا یک کلمه‌عبور برای کلید وارد کنید. این کلمه‌عبور اختیاری است که می تواند برای رمزگذاری فایل کلید خصوصی روی دیسک استفاده شود.Enter passphrase (empty for no passphrase):شاید بدانید SSH-Key چه مزایای را فراهم می کند. برخی از مزایا عبارتند از:کلید خصوصی SSH (بخشی که می تواند توسط کلمه‌عبور محافظت شود)، هرگز در شبکه نمایش داده نمی شود. کلمه‌عبور فقط برای رمزگشایی کلید در کامپیوتر لوکال استفاده می شود. این به این معنی است که brute forcing در برابر کلمه‌عبور امکان پذیر نخواهد بود.کلید خصوصی در یک دایرکتوری محدود قرار دارد. خود کلید نیز باید دارای مجوزهای محدود (خواندن و نوشتن فقط برای مالک باشد). به این معنی دیگر کاربران سیستم نمیتوانند از آن استفاده کنند.هر هکری که بخواهد کلمه‌عبور کلید خصوصی SSH را از بین ببرد، باید به سیستم دسترسی داشته باشد. به این معنی که برای این کار آنها باید قبلا به حساب کاربری شما یا حساب کاربری root دسترسی پیدا کنند. اگر در چنین موقعیتی باشید، کلمه‌عبور می تواند مانع از ورود مهاجم به دیگر سرور های شما شود.از آنجا که کلید خصوصی هرگز در شبکه نیست و از طریق مجوزهای فایل محافظت می شود، این فایل هرگز نباید برای کسی غیر از شما (و کاربر root) در دسترس باشد. کلمه‌عبور به عنوان یک لایه اضافی حفاظت در صورت مواجه شدن با این شرایط عمل می کند.کلمه‌عبور یک افزونه اختیاری است و باید آن را هر بار که از این کلید استفاده می کنید وارد کنید. توصیه می کنیم از کلمه‌عبور استفاده کنید، اما اگر نمی خواهید می توانید به راحتی ENTER را فشار دهید تا این اعلان را کنار بگذارد.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:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key&#039;s randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+شما یک کلید عمومی و خصوصی دارید که می توانید برای authenticate از آن استفاده کنید. گام بعدی این است که کلید عمومی را در سرور خود قرار دهید تا بتوانید از SSH key برای ورود استفاده کنید.چگونه کلید عمومی را در سرور خود کپی کنیم؟روش مورد استفاده شما به ابزارهایی که در دسترس دارید بستگی دارد. روش های زیر نتیجه‌ی یکسان را دارند. ساده ترین و اتوماتیک ترین، روش اول است و روش های بعدی نیاز به مراحل دستی بیشتری دارند.کپی کردن کلید عمومی با استفاده از SSH-Copy-IDساده ترین راه برای کپی کردن کلید عمومی شما به یک سرور موجود، استفاده از یک ابزار به نام ssh-copy-id است. به دلیل سادگی آن، این روش توصیه می شود.ابزار ssh copy-id در بسته های OpenSSH در بسیاری از توزیع ها موجود است، بنابراین شما می توانید آن را در سیستم خود در دسترس داشته باشید. برای کار، شما باید دسترسی SSH مبتنی بر رمز ورود به سرور خود داشته باشید.برای استفاده از این ابزار، دستور زیر را وارد نمایید :  ssh-copy-id username@remote_host ممکن است یک پیام مانند این را ببینید:The authenticity of host &#039;111.111.111.111 (111.111.111.111)&#039; can&#039;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 اسکن می کند که قبلا ایجاد کردیم. هنگامی که کلید را پیدا کند، به شما برای رمز عبور حساب کاربری ریموت پاسخ می دهد:/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
username@111.111.111.111&#039;s password: https://virgool.io/p/ucg7is9iscpp/edit Number of key(s) added: 1Now try logging into the machine, with:   &amp;quotssh &#039;username@111.111.111.111&#039;&amp;quotand check to make sure that only the key(s) you wanted were added.در این مرحله، کلید id_rsa.pub شما به حساب ریموت آپلود شده است. کپی کردن کلید عمومی با استفاده از SSHاگر ssh copy-id در دسترس نیست ولی دسترسی SSH مبتنی بر رمز عبور را بر روی یک حساب کاربری در سرور خود دارید، می توانید کلیدهای خود را با استفاده از SSH آپلود کنید.من از نماد redirect &gt;&gt; برای اضافه کردن محتوا به جای رونویسی آن استفاده خواهیم کرد. دستور کامل مانند این خواهد بود:cat ~/.ssh/id_rsa.pub | ssh username@remote_host &amp;quotmkdir -p ~/.ssh &amp;&amp; touch ~/.ssh/authorized_keys &amp;&amp; chmod 700 ~/.ssh &amp;&amp; chmod 600 ~/.ssh/authorized_keys&amp;quotخروجی شبیه این را خواهید دید: The authenticity of host &#039;111.111.111.111 (111.111.111.111)&#039; can&#039;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 را فشار دهید. بعد از آن از شما میخواهد گذرواژه‌ی حساب کاربری که میخواهید به آن متصل شوید را وارد نمایید: username@111.111.11.111&#039;spassword: پس از ورود با گذرواژه خود، محتوای کلید id_rsa.pub شما به انتهای فایل authorized_keys از حساب کاربری کاربر ریموت کپی می شود.کپی کلید عمومی به صورت دستیاگر شما دسترسی SSH مبتنی بر رمز عبور را در دسترس نداشته باشید، باید فرایند فوق را به صورت دستی انجام دهید.محتوای فایل id_rsa.pub شما باید به فایل در authorized_keys در دستگاه ریموت اضافه شود.برای نمایش محتویات کلید id_rsa.pub خود، این را به کامپیوتر محلی خود وارد کنید:cat ~/.ssh/id_rsa.pubمحتوای کلیدی را مشاهده خواهید کرد که ممکن است چیزی شبیه به این باشد:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== nix@sadeghkhademi.comبا استفاده از هر شیوه ای که در دسترس دارید، به سرور ریموت خود وصل شوید.پس از دسترسی به حساب کاربری خود در سرور ریموت، باید مطمئن شوید که دایرکتوری ssh./~ ایجاد شده است. این دستور در صورت لزوم دایرکتوری را ایجاد می کند:mkdir -p ~/.sshاکنون می توانید فایل authorized_keys را در این دایرکتوری ایجاد یا تغییر دهید. شما می توانید محتویات فایل id_rsa.pub خود را به انتهای فایل authorized_keys اضافه کنید.echo public_key_string &gt;&gt; ~/.ssh/authorized_keysدر فرمان بالا، public_key_string با خروجی دستور cat ~/.ssh/id_rsa.pub که در کامپیوتر شما اجرا می شود را جایگزین کنید. باید با ssh-rsa AAAA شروع شود ....در ادامه با دستور زیر مجوزهای محدود خواندن و نوشتن فقط برای مالک را برای دایرکتوری ssh. و فایل authorized_keys تنظیم کنید :  chmod 700 ~/.ssh &amp;&amp; chmod 600 ~/.ssh/authorized_keys با استفاده از کلیدهای SSH به سرور خود لاگین کنید اگر قبلا یکی از روشهای فوق را تکمیل کرده باشید، باید بتوانید بدون داشتن رمز عبور حساب کاربری سرور ریموت وارد آن سیستم شوید.ssh username@remote_hostگر این اولین بار است که به این میزبان وصل می شوید (اگر از آخرین روش فوق استفاده کردید)، ممکن است چیزی شبیه به این را ببینید: The authenticity of host &#039;111.111.111.111 (111.111.111.111)&#039; can&#039;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 را فشار دهید.اگر شما کلمه‌عبور را برای کلید خصوصی خود ارائه نکردید، بلافاصله وارد سیستم می شوید. اگر یک کلمه عبور برای کلید خصوصی ایجاد کردید، لازم است که آن را وارد کنید.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Fri, 14 Jun 2019 05:13:07 +0430</pubDate>
            </item>
                    <item>
                <title>بهترین ضبط کننده های دسکتاپ برای اوبونتو</title>
                <link>https://virgool.io/sadeghkhademi/best-desktop-recorders-for-ubuntu-mot2k2she972</link>
                <description>اغلب اوقات در موقعیتی هستیم که میخواهیم صفحه دسکتاپ خود را برای اهداف آموزشی و موارد دیگر ضبط کنیم.چگونه این کار را در اوبونتو انجام می دهید؟اهمیت ضبط صفحه نمایش به ویژه برای افرادی که زندگی خود را از طریق YouTube یا هر وب سایت دیگری می گذرانند، بسیار مهم است.من در اینجا از پنج نرم افزاری که کمک می کنند صفحه نمایش خود را ضبط کنید یک فهرست تهیه کرده ام و بهترین بخش این فهرست این است که همه ی آنها نرم‌افزارهای آزاد هستند.Kazamنرم‌افزار Kazam یک ابزار بسیار ساده برای ضبط صفحه نمایش است که قابلیت عکس برداری را نیز فراهم می کند. این ابزار برای افرادی که مبتدی هستند و میخواهند بدون اینکه با جزئیات و گزینه های بیشماری درگیر شوند صفحه نمایش خود را ضبط کنند مناسب است. همچنین از ضبط صدا و فرمت های ویدیویی مختلف پشتیبانی می کند.ویژگی های بی نظیر این برنامه عبارتند از:دارای UI سادهفرمت های مختلف ویدیویی را پشتیبانی می شودامکان ضبط صوت داردپشتیبانی از Delay timerبرای نصب Kazam در اوبونتو کافی است دستور زیر را در ترمینال خود اجرا کنید:sudo apt install kazamOpen Broadcaster Software Studioاین نرم افزار برای کاربرانی که می خواهند از نرم افزار ضبط صفحه نمایش بیشتر استفاده کنند، ایده آل است. این نرم‌افزار ویژگی های پیشرفته ای دارد که شاید OBS پیشرفته ترین ویژگی این ضبط کننده ی صفحه نمایش در لینوکس باشد.OBS دارای قابلیت پخش مستقیم از طریق YouTube، Twitch، DailyMotion و موارد دیگر است. این ویژگی بیشتر برای افرادی است که ویدیوهایی با مدت زمانی طولانی ایجاد می کنند و معمولا در آن تغییری ایجاد می کنند. با این حال برای تازه کاران قبل از اینکه بتوانند از نرم افزار به طور حداکثری استفاده کنند، زمان زیادی باید صرف شود.پشتیبانی از پخش زندهگزینه های پیکربندی پیشرفتهمیکسر صوتی با فیلترهای مختلفدر اینجا نحوه نصب این نرم افزار را خواهیم داشت:sudo add-apt-repository ppa:obsproject/obs-studiosudo apt updatesudo apt install obs-studioSimple Screen Recorderاگر چه رابط کاربری نسبتا ناخوشایندی دارد، اما این نرم افزار برای استفاده ساده عالی است. رابط برنامه بر اساس Qt است و توانایی پشتیبانی از چند فرمت خروجی ویدئو را دارد. این نرم افزار در سیستم های قدیمی که قادر به اجرای نرم‌افزار سنگین تر نیستند نیز قابل استفاده است.برخی از ویژگی ها :پشتیبانی از ضبط منطقه انتخاب شده روی صفحه نمایشپیش نمایش زنده در هنگام ضبطارائه آمار در حین ضبطبرای نصب برنامه، دستورات زیر را در Terminal اجرا کنید:sudo apt-get install simplescreenrecorderRecord My Desktopیک ابزار سبک که به طور عمده توسط خط فرمان کنترل می شود. این برنامه با استفاده از زبان C توسعه داده شده و دو رابط کاربری گرافیکی مجزا بر اساس GTK و QT4 دارد. این نرم افزار عمدتا به افرادی که با CLI راحت هستند توصیه می شود. اشکال اصلی Record My Desktop این است که فرمت خروجی ویدیویی متفاوتی را ارائه نمی دهد. برای نصب برنامه، دستورات زیر را در Terminal اجرا کنید:sudo add-apt-repository ppa:maarten-baert/simple screen recordersudo apt updatesudo apt install simplescreenrecorderVoko Screenمسلما یکی از ساده ترین و تمیزترین ضبط کننده های صفحه نمایش برای کاربران لینوکس است. Voko Screen توانایی پشتیبانی از چند فرمت خروجی ویدئو و ورودی های صوتی مناسب را دارد. بر خلاف بسیاری از موارد ذکر شده قبلی، Voko Screen پشتیبانی از پیش نمایش وب کم را ارائه می دهد و از Hotkey نیز پشتیبانی میکندبرای نصب Voko، دستور زیر را در ترمینال اجرا کنید:sudo apt install vokoscreenBonus Mention: Green Recorderاین نرم افزار یکی از قدیمی ترین ضبط کننده های صفحه نمایش در لینوکس است. این نرم افزار با استفاده از GTK3 و مشابه با دیگر ضبط کننده ها از FFmpeg در فرآیندهای پس زمینه استفاده می کند. پس ویژگی های اصلی آن چیست؟پشتیبانی از فرمت های مانند avi، mkv mp4 و بیشترگزینه ای برای ایجاد GIF پشتیبانی از Xorg و Waylandبرای نصب، از دستورات زیر استفاده کنید:sudo add-apt-repository ppa:fossproject/ppasudo apt updatesudo apt install green-recorderپایان : کدام یک از ایده آل ترین یا بهترین ضبط کننده صفحه نمایش است؟خوب، به طور کامل به نیازهای شما بستگی دارد. بهترین راه برای سنجش این است که تمام ضبط کننده ها را نصب کنید و خودتان بفهمید که کدام نرم افزار بهترین است. در غیر این صورت، نرم‌افزار با تنظیمات ساده و بهترین رابط کاربری را انتخاب کنید، زیرا سادگی، همیشه بهترین گزینه است.این موارد بدون رتبه بندی نوشته شده‌اند.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Thu, 31 Jan 2019 15:21:28 +0330</pubDate>
            </item>
                    <item>
                <title>چگونه بازی های ویندوزی را در گنو/لینوکس اجرا کنیم ؟</title>
                <link>https://virgool.io/sadeghkhademi/play-windows-games-on-linux-hulvx7qawyj2</link>
                <description>بازی در لینوکساکثر علاقه مندان به بازی های کامپیوتری به علت این تصور اشتباه که گنو/لینوکس نمی‌تواند از بازی‌های ویندوز پشتیبانی کند، به ویندوز تمایل دارند. اکثر کسانی که تمایل به بازی دارند به ندرت گنو/لینوکس را انتخاب میکنند و خیلی از کاربرانی که با گنو/لینوکس راحت هستن بخاطر بازی به ویندوز مهاجرت میکنند.اغلب سوالاتی که کاربران گنو/لینوکس میپرسند این است که چگونه بازی کنیم؟ خب وقتی صحبت از بازی می شود ویندوز گوی سبقت رو از گنو/لینوکس میبرد ولی این به این معنی نیست که ما هرگز نمی توانیم بازی های مورد علاقه‌ی خود را بازی کنیم.آن چیزی که معمولا مردم نمی دانند این است که توسعه دهندگان بازی ها از بازار روبه رشد گنو/لینوکس غافل نیستند. در کنار شرکت هایی که بازی مبتنی بر گنو/لینوکس ساخته اند شرکت هایی مانند Valve یا Steam در حال تلاش برای ایجاد ابزارهایی هستند که می توانند از بازی های ویندوز در سیستم گنو/لینوکس پشتیبانی کنند.مزیت بزرگ استفاده از گنو/لینوکس برای بازی نسبت به هر پلتفرم بازی دیگر، ثبات و پایداری آن است.چگونه می توانید بازی های ویندوز را در گنو/لینوکس بازی کنید؟ در ادامه ابزارهایی که از بازی های ویندوز در گنو/لینوکس پشتیبانی می کنند را معرفی میکنیم.Winewinehqرایج ترین روش برای اجرای برنامه های ویندوزی در گنو/لینوکس wine است، وقتی که WineHQ اولین نسخه پایدار خود که نسخه 1.0 بود را منتشر کرد از ۲۰۰ بازی محبوب ویندوزی پشتیبانی می کرد. آخرین نسخه wine همچنین رتبه بندی بازی ها را ارائه می دهد که در تعیین تعداد تنظیمات مورد نیاز کمک می کند.اگر رتبه بندی Platinum را ببینید، به این معنی است که این بازی با شانس 99٪ به خوبی اجرا خواهد شد. رتبه بندی Gold به این معنی است که شما باید کمی آنها را پیکربندی کنید، اما در نهایت، آنها به خوبی کار خواهند کرد. برچسب های Silver و Bronze به این معنی است که ممکن است هنگام بازی مشکلاتی وجود داشته باشد. اگر برای یک بازی رتبه بندی آشغال (garbage) را نشان دهد، شانس کار کردن آن به همان اندازه کم است که ببینید یک پنگوئن صحبت می کند(به زبان انسان).قبل از نصب، پایگاه‌داده wine را بررسی کنید!!!Steam Playsteam playجدیدترین نسخه بتای Steam Play در سال ۲۰۱۸ منتشر شد. راهی که اجازه می دهد کاربران به نسخه های ویندوز، مک و گنو/لینوکس بازی های Steam دسترسی پیدا کنند. آنها در حال حاضر بیش از 3000 بازی برای کاربران گنو/لینوکس دارند و هر روز تعداد بیشتری افزوده میشود. به منظور افزایش سازگاری با بازی های ویندوز، تصمیم گرفتند نسخه بتای Steam Play شامل اصلاحات Wine و  Proton باشد.سایت رسمی Steam Play برخی از مزایای جدید را اینگونه ارائه می دهد:بازی های ویندوز بدون اینکه دارای نسخه‌ی گنو/لینوکس باشند می توانند نصب شوند و به طور مستقیم از Steam گنو/لینوکس اجرا شوند.شامل پشتیبانی کامل از Steamworks و OpenVR خواهد بود.سازگاری بازی و کاهش عملکرد (performance) به دلیل اجرای DirectX 11 و 12 بهبود یافته است.بازی تمام کنترلر ها را به صورت خودکار تشخیص می دهد.بهبود عملکرد بازی های Multi-thread در مقایسه با vanilla Wine.لیست بازی هایی که نسخه بتای جدید Steam پشتیبانی می کند را بررسی کنید.PlayOnLinuxplayonlinuxنه تنها یک محیط تعاملی را فراهم می کند، بلکه شامل یک سری اسکریپت های از پیش ساخته شده برای کمک به کاربران در نصب برخی از بازی هاست. یک رابط کاربری موثر و کاربر پسند برای شبیه ساز wine است که به شما امکان پیکربندی و دسترسی به آن بدون استفاده از خط فرمان را می دهد.نقطه ضعف POL این است که متاسفانه POL نمی تواند بدون WINE کار کند.Lutrislutrisیکی دیگر از ابزار هایی که به شما امکان نصب و مدیریت بازی ها در گنو/لینوکس را می دهد Lutris نام دارد که مثل شبیه ساز برای بازی های ویندوزی عمل می کند.لایه سازگار مبتنی بر wine و proton دارد که به شما اجازه می‌دهد بازی های ویندوزی را بازی کنید. Lutris یک پایگاه داده بزرگ از بازی ها فراهم می کند و اسکریپت های آماده برای نصب دارد که می توانید دانلود کنید.نتیجه با توجه به میزان ثبات ارائه شده میزان استفاده از گنو/لینوکس در بین کاربران کامپیوتر افزایش یافته است. گیمرها این موضوع را مطرح می کنند که گنو/لینوکس قادر به پشتیبانی از بازی های مورد علاقه‌ی آنها نیست، و از این رو برای استفاده از گنو/لینوکس تردید دارند. با این حال، شرکت ها در سراسر جهان تلاش می کنند تا برای علاقه‌مندان به بازی های رایانه ای که مایل به استفاده از گنو/لینوکس هستند، راحتی را فراهم کنند تا با خیال راحت هم به بازی های مورد علاقه خود بپردازند و هم از سیستم عامل مورد علاقه خود استفاده کنند.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sun, 27 Jan 2019 11:30:28 +0330</pubDate>
            </item>
                    <item>
                <title>بهترین توزیع‌های لینوکس برای کودکان و نوجوانان</title>
                <link>https://virgool.io/sadeghkhademi/best-linux-distribution-for-kids-y9s7ldhu7ajz</link>
                <description>در پست قبلی در خصوص این صحبت کردیم که &quot; چرا بهتر است کودکان با لینوکس کار کنند؟ &quot; در این پست به معرفی چند توزیع که برای کودکان و نوجوانان مناسب است و یا در واقع سفارشی سازی شده‌اند می پردازیم.linux for kidsکامپیوتر قدیمی را به یک ماشین دوستانه تبدیل کنید که در کنار اهمیت به جنبه های یادگیری و آموزش کودکان، سرگرم کننده هم باشد و کودکان از کار با آن لذت ببرند. با تشکر از نرم افزار آزاد، سیستم عامل های مختلفی طراحی شده‌اند که به شما اجازه می دهند بدون نیاز به نگرانی کامپیوترها را به بچه‌ها بسپارید.بچه‌ها عاشق اکتشاف هستند و کامپیوترها فرصت خوبی را برای آنها فراهم می کنند. برنامه نویسان از سراسر جهان برای آموزش و پرورش، تعدادی سیستم عامل های آزاد ساخته‌اند که شما می توانید به صورت رایگان از آن‌ها برای بچه های خود استفاده کنید.این سیستم عامل های رایگان با طیف گسترده ای از نرم افزار آموزشی رایگان برای استفاده توسط بچه‌ها طراحی شده‌اند. چه شما یک معلم باشید که تمایل به ساخت یک آزمایشگاه پر از ماشین را داشته باشید و یا یک پدر و مادر که به دنبال تبدیل یک دسکتاپ قدیمی به یک کامپیوتر برای بچه‌ خود هستند، این توزیع های لینوکس کار را ساده می‌کنند.Sugar On A StickSugar On A Stickشاید بدانید ‌Sugar بهترین رابط کاربری طراحی شده برای پروژه یک لپ تاپ برای هر کودک است (One Laptop Per Child). سیستم عامل Sugar On A Stick یک نسخه از سیستم عامل فدورا است که همراه با Sugar اجرا می شود و به نحوی طراحی شده است که به‌ واسطه یک USB در هر زمانی بر روی هر کامپیوتری اجرا شود.رابط کاربری ‌Sugar یک محیط یادگیری برای بچه‌هاست و محیط آن به گونه ایست که  برای بزرگسالانی که از ویندوز یا Gnome استفاده می‌کنند نا آشناست، اما برای بچه‌هایی که دوست دارند کاوشی سریع و بدون نیاز به خواندن یا نوشتن انجام دهند مناسب است.بسته به نحوه استفاده از Sugar بچه‌ها می توانند مهارت های لازم را برای تبدیل شدن به یک برنامه نویس را کسب کنند. برای مطالعه بیشتر در مورد فلسفه Sugar اینجا را بخوانید.اگر می خواهید Sugar را امتحان کنید، Sugar On a Stick را دانلود کنید.Edubuntu (Discontinued)Edubuntu به عنوان نسخه آموزشی اوبونتو شناخته می‌شود، در واقع Edubuntu یک نسخه‌ی اوبونتو است که برای کلاس های آموزشی ایجاد و با همکاری معلمان توسعه داده شده است و علاوه بر مواردی که در اوبونتو وجود دارد شامل انواع مختلفی از برنامه های آموزشی است.از اینجا تصاویر Edubuntu را مشاهده کنید و توجه داشته باشید که از رابط Unity اوبونتو استفاده می‌کند و می توانید. آن را با Gnome نیز جایگزین کنید. مزیت بالقوه Edubuntu دسترسی به مخزن نرم افزار های اوبونتو است که شامل دسترسی به اکثر برنامه های لینوکس می شود. اگر می خواهید Edubuntu را امتحان کنید آن را دانلود کنید. همچنین می توانید Edubuntu را بدون نصب استفاده کنید.openSUSE-Eduاگر Edubuntu قادر به برآورده کردن نیازهای شما نیست، حتما باید OpenSUSE-Edu را بررسی کنید. openSUSE یکی دیگر از توریع های قدرتمند برای آموزش است. این توزیع می تواند نیاز مدرسه را به سرورها و دسکتاپ برآورده سازد. این توزیع دارای برنامه های کاربردی بسیار مفیدی برای دانش آموزان، معلمان و حتی والدین است. openSUSE با محیطهای دسکتاپ مختلف از جمله GNOME ، GNOME Classic ، KDE Plasma و Mate همراه است.UbermixUbermixتوزیع Ubermix یک سیستم عامل مبتنی بر لینوکس است که استفاده گسترده ای را در مدارس به دست آورده است. این سیستم عامل با تمرکز روی برنامه‌های آموزشی ساخته شده و موضوعاتی مانند طراحی، برنامه نویسی، اینترنت، ویرایش چندرسانه‌ای  و غیره را پوشش می دهد. این برنامه با ترکیب قدرت نرم افزار آزاد و منبع باز برای تقویت بچه‌ها و معلمان ساخته شده است.توزیع Ubermix به گونه ای ساخته شده است که نرم افزار و اطلاعات را در پارتیشن های مختلف ذخیره می کند. به همین دلیل، اگر کامپیوتر خراب شود، کاربر می تواند بدون از دست دادن اطلاعات خود سیستم عامل را مجددا نصب کند و فایل های مهم را ذخیره کند.سیستم عامل Ubermix را می توان در پنج دقیقه نصب کرد، بدون نیاز به هیچ گونه پشتیبانی فنی امکان مدیریت آن را خواهید داشت. این ویژگی‌ها،  Ubermix را به یک توزیع لینوکس قدرتمند برای کودکان تبدیل کرده است.می‌خواهید Ubermix را دانلود کنید؟QimoQimoیکی دیگر از توزیع های مناسب کودک است که مبتنی بر اوبونتو ساخته شده است. توسط یک dock به کودکان امکان دسترسی سریع به بازی های آموزشی لینوکس را می دهد، در حالی که با یک منوی کامل شما می توانید تمام برنامه ها را به آسانی مرور کنید.ایده این است که رابط کاربری به اندازه کافی برای کودک ۳ ساله آسان باشد و برنامه‌هایی که دوست دارند در نوار پایین باشند. با ارائه بیشتر برنامه های آموزشی توسط Edubuntu، Qimo این سیستم با یک موضوع کارتونی دوستانه، گزینه ای مناسب و سبک برای استفاده کودکان خواهد بود.اگر شما آماده هستید، Qimo را دانلود کنید.Doudou LinuxDoudou Linux با بکارگیری منوی ساده و مبتنی بر تب و آیکون های بزرگ استفاده از Doudou برای کودکان آسان شده است.رابط کاربری Doudou لینوکس برای کودکان ۲ تا ۱۰ سال سفارشی سازی شده تا بتوانند سریعا بازی های آموزشی راه اندازی کنند.سیستم عاملی سریع که با بسیاری از بازی های آموزشی و مجموعه ای ساده از برنامه‌ها که به اندازه‌ی کافی برای اکثر بچه‌ها مناسب است و بر پایه دبیان ساخته شده است.این سیستم عامل فقط به ۲۵۶ مگابایت RAM و تنها ۸۰۰ مگاهرتز قدرت پردازش نیاز دارد، در واقع شما به راحتی می توانید آن را روی یک کامپیوتر قدیمی نصب کنید. این شامل مجموعه ای استاندارد از برنامه های آموزشی است که به اندازه کافی برای اکثر بچه ها ساده است.درباره‌ی Doudou Linux بیشتر بخوانید و دانلود کنید.این موارد بدون رتبه بندی نوشته شده‌اند.اگر شما  توزیع های لینوکس دیگری می‌شناسید که برای کودکان مناسب باشد. امیدوارم با مشارکت شما عزیزان این لیست کامل تر شود. اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 12 Jan 2019 15:10:17 +0330</pubDate>
            </item>
                    <item>
                <title>چرا بهتر است کودکان با لینوکس کار کنند؟</title>
                <link>https://virgool.io/sadeghkhademi/why-kids-should-work-with-linux-bvw3vc0symhy</link>
                <description>می دانید چگونه از کامپیوتر استفاده کنید؟ در یک سن خاص، این سوال به نظر مسخره است. مردم خیلی از کارها رو به راحتی با کامپیوتر انجام میدهند ولی تمام کامپیوتر ها و یا سیستم عامل ها یکسان نیستند. نرم افزاری که ما استفاده می کنیم ارزش‌ها، معلومات و مهارت های ما را تحت تاثیر قرار می دهند. شما چه عادت و اخلاقی را می خواهید به فرزندان خود منتقل کنید؟این پست درباره‌ی علاقه‌مند کردن فرزند شما به کامپیوتر نیست.آکادمی اطفال آمریکا توصیه می کند قبل از سن دو سالگی بچه ها را در مقابل صفحه نمایش قرار ندهید.اینجا درباره کودکانی صحبت میکنیم که توانایی کار کردن با صفحه کلید را دارند.سیستم عامل هایی که کودکان استفاده میکنند اهمیت زیادی دارد و لینوکس بهترین گزینه است که با آنها شروع به کار کنند.بیایید در مورد چرای این موضوع صحبت کنیم.1. لینوکس با شما به عنوان مصرف کننده رفتار نمی کندبسیاری از ما در جوامع مبتنی بر مصرف زندگی می کنیم. تبلیغات تمام زندگی ما را بمباران می کند و ما را تشویق می کند تا بیشتر خرید کنیم.در ویندوز و مک OS ، این وضعیت متفاوت نیست. شما مجبور نیستید ولی هر دو انتظار دارند که بیشتر برنامه های خودشان را خریداری کنید. این به معنی تبلیغات بیشتر است.همان‌طور که فرزندان شما از کامپیوتر استفاده می کنند، باید برنامه ها و بازی های بیشتری را خریداری کنند. وضعیت گوشی های هوشمند و تبلت‌ها به طور قابل توجهی بدتر شده است که این کار باعث می شود پول بیشتری خرج کنید. کامپیوتر، تلویزیون و سایر رسانه ها بهم می پیوندد تا کودک شما را به عنوان یک مصرف کننده آموزش دهند.در لینوکس، کودکان شما به نقطه ای می رسند که نرم‌افزار بیشتری میخواهند، بدون اینکه نیازی به پرداخت پول داشته باشند. این موضوع رابطه‌ی بین آنها و کامپیوترشان را تغییر می دهد و کامپیوتر به ابزاری برای کشف و رشد خلاقیت آنها تبدیل می شود.و این فقط یک شروع است.2. لینوکس کودکان را به ارائه و اشتراک گذاری تشویق می‌کنداسباب بازی خود را به اشتراک بگذاروالدین می دانند که این مسئله ناگزیر به نظر می‌آید اما حاوی پیام مهمی است. در چنین سن و سالی، افراد کمی می‌پذیرند که بچه ها باید اهمیت ذخیره سازی و به اشتراک گذاشتن را یاد بگیرند.همان‌طور که بزرگ‌تر میشویم، این پیام روشن‌تر می شود. تبلیغات ما را تشویق می کند تا آنچه را که داریم افزایش دهیم. در فرهنگ ما افرادي كه درآمد بيشتري دارند پذیرفته تر هستند. لینوکس این روند را تغییر می دهد. نیازی به صرف هزینه برای نرم افزار نیست و برنامه ها بیشتر به عنوان توسعه کامپیوتر دیده می شوند تا یک محصول. فرزند شما با مفهوم نرم افزاری رشد خواهد کرد که توسعه دهندگان برای سود دیگران ایجاد کرده اند.اگر کودکتان روزی برنامه نویسی کند، این عمل را به عنوان راهی برای گسترش توانایی کامپیوتر خواهد دید. آنها ممکن است بخواهند نتایج را با دیگران به اشتراک بگذارند، درست مثل اعضای جامعه علمی، به یک جامعه وسیع‌تر کمک کنند؛ تا اینکه مهارت‌های خود را به عنوان راهی برای ساخت برنامه‌ای که روز به روز به ثروت آنها اضافه کند ببینند.3. لینوکس حفظ منابع طبیعی رو آموزش می دهدصنعت الکترونیک با زباله پر شده است و محصولات یک یا دو سال عمر می کنند. بسیاری از ابزارهای هوشمند بروز‌رسانی‌ها را دریافت نمی کنند زیرا سازندگان آن به عنوان یک اهرم فشار برای خرید مدل بعدی محصول خود از آن استفاده می کنند. نسخه های جدید ویندوز اغلب نیاز به ارتقاء سخت افزاری دارند. مک‌بوک های قدیمی تر آخرین نسخه های Mac OS را پشتیبانی نمی کنند.این موارد به کودکان یاد می دهد که تجهیزات الکترونیکی، ارزان و کالاهای موقتی هستند و آنها را تشویق می کند تا به جای حفظ، بازیافت و استفاده؛ آنها را دور بریزند. لینوکس مخالف این موضوع است. لینوکس به خوبی بر روی سخت افزارهای قدیمی کار میکند و خیلی روان بر روی یک کامپیوتر که به سختی می تواند ویندوز XP را اجرا کند کار کند.4. کودکان آزاد هستن تا تجربه کنندکامپیوتر های شخصی دستگاه های فوق‌العاده‌ای هستند. ابزارهایی برای نوشتن یک رمان، کشیدن کمیک، ساخت آهنگ، بازی، ویدیو و …. در یک مکان فراهم می شود.در سیستم عامل های تجاری، نرم افزار مورد نیاز برای بیان خلاقیت می تواند هزینه بسیار کمی داشته باشد، گاهی اوقات هم قیمت به صدها دلار می رسد. در لینوکس ابزار رایگان است هر چند برخی از این برنامه ها کاملا با همتایان تجاری خود قابل مقایسه نیستند. اما ما در مورد بچه ها صحبت می کنیم، نه حرفه ای ها. به علاوه اگر فرزندتان در حال یادگیری نحوه کار با استفاده از نرم افزار آزاد باشد، پول از معادلات آنها خارج می شود و بیان خلاقیت کمتر وابسته به درآمد می‌شود، که این امر آنها را خلاق تر می‌کند.آنها می توانند پول را روی سخت افزار نیز صرفه جویی کنند. لینوکس به خوبی بر روی یک کامپیوتر قدیمی با سخت افزار ضعیف کار می کند.5. لینوکس آموزشی استشاید شما از ترس از دست رفتن برنامه های آموزشی خاص نخواهید به لینوکس بپیوندید. با استفاده از لینوکس بچه ها می توانند از کامپیوتر خود برای تمرین ریاضی، نقشه جهان، شیمی و خیلی چیزهای دیگر استفاده کند.به علاوه مرورگرهایی مانند موزیلا فایرفاکس و گوگل کروم، وب گردی را ساده کرده اند.گفتنی است که توزیع‌هایی طراحی شده است تا بچه‌ی شما را با یک فضای امن برای یادگیری پرورش دهند. اغلب در این توزیع ها تمرکز بر روی چند برنامه آموزشی در کنار حذف ابزارهایی که هنوز به آنها احتیاجی ندارد می‌باشد. این نیز یک راه مطمئن برای استفاده از کامپیوتر و کارهایی است که ممکن است کودکان را در معرض خطر قرار دهد.6. لینوکس در مقابل تروجان از کودکان محافظت میکندویروسها چندین دهه است ویندوز را هدف قرار داده اند. این سیستم عامل در حال حاضر نسبت به قبل امن تر است، اما با نصب نرم افزار از یک منبع غیر قابل اعتماد، می تواند دستگاه را به خطر بیندازد. اگر بچه های شما بزرگ‌تر هستند، ممکن است در پیوست(attach) ایمیل ها فایل های مخرب دریافت کنند. شايد آن پوشه‌‌ی موزيکی که دوستش فرستاده بود امن نباشد. بعضی از بچه ها متوجه میشوند چگونه با خیال راحت با این تهدیدات کنار بیایند، اما همیشه این‌طور نیست.لینوکس 100٪ خالی از نرم افزارهای مخرب نیست، اما محیطی به مراتب امن تر دارد. فرزند شما هنوز هم باید بداند چگونه از فیشینگ و سایر حملات مهندسی اجتماعی جلوگیری کند، اما بسیاری از تهدیدهای اینترنتی دیگر بی اثر خواهند شد. این فرایند بدون نصب نرم افزار آنتی‌ویروس انجام می شود.سخن پایانی : مطمئن شوید که یک حساب کاربری جداگانه برای کودکان خود بر روی کامپیوتر ایجاد کنید. شما حتی می توانید نرم افزارهایی که زمان استفاده از کامپیوتر را محدود می کند نصب کنید.در ایالات متحده آمریکا، اکثر مدارس دانش آموزان را با استفاده از ویندوز یا MacOS آموزش می دهند. آنها یاد میگیرند که چگونه از نرم افزار هایی مانند Microsoft Office استفاده کنند. گاهی اوقات ممکن است لازم باشد برنامه های خاصی را اجرا کنند که تنها در سیستم عامل های تجاری کار می کنند.از آنجایی که مدارس نمی دانند که آیا هر کودک در خانه کامپیوتر دارد آزمایشگاه های کامپیوتری را عرضه می کنند یا لپ‌تاپ هایی را بین آنها توزیع می کنند. اکثریت قریب به اتفاق تکالیف، مانند تایپ کردن یک مقاله یا ایجاد یک ارائه است.در ایران اکثر مدارس امکانات بسیار محدودی در زمینه ارائه کامپیوتر به دانش‌آموزان دارند اما اکثر ما ایرانیان به شدت تمایل داریم که خرید کنیم، بخصوص ابزار هایی مثل لپ تاپ، تبلت، گوشی و ... در برخی مدارس تعداد کامپیوتر های محدودی به منظور آموزش و استفاده‌ی دانش‌آموزان وجود دارد که با همه‌ی محدودیت هایی که برای استفاده و آموزش استفاده از آنها وجود دارد از سیستم عامل ویندوز استفاده می کنند و نرم افزار  هایی مثل Microsoft Office آموزش داده می شود.نظر شما چیست؟ آیا بچه هایتان تا به حال از دسکتاپ لینوکس استفاده کرده اند؟ فکر می کنید دسکتاپ لینوکس محبوب خواهند شد؟ کودکان اصلا متوجه این موضوع می شوند؟پیشنهاد می‌کنم &quot;بهترین توزیع‌های لینوکس برای کودکان و نوجوانان&quot; را نیز مطالعه کنید.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Tue, 08 Jan 2019 17:47:18 +0330</pubDate>
            </item>
                    <item>
                <title>بهترین جایگزین برای لینوکس RedHat</title>
                <link>https://virgool.io/sadeghkhademi/best-linux-alternative-to-red-hat-xjvxmajmsvic</link>
                <description>ردهتاخبار اخیر در خصوص خرید ردهت توسط IBM موجی از نگرانی را به جامعه جهانی متن باز وارد کرد اما ما اینجا نمی خواهیم در خصوص آینده‌ی توزیع محبوب ردهت حدس بزنیم، ما اینجا لیست ۵ توزیع که بهترین گزینه برای جایگزینی ردهت هستند را خواهیم داشت.Debianدبیاناگر یک توزیع لینوکس وجود داشته باشد که منجر به ایجاد مشتقاتی بیشتر از ردهت شده باشد، دبیان است که اولین بار در سال 1993 منتشر شد.دبیان یک چرخه انتشار منحصر به فرد با سه شاخه مشخص دارد: Unstable، Testing، Stable.همانطور که اسم آنها نشان می دهد این شاخه ها همه‌ افراد را تحت پوشش قرار می‌دهند. علاوه بر سه شاخه اصلی، شاخه هایی با نسخه های نرم افزار بایگانی شده و نرم افزار تجربی نیز وجود دارد.آنچه که دبیان را از سایر توزیع های دیگر لینوکس جدا می کند، راهنمایی‌های نرم افزاری رایگان دبیان است. دبیان در حال حاضر به 75 زبان موجود است و شما قطعا نیازی به نگرانی در مورد دبیان که توسط برخی از شرکت های بزرگ تکنولوژی خریداری شود نخواهید داشت، بخاطر اینکه این کار تماماً بر خلاف چیزی است که دبیان بر اساس آن ساخته شده است.Ubuntuاوبونتوگفتیم که از دبیان تعداد زیادی توزیع لینوکس مشتق شده که یکی از آنها اوبونتو است. با وجود اینکه اوبونتو برای رابط کاربری و ویژگی های دسکتاپ کاربر پسند شناخته شده است اما به لطف نسخه سرور، یکی از جایگزین‌های خوب برای ردهت است.شرکت Canonical یک شرکت نرم افزاری خصوصی در انگلستان است و توسط کارآفرین آفریقای جنوبی Mark Shuttleworth تأسیس و تأمین مالی شده است. Canonical برای پشتیبانی تجاری و خدمات مربوط به اوبونتو و پروژه های مربوط به آن ایجاد شده است. علاوه بر دسکتاپ، سرور و هسته که نسخه ای برای دستگاه‌های اینترنت اشیاست، مجموعه ای از مشتقات رسمی اوبونتو از جملهKubuntu، Lubuntu، Ubuntu Budgie، Kylin، MATE یا Edubuntu وجود دارد.SLES (SUSE Linux Enterprise Server)سیستم عامل SUSE Linux Enterprise Server، یا بطور خلاصه SLES، یک سیستم عامل مبتنی بر لینوکس است که توسط SUSE برای سرورها، رایانه های بزرگ و ایستگاه های کاری طراحی شده است که اولین بار در سال 2000 منتشر شد و از آن زمان هفت نسخه عمده SLES منتشر شده است.برخلاف RedHat که یک شرکت عظیم است و بیش از 10،000 کارمند در سراسر جهان دارد، SUSE تنها حدود 1400 کارمند دارد که عمدتا در آلمان، ایالات متحده آمریکا، جمهوری چک، بریتانیا و ایتالیا مستقر هستند. اما درست مثل ردهت، SUSE توسعه دهنده‌ای سخاوتمند و حامی تعدادی از پروژه های منبع باز است.مدیر بسته استفاده شده در SLES سیستم RPM Package Manager (RPM) می‌باشد، که ابتدا برای استفاده در لینوکس ردهت ایجاد شده است.اگر نگران این هستید که SUSE توسط یک شرکت بزرگ تکنولوژی مانند ردهت خریداری شود، خبر بدی برای شما داریم؛ SUSE در حال حاضر چندین معامله را تجربه کرده است. جدیدترین آن که در ماه ژانویه 2018 اعلام شد. صاحب فعلی سوزه  Micro Focus، اعلام کرد که بخش کسب و کار SUSE را به شرکت های EQT به قیمت 2.5 میلیارد دلار فروخته است. خوشبختانه، شرکای EQT وعده داده که SUSE بتواند برند خود و فرهنگ سازمانی منحصر به فرد خود را به عنوان یک تجارت مستقل کند.Arch Linuxبه لطف رویکرد تیم طراحی و توسعه آرچ لینوکس همه‌ی آن چیزی که شما می خواهید را آرچ داراست، که به اختصار به آن KISS می‌گویند (keep it simple, stupid).آرون گریفین، توسعه دهنده اصلی Arch Linux می‌گوید: “ تکیه بر ابزارهای پیچیده برای مدیریت و ساخت سیستم، آسیب زدن به کاربران نهایی است”. “ اگر سعی کنید پیچیدگی سیستم را پنهان کنید، به یک سیستم پیچیده تر خواهید رسید. لایه های انتزاعی که در خدمت پنهان سازی داخلی هستند هیچگاه چیز خوبی نیستند. در عوض باید به نحوی طراحی شود که نیاز به هیچ پنهان سازی نباشد. “آرچ برای نصب از طریق کنسول بدنام است، اما administrator های ردهت چیزی برای نگرانی در این مورد وجود ندارند. با تشکر از مدیر بسته فوق العاده Arch Linux  که pacman نام دارد نصب هر یک از هزاران بسته ی رسمی نگهداری شده راحت خواهد بود.FreeBSDfreebsdمیدانیم که FreeBSD توزیع لینوکس نیست، اما این چیزی از این واقعیت که یک جایگزین فوق العاده برای لینوکس ردهت است کم نمی‌کند. این نسل BSD برای اولین بار در سال 1993 منتشر شد و از آن زمان به عنوان یکی از سیستم عامل های محبوب Open Source BSD تبدیل شده است.مهمترین تفاوت بین FreeBSD و توزیع های مختلف لینوکس مقیاس است. توسعه دهندگان FreeBSD تمامی قطعات جداگانه ای که با هم یک سیستم عامل را کامل می‌کند، نگهداری می کنند. در حالی که لینوکس تنها هسته و driver ها را نگهداری می کند. FreeBSD از مجوز منبع باز خود استفاده می کند که محدودیت های بسیار زیادی را در استفاده و توزیع نرم افزار اعمال می کند. FreeBSD دارای یک جامعه بزرگ از کاربران و توسعه دهندگان اختصاصی است که به شما یک دلیل اضافی برای تجربه‌ی آن می‌دهد.------------------------------------------------                                                   ------------------------------------------------ اگر می خواهید برای ردهت جایگزین انتخاب کنید، یکی از این موارد را امتحان کنید.نکته : همانطور که مشاهده کردید اینجا در خصوص CentOS هیچ صحبتی به میان نیامده است، دلیل آن هم این بوده که CentOS یک توزیع لینوکس مبتنی بر RedHat Enterprise است که از طرف جامعهٔ کاربری حمایت و توسعه پیدا می‌کند.اگر این مطلب را دوست داشتید آن را ❤️ کنید.اگر جایگزین دیگری را مناسب میدانید آن را  در بخش نظرات همین مطلب معرفی کنید. همچنین با نظرات خود در بهتر شدن مطالب به من کمک کنید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Tue, 01 Jan 2019 15:03:52 +0330</pubDate>
            </item>
                    <item>
                <title>بهترین شبیه ساز اندروید برای لینوکس</title>
                <link>https://virgool.io/sadeghkhademi/best-android-emulator-for-linux-prikzs3damga</link>
                <description>من برنامه نویس اندروید نیستم اما به واسطه‌ی کارم در شرکتی که محصولات زیادی را  برای اندروید توسعه داده، به روش های مختلف نیاز پیدا می‌کردم که شبیه‌ساز اندروید داشته باشم.معمولا از دسکتاپ لینوکسی استفاده میکنم در نتیجه باید شبیه‌ساز مناسب لینوکس پیدا می کردم. با پرس‌و‌جو از دوستان و تست چند مورد تصمیم گرفتم این مطلب را بنویسم.امیدوارم برای شما هم مفید باشد.چرا به شبیه‌ساز نیاز دارید ؟ بعضی وقت ها به برنامه ای نیاز دارید که نسخه مخصوص دسکتاپ لینوکس ندارد، بعضی وقت ها می خواهید بازی کنید یا محیط یک نرم‌افزار رو بررسی کنید و بعضی وقت ها میخواهید برنامه‌ی خودتان رو توسعه دهید.Android Virtual Deviceاگر از Android Studio برای نوشتن کدهای برنامه‌ی خودتان استفاده کرده اید این شبیه ساز برای شما طراحی شده، یک شبیه ساز فوق‌العاده که اگر از Android SDK استفاده میکنید بهترین کاربری را برای شما خواهد داشت ولی به تنهایی هم میتوانید از آن استفاده کنید. عکس ها حجم زیادی از هارد دیسک را اشغال میکنند و میزان رم مصرفی هم زیاد است اما همه‌ی امکانات به خوبی کار میکنند.با این شبیه‌ساز شما می‌توانید کم بودن میزان شارژ باتری، در حرکت بودن گوشی و بقیه چیزایی که به شرایط سخت افزاری بستگی دارد را تست کنید.Shashlikزمانی که Shashlik رو نصب کردید  از طریق ADB(Android Debug Bridge) به آن متصل شوید و برنامه اندرویدی خود را اجرا نمایید. بعد از آن برنامه ها میتوانند بصورت مستقل از روی دسکتاپ اجرا شوند، اولین اجرای برنامه بخاطر اینکه VM را قبل از برنامه اجرا میکند کٌند خواهد بود.البته این برنامه هنوز در نسخه بتا است و آخرین بروزرسانی مربوط به سال 2016 است، پس خیلی روی بروزرسانی ها حساب نکنید ولی اگر برنامه شما روی این شبیه‌ساز کار میکند، خب بزارید کار کند.Android_x86Android_x86 را می‌توانید بر روی ماشین مجازی  نصب کنید، VirtualBox یکی از  گزینه هاست ولی تنها گزینه نیست. نکته جالب در خصوص Android_x86 این است  که شما می‌توانید به عنوان سیستم عامل دوم نصب کنید و سیستم خودتان را dual  boot کنید. ابزار تجزیه و تحلیل برای برنامه های شما چیزی نیست که در این  پروژه اولویت بندی شده باشد در نتیجه ممکن است کمبود هایی داشته باشد ولی  برای استفاده معمول خیلی خوب است. بروزرسانی راحتی هم دارد که هم می‌توانید  از ISO استفاده کنید و یا پکیچ RPM استفاده کنید.Anboxدر واقع اسم کاملش ANDROID IN BOX است که بصورت Anbox خلاصه نویسی شده است  .Anbox به شما این امکان رو میدهد که برنامه اندروید را در لینوکس اجرا  کنید.بسته بصورت snap نصب می شود به جز زمانی که قصد توسعه برنامه داشته  باشید که برای این کار باید سورس کد رو برای اندروید دانلود کنید. این  برنامه برای اجرای برنامه های کوچک روی دسکتاپ عالی است. برای نصب برنامه  های اندرویدی راحت ترین راه پیدا کردن مدیر‌بسته (package manager)  است،برنامه adb با هر دستگاه اندرویدی متصل به کامپیوتر ارتباط برقرار  میکند و anbox به عنوان یه گوشی متصل به کامپیوتر عمل میکند. شما همینطور  می‌توانید گوگل‌پلی رو نصب کنید که بخاطر مسائل حقوقی در برنامه گنجانده  نشده یا اینکه از F-Droid به عنوان نسخه جایگزین استفاده کنید.Genymotion﻿تنها توزیع Close source که می‌توانید به صورت رایگان ازش استفاده کنید!!!بطور کامل می‌تواند تمام چیزی که گوشی قادر به انجام  است را شبیه سازی کند،از VirtualBox در پس‌زمینه استفاده میکند و رابط گرافیکی خوب این برنامه باعث می‌شود تا تست ها به راحتی انجام شوند.این شرکت همچنین مزارع (farm) آنلاین سخت افزاری اجاره میدهد که می‌توانید برای تست اجاره کنید که البته با توجه به قیمتش به نظر میرسه بیشتر برای برنامه نویس های حرفه ای طراحی شده است.Chrome Browserاگر از مرورگر Chrome استفاده میکنید می‌توانید ARC-welder را از فروشگاه وب chrome دانلود کنید، نصب آن ممکن است زمان بر باشد چون برنامه سنگینی است و شامل  یک شبیه‌ساز هم میشود. زمانی که آن را نصب و اجرا کردید با یک صفحه ساده خوش‌آمد گویی مواجه میشوید، صفحه خوش‌آمد گویی شامل یه + بزرگ و متن  ‘Add your APK’ است که شما باید فایل apk را بر روی هارد خود داشته باشید .ARC-welder برای تست طراحی شده و روی لینوکس هم اشکالات زیادی دارد ولی با Gnome هماهنگ شده است.اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Mon, 31 Dec 2018 14:50:47 +0330</pubDate>
            </item>
                    <item>
                <title>پشتیبان گیری از لینوکس سرور با BitTorrent Sync</title>
                <link>https://virgool.io/sadeghkhademi/backup-with-bittorrent-sync-wo3adq8j8okk</link>
                <description>در این آموزش توضیح میدهیم که چگونه BitTorrent Sync را نصب کنیم و از آن برای پشتیبان گیری اتوماتیک سرور گنو/لینوکس استفاده کنیم.BitTorrent Sync با استفاده از پروتکل BitTorrent به شما این امکان را میدهد که محتوا را بین سرورها همگام سازی کنید.همچنین بصورت مستقیم میتوانید بین کامپیوتر و گوشی هوشمند خود این همگام سازی را انجام دهید بدون اینکه نیاز باشد محتوا را به سرور third-party ارسال کنید.انتقال محتوا توسط BitTorrent Sync با استفاده از رمزنگاری 256bit AES انجام میشود.برای همگام سازی حداقل میبایست دو ماشین آنلاین وجود داشته باشد، قطعاً شما نمیخواهید کامپیوتر خود را تمام وقت روشن بزارید، اما سرور شرایط متفاوتی دارد و معمولا تمام وقت روشن و به اینترنت متصل میباشد پس، استفاده از BitTorrent Sync برای پشتیبان گیری ایده خیلی خوبی خواهد بود.سناریوی همگام سازی :1 – شما دو سرور با سیستم عامل گنو/لینوکس دارید که بصورت 24*7 به اینترنت متصل هستند در نتیجه میتوانید با استفاده از BitTorrent Sync بصورت اتوماتیک همگام سازی را بین آنها داشته باشید.2 – شما یک سرور با سیستم عامل گنو/لینوکس دارید که میتوانید همگام سازی را با کامپیوتر خودتان داشته باشید.زمانی که کامپیوتر خود را روشن میکنید بصورت اتوماتیک محتوای جدید را از سرور دریافت میکند.3 – شما یک Raspberry Pi دارید که میتوانید آن را 24 ساعت روشن بزارید و همگام سازی را بین سرور و RPi انجام دهید.پشتیبان گیری از لینوکس سرور بصورت Master and Slaveاگر شما دو سرور با سیستم عامل گنو/لینوکس داشته باشید میتوانید یکی از آنها را در نقش Master و دیگری را در نقش Slave پیکربندی نمایید.این به این معنی است که شما محتوای سایت خود را بر روی سرور Master بروزرسانی میکنید و سرور Slave بصورت فقط خواندنی محتوا را از  دایرکتوری سرور Master میخواند و همگام سازی را انجام میدهد بدون اینکه بتواند چیزی به محتوا اضافه یا کم کند.سرور Slave صرفا به عنوان پشتیبان گیری مورد استفاده قرار میگیرد.نصب BitTorrent Sync بر روی سرور Masterشما میتوانید از روش زیر برای نصب BitTorrent بر روی هر توزیعی از لینوکس استفاده نمایید.با استفاده از SSH به سرور خود لاگین کنید و آخرین ورژن BitTorrent Sync را با استفاده از لینک زیر دانلود کنید.64-bit :
wget https://download-cdn.getsync.com/stable/linux-x64/BitTorrent-Sync_x64.tar.gz
32-bit :
wget https://download-cdn.getsync.com/stable/linux-i386/BitTorrent-Sync_i386.tar.gzبا استفاده از دستور زیر فایل دانلودی را Extract نمایید :tar xvf BitTorrent-Sync_*.tar.gzحالا یک فایل اجرایی جدید بنام btsync در دایرکتوری که در آن کار میکنید Extract شده و آماده اجرا میباشد.شما میتوانید BitTorrent را با استفاده از دستور زیر start کنید :./btsyncبصورت پیش فرض قابلیت WebUI فقط در Localhost قابل دسترس است (localhost:8888). برای اینکه به WebUI در شبکه داخلی و یا اینترنت دسترسی داشته باشیم btsync را با دستور زیر start کنید :./btsync –webui.listen 0.0.0.0:8888حالا میتوانید با وارد کردن آدرس زیر در مرورگر خود به WebUI دسترسی داشته باشید.(your-server-ip را با آدرس سرور خود عوض کنید)Your-server-ip:8888زمانی که برای اولین بار در WebUI لاگین میکنید از شما میخواهد که حساب کاربری ایجاد کنید.ما در حال حاظر از http استفاده میکنیم و میدانیم که امن نیست.پس قبل از اینکه نام کاربری و پسورد را ایجاد نماییم، ما باید SSL Certification را روی سرور نصب نماییم.مقاله “HTTPS چگونه کار میکند ؟” و “رمزنگاری بر روی Nginx Deployment ” را برای ایجاد free SSL certificate مطالعه نمایید.من از sync.domain.com به عنوان دامین برای دسترسی به WebUI استفاده کردم.پس SSL certificate را برای دامین sync.domain.com اعمال کردم و شما نیاز دارید که SSL certificate را برای دامین خود اعمال نمایید.راه اندازی Nginx Reverse Proxy  :حالا ما Nginx را به عنوان Revers Proxy برای استفاده سرویس BitTorrent Sync اندازی میکنیم.ساخت Nginx server block file :sudo nano /etc/nginx/conf.d/sync.domain.com.confمتن زیر را به این فایل منتقل نمایید : server {
   listen 80;
   server_name sync.domain.com;
   return 301 https://sync.domain.com$request_uri;
}
server {
   listen 443 ssl;
   server_name sync.domain.com;

   ssl_protocols TLSv1.1 TLSv1.2;
   ssl_certificate /etc/letsencrypt/live/sync.domain.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/sync.domain.comm/privkey.pem;
   access_log /var/log/nginx/sync.domain.com.log;
   location / {
   proxy_pass http://127.0.0.1:8888;
   }
}فایل را ذخیره کنید و ببندید.این تغییرات باعث میشود کلیه ترافیک از HTTP به HTPPS تغییر کند و سرور فقط ترافیک رمزنگاری TLSv1.1 و TLSv1.2 را قبول نماید. زمانی که sync.domain.com را در مرورگر خود تایپ میکنید Nginx ترافیک را به 127.0.0.1:8888 ارسال میکند.سرویس Nginx را با استفاده از دستور زیر reload نماییذ :sudo service nginx reload
or
sudo systemctl reload nginxحالا میتوانید با وارد کردن sync.domain.com در مرورگر خود به WebUI دسترسی داشته باشید و اقدام به ساخت نام کاربری و رمز عبور نمایید. بعد از اینکه نام کاربری و رمز عبور را ایجاد کردید و به صفحه WebUI وارد شدید میبایست دایرکتوری را برای همگام سازی در سرور Master ایجاد نمایید.اما برای اضافه کردن دایرکتوری به سرور برای همگام سازی میبایست کاربری که پروسه btsync را اجرا میکند دسترسی write روی آن دایرکتوری را داشته باشد.شما میخواهید دایرکتوری اصلی سرور مثل /usr/share/nginx/ را همگام سازی نمایید، این دایرکتوری در مالکیت کاربر www-data و گروه www-data میباشد، و دسترسی 755 تنظیم شده لذا فقط کاربر www-data اجازه نوشتن دارد.drwxr-xr-x 7 www-data www-data 4096 Mar 9 21:58 nginxبه منظور اینکه  به کاربر www-data و کاربری که btsync را اجرا میکند دسترسی write بدهیم میتوانیم از دستور setfacl برای اعمال دسترسی write به کاربری که btsync را اجرا میکند ، استفاده نماییم.sudo setfacl -R -m “u:&lt;username&gt;:rwx” /usr/share/nginxبا این روش هر دو کاربر www-data و کاربری که btsync را اجرا میکند دسترسی write بر روی دایرکتوری اصلی web دارند.حالا شما میتوانید دایرکتوری اصلی web را به همگام سازی اضافه نمایید.btsync برای این دایرکتوری لینک اشتراک گذاری، secret key ، QR Code را ایجاد خواهد کرد. تنظیمات Slave Server :این فرایند برای سرور salve تقریبا مشابه سرور master میباشد و شما میبایست btsync را نصب کنید، سپس free SSL certificate دیگری را بسازید و  Nginx reverse proxy را نصب و راه اندازی نمایی.سپس حساب کاربری در WebUI را ایجاد نمایید.تنها تفاوت این است که بعد از ورود به حساب کاربری WebUI روی فلش سمت چپ پنل کلیک نمایید و از منوی کشویی باز شده روی Enter a key or link کلیک نمایید. سپس وارد WebUI سرور Master شوید و روی دکمه Share کلیک نمایید، سپس read only key رو کپی کرده و در WebUI سرور Slave وارد کنید.  بعد از آن شما باید در سرور Slave دایرکتوری را برای ذخیره فایل های دریافتی از سرور Master  انتخاب نمایید.دو کلیدread &amp; write و read only وجود دارد که ما کلید read only را انتخاب کردیم چون نمیخواهیم Slave تغییری روی محتوای Master ایجاد کند.حالا دو سرور روند همگام سازی را آغاز می کنند.پشتیبان گیری از لینوکس سرور با استفاده از کامپیوتر شخصیاگر بر روی کامپیوتر خود سیستم عامل گنو/لینوکس دارید مراحل بالا را برای نصب BitTorrent Sync دنبال نمایید بعد از تصب میتوانید btsync را اجرا کنید و شروع به همگام سازی نمایید، شما مجبور نیستید که Nginx reverse proxy و SSL certificate را بر روی کاپیوتر خود نصب نمایید.پشتیبان گیری از لینوکس سرور با استفاده Raspberry PiBitTorrent Sync ورژن مخصوص ARM نیز دارد پس شما میبایست فایل نصبی مخصوص ARM را دانلود و سپس اکسترکت کنید.wget https://download-cdn.getsync.com/stable/linux-arm/BitTorrent-Sync_arm.tar.gzبرای دسترسی به WebUI در شبکه LAN و یا اینترنت دستور زیر را اجرا نمایید :./btsync –webui.listen 0.0.0.0:8888در این حالت نیز نیازی به نصب Nginx reverse proxy و SSL certificate روی RPi ندارید.Autostartبرای اینکه اجازه دهیم BitTorrent Sync بعد از بوت شدن سیستم بصورت خودکار شروع به کار نماید cron job تعریف میکنیم.crontab -eسپس خط زیر را به آن اضافه میکنیم.@reboot /path/to/btsync –webui.listen 0.0.0.0:8888فراموش نکنید که path/to/btsync را با مسیر واقعی خود جایگزین نمایید.اگر btsync نیاز دارد که تنها روی 127.0.0.1 شنود کند قسمت0.0.0.0:8888 را حذف نمایید.پشتیبان گیری رو هیچوقت فراموش نکنید!اگر این مطلب را  دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 30 Jun 2018 10:14:08 +0430</pubDate>
            </item>
                    <item>
                <title>نصب Let’s Encrypt روی Nginx</title>
                <link>https://virgool.io/sadeghkhademi/installing-a-lets-encrypt-certificate-on-nginx-server-k0aqbnzv5gea</link>
                <description> گواهینامه های SSL ارتباطات امن و رمزگذاری شده بین یک وب سایت و یک مرورگر اینترنتی را فراهم می کند. SSL مخفف Secure Sockets Layer است و پروتکلی است که رمزگذاری را فراهم می کند. گواهینامه های SSL به طور معمول در صفحاتی که کاربران نهایی نیاز به ارسال اطلاعات حساس در اینترنت مانند جزئیات کارت اعتباری یا کلمه عبور دارند استفاده میشود. به عنوان مثال صفحات پرداخت، فرم های آنلاین و صفحات ورود به سیستم.Let’s Encrypt یک پروژه است که توسط بنیاد Electronic Frontier Foundation، موزیلا، Akamai، دانشگاه میشیگان و سیسکو پشتیبانی می شود. این یک گواهینامه کاملا خودکار و آزاد است که هدف رمزگذاری کل وب را دارد. یک راه ساده، امن، سریع و آزاد برای خودکار کردن همه چیز در گواهینامه SSL/TLS از جمله ساخت، نصب و تجدید گواهینامه است. از اکتبر 2015، مرورگرهای اصلی، گوگل کروم، موزیلا فایرفاکس، مایکروسافت Edge، سافاری، اپرا Let’s Encrypt را پشتیبانی میکنند.در این آموزش، از Certbot برای دریافت یک گواهینامه SSL رایگان برای Nginx در اوبونتو 16.04 استفاده خواهیم کرد و گواهینامه خود را به صورت خودکار تمدید خواهید کرد.پیش نیاز ها :سرور ubuntu 16.04 :  این آموزش بر اساس سرور Ubuntu میباشددامنه ی ثبت شده، در این آموزش از دامنه domain.com استفاده میکنیمانجام تنظیمات DNSNginx نصب گرددنصب  Certbotاولین قدم در نصب Let’s Encrypt برای تهیه گواهی SSL نصب Cerbot بر روی سرور میباشد.ابتدا مخزن را به سرور اضافه نمایید :$sudo add-apt-repository ppa:certbot/certbotسپس بسته ها را آپدیت نمایید :$sudo apt-get updateدر نهایت بسته ی Certbot را نصب نمایید :$sudo apt-get install python-certbot-nginxحالا Cerbot آماده استفاده است، اما برای اینکه بتوانیم SSL را برای Nginx پیکربندی کنیم، باید برخی از تنظیمات Nginx را بررسی کنیم.راه اندازی NginxCertbot به طور خودکار SSL را برای Nginx پیکربندی میکند، اما باید بتواند سرور را در پیکربندی خود پیدا کند، که این کار را بر اساس Server-name دامنه ای که گواهینامه را برای آن میخواهید ایجاد نمایید انجام میدهد.اگر Nginx را تازه نصب کرده اید میتوانید تنظیمات پیش فرض را با استفاده از ویرایشگر مورد علاقه خود تغییر دهید.$sudo vim /etc/nginx/sites-available/defaultخطی که شامل server_name میباشد را پیدا کنید و مقادیر را با نام دامنه ی خود جایگزین نمایید :server_name domain.com www.domain.com;فایل ذخیره کنید و خارج شوید. سپس با استفاده از دستور زیر syntax تنظیمات خود را بررسی نمایید :$sudo nginx -tاگر syntax تنظیمات درست بود Nginx را reload نمایید :$sudo systemctl reload nginxتنظیمات HTTPS در فایروالاگر شما هم مثل من از ufw استفاده میکنید که تنها کافی است ufw را فعال کنید، nginx در هنگام نصب برخی از تنظیمات مورد نیاز خود را در فایروال اعمال میکند.با استفاده از دستور زیر میتوانید وضعیت فایروال را بررسی نمایید :$sudo ufw status دریافت گواهینامه SSLCertbot راه های مختلفی را برای دریافت گواهینامه از طریق پلاگین فراهم میکند.با استفاده از دستور زیر پلاگین nginx را به همراه نام دامنه ای که میخواهیم گواهینامه برای آن ساخته شود را ایجاد میکنیم.$sudo certbot --nginx -d domain.com -d www.domain.comاگر برای اولین بار است که Certbot را اجرا میکنید از شما میخواهد که آدرس ایمیل را وراد کنید و شرایط سرویس را بپذیرید، بعد از این Certbot با سرور Let’s Encrypt ارتباط برقرار میکند و تایید میکند که شما دامنه ای که قصد دارید برای آن گواهینامه صادر شود را کنترل میکنید.اگر موارد بدون مشکل پیش برود، Certbot  از شما میپرسد که چگونه تنظیمات HTTPS را انجام دهد.Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you&#039;re confident your site works on HTTPS. You can undo this
change by editing your web server&#039;s configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press &#039;c&#039; to cancel):گزینه مورد نظر خود را انتخاب کنید و Enter کنید.سپس تنظیمات بروزرسانی میشود و سرویس nginx را reload میکند، سپس Certbot با نمایش پیغامی موفقیت آمیز بودن ایجاد گواهینامه و ذخیره آن را اعلام میکند.تایید خودکار نوسازیگواهینامه های Let’s Encrypt برای 90 روز معتبر هستند.بسته Certbot که نصب کردیم دوبار در روز با اجرای certbot renew با استفاده از systemd timer این کار را انجام میدهد.برای سیستم های non-systemd این قابلیت توسط یک اسکریپت که در /etc/cron.d  قرار دارد انجام میشود.برای تست فرایند نوسازی میتوانید دستور زیر را اجرا نمایید$sudo certbot renew --dry-runاگر هیچ خطایی نداد به این معنیست که به درستی کار میکند، Certbot  گواهینامه را نوسازی میکند و nginx را reload میکند.اگر نوسازی گواهینامه انجام نشود Let’s Encrypt’s برای شما ایمیل میفرستد و منقضی شدن گواینامه را به شما اطلاع خواهد داد.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 30 Jun 2018 10:08:22 +0430</pubDate>
            </item>
                    <item>
                <title>بازیابی رمز عبور ESXi</title>
                <link>https://virgool.io/sadeghkhademi/reset-esxi-password-vhgblztzqngq</link>
                <description> در شرایط مختلفی این امکان وجود دارد که نیاز داشته باشید پسورد ESXi را بازیابی کنید که برای انجام این کار روش های متفاوتی وجود دارد اما نکته ی مهمی که در بازیابی رمز عبور وجود دارد حفظ اطلاعاتی است که روی سرور وجود دارد!در واقع به عنوان مدیرشبکه باید این توانایی را داشته باشید تا بدون از دست دادن اطلاعات موجود بر روی سرور رمزعبور را بازیابی نمایید !!!برای بازیابی رمز عبور Esxi چندین روش وجود دارد که در این آموزش همه روش ها رو با هم بررسی میکنیم.بازیابی به کمک Active Directory (پیش گیری بهتر از درمان است )بازیابی با استفاده از یک سیستم عامل live مانند ubuntu ( مسئولیت انجام این کار با خودتان است، اگر با دقت و بدون اشتباه انجام دهید جواب میگیرید(شاید)، در غیر اینصورت احتمال از بین رفتن اطلاعات وجود دارد)نصب مجدد ESXi (این روش مورد تایید VMware میباشد، این روش را 100% تضمین میکنم، بدون درد و خون ریزی و هیچگونه ریسک میتونید با حفظ اطلاعات موجود رمز را بازیابی نمایید)مطلب رو تا انتها بخوانید همیشه اولین انتخاب بهترین انتخاب نیست.بازیابی به کمک Active Directoryهمواره Active Directory به عنوان یک کنترل کننده مرکزی در خیلی از موارد از جمله بازیابی رمز عبور سیستم های عضو این سرویس نجات بخش خواهد بود.در مطلب ” نحوه‌ی عضویت ESXi در Active directory ” چگونگی عضو کردن ESXi در AD را بررسی کرده ایم، پس اگر با این موضوع آشنایی ندارید خواندن این مطلب رو از دست ندید.با استفاده از اکتیودایرکتوری و در قسمت Server Manager/Active Directory User and Computer رمز عبور کاربر را تغییر دهید.بازیابی با استفاده از یک سیستم عامل live مانند ubuntuدر این روش باید سرور را restart کنید، پس قبل از انجام این کار از ماشین مجازی خود بکاپ بگیرید و در محل مناسبی نگه دارید.CD و یا USB اوبونتو را به سرور وصل نمایید و سرور را reset کنید، boot سیستم را بر روی CD یا USB قرار دهید. سیستم را با استفاده از ubuntu live راه اندازی کنید :   ابتدا دسترسی root را بر روی سیستم فعال کنید سپس با استفاده از دستور – su  با کاربر root در ترمینال سویچ کنید :$ sudo passwd root
$ su – در صورتی که به صورت خودکار دیسک ها، داخل سیستم mount شده باشد مانند تصویر زیر :فایل state.tgz را در  tmp/ کپی کنیددر صورتی که دیسک ها بصورت خودکار به سیستم mount نشده اند با استفاده از دستور fdisk لیستی از دیسک ها را که به سیستم متصل است ببینید.#fdisk -lو با دستور mount دیسک های 250M را به سیستم اضافه کنید (این قسمت را بر اساس دیسک های خود انجام دهید) و از داخل یکی از این دیسک ها فایل state.tgz را به محل دلخواه ( مثلا tmp/ ) کپی کنید. (بسته به میزان اطلاعات حجم فایل ممکن است متغیر باشد)#mount          محلی که دیسک اضافه می شود            آدرس دیسکی که می خواهیم اضافه کنیم بعد از کپی کردن فایل state.tgz در tmp/ آن را با دستورات زیر extract کنید.# tar xfs state.tgz وارد فایل etc که از فایل local خارج کردید شوید :  فایل shadow را با ویرایشگر مورد علاقه خود Edit کنید :  اطلاعات مربوط به root را بصورت زیر تغییر دهید :  حالا میبایست فایل etc را به حالت اول فشرده سازی کنید، برای انجام این کار دستورات زیر را استفاده کنید :#tar cfz local.tgz /etc
#tar czf state.tgs local.tgz  فایل state.tgz را که داریم در tmp/ به محلی که اول آن را از آنجا کپی کردید بر گردانید و به جای فایل اولی جایگزین نمایید. اگر دیسک mount کردید با دستور زیر آن را unmount کنید.  سیستم را دوباره با حالت هارد boot کنیدنکته مهم بعد از این که سیستم esxi راه اندازی شد با برنامه vsphere client حتما به آن متصل شده و پسورد جدید را وارد کنید.البته مد نظر داشته باشید برای اولین لاگین نیاز به پسورد ندارید و فیلد پسورد را خالی رها کنید. زمانی که login شدید پسورد root را به راحتی می توانید تغییر بدید.  بازیابی از طریق نصب مجدد ESXiCD installer را درون دستگاه قرار دهید و سیستم را با CD بوت کنید و طبق مراحل زیر با دقت عمل کنید !!!نصب ESXi را انتخاب کنید :  نکته بسیار مهم در انجام این فرایند در تصویر زیر مشخص شده است، دقت کنید که گزینه Install ESXi ,preserve VMFS datastore را انتخاب نمایید تا بدون حذف ماشین مجازی هایی که قبلا بر روی سیستم نصب بوده اند رمز عبور رو بازیابی نمایید : (به تصاویر زیر دقت کنید )  با انتخاب زبان فرایند را ادامه دهید :  قسمت جذاب فرایند تغییر پسورد است، در کادر زیر رمز عبور جدید را وارد نمایید  :  صبر پیشه کنید تا فرایند نصب کامل شود :  بعد از اتمام نصب و reset شدن سرور از طریق vSphere به سرور متصل شوید و VM هایی که قبلا بر روی سرور بودند را به inventory اضافه کنید، برای انجام این کار وارد تب Configuration شوید و Storage را انتخاب نمایید ، در سمت راست بر روی datastore کلیک راست کنید و brows را انتخاب نمایید. وارد دایرکتوری مربوط به ماشین مجازی مورد نظر شوید، بر روی ماشین با پسوند VMX کلیک راست کرده و گزینه Add to Inventory را انتخاب نمایید :  این فرایند را برای سایر ماشین های مجازی دیگر نیز انجام دهید.نکته : نصب مجدد ESXi بهترین روش برای بازیابی رمز عبور میباشد پس سراغ روش های دیگر نروید چون احتمال از دست دادن اطلاعات موجود بر روی سرور وجود دارد.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 30 Jun 2018 09:59:21 +0430</pubDate>
            </item>
                    <item>
                <title>HTTPS چگونه کار میکند ؟</title>
                <link>https://virgool.io/sadeghkhademi/how-does-https-work-gc9uzpvavzpq</link>
                <description> HTTPS بطور ساده همان پروتکل استاندارد HTTP میباشد که از لایه ی رمزنگاری /SSLTLS استفاده میکند. در واقع از رمز های عبور، جزییات کارت های اعتباری و بطور کلی تمام اطلاعات ارسالی بین کامپیوتر شما و سروری که میخواهید اطلاعات را برای آن ارسال کنید محافظت میکند. قفل سبز کوچک و حروف “https” در نوار آدرس به این معنی نیست که خطری اطلاعات شما و وبسایت هایی که مشاهده میکنید را تهدید نمیکند، آنها حداقل در برقراری ارتباط امن به شما کمک میکنند.HTTPS چیست و چه کاری انجام میدهد ؟HTTPS پروتکل HTTP مشهور و شناخته شده را می گیرد و لایه های رمزنگاری SSL/TLS (در ادامه به خلاصه SSL مطرح میشود)را به آن اضافه میکند. Server و سرویس گیرنده همچنان با استفاده از HTTP با همدیگر صحبت میکنند اما با استفاده از اتصال امن SSL که درخواست و پاسخ را تفکیک و رمزنگاری میکند. لایه ی SSL دو هدف اصلی دارد :تایید میکند شما بطور مستقیم به سروری متصل هستید که واقعا فکر میکنید به آن متصل شدید !مطمئن میشود که فقط سرور میتواند اطلاعاتی که شما ارسال میکنید را بخواند و فقط شما میتوانید اطلاعاتی که سرور ارسال میکند را بخوانید.واقعا قسمت هوشمندانه این است که هر کسی میتواند هر یک از پیام های شما را با سرور مبادله کند !(man in the middle https attack) اما همچنان قادر نیست که هیچ یک از اطلاعاتی که شما به سمت سرور ارسال میکنید را بخواند!!!جالب شد، پیام ها توسط هکر قابل دیدن است ولی نه به شکلی که شما میبینید.عکس زیر به خوبی این موضوع را نشان میدهد. چگونه یک اتصال SSL برقرار میشود ؟اتصال SSL بین سرویس گیرنده و Server توسط  handshake شکل میگیرد که اهداف آن عبارتند از :مطمئن کردن سرویس گیرنده از اینکه با سرور درستی در حال تبادل میباشد.( بصورت اختیاری برعکس)توافق بر سر“cipher suite” که شامل انتخاب الگوریتم رمزنگاری برای تبادل اطلاعات میشودتوافق بر سر استفاده از کلید خاص برای الگوریتم توافق شدهبعد از اینکه  اتصال برقرار شد هر دو طرف میتوانند از الگوریتم و کلید های توافق شده برای ارسال پیام امن برای طرف مقابل اقدام کنند. ما handshake  را به 3 قسمت اصلی تقسیم می کنیم :Hello, Certificate Exchange, Key ExchangeHello : کاربر با ارسال پیام ClientHello فرآیند handshake را شروع میکند. این شامل تمام اطلاعاتی است که Server برای اتصال به سرویس گیرنده از طریق SSL نیاز دارد، که شامل “cipher suite” و بالاترین ورژن SSL که پشتبانی میکند میباشد.Server با استفاده از ServerHello پاسخ میدهد که مشابه همان اطلاعاتی است که سرویس گیرنده نیاز دارد، از جمله تصمیم گیری بر اساس ترجیحات سرویس گیرنده درباره cipher suite و ورژن SSL مورد استفاده است.Certificate Exchange : حالا اتصال برقرار شده و سرور می‌بایست هویت خود را به کاربر ثابت نماید.این اتفاق با استفاده از SSL Certificate صورت میپذیرد. SSL certificate شامل نام صاحب، ویژگی ( به عنوان مثال دامنه ) که به آن متصل است، کلید عمومی certificate، امضاء دیجیتال و اطلاعاتی درباره تاریخ انقضاء گواهینامه میباشد.سرویس گیرنده چک میکند که به گواهینامه اعتماد دارد، یا اینکه توسط یکی از چندین Certificate Authorities تایید شده و مورد اعتماد قرار گرفته است !!! توجه داشته باشید که سرور همچنین مجاز است برای اثبات هویت سرویس گیرنده گواهینامه درخواست کند، که این اتفاق در برنامه های حساس اتفاق می افتد.Key Exchange : رمزنگاری اطلاعات پیام مبادله شده توسط سرویس گیرنده و سرور با استفاده از الگوریتم متقارن انجام می شود که در مرحله Hello مطرح می شود.الگوریتم متقارن از یک کلید واحد برای رمزنگاری و رمز گشایی استفاده می کند، در مقایسه با الگوریتم های نامتقارن که نیاز به یک جفت کلید عمومی / خصوصی دارند.سرویس گیرنده یک کلید تصادفی به منظور استفاده از الگوریتم متقارن تولید میکند و آن را با استفاده از الگوریتمی که در قسمت Hello توافق شده بود و کلید عمومی سرور رمز نگاری میکند (کلید عمومی سرور در گواهی SSL موجود است).این کلید رمزنگاری شده به سرور ارسال می شود و در آنجا با استفاده از کلید خصوصی سرور رمز گشایی می شود و در اینجا قسمت جالب handshake کامل میشود.درخواست ها و پاسخ های HTTP اکنون میتواند بصورت پیام متنی ساده ایجاد و سپس رمزنگاری و ارسال شود.طرف مقابل تنها کسی است که میتواند پیام را رمز گشایی کند و هکر های MITM نمی توانند درخواست ها را بخوانند یا تغییر دهند.گواهینامه ها :اعتماد (Trust) : در ابتدایی ترین سطح گواهی SSL به سادگی یک فایل متنی است و هر کسی با استفاده از یک ویرایشگر متن میتواند آن را ایجاد کند.در واقع شما میتوانید گواهینامه ای بسازید و ادعا کنید که Google Inc هستید و دامنه ی gmail.com را کنترل میکنید(اگر همچین چیزی وجود داشت که SSL فقط یه جک بود.)2 دلیل منطقی وجود دارد که می توانید به یک گواهی اعتماد کنید:آن در لیست گواهینامه های مورد اعتماد شما باشدمورد اعتماد یکی از کنترل کننده های گواهینامه ها باشدبررسی معیار اول راحت هست، مرورگر شما یک لیست از پیش نصب شده ی گواهینامه های SSL معتبر Certificate Authorities را دارد که می توانید آن را مشاهده، اضافه و حذف کنید. این گواهینامه ها توسط یک گروه متمرکز (به صورت تئوری و عموما در عمل) سازمان های بسیار امن، موثق و قابل اعتماد مانند Symantec ، Comodo  و GoDaddy کنترل می شوند. اگر سرور گواهینامه ای از این لیست ارائه دهد، می دانید که می توانید به آنها اعتماد کنید.معیار دوم بسیار سخت تر است، سرور به راحتی می گوید ” نام من مایکروسافت است، شما به Symantec اعتماد میکنید و آنها به من اعتماد دارند”. کاربر باهوش میتواند از Symantec بپرسد که ” مایکروسافت ادعا میکند که شما به آن اعتماد دارید،این حقیقت دارد ؟” اما حتی اگه Symantec بگوید “اره، ما آنها را میشناسیم و مایکروسافت قانونی است ” شما همچنان نمی توانید مطمئن شوید که سروری که ادعا میکند مایکروسافت است، واقعا مایکروسافت است.اینجاست که امضاء دیجیتال وارد عمل میشود.امضاء دیجیتال (Digital signatures): همانطور که قبلا ذکر شد، گواهینامه SSL دارای یک جفت کلید عمومی / خصوصی مرتبط است.کلید عمومی به عنوان بخشی از گواهی توزیع می شود و کلید خصوصی فوق‌العاده ایمن نگهداری می شود.این جفت کلید نامتقارن در SSL handshake برای تبادل کلید های بعدی هر دو طرف به منظور رمزنگاری و رمز گشایی متقارن مورد استفاده قرار میگیرد.سرویس گیرنده از کلید عمومی سرور برای رمزنگاری کلید متقارن استفاده می کند و آن را امن  به سرور ارسال می کند و سرور از کلید خصوصی برای رمزگشایی آن استفاده می کند.هر کسی میتواند با استفاده از کلید عمومی رمزنگاری کند ولی فقط سرور است که میتواند با استفاده از کلید خصوصی آن را رمزگشایی کند.یک گواهینامه میتواند توسط دیگری “signed” شود و بیان شود “ما تأ‌یید کردیم که کنترل کننده این گواهی نیز مالکیت (دامنه) را که در گواهی وجود دارد، کنترل می کند”.در این مورد، authority از کلید خصوصی خود برای رمزنگاری محتویات گواهی استفاده می کند و cipher text به عنوان امضاء دیجیتال آن به گواهی متصل است.هر کسی می تواند این امضا را با استفاده از کلید عمومی رمزگشایی کند اما تنها authority می تواند محتوا را با استفاده از کلید خصوصی رمزنگاری کند و بنابراین تنها authority می تواند در وهله اول یک امضاء معتبر ایجاد کند.بنابراین اگر یک سرور همراه با داشتن ادعای یک گواهی برای Microsoft.com که توسط Symantec (یا برخی دیگر CA) امضا شده باشد مرورگر شما مجبور نیست که درخواست را اجرا نماید.در صورتی که قانونی باشد، Symantec از کلید خصوصی خود (ultra-secret) برای تولید امضاء دیجیتال گواهی SSL سرور استفاده خواهد کرد، بنابراین مرورگر شما می تواند از کلید عمومی (ultra-public) خود برای بررسی اعتبار این امضاء استفاده کند.Symantec نیز اقدامات لازم را برای اطمینان از اینکه سازمانی که  امضای مایکروسافت را انجام داده واقعا خود مایکروسافت است انجام میدهد، به همین ترتیب با توجه به اعتمادی که Client به Symantec میکند می توانید مطمئن باشید که واقعا با شرکت مایکروسافت ارتباط گرفته اید.Self-signingتوجه داشته باشید که تمام گواهینامه های root CA از نوع “self-signed” هستند، به این معنی که امضای دیجیتال با استفاده از کلید خصوصی خود گواهی تولید می شود.هیچ چیز خاصی در مورد گواهینامه های root CA وجود ندارد، شما اگر بخواهید  میتوانید گواهی خود را امضا کنید و از آن برای امضای گواهی های دیگر استفاده کنید.اما از آنجایی که گواهی شما به عنوان یک CA به هیچ وجه در مرورگر قابل بارگیری نیست، هیچکدام از مرورگرها به شما اعتماد نمی کنند که گواهی های خود و دیگران را امضا کنید.این باعث می شود مسئولیت بسیار زیادی بر تمام مرورگرها و سیستم عامل ها برای اعتماد به root CA ها وجود داشته باشد.شما به چی اعتماد دارید؟جالب است که سرویس گیرنده از لحاظ فنی سعی در تأ‌یید اینکه آیا باید به طرف مقابل که گواهی فرستاده است اعتماد کند یا نه نمی کند، اما باید به کلید عمومی موجود در گواهی اعتماد کرد.گواهینامه های SSL کاملا باز و عمومی هستند، بنابراین هر هکری می تواند گواهینامه مایکروسافت را بگیرد، درخواست Client را به مایکروسافت برگرداند و گواهینامه قانونی را به آن ارائه دهد.Client قبول میکند و با خوشحالی handshake را شروع میکند.با این حال، هنگامی که مشتری کلید را که برای رمزنگاری استفاده می شود، با استفاده از کلید عمومی واقعی مایکروسافت که از این گواهی بدست آمده است، رمزنگاری می کند و از آنجا که هکر دارای کلید خصوصی مایکروسافت نمیباشد قادر به رمزگشایی اطلاعات نیست.حتی اگر handshake کامل شود همچنان آنها قادر به رمزگشایی کلید نخواهند بود در نتیجه قادر به رمزگشایی اطلاعات تبادل شده نخواهند بود.مشکل زمانی بوجود می آید که هکر کلید خصوصی را در اختیار داشته باشد، در این حالت کلیه اطلاعات قابل رمزگشایی میباشد.حقایق با حالآیا صاحب  کافی شاپ میتواند ترافیک https من را که از شبکه آن عبور میکند مانیتور کند ؟جواب منفی است، رمزنگاری public-key بدان معنی است که هر هکری میتواند هر بایت داده ای که بین سرویس گیرنده و سرور مبادله میشود را تماشا کند اما هیچ ایده ای ندارد که شما در حال تبادل چه اطلاعاتی هستید.با این حال، ترافیک HTTP معمولی شما هنوز در شبکه wifi ناامن و بسیار آسیب پذیر است. به عنوان مثال، حتی اگر یک فرم ورودی نام کاربری / رمز عبور را بر روی HTTPS ارسال کند، اگر فرم خود به طور غیرمستقیم بر روی HTTP بارگذاری شده باشد، هکر می تواند فرم HTML را در مسیر خود به دستگاه شما جایگزین کند و آن را تغییر دهد تا جزییات ورود را به وی ارسال کند.آیا شرکت میتواند ترافیک https من را مانیتور کند ؟اگر شما از یک دستگاه تحت کنترل شرکت استفاده میکنید، پس بله، شرکت میتواند ترافیک شما را مانیتور کند.به یاد داشته باشید در هر رنجیره ی CA مورد اعتماد،  یک CA مورد اعتماد شناخته میشود و لیبستی از authoritie ها را در مرورگر شما ذخیره میکند.شرکت شما میتواند از دسترسی خود به دستگاه شما برای اضافه کردن گواهی نامه ی self-signed خود به این لیست اقدام کند.از آنجا که شما تمام درخواستهای HTTPS خود را با استفاده از کلید عمومی گواهینامه دلخواه خود رمزنگاری می کنید آنها می توانند از کلید خصوصی مربوطه برای رمزگشایی و بازبینی (حتی اصلاح) درخواست شما استفاده کنند و سپس آن را به محل مورد نظر ارسال کنند.آنها احتمالا این کار را نمی کنند ولی میتوانند.به هر حال، این نحوه استفاده از یک پروکسی برای بازبینی و اصلاح درخواستهای HTTPS ساخته شده توسط یک برنامه آیفون است.داستان Lavabit و FBI چی هست ؟Lavabit ارائه دهنده ایمیل فوق العاده امن در طول افشاگری های ادوارد اسنودن درباره NSA در سال 2013 بود.بدون کلید خصوصی گواهی Lavabit ،آژانس هیچ کاری نمیتوانست بکند و در نتیجه به اطلاعات کاربران Lavabit (از جمله ادوارد اسنودن که از کاربران Lavabit بود) دسترسی نداشتند. با این حال یک قاضی ایالت متحده به بنیانگذار Lavabit گفته بود که باید این کلید را تحویل دهد و به FBI اجازه دهد که ترافیک را برای جاسوسی به مراکز داده ای خود منتقل کند.Levison سعی کرد که قضیه را با استفاده از ۲۵۶۰ کاراکتر از کلید بصورت پرینت شده بر روی کاغذ جمع بکند اما دادگاه به وی گفته بود که یا بصورت موثر با FBI همکاری کند و یا اینکه روزی ۵۰۰۰ دلار تا آخرین روز زنده بودنش پرداخت کند.که Levison این کار را نکرد، پس از آن GoDaddy گواهی Lavabit را لغو کرد، با این کار گواهینامه ی Lavabit به لیست لغو گواهی (CRL) اضافه شد( CRL در واقع یک لیست از گواهی های نامعتبر که سرویس گیرنده ها نباید به آنها اعتماد کنند میباشد).گواهی های self-signed یا untrustworthy باعث میشوند که مرورگر ها یک پیغام خطای بزرگ قرمز را نمایش دهند تا کاربر را اقدامات بعدی منع کنند.متاسفانه مرورگر ها به اعتماد کردن به گواهینامه های نامعتبر تا زمانی که جدیدترین بروزرسانی های CRL انجام نشود ادامه میدهند.نتیجه گیری :HTTPS غیر قابل شکستن است و پروتکل SSL بطور دائم در حال تکامل است زیرا حملات جدید علیه آن کشف میشود اما هنوز راه قابل ملاحضه ای برای انتقال داده ها بطور مخفی از دید کسانی که میخواهند اطلاعات شما را ببیند هست.خیلی جزییات پیاده سازی مثل فرمت دقیق پیام های handshake  اینجا ذکر نشده است.نکته کلیدی که باید به یاد داشته باشید این است که در حالی که HTTPS اطلاعات را امن نگه می دارد، به هیچ وجه از شما (به عنوان یک کاربر یا توسعه دهنده) در برابر  XSS و یا نشت داده های پایگاه داده یا هر چیز دیگری جلو گیری نمیکند.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 30 Jun 2018 09:32:57 +0430</pubDate>
            </item>
                    <item>
                <title>نصب و پیکر بندی Samba Server روی Ubuntu 16.04</title>
                <link>https://virgool.io/sadeghkhademi/install-samba-server-nz0bbemzaaye</link>
                <description> در این آموزش قصد داریم نحوه نصب و پیکر بندی Samba Server را بر روی سیستم عامل Ubuntu 16.04 آموزش دهیم.Samba نرم افزار رایگان و متن باز پروتکل SMB/CIFS است که برای سیستم های UNIX/LINUX توسعه داده شده و امکان اشتراک گذاری فایل و پرینتر ها را بین سیستم های UNIX/LINUX و همچنین Windows را در یک شبکه local فراهم میکند.Samba شامل برنامه های متععدی است که خدمات متفاوتی را عرضه میکنند، اما مهم ترین های آنها عبارتند از :smbd : سرویس SMB/CIFS را فراهم میکند (File Sharing – Printing ) همچنین میتواند به عنوان windows domain controler عمل کند.nmbd : سرویس NetBIOS name را فراهم میکند.همچنین این امکان را به Samba Server میدهد که توسط سایر کامپیوتر ها در شبکه دیده شود.نصب Samba Server روی Ubuntuبسته Samba در اکثر توزیع های لینوکسی وجود دارد لذا برای نصب تنها کافی است دستور زیر را در ترمینال وارد نمایید :nix@samba-server:~$ sudo apt install samba samba-common-binبا استفاده از دستور زیر میتوانید ورژن Samba را چک کنید :nix@samba-server:~$ sudo smbstatus
OR
nix@samba-server:~$ smbd –versionبرای بررسی وضعیت سرویس Samba دستور زیر در ترمینال وارد کنید :nix@samba-server:~$ systemctl status smbd
nix@samba-server:~$ systemctl status nmbdبرای شروع به کار کردن این دو سرویس دستورات زیر را وارد نمایید :nix@samba-server:~$ sudo systemctl start smbd
nix@samba-server:~$ sudo systemctl start nmbdSmbd برروی پورت TCP 135 و TCP 445 و همچنین سرویس nmbd بر روی پورت UDP 137 و UDP 138 کار میکنند.TCP 139: file and printer sharing
TCP 445: NetBIOS-less CIFS port
UDP 137: NetBIOS network browsing
UDP 138: NetBIOS name serviceساخت Samba Share اختصاصیدر این قسمت با ساخت Samba share اختصاصی آشنا میشویم که کاربران برای دسترسی به محتویات آن میبایست از نام کاربری و رمز عبور استفاده کنند.فایل اصلی حاوی تنظیمات samba درetc/samba/smb.conf قرار دارد که میتوانید با ادیتور مورد علاقه خود آن را ویرایش کنید.nix@samba-server:~$ sudo vim /etc/samba/smb.confدر قسمت [global] مطمئن شوید که مقدار workgroup با تنظیمات کامپیوتر های ویندوزی یکسان میباشد. برای پیدا کردن تنظیمات در کامپیوتر های ویندوزی میتوانید به آدرس زیر بروید :Control Panel &gt; System and Security &gt; System به آخر فایل بروید و قسمت جدید [Private] را ایجاد کنید.(اگر از vim استفاده میکنید با میانبر G و اگر از nano استفاده میکنید با میانبر CTRL+W سپس CTRL+V به آخر متن بروید)[Private]
comment = needs username and password to access
path = /srv/private/
browseable = yes
guest ok = no
writable = yes
valid users = @sambaتوضیحات :Private : اسم دایرکتوری خواهد بود که کاربران به آن دسترسی خواهند داشت.comment : یک توضیح برای دایرکتوری به اشتراک گذاشته شده میباشد.Path : آدرس دایرکتوری است که قصد به اشتراک گذاری آن را داریم، srv/private تنها یک مثال است.شما میتوانید یک دایرکتوری در home خود ایجاد نمایید.browseable = yes: این گزینه به کاربران این امکان را میدهد کامپیوتر ها درون شبکه بتوانند Samba Server و Share Directory را پیدا کنند، اگر این گزینه برابر با no باشد کاربران میبایست اسم Samba Server را بدانند.guest ok = no: دسترسی مهمان را غیر فعال کنید، در واقع کاربر میبایست نام کاربری و پسورد را وارد کند تا بتواند به محتویات دسترسی داشته باشد.writable = yes:به کاربران امکان خواندن و نوشتن را میدهیم.valid users = @samba: فقط کاربران عضو گروه samba قابلت دسترسی به Samba Server رو دارند.فایل را ذخیره و خارج شوید. حالا باید کاربر samba بسازیم.ابتدا باید یه کاربر استاندارد لینوکس ایجاد کنیم.در دستور زیر username را با نام کاربری مورد نظر خود جایگزین نمایید.nix@samba-server:~$ sudo adduser smbusسپس نیاز داریم که پسورد مجزای samba را برای این کاربر در نظر بگیریم.nix@samba-server:~$ sudo smbpasswd -a smbusبا استفاده از دستور زیر گروه samba را ایجاد میکنیم :nix@samba-server:~$ sudo groupadd sambaکاربر را به گروه samba اضافه میکنیمnix@samba-server:~$ sudo gpasswd -a smbus samba با استفاده از دستور زیر دایرکتوری share را ایجاد میکنیم :nix@samba-server:~$ sudo mkdir /srv/private/گروه samba باید مجوز read, write ,execute را به دایرکتوری به اشتراک گذاشته شده را داشته باشه، برای انجام این کار دستور زیر را در ترمینال وارد نماییدnix@samba-server:~$ sudo setfacl -R -m “g:samba:rwx” /srv/private/با اجرای دستور زیر میتوانید چک خطای syntax را چک نمایید :nix@samba-server:~$ Testparmnixدر نهایت سرویس samba را با استفاده از دستور زیر restart نمایید :nix@samba-server:/root$ sudo systemctl restart smbd nmbdساخت Samba Public Share بدون احراز هویتبرای ساخت samba public share بدون نیاز به نام کاربری و رمز عبور شرایط زیر را در قسمت [global] باید در نظر گرفت.security = user : البته میتوانید security = share قرار دهید ولی این روش منسوخ شده است و توصیه میکنم از حالت share جداً اجتناب کنید.map to guest = bad user : این باعث میشود smbd از guest account برای احراز هویت کاربرانی که در سرور حساب کاربری ندارند استفاده نماید.از آنجایی که کاربر guest میباشد نیاز به وارد کردن پسورد ندارد.guest ok = yesاعطای دسترسی read, write ,execute به گروه nobody که در واقع حساب پیش فرض guest میباشد.نکته : بصورت پیش فرض samba دو شرط اول را استفاده میکند.ابتدا فایل تنظیمات Samba را با ویرایشگر مورد نظر خود باز نمایید :nix@samba-server:/root$ sudo vim /etc/samba/smb.confدر قسمت [global] مطمئن شوید که مقدار workgroup با تنظیمات کامپیوتر های ویندوزی یکسان میباشد. برای پیدا کردن تنظیمات در کامپیوتر های ویندوزی میتوانید به آدرس زیر بروید :Control Panel &gt; System and Security &gt; System به آخر فایل بروید و قسمت جدید [public] را ایجاد کنید.(اگر از vim استفاده میکنید با میانبر G و اگر از nano استفاده میکنید با میانبر CTRL+W سپس CTRL+V به آخر متن بروید)[public]
comment = public share, no need to enter username and password
path = /srv/public/
browseable = yes
writable = yes
guest ok = yes فایل را ذخیره و خارج شوید.سپس دایرکتوری srv/public را ایجاد نمایید :nix@samba-server:/root$ sudo mkdir /srv/publicسپس مطمئن شوید که گروه nobody دسترسی read, write and execute را این دایرکتوری دارد، با استفاده از دستور زیر میتوانید دسترسی های لازم را ایجاد نمایید :nix@samba-server:/root$ sudo setfacl -R -m “u:nobody:rwx” /srv/public/حالا میبایست سرویس smbd و  nmbd را restart نمایید :nix@samba-server:/root$ sudo systemctl restart smbd nmbdدسترسی به Samba Server از طریق ویندوز :این کار را میتوانید از طریق تب Network در File Explorer انجام دهید یا اینکه در RUN آدرس/اسم samba server را وارد نمایید. زمانی که بر روی Private کلیک نمایید از شما نام کاربری و رمز عبور تعیریف شده در samba server را میخواهد.برای دسترسی به Public به نام کاربری و رمز عبور نیاز نخواهید داشت.نکته : اگر بطور همزمان دایرکتوری Private و Public را باز داشته باشید ممکن است امکان ساخت فایل یا دایرکتوری جدید را نداشته باشید.خطا های احتمالی :اگر با خطای زیر برخورد کردید سعی کنید که از طریق CMD به samba متصل شوید.Error : You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.دستور زیر را در CMD وارد نمایید تا کانکشن بازی که هم اکنون وجود دارد را ببندد :net use \\hostname\share-name /deleteسپس با استفاده از دستور زیر به Samba Server تصل شوید:net use \\hostname\share-name /user:samba-username passwordبعد از اجرای این دستو قادر خواهید بود در تب Network در File Explorer به دایرکتوری های به اشتراک گذاشته شده ی samba دسترسی داشته باشید.دسترسی به Samba Server از طریق Ubuntu :در File Manager خود بر روی تب Network در پنل سمت چپ کلیک نمایید سپس Windows Network را انتخاب نمایید. سپس Workgroup ، آدرس سرور، نام کاربری و پسورد را در پنجره باز شده وارد نمایید.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 30 Jun 2018 09:30:12 +0430</pubDate>
            </item>
                    <item>
                <title>نحوه‌ی عضویت ESXi در Active Directory</title>
                <link>https://virgool.io/sadeghkhademi/join-esxi-to-active-directory-ey1zgkkxvsop</link>
                <description> ESXi از روش های مختلف احراز هویت پشتیبانی میکند که یکی از آنها Active  Directory است. در واقع شما میتوانید AD را به عنوان مکانیزم احراز هویت به  vSphere اضافه کنید.خیلی از مواقع از کاربر root به عنوان اشتراکی بین ادمین ها استفاده  میشود که این موضوع باعث ایجاد  ضعف امنیتی می گردد، به عنوان مثال هرکدام  از کاربرانی که دسترسی root دارند میتوانند رمزعبور را بدون اطلاع به  دیگران تغییر دهند!در این پست نحوه عضویت ESXi را به Active Directory خواهیم داشت که برای انجام این فریضه به پیش نیاز های زیر نیاز خواهیم داشت.DNS در ESXi میبایست AD Domain controller  و همچنین Domain Name را برگرداند (DNS را در ESXi به سرور AD تغییر دهید )host name در ESXi میبایست fully qualified و شامل نام دامنه باشد، به عنوان مثال esxitest1.4nix.netزمان بین ESXi و سرور AD میبایست یکسان باشد.(تنظیمات NTP را انجام دهید)باید مطمئن شوید که تنظیمات DNS همچون دامنه، preferred DNS server یا  Search Domains را به درستی تنظیم کرده اید.همچنین باید مطمئن شوید که DNS  server شما static forward و reverse DNS records را برای هاست ایجاد کرده و  NTP هم باید مورد بررسی قرار بگیرد. پیکربندی صحیح آن بسیار مهم خواهد  بود.قبل از فعال سازی Active Directory credentials میبایست ESXi را به  دامین کنترلر اضافه کنیم. برای انجام این کار کافی است  vSphere Web Client  را باز کنیم و در منو Hosts and Clusters را انتخاب کنیم.سپس ESXi را انتخاب میکنیم :وارد تب Manage شده در پنل سمت چپ Authentication Services را انتخاب نمایید و دکمه Join Domain را انتخاب نمایید :نام دامنه، نام کاربری و پسورد ادمین دامنه را وارد نمایید :سپس چک کنید که اطلاعات صحیح باشد :همچنین در سرور Active Directory باید چک کنید که مطمئن شوید ESXi عضو شده است، برای این کار به آدرس زیر برید :Server Manager/Active Directory User and ComputervSphere Client را باز کنید و با root به آن لاگین کنید :از پنل سمت چپ host رو انتخاب کنید، سپس وارد تب configuration بشید، بر  روی Authentication Services کلیک کنید و اطلاعات Active Directory و  Domain Name را بررسی کنید :خب حالا permission را اضافه میکنیم، وارد تب permission a شوید و در قسمت خالی کلیک راست کنید و Add Permission را انتخاب نمایید :از منوی کشویی دامنه مورد نظر را انتخاب نمایید :از منوی Users and Groups گروه Administrator را انتخاب نمایید و روی Add کلیک نمایید :خب همونطور که در عکس زیر میبینید Active Directory user’s group فعال شده :خب الان میتوانید با کاربر AD به vSphere Client  لاگین نمایید :</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Sat, 30 Jun 2018 09:19:36 +0430</pubDate>
            </item>
                    <item>
                <title>نصب و کانفیگ Bind9 در Ubuntu/Debian</title>
                <link>https://virgool.io/sadeghkhademi/install-bind-dplxkrwlrhwo</link>
                <description>سرویس DNS یا Domain Name System همانظور که میدانیم سرویس اینترنتی است که ترجمه دامنه را به IP انجام میدهد.با استفاده از DNS نه تنها میتوانیم دامنه را به IP ترجمه کنیم بلکه میتوانیم IP را نیز به دامنه ترجمه کنیم.در این آموزش نصب و تنظیمات DNS Server بر پایه BIND را روی Ubuntu بررسی خواهیم کرد.عبارت BIND = Berkeley Internet Name Domain تقریباً برای همه توزیع های لینوکس در دسترس میباشد و این امکان را به ما میدهد که اطلاعات DNS را در اینترنت منتشر کنیم. این آموزش بر اساس اطلاعات زیر پیش خواهد رفت : Bind Server IP : 192.168.1.100
 Domain Name : 4nix.localPrivate
 Network : 192.168.1.0/24 نصب BIND9 روی Ubuntu :برای نصب BIND به این ابزار های نیاز داریم : bind9 bind9utils bind9-doc dnsutilsدستور زیر را در ترمینال وارد نمایید :sudo apt-get install bind9 bind9utils bind9-doc dnsutilsبعد از اینکه تمام بسته های نصب شد به سراغ کانفیگ کردن BIND میریم.ابتدا Bind رو برای IPv4 تنظیم میکنیم، برای انجام این کار فایل “etc/default/bind9” را ویرایش و “۴-” را به OPTIONS اضافه میکنیم.فایل نهایی باید شبیه زیر باشد. تمام فایل های کانفیگی در دایرکتوری etc/bind/ قرار دارند.یکی از فایل های کانفیگی مهم برای bind فایل “/etc/bind/named.conf.options“ هست، در این فایل میتوانیم مشخص کنیم :درخواست ها از Private Network به سمت سرور ارسال شوندسرور recursive یا Non-recursive عمل کندپورت DNS را مشخص کنیم (53)Forwarders ها را مشخص کنیم ( زمانی که DNS سرور قادر به پیدا کردن جواب درسخواست نباشد درخواست را به سمت Forwarders ها ارسال میکند)بر اساس شبکه داخلی خودم پارامتر های زیر را در نظر گرفتم :sudo vim /etc/bind/named.conf.options options {
 directory “/var/cache/bind”;
 auth-nxdomain no;    # conform to RFC1035
 // listen-on-v6 { any; };
 listen-on port 53 { localhost; 192.168.1.0/24; };
 allow-query { localhost; 192.168.1.0/24; };
 forwarders { 8.8.8.8; };
 recursion yes;
 };فایل کانفیگ مهم بعدی “/etc/bind/named.conf.local“ هست، در این فایل ما zone های مربوط به دامنه  را تعریف میکنیم.فایل را باز کنید و موارد زیر را به فایل اضافه کنید :sudo vim named.conf.local zone    “۴nix.local”   {
 type master;
 file    “/etc/bind/forward.4nix.local”;
 };
 zone   “1.168.192.in-addr.arpa”        {
 type master;
 file    “/etc/bind/reverse.4nix.local”;
 };فایل را ذخیره کنید و از آن خارج شوید.ما در اینجا محل فایل forward lookup zone و reverse lookup zone را مشخص کردیم، قدم بعدی ساخت این فایل ها میباشد.اول فایل forward lookup zone را ایجاد میکنیم، فایل db.local به عنوان فایل نمونه zone در آدرس ‘/etc/bind folder‘ موجود میباشد، فایل نمونه را کپی و با توجه به نیاز تغییر میدهیم استفاده کنیم. sudo cp db.local forward.4nix.local
 sudo vim forward.4nix.local $TTL    604800
 @       IN      SOA     primary.4nix.local. root.primary.4nix.local. (
 6         ; Serial
 604820         ; Refresh
 86600         ; Retry
 2419600         ; Expire
 604600 )       ; Negative Cache TTL
 ;Name Server Information
 @       IN      NS      primary.4nix.local.
 ;IP address of Your Domain Name Server(DNS)
 primary IN       A      192.168.1.100
 ;Mail Server MX (Mail exchanger) Record
 ۴nix.local. IN  MX  10  mail.4nix.local.
 ;A Record for Host names
 www     IN       A      192.168.1.50
 mail    IN       A       192.168.1.60
 ;CNAME Record
 ftp     IN      CNAME    www.4nix.local.مطمئن شوید که این فایل را بر اساس شبکه خود تغییر داده اید.قدم بعدی ساخت فایل reverse lookup zone در همان دایرکتوری است که فایل forward lookup zone را ایجاد کردیم.فایل نمونه کانفیگ reverse lookup zone در دایرکتوری ‘/etc/bind‘ با نام db.127 قرار دارد. sudo cp db.127 reverse.4nix.local
 sudo vim /etc/bind/reverse.4nix.local $TTL    604800
 @       IN      SOA     4nix.local. root.4nix.local. (
 21         ; Serial
 604820         ; Refresh
 864500        ; Retry
 2419270        ; Expire
 604880 )       ; Negative Cache TTL
 ;Your Name Server Info
 @       IN      NS      primary.4nix.local.
 primary IN      A       192.168.1.100
 ;Reverse Lookup for Your DNS Server
 100      IN      PTR     primary.4nix.local.
 ;PTR Record IP address to HostName
 50      IN      PTR     www.4nix.local.
 60      IN      PTR     mail.4nix.local.فایل را ذخیره کنید و از آن خارج شوید.حالا میبایست سرویس را restart کنیم تا تغییرات اعمال شوند. sudo systemctl restart bind9
 sudo systemctl enable bind9نکته : در صورتی که فایروال فعال هست دستور زیر را وارد نمایید:sudo ufw allow 53اگر میخواهید syntax فایل کانفیگ bind9 را بررسی کنید (named.conf.local) میتوانید از دستور “named-checkconf” استفاده کنید.به عنوان مثال :sudo named-checkconf /etc/bind/named.conf.localاگر هیچ خطایی وجود نداشته باشد بدون هیچ خروجی مجدداً shell در اختیار شما قرار خواهد گرفت.برای چک کردن syntax در فایل های  forward و reverse lookup zone از دستور زیر “named-checkzone” استفاده میکنیم.مثال :sudo named-checkzone nix.local /etc/bind/forward.nix.local zone nix.local/IN: loaded serial 6
 OK
 nix@bind-server:~$
 nix@bind-server:~$ sudo named-checkzone nix.local /etc/bind/reverse.nix.local
 zone nix.local/IN: loaded serial 21
 OKتست DNS Server :برای تست کردن DNS Server از ابزار های dig و nslookup استفاده میکنیم.برای انجام این تست در یک سیستم لینوکسی به نحو زیر میتوانیم این کار را انجام دهیم.برای تغییر DNS Server فایل ‘/etc/resol.conf‘  را باز میکنیم و تغییر را اعمال میکنیم : nix@joke:~$ sudo vi /etc/resolv.conf
 search 4nix.local
 nameserver 192.168.1.100فایل را ذخیره و خارج شوید. سوال : خط اول این فایل توضیح داده که نباید این فایل را ادیت کنیم.تغییر این فایل چه ریسک هایی میتواند داشته باشد و اه کار اصولی تغییر DNS چی هست ؟حالا با استفاده از ابزار dig می توانیم اطلاعات مربوط به DNS را بدست آوریم :dig primary.4nix.localباید اطلاعاتی شبیه به زیر را در هروجی دستور مشاهده نماییم. این اطلاعات نشان میدهد که dns ما به خوبی کار میکند.با استفاده از دستور زیر  reverse lookup query(PTR) را تست کنیم :dig -x 192.168.1.100خروجی دستور باید چیزی شبیه به عکس زیر باشد نکته : در صورتی که در زمان اجرای دستور dig با خطای  ‘command not found’ روبه رو شدید باید پکیج dnsutils را نصب نمایید.sudo apt-get install dnsutils -yهمچنین میتوانیم از ابزار nslookup استفاده کنیم.nslookup primary.4nix.local خب DNS Server ما به خوبی کار میکند و میتوانید بقیه سرور ها مثل mail,ftp,web و … را DNS اضافه کنید.ما در این آموزش نصب local DNS server را داشتیم، اگر میخواهید public DNS server داشته باشید شما به IP Public نیاز خواهید داشت.</description>
                <category>صادق خادمی</category>
                <author>صادق خادمی</author>
                <pubDate>Wed, 13 Jun 2018 09:47:57 +0430</pubDate>
            </item>
            </channel>
</rss>