शुरुआती के लिए प्रारंभिक Ubuntu सर्वर सेटअप


यह ट्यूटोरियल आपको पहले बुनियादी चरणों पर मार्गदर्शन करेगा, जिन्हें आपको अपने सर्वर के लिए सुरक्षा और विश्वसनीयता बढ़ाने के लिए एक नए स्थापित उबंटू सर्वर पर कॉन्फ़िगर करने की आवश्यकता है।

इस विषय में बताए गए कॉन्फ़िगरेशन सभी उबंटू सर्वर सिस्टम के लिए लगभग समान हैं, अंतर्निहित ओएस प्लेटफ़ॉर्म के बारे में, चाहे उबंटू एक नंगे-धातु सर्वर पर स्थापित हो, एक निजी वर्चुअल मशीन में या एक वर्चुअल मशीन वीपीएस पब्लिक में स्पिन-आउट बादल।

  1. Ubuntu Server Edition installation

अपडेट और अपग्रेड Ubuntu सिस्टम

उबंटू सर्वर की नई स्थापना या उबंटू वीपीएस की एक नई तैनाती के मामले में आपको ध्यान रखने की जरूरत है पहला कदम यह सुनिश्चित करना है कि सिस्टम और सभी सिस्टम घटक, जैसे कर्नेल, पैकेज मैनेजर और अन्य सभी स्थापित पैकेज ऊपर हैं- नवीनतम जारी किए गए संस्करणों और सुरक्षा पैच के साथ-साथ तारीख।

उबंटू सर्वर को अपडेट करने के लिए, रूट विशेषाधिकारों के साथ या सीधे रूट के साथ सर्वर के कंसोल में लॉग इन करें और अपडेट और अपग्रेड प्रक्रिया को करने के लिए नीचे दिए गए आदेशों को चलाएं।

$ sudo apt update 

अपडेट कमांड चलाने के बाद, आपको अपग्रेड प्रक्रिया के लिए उपलब्ध पैकेजों की संख्या और संकुल उन्नयन को सूचीबद्ध करने के लिए प्रयुक्त कमांड दिखाई देगी।

$ sudo apt list --upgradable

उन्नयन के लिए उपलब्ध पैकेजों की सूची से परामर्श करने के बाद, सिस्टम अपग्रेड प्रक्रिया शुरू करने के लिए नीचे दिए गए आदेश जारी करें।

$ sudo apt upgrade

सभी स्थानीय रूप से डाउनलोड किए गए डेब पैकेज और अन्य सभी एप्ट-गेट कैश को हटाने के लिए, नीचे दिए गए कमांड को निष्पादित करें।

$ sudo apt autoremove
$ sudo apt clean

उबंटू में नया खाता बनाएँ

डिफ़ॉल्ट रूप से, सुरक्षा उपाय के रूप में, रूट खाता पूरी तरह से उबंटू में अक्षम है। सिस्टम पर एक नया खाता बनाने के लिए, रूट विशेषाधिकार वाले खाता उपयोगकर्ता के साथ सिस्टम में लॉग इन करें और नीचे दिए गए कमांड के साथ एक नया खाता बनाएं।

यह नया खाता sudo कमांड के माध्यम से रूट शक्तियों के विशेषाधिकार के साथ दिया जाएगा और सिस्टम में प्रशासनिक कार्यों को करने के लिए उपयोग किया जाएगा। सुनिश्चित करें कि आपने इस खाते की सुरक्षा के लिए एक मजबूत पासवर्ड सेटअप किया है। उपयोगकर्ता विवरण और पासवर्ड सेटअप करने के लिए Adduser संकेत का पालन करें।

$ sudo adduser ubuntu_user

यदि यह खाता किसी अन्य सिस्टम व्यवस्थापक को सौंपा जाएगा, तो आप निम्न आदेश जारी करके प्रयास में पहले लॉग में अपना पासवर्ड बदलने के लिए उपयोगकर्ता को बाध्य कर सकते हैं।

$ sudo chage -d0 ubuntu_user

अभी के लिए, नया जोड़ा गया उपयोगकर्ता sudo उपयोगिता के माध्यम से प्रशासनिक कार्य नहीं कर सकता है। प्रशासनिक विशेषाधिकारों के साथ इस नए उपयोगकर्ता खाते को देने के लिए आपको नीचे दिए गए आदेश जारी करके उपयोगकर्ता को " sudo " सिस्टम समूह में जोड़ना चाहिए।

