Linux సర్వర్ రక్షణ. ముందుగా ఏం చేయాలి

Linux సర్వర్ రక్షణ. ముందుగా ఏం చేయాలి
హబీబ్ మెహెన్నీ/వికీమీడియా కామన్స్, CC BY-SA

ఈ రోజుల్లో, హోస్టింగ్‌లో సర్వర్‌ని పెంచడం అనేది రెండు నిమిషాలు మరియు కొన్ని మౌస్ క్లిక్‌ల విషయం. కానీ ప్రారంభించిన వెంటనే, అతను ప్రతికూల వాతావరణంలో తనను తాను కనుగొంటాడు, ఎందుకంటే అతను రాకర్ డిస్కోలో అమాయక అమ్మాయిలా మొత్తం ఇంటర్నెట్‌కు తెరిచి ఉంటాడు. స్కానర్‌లు దీన్ని త్వరగా కనుగొంటాయి మరియు దుర్బలత్వాలు మరియు తప్పు కాన్ఫిగరేషన్‌ల కోసం వెతుకుతున్న నెట్‌వర్క్‌ను శోధించే వేలాది స్వయంచాలకంగా స్క్రిప్ట్ చేయబడిన బాట్‌లను గుర్తిస్తాయి. ప్రాథమిక రక్షణను నిర్ధారించడానికి ప్రారంభించిన వెంటనే మీరు చేయవలసిన కొన్ని విషయాలు ఉన్నాయి.

కంటెంట్

నాన్-రూట్ యూజర్

మొదటి దశ మీ కోసం నాన్-రూట్ వినియోగదారుని సృష్టించడం. విషయం ఏమిటంటే వినియోగదారు root సిస్టమ్‌లో సంపూర్ణ అధికారాలు, మరియు మీరు అతనిని రిమోట్ అడ్మినిస్ట్రేషన్‌ను అనుమతించినట్లయితే, మీరు హ్యాకర్ కోసం సగం పనిని చేస్తారు, అతనికి చెల్లుబాటు అయ్యే వినియోగదారు పేరును వదిలివేస్తారు.

అందువల్ల, మీరు మరొక వినియోగదారుని సృష్టించాలి మరియు రూట్ కోసం SSH ద్వారా రిమోట్ పరిపాలనను నిలిపివేయాలి.

కమాండ్ ద్వారా కొత్త వినియోగదారు ప్రారంభించబడతారు useradd:

useradd [options] <username>

అప్పుడు కమాండ్‌తో దాని కోసం పాస్‌వర్డ్ జోడించబడుతుంది passwd:

passwd <username>

చివరగా, ఈ వినియోగదారుని ఉన్నత అధికారాలతో ఆదేశాలను అమలు చేసే హక్కు ఉన్న సమూహానికి జోడించబడాలి sudo. Linux పంపిణీని బట్టి, ఇవి వేర్వేరు సమూహాలుగా ఉండవచ్చు. ఉదాహరణకు, CentOS మరియు Red Hatలో, వినియోగదారు సమూహానికి జోడించబడతారు wheel:

usermod -aG wheel <username>

ఉబుంటులో ఇది సమూహానికి జోడించబడింది sudo:

usermod -aG sudo <username>

SSH పాస్‌వర్డ్‌లకు బదులుగా కీలు

బ్రూట్ ఫోర్స్ లేదా పాస్‌వర్డ్ లీక్‌లు ఒక ప్రామాణిక దాడి వెక్టర్, కాబట్టి SSH (సెక్యూర్ షెల్)లో పాస్‌వర్డ్ ప్రమాణీకరణను నిలిపివేయడం మరియు బదులుగా కీ ప్రామాణీకరణను ఉపయోగించడం ఉత్తమం.

SSH ప్రోటోకాల్‌ను అమలు చేయడానికి వివిధ ప్రోగ్రామ్‌లు ఉన్నాయి lsh и డ్రాప్ బేర్, కానీ అత్యంత ప్రజాదరణ పొందినది OpenSSH. ఉబుంటులో OpenSSH క్లయింట్‌ను ఇన్‌స్టాల్ చేస్తోంది:

sudo apt install openssh-client

