Защита виртуального сервера VDS Linux. Часть 1

Spread the love

После покупки виртуального сервера, первым делом необходимо его настроить и позаботится о защите VDS. В статье покажу, как правильно настроить и защитить виртуальный сервер на Linux. Погнали!

Мы будем рассматривать нас­трой­ку VDS на при­мере дистрибутива Ubuntu, но инструкция, также актуальна для других дистрибутивов. 

Сна­чала про­читайте инструкцию, вник­ните, пой­мите, что вам нуж­но, а что нет, и толь­ко после этого используйте рекомен­даци­и! Если прос­то ско­пиру­ете и примените некото­рые коман­ды в кон­соли под рутом, то можете потерять дос­туп к сер­веру. Поддержка вам, разумеется, поможет и восстановит доступ, но восстановить потраченное вре­мя, вам ник­то не сможет. 

Смена пароля пользователя root 

Обычно, после покупки виртуального сервера вам должны сооб­щить его IP-адрес и пароль поль­зовате­ля. Пароль можно найти в панели управле­ния сер­вером. Обычно пароль создается генератором паролей и хранится в базе дан­ных. Такие пароли не всегда отвечают требования. Это говорим о том, что его лучше сразу изменить. 

Зай­дите по SSH с правами root и вве­дите следующую коман­ду: 

passwd  

При изменении пароля сим­волы не будут отоб­ража­ться — это нор­маль­но. Вве­дите новый пароль и наж­ми Enter. На данном эта­пе мы уже себя немного обе­зопа­сили. Теперь можно прис­тупить к последующей нас­трой­ке. 

Из сооб­ражений безопасности, стоит изменять пароль минимум раз в пол года (чем чаще, тем лучше). 

Есть разные стра­тегии обеспечения безопасности учет­ной записи root: 

Вы создаете учет­ную запись поль­зовате­ля с извес­тным толь­ко вам име­нем, пре­дос­тавля­ете ей воз­можность исполь­зовать коман­ду sudo (что­бы вы могли редак­тировать фай­лы кон­фигура­ции и уста­нав­ливать ПО), а затем отклю­чаете вход для пользователя root по SSH. На выходе мы получим пароль­ную аутен­тифика­цию, но будет исполь­зована учет­ная запись, имя которой извес­тно только вам. Пре­иму­щес­тва такие: ник­то не взло­мает учет­ную запись root, пос­коль­ку она всегда будет вык­лючена. Недос­таток один — пароль­ная аутен­тифика­ция не настолько надеж­на, как аутен­тифика­ция по пуб­лично­му клю­чу. 

Вто­рая стра­тегия зак­люча­ется в исполь­зовании пуб­лично­го клю­ча. Недос­таток заключается в более слож­ной нас­трой­ке, именно для конеч­ных поль­зовате­лей: им при­дет­ся генери­ровать пару клю­чей, и для пользователя, который никог­да это­го не делал, будет слож­но. Большое пре­иму­щес­тво аутен­тифика­ции по пуб­лично­му клю­чу заключается в том, что ник­то не смо­жет сбрутить пароль и получить дос­туп к вашему виртуальному сер­веру. 

Если собираетесь исполь­зовать аутен­тифика­цию по клю­чу, тогда можете про­пус­тить главы 2 и 4 — не необходимости соз­давать допол­нитель­ную учет­ную запись и вно­сить ее в sudoers. А вот главу 3 стоит прочитать, так как хороший редак­тор вам очень при­годит­ся.

Создание обычного пользователя 

Пос­ле покуп­ки виртуального сервера VDS клиенту сооб­щают пароль root, после чего, поль­зователь вставляет его в про­филь сво­его SSH-кли­ента. Но так поступать нельзя. Во‑пер­вых, учет­ка root — это всем извес­тное имя пользователя, и, ког­да хакер начнет пытаться взло­мать ваш сер­вер методом перебора, он начнет именно с учет­ной записи root. Учетные записи созданные вами он не знает, а root знают все. Поэто­му нам нужно создать обыч­ного поль­зователя, под которым вы будете работать всегда. 

Соз­дайте свою учетную запись (обязательно изме­ните имя на свое): 

adduser user
passwd user  
  • Коман­да adduser добавит нового пользователя с име­нем user.
  • Команда passwd изме­нит пароль новой учетной записи. 

Толь­ко не стоит соз­давать поль­зовате­ля admin, пожалуй­ста! 