$ sudo usermod -a -G sudo ubuntu_user

डिफ़ॉल्ट रूप से, " sudo " समूह से संबंधित सभी उपयोगकर्ताओं को सुगम उपयोगिता के माध्यम से रूट विशेषाधिकार के साथ कमांड निष्पादित करने की अनुमति है। निष्पादन के लिए आवश्यक कमांड लिखने से पहले सूडो कमांड का उपयोग किया जाना चाहिए, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।

$ sudo apt install package_name

परीक्षण करें कि क्या नए उपयोगकर्ता के पास सिस्टम में लॉग इन करके और उपयुक्त अद्यतन कमांड है, जो कि sudo के साथ उपसर्गित है।

$ su - ubuntu_user
$ sudo apt update

उबंटू में सिस्टम होस्टनाम कॉन्फ़िगर करें

आमतौर पर, मशीन होस्टनाम सिस्टम स्थापना प्रक्रिया के दौरान या जब VPS क्लाउड में बनाया जाता है। हालाँकि, आपको अपने सर्वर के गंतव्य को बेहतर ढंग से दर्शाने या इसके अंतिम उद्देश्य का बेहतर वर्णन करने के लिए अपनी मशीन का नाम बदलना चाहिए।

बड़ी कंपनी में, मशीनों का नामकरण जटिल योजनाओं के नाम पर किया जाता है ताकि आसानी से डेटासेंटर के रैक में मशीन की पहचान की जा सके। उदाहरण के लिए, यदि आपकी उबंटू मशीन एक मेल सर्वर को संचालित करेगी, तो मशीन का नाम इस तथ्य को दर्शाता है और आप मशीन होस्टनाम को mx01.mydomain.lan के रूप में सेटअप कर सकते हैं, उदाहरण के लिए।

अपने मशीन के बारे में विवरण दिखाने के लिए hostname निम्नलिखित कमांड चलाते हैं।

$ hostnamectl

अपनी मशीन का नाम बदलने के लिए, hostnamectl कमांड जारी करें नए नाम के साथ आप अपनी मशीन के लिए कॉन्फ़िगर करेंगे, जैसा कि नीचे दिए गए अंश में चित्रित किया गया है।

$ sudo hostnamectl set-hostname tecmint

नीचे दिए गए आदेशों में से एक के साथ अपने सिस्टम का नया नाम सत्यापित करें।

$ hostname
$ hostname -s
$ cat /etc/hostname 

उबंटू में पब्लिक की ऑथेंटिकेशन के साथ एसएसएच सेटअप

उबंटू सर्वर की सिस्टम सुरक्षा डिग्री बढ़ाने के लिए, आपको स्थानीय खाते के लिए SSH सार्वजनिक कुंजी प्रमाणीकरण सेट करना चाहिए। SSH कुंजी जोड़ी बनाने के लिए, सार्वजनिक और निजी कुंजी, एक कुंजी लंबाई निर्दिष्ट करने के साथ, जैसे कि 2048 बिट्स, अपने सर्वर कंसोल पर निम्न कमांड निष्पादित करें।

सुनिश्चित करें कि आप उस सिस्टम से लॉग इन हैं जिसमें आप SSH कुंजी सेट कर रहे हैं।

$ su - ubuntu_user
$ ssh-keygen -t RSA -b 2048

जबकि कुंजी उत्पन्न होती है, तो आपको कुंजी को सुरक्षित करने के लिए पासफ़्रेज़ जोड़ने के लिए कहा जाएगा। यदि आप SSH सर्वर के माध्यम से कार्यों को स्वचालित करना चाहते हैं, तो आप एक मजबूत पासफ़्रेज़ दर्ज कर सकते हैं या पासफ़्रेज़ रिक्त छोड़ सकते हैं।

SSH कुंजी के उत्पन्न होने के बाद, आप नीचे दिए गए कमांड को निष्पादित करके सार्वजनिक कुंजी को दूरस्थ सर्वर पर कॉपी कर सकते हैं। सार्वजनिक कुंजी को दूरस्थ SSH सर्वर में स्थापित करने के लिए आपको दूरस्थ सर्वर में लॉग इन करने के लिए उचित अनुमतियों और क्रेडेंशियल के साथ एक दूरस्थ उपयोगकर्ता खाते की आवश्यकता होगी।