సర్వర్ ఇన్‌స్టాలేషన్:

sudo apt install openssh-server

ఉబుంటు సర్వర్‌లో SSH డెమోన్ (sshd)ని ప్రారంభించడం:

sudo systemctl start sshd

ప్రతి బూట్‌లో స్వయంచాలకంగా డెమోన్‌ను ప్రారంభించండి:

sudo systemctl enable sshd

OpenSSH సర్వర్ భాగం క్లయింట్ భాగాన్ని కలిగి ఉందని గమనించాలి. అంటే, ద్వారా openssh-server మీరు ఇతర సర్వర్‌లకు కనెక్ట్ చేయవచ్చు. అంతేకాకుండా, మీ క్లయింట్ మెషీన్ నుండి, మీరు రిమోట్ సర్వర్ నుండి థర్డ్-పార్టీ హోస్ట్‌కి ఒక SSH టన్నెల్‌ను ప్రారంభించవచ్చు, ఆపై థర్డ్-పార్టీ హోస్ట్ రిమోట్ సర్వర్‌ని అభ్యర్థనల మూలంగా పరిగణిస్తుంది. మీ సిస్టమ్‌ను మాస్కింగ్ చేయడానికి చాలా సులభ ఫీచర్. మరిన్ని వివరాల కోసం కథనాన్ని చూడండి "ప్రాక్టికల్ చిట్కాలు, ఉదాహరణలు మరియు SSH టన్నెల్స్".

క్లయింట్ మెషీన్‌లో, కంప్యూటర్‌కు (భద్రతా కారణాల దృష్ట్యా) రిమోట్ కనెక్షన్‌ని నిరోధించడానికి పూర్తి స్థాయి సర్వర్‌ను ఇన్‌స్టాల్ చేయడం సాధారణంగా అర్ధమే కాదు.

కాబట్టి, మీ కొత్త వినియోగదారు కోసం, మీరు ముందుగా సర్వర్‌ని యాక్సెస్ చేసే కంప్యూటర్‌లో SSH కీలను రూపొందించాలి:

ssh-keygen -t rsa

పబ్లిక్ కీ ఫైల్‌లో నిల్వ చేయబడుతుంది .pub మరియు మొదలయ్యే యాదృచ్ఛిక అక్షరాల స్ట్రింగ్ లాగా కనిపిస్తుంది ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

ఆపై, రూట్ కింద నుండి, వినియోగదారు హోమ్ డైరెక్టరీలో సర్వర్‌లో SSH డైరెక్టరీని సృష్టించండి మరియు ఫైల్‌కి SSH పబ్లిక్ కీని జోడించండి authorized_keys, Vim వంటి టెక్స్ట్ ఎడిటర్‌ని ఉపయోగించడం:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

చివరగా, ఫైల్ కోసం సరైన అనుమతులను సెట్ చేయండి:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

మరియు ఈ వినియోగదారుకు యాజమాన్యాన్ని మార్చండి:

chown -R username:username /home/username/.ssh

క్లయింట్ వైపు, మీరు ప్రమాణీకరణ కోసం రహస్య కీ యొక్క స్థానాన్ని పేర్కొనాలి:

ssh-add DIR_PATH/keylocation

ఇప్పుడు మీరు ఈ కీని ఉపయోగించి వినియోగదారు పేరుతో సర్వర్‌కు లాగిన్ చేయవచ్చు:

ssh [username]@hostname

అధికారం తర్వాత, మీరు ఫైళ్లను కాపీ చేయడానికి scp ఆదేశాన్ని ఉపయోగించవచ్చు, యుటిలిటీ sshfs ఫైల్ సిస్టమ్ లేదా డైరెక్టరీలను రిమోట్‌గా మౌంట్ చేయడానికి.

ప్రైవేట్ కీ యొక్క అనేక బ్యాకప్ కాపీలను తయారు చేయడం మంచిది, ఎందుకంటే మీరు పాస్‌వర్డ్ ప్రమాణీకరణను నిలిపివేసి, దానిని పోగొట్టుకుంటే, మీ స్వంత సర్వర్‌లోకి లాగిన్ అవ్వడానికి మీకు ఎటువంటి మార్గం ఉండదు.