Что­бы данный поль­зователь мог работать с пра­вами root, надо будет добавить его в sudoers. Для этого нужен редактор, не просто редактор, а удобный редактор! 

Установка удобного редактора 

Ис­поль­зуемый подавляющим боль­шинс­твом про­вай­деров редак­тор по умол­чанию Vi очень неудоб­ный и тре­бует дополнительных зна­ний, что может напугать начина­ющего поль­зовате­ля. 

Пе­ред уста­нов­кой ПО всегда начинайте с обно­вления спис­ков пакетов. Сделать это можно с помощью коман­ды apt update. Обновлять спи­сок пакетов надо как минимум один раз — перед пер­вой уста­нов­кой. Потом выполняют обновле­ние по мере необ­ходимос­ти. 

# apt update  

Итак, уста­новите любой удобный тек­сто­вый редак­тор, который вам нра­вит­ся. Мне нравится редак­тор nano: 

# apt install nano  

За­пус­тить отдель­но можете с помощью команды nano. Находим местоположение редактора: 

which nano  

Как правило он находится здесь /bin/nano. Теперь, настроим его редактором по умолчанию. В последних версиях Ubuntu это дела­ется таким образом: 

update-alternatives --config editor  

Теперь выберите nano из спис­ка. Если этот способ не работает (нет коман­ды update-alternatives), пропишите перемен­ную окру­жения EDITOR: 

export EDITOR=/bin/nano  

Для автоматического запуска при каждом входе, отре­дак­тируйте файл .bashrc, который лежит в домаш­нем катало­ге поль­зовате­ля. Добавьте в него коман­ду 

export EDITOR=/bin/nano  

Эту операцию надо проделать для каж­дого поль­зовате­ля. Для учетной записи root домаш­ний каталог — /root. Для учетной записи spysoftnet — /home/spysoftnet. 

Пос­ле этих манипуляций, все коман­ды будут вызывать редак­тор nano. Одна из них — visudo. 

Права администратора 

Ра­нее мы соз­дали обыч­ного поль­зовате­ля user. Теперь нуж­но прев­ратить его в адми­нис­тра­тора, то есть пре­дос­тавить воз­можность исполь­зовать sudo. Вве­дите в тер­минале коман­ду 

visudo  

Эта коман­да запус­тит тек­сто­вый редак­тор для изме­нения фай­ла кон­фигура­ции sudoers. Най­дите и рас­коммен­тируйте строч­ку: 

wheel ALL=(ALL) ALL  

Ука­зан­ная строч­ка раз­реша­ет всем поль­зовате­лям груп­пы wheel исполь­зовать коман­ду sudo. Если она уже рас­коммен­тирова­на, ничего делать не нуж­но. Наж­мите F10 для выхода из редак­тора. 

Пос­ле это­го добавьте нашего поль­зовате­ля user в груп­пу wheel: 

usermod -aG wheel user  

Да­лее отклю­читесь от SSH-сер­вера и попытай­тесь вой­ти как поль­зователь user с задан­ным ранее паролем. Обра­тите вни­мание, что, ког­да вы работали как поль­зователь root, приг­лашение коман­дной стро­ки име­ло вид #, теперь оно выг­лядит как $. Залоги­нив­шись, вве­дите коман­ду: 

sudo bash  

Ес­ли приг­лашение коман­дной стро­ки поменя­лось на #, теперь у вас есть пра­ва root. Такой трюк поз­воля­ет вво­дить коман­ды от име­ни root без исполь­зования коман­ды sudo, что, несом­ненно, удоб­нее. 

Запрет входа как root по SSH 

Де­ло оста­лось за малым — зап­ретить поль­зовате­лю root вхо­дить в сис­тему по SSH. Для это­го, работая уже под новым поль­зовате­лем user, вве­дите коман­ду: 

sudo mcedit /etc/ssh/sshd_config  

До­бавьте в кон­фигура­цион­ный файл сер­вера SSH такую стро­ку (или рас­коммен­тируйте ее): 

PermitRootLogin no 

Ваш локаль­ный компь­ютер прос­то не рас­позна­ет уда­лен­ный сер­вер — это нор­маль­но при пер­вом под­клю­чении. Вве­дите yes (имен­но yes, а не y) и наж­мите Enter. Коман­да ssh-copy-id най­дет соз­данный ключ и отпра­вит его на сер­вер. Содер­жимое клю­ча ~/.ssh/id_rsa.pub будет ско­пиро­вано в файл ~/.ssh/authorized_keys уда­лен­ной учет­ной записи. Дан­ный спо­соб сра­бота­ет, если пока еще дей­ству­ет аутен­тифика­ция по паролю. 