$ ssh-copy-id [email _server

आपको सार्वजनिक कुंजी प्रमाणीकरण विधि का उपयोग करके SSH के माध्यम से दूरस्थ सर्वर में स्वचालित रूप से लॉग इन करने में सक्षम होना चाहिए। SSH सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करते समय आपको दूरस्थ उपयोगकर्ता पासवर्ड जोड़ने की आवश्यकता नहीं होगी।

दूरस्थ सर्वर में लॉग इन करने के बाद, आप कमांड को निष्पादित करना शुरू कर सकते हैं, जैसे w कमांड उपयोगकर्ताओं को ssh रिमोट लॉग इन करने के लिए, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है।

रिमोट SSH सत्र को बंद करने के लिए कंसोल में बाहर निकलें टाइप करें।

$ ssh [email _server
$ w
$ exit

दूरस्थ SSH सर्वर की कुंजी को मैन्युअल रूप से स्थापित करने के लिए अपने सार्वजनिक SSH कुंजी की सामग्री को देखने के लिए, निम्न आदेश जारी करें।

$ cat ~/.ssh/id_rsa.pub

उबंटू में सुरक्षित एसएसएच सर्वर

SSH डेमॉन को सुरक्षित करने के लिए आपको डिफ़ॉल्ट पोर्ट नंबर को 22 से रैंडम पोर्ट में बदलना चाहिए, 1024 से अधिक, और दूरस्थ SSH को रूट खाते तक पहुंच से बाहर करें पासवर्ड या कुंजी, SSH सर्वर मुख्य कॉन्फ़िगरेशन फ़ाइल को खोलकर और निम्न परिवर्तन करें।

$ sudo vi /etc/ssh/sshd_config

सबसे पहले, टिप्पणी की गई लाइन खोजें # Port22

Port 2345

फ़ाइल को बंद न करें, नीचे स्क्रॉल करें और लाइन के लिए खोजें #PermitRootLogin हाँ , लाइन की शुरुआत से # साइन (हैशटैग) को हटाकर लाइन को अनइंस्टॉल करें। नीचे दिए गए अंश में दिखाए गए रूप को देखने के लिए लाइन को संशोधित करें।

PermitRootLogin no

बाद में, नई सेटिंग्स को लागू करने के लिए एसएसएच सर्वर को पुनरारंभ करें और नए पोर्ट नंबर के माध्यम से रूट खाते के साथ इस सर्वर के लिए एक रिमोट मशीन से लॉग इन करने की कोशिश करके कॉन्फ़िगरेशन का परीक्षण करें। SSH के माध्यम से रूट खाते तक पहुंच प्रतिबंधित होनी चाहिए।

$ sudo systemctl restart sshd

इसके अलावा, netstat या ss कमांड चलाएं और SSH सर्वर के लिए नया श्रवण पोर्ट नंबर दिखाने के लिए grep के माध्यम से आउटपुट को फ़िल्टर करें।

$ sudo ss -tlpn| grep ssh
$ sudo netstat -tlpn| grep ssh

ऐसी स्थितियाँ हैं जहाँ आप निष्क्रियता की अवधि के बाद अपने सर्वर में स्थापित सभी दूरस्थ SSH कनेक्शनों को स्वचालित रूप से डिस्कनेक्ट करना चाहते हैं।

इस सुविधा को सक्षम करने के लिए, नीचे दिए गए आदेश को निष्पादित करें, जो आपके खाते में TMOUT बैश चर जोड़ता है । 5 मिनट की निष्क्रियता के बाद उपयोगकर्ता को डिस्कनेक्ट या हटा दिया जाना चाहिए।

$ echo 'TMOUT=300' >> .bashrc

यह जाँचने के लिए कि कमांड को .bashrc फ़ाइल के अंत में जोड़ा गया है या नहीं, टेल कमांड चलाएँ। अब से 5 मिनट की निष्क्रियता के बाद सभी एसएसएच कनेक्शन स्वचालित रूप से बंद हो जाएंगे।

$ tail .bashrc

नीचे दिए गए स्क्रीनशॉट में, ड्रिपल मशीन से उबंटू सर्वर के माध्यम से ubuntu_user खाते के माध्यम से दूरस्थ एसएसएच सत्र 5 मिनट के बाद और ऑटो-लॉगआउट किया गया है।

Ubuntu फ़ायरवॉल UFW कॉन्फ़िगर करें

नेटवर्क स्तर पर सिस्टम को सुरक्षित करने के लिए प्रत्येक सर्वर को एक अच्छी तरह से कॉन्फ़िगर फ़ायरवॉल की आवश्यकता होती है। Ubuntu सर्वर सर्वर पर iptables नियमों का प्रबंधन करने के लिए UFW एप्लिकेशन का उपयोग करता है।

नीचे दिए गए आदेशों को जारी करके उबंटू में UFW फ़ायरवॉल एप्लिकेशन की स्थिति की जाँच करें।

$ sudo systemctl status ufw
$ sudo ufw status

आमतौर पर, यूएफडब्ल्यू फ़ायरवॉल डेमॉन उबंटू सर्वर में ऊपर और चल रहा है, लेकिन नियम डिफ़ॉल्ट रूप से लागू नहीं होते हैं। आपके सिस्टम में UFW फ़ायरवॉल नीति को सक्षम करने से पहले, आपको SSH ट्रैफ़िक को बदले हुए SSH पोर्ट से होकर गुजरने की अनुमति देने के लिए एक नया नियम जोड़ना चाहिए। नीचे दिए गए आदेश को निष्पादित करके नियम जोड़ा जा सकता है।

$ sudo ufw allow 2345/tcp

SSH ट्रैफ़िक की अनुमति देने के बाद, आप निम्न आदेशों के साथ UFW फ़ायरवॉल एप्लिकेशन को सक्षम और चेक कर सकते हैं।

$ sudo ufw enable
$ sudo ufw status

आपके सर्वर पर बाद में स्थापित अन्य नेटवर्क सेवाओं के लिए नए फ़ायरवॉल नियम जोड़ने के लिए, जैसे कि HTTP सर्वर, एक मेल सर्वर या अन्य नेटवर्क सेवाएं, गाइड के रूप में नीचे फ़ायरवॉल कमांड उदाहरणों का उपयोग करें।

$ sudo ufw allow http  #allow http traffic
$ sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

सभी फ़ायरवॉल नियमों को सूचीबद्ध करने के लिए नीचे कमांड चलाएं।

$ sudo ufw status verbose

उबंटू सर्वर टाइम सेट करें

उबंटू सर्वर घड़ी और अन्य संबंधित समय सेटिंग्स को नियंत्रित या क्वेरी करने के लिए, बिना किसी तर्क के समयबद्ध कमांड निष्पादित करें।

अपने सर्वर के समय क्षेत्र की सेटिंग को बदलने के लिए, सभी उपलब्ध समय क्षेत्रों को सूचीबद्ध करने के लिए सूची-टाइमज़ोन तर्क के साथ, पहले समय-निर्धारण आदेश निष्पादित करें और फिर, नीचे दिए गए अंश में दिखाए गए अनुसार अपने सिस्टम का समय क्षेत्र निर्धारित करें।

$ sudo timedatectl 
$ sudo timedatectl list-timezones 
$ sudo timedatectl set-timezone Europe/Vienna

नए systemd-timesyncd systemd डेमॉन क्लाइंट का उपयोग उबंटू में किया जा सकता है ताकि आपके सर्वर पर नेटवर्क के लिए एक सटीक समय प्रदान किया जा सके और ऊपरी समय के पीयर सर्वर के साथ समय को सिंक्रनाइज़ किया जा सके।

Systemd की इस नई सुविधा को लागू करने के लिए, systemd-timesyncd डेमन कॉन्फ़िगरेशन फ़ाइल को संशोधित करें और निकटतम भौगोलिक रूप से NTP सर्वरों को NTP स्टेटमेंट लाइन में जोड़ें, जैसा कि नीचे दी गई फ़ाइल में दिखाया गया है:

$ sudo nano /etc/systemd/timesyncd.conf

निम्नलिखित कॉन्फ़िगरेशन को timesyncd.conf फ़ाइल में जोड़ें:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

अपने निकटतम भौगोलिक रूप से NTP सर्वर को जोड़ने के लिए, निम्नलिखित पते पर NTP पूल परियोजना सर्वर सूची से परामर्श करें: http://www.pool.ntp.org/en/

बाद में, नीचे दिए गए आदेशों को चलाकर परिवर्तन को प्रतिबिंबित करने और डेमॉन स्थिति की जांच करने के लिए Systemd timesync डेमॉन को पुनरारंभ करें। पुनः आरंभ करने के बाद, डेमॉन नए ntp सर्वर सहकर्मी के साथ समय सिंक करना शुरू कर देगा।

$ sudo systemctl restart systemd-timesyncd.service 
$ sudo systemctl status systemd-timesyncd.service

उबंटू में अक्षम सेवाओं को अक्षम और निकालें

अपने Ubuntu सर्वर में डिफ़ॉल्ट रूप से सभी टीसीपी और यूडीपी नेटवर्क सेवाओं की एक सूची प्राप्त करने के लिए, ss या netstat कमांड निष्पादित करें।

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Ubuntu 16.10 रिलीज़ के साथ, डिफ़ॉल्ट DNS रिज़ॉल्वर अब systemd- हल सेवा द्वारा नियंत्रित किया जाता है, जैसा कि netstat या ss कमांड

आपको निम्न कमांड चलाकर सिस्टमड-सॉल्व्ड सेवा की स्थिति भी जांचनी चाहिए।

$ sudo systemctl status systemd-resolved.service

सिस्टमड-सॉल्व्ड सेवा सभी सक्षम नेटवर्क इंटरफेस पर बांधती है और बंदरगाहों पर सुनती है 53 और 5355 टीसीपी और यूडीपी

उत्पादन सर्वर पर DNS डेमॉन को कैशिंग सिस्टम-सॉल्यूड चलाना असुरक्षित डीएनएस सर्वर के खिलाफ दुर्भावनापूर्ण हैकर्स द्वारा किए गए कई डीडीओएस हमलों के कारण खतरनाक हो सकता है।

इस सेवा को रोकने और अक्षम करने के लिए, निम्नलिखित कमांड निष्पादित करें।

$ sudo systemctl stop systemd-resolved
$ sudo systemctl disable systemd-resolved

सत्यापित करें कि क्या सेवा को ss या netstat कमांड जारी करके अक्षम किया गया है। सिस्टमड-सॉल्व्ड लिसनिंग पोर्ट्स, 53 और 5355 टीसीपी और यूडीपी को नेटस्टैट या एसएस कमांड आउटपुट में सूचीबद्ध नहीं किया जाना चाहिए, जैसा कि नीचे दिया गया है।

आपको सभी सिस्टम-सॉल्व्ड डेमन सेवाओं को पूरी तरह से अक्षम करने और डिफ़ॉल्ट /etc/resolv.conf फ़ाइल को पुनर्स्थापित करने के लिए मशीन को भी रिबूट करना चाहिए।

$ sudo ss -tulpn
$ sudo netstat -tulpn
$ sudo systemctl reboot

हालाँकि, आपने अपने सर्वर में चलने के लिए कुछ अवांछित नेटवर्किंग सेवाओं को अक्षम कर दिया है, आपके सिस्टम में अन्य सेवाएँ भी स्थापित और चल रही हैं, जैसे lxc प्रक्रिया और स्नैपड सेवा। इन सेवाओं को आसानी से ps, top या pstree कमांड के माध्यम से पता लगाया जा सकता है।

$ sudo ps aux
$ sudo top
$ sudo pstree

यदि आप अपने सर्वर में एलएक्ससी कंटेनर वर्चुअलाइजेशन का उपयोग नहीं करने जा रहे हैं या स्नैप पैकेज मैनेजर के माध्यम से पैक किए गए सॉफ़्टवेयर को स्थापित करना शुरू नहीं कर रहे हैं, तो आपको नीचे दिए गए आदेश जारी करके इन सेवाओं को पूरी तरह से अक्षम और हटा देना चाहिए।

$ sudo apt autoremove --purge lxc-common lxcfs
$ sudo apt autoremove --purge snapd

बस इतना ही! अब, उबंटू सर्वर अब कस्टम नेटवर्क सेवाओं या अनुप्रयोगों के लिए आवश्यक अतिरिक्त सॉफ़्टवेयर स्थापित करने के लिए तैयार किया गया है, जैसे कि वेब सर्वर, डेटाबेस सर्वर, फ़ाइल शेयर सेवा या अन्य विशिष्ट अनुप्रयोगों को स्थापित करना और कॉन्फ़िगर करना।