పైన చెప్పినట్లుగా, SSHలో మీరు రూట్ కోసం ప్రమాణీకరణను నిలిపివేయాలి (ఈ కారణంగా మేము కొత్త వినియోగదారుని సృష్టించాము).

CentOS/Red Hatలో మనం లైన్‌ను కనుగొంటాము PermitRootLogin yes కాన్ఫిగరేషన్ ఫైల్‌లో /etc/ssh/sshd_config మరియు దానిని మార్చండి:

PermitRootLogin no

ఉబుంటులో పంక్తిని జోడించండి PermitRootLogin no config ఫైల్‌కి 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

కొత్త వినియోగదారు వారి కీతో ప్రమాణీకరిస్తున్నారని ధృవీకరించిన తర్వాత, పాస్‌వర్డ్ లీకేజ్ లేదా బ్రూట్ ఫోర్స్ ప్రమాదాన్ని తొలగించడానికి మీరు పాస్‌వర్డ్ ప్రమాణీకరణను నిలిపివేయవచ్చు. ఇప్పుడు, సర్వర్‌ని యాక్సెస్ చేయడానికి, దాడి చేసే వ్యక్తి ప్రైవేట్ కీని పొందవలసి ఉంటుంది.

CentOS/Red Hatలో మనం లైన్‌ను కనుగొంటాము PasswordAuthentication yes కాన్ఫిగరేషన్ ఫైల్‌లో /etc/ssh/sshd_config మరియు దానిని ఈ క్రింది విధంగా మార్చండి:

PasswordAuthentication no

ఉబుంటులో పంక్తిని జోడించండి PasswordAuthentication no ఫైల్ చేయడానికి 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

SSH ద్వారా రెండు-కారకాల ప్రమాణీకరణను ప్రారంభించే సూచనల కోసం, చూడండి ఇక్కడ.

ఫైర్వాల్

మీరు నేరుగా అనుమతించే పోర్ట్‌లలోని ట్రాఫిక్ మాత్రమే సర్వర్‌కి వెళ్లేలా ఫైర్‌వాల్ నిర్ధారిస్తుంది. ఇది ఇతర సేవలతో అనుకోకుండా ప్రారంభించబడిన పోర్ట్‌ల దోపిడీకి వ్యతిరేకంగా రక్షిస్తుంది, ఇది దాడి ఉపరితలాన్ని బాగా తగ్గిస్తుంది.

ఫైర్‌వాల్‌ను ఇన్‌స్టాల్ చేసే ముందు, మీరు SSH మినహాయింపు జాబితాలో చేర్చబడిందని మరియు బ్లాక్ చేయబడదని నిర్ధారించుకోవాలి. లేకపోతే, ఫైర్‌వాల్‌ని ప్రారంభించిన తర్వాత, మేము సర్వర్‌కి కనెక్ట్ చేయలేరు.

ఉబుంటు పంపిణీ సంక్లిష్టత లేని ఫైర్‌వాల్‌తో వస్తుంది (ufw), మరియు CentOS/Red Hatతో - firewalld.

ఉబుంటులో ఫైర్‌వాల్‌లో SSHని అనుమతిస్తుంది:

sudo ufw allow ssh

CentOS/Red Hatలో ఆదేశాన్ని ఉపయోగించండి firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

ఈ ప్రక్రియ తర్వాత, మీరు ఫైర్‌వాల్‌ను ప్రారంభించవచ్చు.

CentOS/Red Hatలో, ఫైర్‌వాల్డ్ కోసం systemd సేవను ప్రారంభించండి:

sudo systemctl start firewalld
sudo systemctl enable firewalld

ఉబుంటులో మనం కింది ఆదేశాన్ని ఉపయోగిస్తాము:

sudo ufw enable

ఫెయిల్ 2 బాన్