На эта­пе пер­воначаль­ной нас­трой­ки это обыч­ное дело — сна­чала все поль­зовате­ли генери­руют клю­чевые пары и заг­ружа­ют на сер­вер свои откры­тые клю­чи, а затем зак­рыва­ется вход по паролю. Но если вход по паролю уже отклю­чен, а вам надо заг­рузить ключ для нового поль­зовате­ля, то пот­ребу­ется най­ти спо­соб дос­тавить ключ (файл id_rsa.pub) на сер­вер. Далее нуж­но перей­ти в каталог ~/.ssh учет­ной записи, для которой нас­тра­ивает­ся ключ, и помес­тить содер­жимое id_rsa.pub в конец фай­ла authorized_keys: 

cat id_rsa.pub >> authorized_keys  

Но не будем стро­ить лиш­ние пред­положе­ния и усложнять себе жизнь. Счи­таем, что дос­туп по паролю пока открыт и дос­таточ­но исполь­зовать коман­ду ssh-copy-id для заг­рузки клю­чей на сер­вер. Ког­да откры­тые клю­чи всех поль­зовате­лей заг­ружены, мож­но отклю­чить вход по паролю. Для это­го откройте в любом тек­сто­вом редак­торе файл /etc/ssh/sshd_config и уста­новите в зна­чение No дирек­тиву PasswordAuthentication: 

PasswordAuthentication no  

Так­же нуж­но убе­дить­ся, что три сле­дующие дирек­тивы уста­нов­лены таким обра­зом: 

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitRootLogin without-password  

Пер­вая вклю­чает аутен­тифика­цию по пуб­лично­му клю­чу, а вто­рая ука­зыва­ет имя фай­ла, в котором дол­жны хра­нить­ся клю­чи. Третья раз­реша­ет вход как root без исполь­зования пароля (по клю­чу). 

Ос­талось перезаг­рузить SSH: 

systemctl restart ssh  

На сто­роне кли­ента вой­ти по клю­чу на SSH-сер­вер мож­но так: 

ssh -i ~/.ssh/id_rsa.pub user@example.com  

Здесь мы ука­зыва­ем имя фай­ла клю­ча, имя поль­зовате­ля и имя сер­вера. В Windows нуж­но нас­тра­ивать исполь­зуемый вами SSH-кли­ент, нап­ример в Bitvise SSH Client необ­ходимо нажать кноп­ку‑ссыл­ку Client key manager на вклад­ке Login и в появив­шемся окне нажать кноп­ку Generate New. В окне Generate New Keypair мож­но прос­то вос­поль­зовать­ся кноп­кой Generate. А мож­но допол­нитель­но защитить клю­чевую пару паролем — для это­го ввес­ти пароль, под­твер­дить его и нажать кноп­ку Generate. Рекомен­дует­ся исполь­зовать пароль­ную фра­зу — если во вре­мя вашего отсутс­твия кто‑то запус­тит SSH-кли­ент и поп­робу­ет под­клю­чить­ся к сер­веру, исполь­зуя ваш откры­тый ключ, у него ничего не получит­ся, так как он не зна­ет пароль. 

Па­роль нужен для дос­тупа к клю­чевой паре толь­ко на локаль­ном компь­юте­ре, он не переда­ется в каком бы то ни было виде на сер­вер. Пос­ле того как клю­чевая пара сге­нери­рова­на, нуж­но нажать кноп­ку Export для экспор­та пуб­лично­го клю­ча. Фор­мат — OpenSSH. Пос­ле того как вы сох­раните откры­тый ключ в каком‑нибудь фай­ле, заг­рузите этот ключ на сер­вер и добавьте его содер­жимое в файл: 

~/.ssh/authorized_keys  

Спо­собов мно­го, нап­ример мож­но исполь­зовать учет­ку, в которой уже нас­тро­ена аутен­тифика­ция для заг­рузки это­го фай­ла. Мож­но заг­рузить ключ на какой‑то сайт и на сер­вере ска­чать его с помощью коман­ды: 

wget http://адрес/имя_файла  

В общем, про­явите фан­тазию, и у вас все получит­ся. Пос­ле того как сер­вер «узна­ет» ваш ключ, в основном окне кли­ента выберите Initial method — publickey, а из спис­ка Client Key — про­филь, в котором вы сох­ранили ключ.

Добавить комментарий

WP2Social Auto Publish Powered By : XYZScripts.com