−25%

Windows-ის წლიურ გადახდაზე, 31 ოქტომბრამდე. ტარიფებზე

EQVPS

როგორ შევქმნათ sudo მომხმარებელი VPS-ზე და შევწყვიტოთ root-ის გამოყენება

შექმენით root-ის გარეშე sudo მომხმარებელი Ubuntu-ზე ან Debian-ზე, მიეცით მას თქვენი SSH-გასაღები, შეამოწმეთ და შემდეგ გამორთეთ root-ით შესვლა — ისეთი თანმიმდევრობით, რომ გარეთ არ დარჩეთ.

თითქმის ყველა ახალი VPS ერთნაირად იწყება: root-ით შედიხართ, რამდენიმე რამეს აინსტალირებთ და ერთი თვის შემდეგაც root ხართ. ეს მანამ მუშაობს, სანამ ჩასმული სკრიპტი არასწორ საქაღალდეს არ წაშლის. ჩვეულებრივი მომხმარებლის sudo-თი მომზადებას ხუთი წუთი სჭირდება, ხოლო თანმიმდევრობა ბრძანებებზე მნიშვნელოვანია — თუ აურევთ, თავს გარეთ ჩაიკეტავთ.

აი უსაფრთხო თანმიმდევრობა Ubuntu 22.04/24.04-სა და Debian 12-ისთვის.

1. შექმენით მომხმარებელი

root-ით:

adduser deploy
usermod -aG sudo deploy

adduser პაროლს და რამდენიმე არასავალდებულო მონაცემს გკითხავთ (უბრალოდ Enter დააჭირეთ). აირჩიეთ ნამდვილი პაროლი: მას sudo-სთვის აკრეფთ. Debian-ის მინიმალურ image-ზე, თუ ბრძანება არ არის, ჯერ apt install -y sudo გაუშვით.

2. მიეცით მას თქვენი SSH-გასაღები

ყველაზე მარტივი გზაა root-ის ავტორიზებული გასაღებების კოპირება სწორი მფლობელობის შენარჩუნებით:

rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy

თუ ხელით გირჩევნიათ:

mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

არასწორი უფლებები კლასიკური მიზეზია, რის გამოც გასაღებით შესვლა ჩუმად ვერ ხერხდება. SSH უგულებელყოფს authorized_keys-ს, რომელშიც სხვა მომხმარებლებს ჩაწერა შეუძლიათ.

3. შეამოწმეთ, სანამ რამეს შეცვლით

root-ის სესია ღია დატოვეთ. ახალ ტერმინალში:

ssh -p 22 deploy@203.0.113.10
sudo whoami

გამოიყენეთ თქვენი IP და პორტი — NAT-გეგმაზე ეს სამართავი პანელის პირადი SSH-პორტია. თუ sudo whoami დაბეჭდავს root-ს, ყველაფერი რიგზეა. თუ შესვლა ვერ მოხერხდა, გასასწორებლად root-ის ფანჯარა ჯერ კიდევ გაქვთ.

4. გამორთეთ root-ით შესვლა

ახლა კარი დახურეთ. მთავარი კონფიგურაციის რედაქტირების ნაცვლად შექმენით პატარა drop-in ფაილი:

cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh

sshd -t ჯერ სინტაქსს ამოწმებს. გაფუჭებული კონფიგურაცია და reload — აი, როგორ ხვდებიან ადამიანები კონსოლის იმედად. PasswordAuthentication no-ს აზრი მხოლოდ მაშინ აქვს, როცა ახალი მომხმარებლისთვის გასაღებით შესვლა მუშაობს — რაც ახლახან შეამოწმეთ.

გახსენით კიდევ ერთი ტერმინალი და დარწმუნდით, რომ root უარყოფილია, deploy კი კვლავ შედის. შემდეგ დახურეთ ძველი root-ის სესია.

5. არასავალდებულო: sudo პაროლის გარეშე ავტომატიზაციისთვის

თუ deploy-სკრიპტს შეკითხვის გარეშე sudo სჭირდება, მიეცით ზუსტად ეს და არაფერი მეტი:

visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

გულწრფელად რომ ვთქვათ, NOPASSWD: ALL მაცდურია, მაგრამ ეს ნიშნავს, რომ მოპარული გასაღები root-ის ტოლფასია. შეზღუდეთ იმ ბრძანებებით, რომლებსაც ავტომატიზაცია უშვებს.

თუ რამე არასწორად წავიდა

სამართავი პანელის ვებ-კონსოლი არც SSH-ზეა დამოკიდებული და არც ფაირვოლზე. შედით იქიდან, გაასწორეთ ფაილი /etc/ssh/sshd_config.d/-ში, გააკეთეთ reload და მორჩა. აღდგენის სრული პროცესი აღვწერეთ სტატიაში როგორ დავბრუნდეთ ჩაკეტილ VPS-ში.

რა გავაკეთოთ შემდეგ

თითოეული გეგმის წვდომის ვარიანტები წვდომის დოკუმენტაციაშია. $3-იანი Nano-ც კი იმსახურებს root-ის გარეშე მომხმარებელს — ეს უსაფრთხოების ყველაზე იაფი გაუმჯობესებაა.

ხდკ

რატომ არ უნდა გავაგრძელო root-ის გამოყენება?

ყველაფერს, რასაც root-ით უშვებთ, შეუძლია მთელი სისტემის დაზიანება, თუნდაც ერთ ბეჭდურ შეცდომას. ბოტები ასევე პირველ რიგში 'root' სახელს ცდილობენ, ამიტომ root-ით შესვლის გამორთვა ყველაზე ხშირად გამოცნობილ სამიზნეს აქრობს. სახელიანი მომხმარებელი და sudo ყოველი პრივილეგირებული ბრძანების წინ პაუზას და შესრულებულის ჩანაწერს გაძლევთ.

რა მოხდება, თუ თავს გარეთ ჩავკეტავ?

გამოიყენეთ ვებ-კონსოლი თქვენს სამართავ პანელში. ის მაშინაც მუშაობს, როცა SSH გაფუჭებულია ან ფაირვოლი გბლოკავთ, ასე რომ, შეგიძლიათ შეხვიდეთ და sshd_config გაასწოროთ. სწორედ ამიტომ ამოწმებთ ახალ მომხმარებელს root-ის სესიის დახურვამდე.

დავუშვა თუ არა sudo პაროლის გარეშე?

პირადი ანგარიშისთვის პაროლის მოთხოვნა დატოვეთ — თუ SSH-გასაღები გაჟონავს, ეს დაცვის ბოლო ხაზია. პაროლის გარეშე sudo გონივრულია ავტომატიზაციისთვის განკუთვნილი ცალკე deploy-მომხმარებლისთვის, მხოლოდ იმ ბრძანებებით შეზღუდული, რომლებიც მას ნამდვილად სჭირდება.

ჩემს Debian-სერვერზე sudo ბრძანება არ არსებობს. რატომ?

Debian-ის მინიმალური image-ები მას ყოველთვის არ შეიცავს. დააინსტალირეთ root-ით 'apt install -y sudo'-ით, შემდეგ კი თქვენი მომხმარებელი sudo ჯგუფში დაამატეთ.

რომელი SSH-პორტი გამოვიყენო?

ის, რომელიც სამართავ პანელშია ნაჩვენები. გამოყოფილი IP-ის გეგმები თქვენს IP-ზე 22-ე პორტს იყენებენ; NAT-გეგმები — თქვენს პირად SSH-პორტს.

კომენტარები

ჯერ არ არის კომენტარები. იყავით პირველი.

დატოვეთ კომენტარი

კომენტარები მოდერირდება გამოჩენამდე.