సేవ ఫెయిల్ 2 బాన్ సర్వర్ లాగ్‌లను విశ్లేషిస్తుంది మరియు ప్రతి IP చిరునామా నుండి యాక్సెస్ ప్రయత్నాల సంఖ్యను గణిస్తుంది. సెట్టింగులు నిర్దిష్ట వ్యవధిలో ఎన్ని యాక్సెస్ ప్రయత్నాలు అనుమతించబడతాయనే నిబంధనలను పేర్కొంటాయి - దీని తర్వాత ఈ IP చిరునామా నిర్దిష్ట వ్యవధిలో బ్లాక్ చేయబడుతుంది. ఉదాహరణకు, మేము 5 గంటల వ్యవధిలో SSH ద్వారా 2 విఫలమైన ప్రమాణీకరణ ప్రయత్నాలను అనుమతిస్తాము, ఆ తర్వాత మేము ఈ IP చిరునామాను 12 గంటల పాటు బ్లాక్ చేస్తాము.

CentOS మరియు Red Hatలో Fail2Banని ఇన్‌స్టాల్ చేస్తోంది:

sudo yum install fail2ban

ఉబుంటు మరియు డెబియన్‌లో ఇన్‌స్టాలేషన్:

sudo apt install fail2ban

ప్రారంభించు:

systemctl start fail2ban
systemctl enable fail2ban

ప్రోగ్రామ్‌లో రెండు కాన్ఫిగరేషన్ ఫైల్‌లు ఉన్నాయి: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. నిషేధ పరిమితులు రెండవ ఫైల్‌లో పేర్కొనబడ్డాయి.

SSH కోసం జైలు డిఫాల్ట్ సెట్టింగ్‌లతో డిఫాల్ట్‌గా ప్రారంభించబడుతుంది (5 ప్రయత్నాలు, విరామం 10 నిమిషాలు, 10 నిమిషాల నిషేధం).

[డిఫాల్ట్] విస్మరించండికమాండ్=బాన్‌టైమ్=10మి ఫైండ్‌టైమ్=10మి మాక్స్‌రెట్రీ=5

SSHతో పాటు, Fail2Ban nginx లేదా Apache వెబ్ సర్వర్‌లో ఇతర సేవలను రక్షించగలదు.

స్వయంచాలక భద్రతా నవీకరణలు

మీకు తెలిసినట్లుగా, అన్ని ప్రోగ్రామ్‌లలో కొత్త దుర్బలత్వాలు నిరంతరం కనిపిస్తాయి. సమాచారం ప్రచురించబడిన తర్వాత, జనాదరణ పొందిన దోపిడీ ప్యాక్‌లకు దోపిడీలు జోడించబడతాయి, వీటిని వరుసగా అన్ని సర్వర్‌లను స్కాన్ చేస్తున్నప్పుడు హ్యాకర్లు మరియు యువకులు ఎక్కువగా ఉపయోగిస్తారు. అందువల్ల, భద్రతా నవీకరణలు కనిపించిన వెంటనే వాటిని ఇన్‌స్టాల్ చేయడం చాలా ముఖ్యం.

ఉబుంటు సర్వర్‌లో, ఆటోమేటిక్ సెక్యూరిటీ అప్‌డేట్‌లు డిఫాల్ట్‌గా ప్రారంభించబడతాయి, కాబట్టి తదుపరి చర్య అవసరం లేదు.

CentOS/Red Hatలో మీరు అప్లికేషన్‌ను ఇన్‌స్టాల్ చేయాలి dnf-ఆటోమేటిక్ మరియు టైమర్‌ను ఆన్ చేయండి:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

టైమర్ తనిఖీ:

sudo systemctl status dnf-automatic.timer

డిఫాల్ట్ పోర్ట్‌లను మార్చడం

టెల్నెట్ (పోర్ట్ 1995) మరియు ftp (పోర్ట్ 23) స్థానంలో SSH 21లో అభివృద్ధి చేయబడింది, కాబట్టి ప్రోగ్రామ్ రచయిత, టాటు ఇల్టోనెన్ డిఫాల్ట్‌గా పోర్ట్ 22 ఎంచుకోబడింది, మరియు IANAచే ఆమోదించబడింది.

సహజంగానే, SSH ఏ పోర్ట్‌లో రన్ అవుతుందో దాడి చేసే వారందరికీ తెలుసు - మరియు సాఫ్ట్‌వేర్ వెర్షన్‌ను కనుగొనడానికి, ప్రామాణిక రూట్ పాస్‌వర్డ్‌లను తనిఖీ చేయడానికి మరియు మొదలైన వాటిని ఇతర ప్రామాణిక పోర్ట్‌లతో పాటు స్కాన్ చేయండి.

ప్రామాణిక పోర్ట్‌లను మార్చడం - అస్పష్టత - అనేక సార్లు చెత్త ట్రాఫిక్ మొత్తాన్ని తగ్గిస్తుంది, లాగ్‌ల పరిమాణం మరియు సర్వర్‌పై లోడ్, మరియు దాడి ఉపరితలాన్ని కూడా తగ్గిస్తుంది. కొన్ని ఉన్నప్పటికీ "అస్పష్టత ద్వారా రక్షణ" యొక్క ఈ పద్ధతిని విమర్శించండి (అస్పష్టత ద్వారా భద్రత). కారణం ఈ టెక్నిక్ ప్రాథమికానికి వ్యతిరేకం నిర్మాణ రక్షణ. కాబట్టి, ఉదాహరణకు, US నేషనల్ ఇన్‌స్టిట్యూట్ ఆఫ్ స్టాండర్డ్స్ అండ్ టెక్నాలజీ ఇన్ "సర్వర్ సెక్యూరిటీ గైడ్" ఓపెన్ సర్వర్ ఆర్కిటెక్చర్ అవసరాన్ని సూచిస్తుంది: "సిస్టమ్ యొక్క భద్రత దాని భాగాల అమలు యొక్క గోప్యతపై ఆధారపడకూడదు" అని పత్రం పేర్కొంది.

సిద్ధాంతపరంగా, డిఫాల్ట్ పోర్ట్‌లను మార్చడం ఓపెన్ ఆర్కిటెక్చర్ అభ్యాసానికి విరుద్ధం. కానీ ఆచరణలో, హానికరమైన ట్రాఫిక్ మొత్తం వాస్తవానికి తగ్గించబడుతుంది, కాబట్టి ఇది సరళమైన మరియు సమర్థవంతమైన కొలత.

డైరెక్టివ్‌ను మార్చడం ద్వారా పోర్ట్ నంబర్‌ను కాన్ఫిగర్ చేయవచ్చు Port 22 config ఫైల్‌లో / Etc / ssh / sshd_config. ఇది పారామీటర్ ద్వారా కూడా సూచించబడుతుంది -p <port> в sshd. SSH క్లయింట్ మరియు ప్రోగ్రామ్‌లు SFTP ఎంపికకు కూడా మద్దతు ఇస్తుంది -p <port>.

పరామితి -p <port> కమాండ్‌తో కనెక్ట్ చేస్తున్నప్పుడు పోర్ట్ నంబర్‌ను పేర్కొనడానికి ఉపయోగించవచ్చు ssh linux లో. IN SFTP и scp పరామితి ఉపయోగించబడుతుంది -P <port> (రాజధాని P). కమాండ్ లైన్ సూచన కాన్ఫిగరేషన్ ఫైల్‌లలో ఏదైనా విలువను భర్తీ చేస్తుంది.

అనేక సర్వర్లు ఉంటే, Linux సర్వర్‌ను రక్షించడానికి దాదాపుగా ఈ చర్యలన్నీ స్క్రిప్ట్‌లో స్వయంచాలకంగా చేయబడతాయి. కానీ ఒకే సర్వర్ ఉంటే, ప్రక్రియను మాన్యువల్‌గా నియంత్రించడం మంచిది.

ప్రకటనల హక్కులపై

ఆర్డర్ చేయండి మరియు వెంటనే ప్రారంభించండి! VDS సృష్టి ఏదైనా కాన్ఫిగరేషన్ మరియు ఏదైనా ఆపరేటింగ్ సిస్టమ్‌తో నిమిషంలోపు. గరిష్ట కాన్ఫిగరేషన్ మిమ్మల్ని పూర్తి స్థాయికి రావడానికి అనుమతిస్తుంది - 128 CPU కోర్లు, 512 GB RAM, 4000 GB NVMe. ఇతిహాసం 🙂

Linux సర్వర్ రక్షణ. ముందుగా ఏం చేయాలి

మూలం: www.habr.com