Перейти к содержимому

Putty inactive что делать

  • автор:

Периодически отлетает и восстанавливается связь по SSH с сервером [дубликат]

Использую 2 машины win10 и ubuntu server оба за маршрутизатором, на сервере отключил файервол и putty стал подключатся. Но спустя часа 3 снова перестал подключатся, потом прошло еще часа 2 снова подключился, все это время ничего вообще не трогал сервер как стоял включенный так я его и не трогал. Ошибка Network error: Connection time out . Cитуация такая PuTTY то подключается то нет, я нагуглил информацию что могу попадать в какой то бан лист своими частыми попытками подключится, где его найти этот бан лист или причина в другом?

Отслеживать
28.6k 21 21 золотой знак 59 59 серебряных знаков 141 141 бронзовый знак
задан 13 дек 2017 в 6:49
user245380 user245380

К серверу значит вы таки подключились? )) Прямо хоть пиши эталонный ответ-закрывашку по бытовым темам администрирования. По теме текущего вопроса: а не запущена ли служба fail2ban? Не настроена ли гибернация на сервере или уход сетевой карты в спящий режим?

13 дек 2017 в 8:45

Знаете все же я думаю это мой фаервол темнит, потому что когда его отключаю sudo ufw disable — мне пишет что фаервол отключен, но когда я сразу после этого пишу sudo service ufw status мне пишет active значит все же это не в сетевухе дело, хотя тоже не исключено, но для начала думаю нужно окончательно с фаерволом разобраться. Так как же все таки полностью отключить ufw? не знаю не хочется новый вопрос создавать.PS Правила для 22 пробовал добавлять он пишет что все ОК но ве ровно не пропускает.

– user245380
13 дек 2017 в 13:18

Хм, я больше CentOS юзаю, но принцип тот же: когда вы делаете disable демону — вы просто отключаете автозапуск. А сам демон может при этом находится в любом статусе. Есть команда sudo service uwf stop — вот она останавливает (вместо stop может быть start, restart)

13 дек 2017 в 13:26

Уже даже не знаю что делать, я снес ufw и установил заново, пока не включал теперь статус inactive, значит он точно не работает, но подключение все ровно не проходит. Может я что то изначально не правильно делаю, хотя пару раз заработало, ip получаю по dhcp пишу ifconfig и в putty вбиваю ip сетевухи и порт 22 все до этого 2 раза подключилось а потом перестало. Кстати ping c сервера например до гугла идет а с моей win машины до сервера не идет.

Putty как перелогиниться?

В putty после длительного простоя иногда пишет inactive или если сижу под одним юзером, хочу перелогиниться, если команду exit даёшь то окно putty закрывается приходится снова открывать, вводить ip заново и другой логин, пароль. Есть какая-то команда что бы выйти из под пользователя, но окно не закрывать и на этом же ip войти под другим пользователем?

  • Вопрос задан более трёх лет назад
  • 3588 просмотров

12 комментариев

Оценить 12 комментариев

Не удаётся завести ssh-сервер

Здравствуйте! Пытаюсь использовать машину с windows 7 как ssh клиент, машину с Linux как сервер. Linux antiX последней версии (то же самое происходит с debian 12).

Суть проблемы – установил openssh, после установки сервер автоматически не заработал, после команды включения сервера то же самое inactive (dead), соответственно клиент его не находит. Подскажите, если нужно сделаю сканы настроек и т.п.

Перемещено hobbit из general

wilddogdingo
19.09.23 18:51:54 MSK

  • Ответить на это сообщение
  • Ссылка

1 2 3 →

openssh-server ? Ошибки/предупреждения в процессе установки были?

GREAT-DNG ★★★
( 19.09.23 19:17:14 MSK )
Последнее исправление: GREAT-DNG 19.09.23 19:22:02 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Linux antiX последней версии … Суть проблемы- установил openssh

Проверил, ради интереса, в вирте с antiX-23_x64-full.iso — там уже установлен openssh, осталось запустить sudo service ssh start . Зашел с хоста без проблем по ssh.

Но у ТС конечно ситуация другая.

krasnh ★★★
( 19.09.23 19:22:55 MSK )
Последнее исправление: krasnh 19.09.23 19:26:23 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от GREAT-DNG 19.09.23 19:17:14 MSK

Извините, я пока не пойму ни как тут изображение к ответу прикрепить, ни как цитировать.

Windows клиент да, PuTTy.

Ошибок и предупреждений вроде не было.

Команда включения сервера sudo systemctl start ssh.

wilddogdingo
( 19.09.23 20:04:48 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Ответ на: комментарий от krasnh 19.09.23 19:22:55 MSK

Дело в том что у меня 32-х битная машина сервер (и antiX cоответственно), единственной её задачей будет управление чпу-станком.

wilddogdingo
( 19.09.23 20:07:13 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

В Debian 12 выполни команду systemctl status sshd . В зависимости от вывода надо будет включить/разрешить/запустить/ – эта часть интуитивно понятна (и гуглится легко).

Скринов не надо: сюда ты их не выложишь, а все настройки можно копипастить как тест. Единственно надо освоить разметку сообщений – без неё «буквенную кашу» мало кто захочет разбирать.

master_0K ★
( 19.09.23 20:28:33 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от wilddogdingo 19.09.23 20:04:48 MSK

Извините, я пока не пойму ни как тут изображение к ответу прикрепить, ни как цитировать.

Изображения заливай на сторонние сервисы, например 0x0.st и скидывай ссылкой. Цитируй с помощью > . Подробнее.

Команда включения сервера sudo systemctl start ssh.

Вывода нет? ЕМНИП sshd .

GREAT-DNG ★★★
( 19.09.23 20:31:25 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от wilddogdingo 19.09.23 20:04:48 MSK

Команда включения сервера sudo systemctl start ssh.

Если речь об antiX, там нет systemd. В debian есть, да.

krasnh ★★★
( 19.09.23 20:34:03 MSK )
Последнее исправление: krasnh 19.09.23 20:34:19 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от GREAT-DNG 19.09.23 20:31:25 MSK

Я к сожалению не знаю как это проверить.

Но только что проверил с помощью sudo netstat –plant | grep :22 и ps aux | grep sshd, и так и так показывает listen. Странно.

wilddogdingo
( 19.09.23 21:01:42 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

На 12 дебиане есть кстати такая проблема: при загрузке машины sshd падает с ошибкой что порт занят. Когда делаешь systemctl start sshd — все хорошо. Менял порт и все такое — одно и то же

verh010m
( 19.09.23 21:17:33 MSK )

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Ответ на: комментарий от verh010m 19.09.23 21:17:33 MSK

На 12 дебиане есть кстати такая проблема:

Возможно antiX заимствует эти вещи у debian, правда мне systemctl start sshd не помогает. Возможно правда нужно поэксперементировать со старыми версиями antiX и debian.

wilddogdingo
( 19.09.23 21:51:03 MSK ) автор топика

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от verh010m 19.09.23 21:17:33 MSK

Это твоя личная проблема, как я понимаю… У меня три 12х дебиана (апгрейда с 11) и всё норм.

vitruss ★★★★
( 19.09.23 23:35:20 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от vitruss 19.09.23 23:35:20 MSK

У меня три 12х дебиана (апгрейда с 11) и всё норм

Может это у 32-х битного debian проблема с ssh? У Вас 64-х битные машины?

wilddogdingo
( 19.09.23 23:44:55 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от wilddogdingo 19.09.23 21:01:42 MSK

Я к сожалению не знаю как это проверить.

Запустить команду и посмотреть что выводится на экран во время ее выполнения

GREAT-DNG ★★★
( 20.09.23 04:21:26 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от wilddogdingo 19.09.23 21:01:42 MSK

Конфиги sshd меняли или дистрибутивные?

listen у sshd или другой процесс?

В выводе какой команды inactive?

sshd падает с ошибкой что порт занят.

Лучше приводите полный текст ошибки и откуда её взяли (из вывода какой команды/файла).

И лучше какой-нибудь один дистрибутив, так как в debian systemd, а в antix его нет, команды разные. Кстати, antix у вас с sysVinit или на runit переключили? В треде уже началась мешанина, ещё добавите разных дистрибутивов и вобще будет не понять.

mky ★★★★★
( 20.09.23 05:59:14 MSK )

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Ответ на: комментарий от mky 20.09.23 05:59:14 MSK

Лучше приводите полный текст ошибки и откуда её взяли (из вывода какой команды/файла)

journalctl | grep -i ssh 

напоминает, что при загрузке было

Bind to port 22 failed: Address already in use 

verh010m
( 20.09.23 10:29:52 MSK )
Последнее исправление: verh010m 20.09.23 10:32:28 MSK (всего исправлений: 2)

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Может быть какой-нибудь inetd сокет забирает? Или как там сокет-активация до systemd делалась?

Khnazile ★★★★★
( 20.09.23 10:41:20 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от mky 20.09.23 05:59:14 MSK

Конфиги sshd меняли или дистрибутивные?

opevssh установил, еслм Вы об этом.

listen у sshd или другой процесс?

listen при проверке порта sudo netstat –plant | grep :22

В выводе какой команды inactive?

В выводе sudo systemctl status ssh выдаёт inactive (dead)

sshd падает с ошибкой что порт занят.

Это не я, это verh010m писал.

Кстати, antix у вас с sysVinit или на runit переключили?

Я не переключал, как по умолчанию, видимо sysVinit .

wilddogdingo
( 20.09.23 10:57:27 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от Khnazile 20.09.23 10:41:20 MSK

Вроде ничего лишнего не делал.Только установил antiX

wilddogdingo
( 20.09.23 11:00:11 MSK ) автор топика

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от GREAT-DNG 20.09.23 04:21:26 MSK

Ничего нет на выводе, как будто команда выполнена.

wilddogdingo
( 20.09.23 11:01:18 MSK ) автор топика

  • Ответить на это сообщение
  • Ссылка

ssh еще надо енайблить

$ sudo -s
# systemctl enable ssh
# systemctl start ssh

shTigrits ★★
( 20.09.23 11:17:19 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от shTigrits 20.09.23 11:17:19 MSK

После выполнения вашей рекомендации sudo systemctl status ssh стал выдавать failed вместо inactive (dead). PuTTY всё равно не находит.

wilddogdingo
( 20.09.23 11:33:45 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от wilddogdingo 20.09.23 11:33:45 MSK

а чонить типа «See „systemctl status ssh.service“ and „journalctl -xe“ for details» — не пишет?

shTigrits ★★
( 20.09.23 11:36:29 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от shTigrits 20.09.23 11:36:29 MSK

а чонить типа «See „systemctl status ssh.service“ and „journalctl -xe“ for details» — не пишет?

Если полностью вот что пишет: ssh.service — OpenBSD Secure Shell server Loaded: loaded (/usr/lib/systemd/system/ssh.service, enabled) Active: failed (failed)

wilddogdingo
( 20.09.23 11:44:15 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Запустить демон напрямую, через рут. Посмотреть будет ли падать и что выдаст.

xDShot ★★★★★
( 20.09.23 11:51:50 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от wilddogdingo 20.09.23 11:44:15 MSK

Давай сначала, а то все уже запутались:

  1. Ты используешь antiX-23 x86 (дебиан отложим в сторону)
  2. Версия установочного iso — core, раз там нет ssh.
  3. Ты устанавливаешь ssh, выполняя команды sudo apt update && sudo apt install openssh-server или ( sudo apt install ssh )
  4. Проверяешь запуск service ssh status , выхлоп будет sshd is running .

Короче говоря, ошибка где-то в твоих действиях, имхо. У меня в вирте все работает.

krasnh ★★★
( 20.09.23 11:59:09 MSK )
Последнее исправление: krasnh 20.09.23 12:01:15 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

sshd -t

mrjaggers
( 20.09.23 12:03:33 MSK )

  • Ответить на это сообщение
  • Ссылка

wilddogdingo — именно поэтому не советуют ставить редкие дистрибутивы. Тем более на сервер, поставь лучше Debian 12 или Ubuntu 22.04.

GREAT-DNG , krasnh , master_0K , mky , Khnazile , xDShot , shTigrits — у него же antiX. Там systemd хотя и запускается, но не как init! Вот отсюда все проблемы, что он ему командует запускать через systemctl , а тут нужно через service или ещё как.

Vsevolod-linuxoid ★★★★★
( 20.09.23 12:28:36 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от wilddogdingo 20.09.23 10:57:27 MSK

Я про редактирование файла конфигурации в /etc/ssh/

Вы совсем не понимаете вывод команды netstat? Раз вы указали опцию ″-p″, то ″netstat″ после ″LISTEN″ выводит pid и имя процесса, который слушает порт. У вас там sshd или что-то левое?

Вы используете команду systemctl в antix? В antix нет systemd и systemctl не настоящий, это docker-systemctl-replacement, он не имеет отношения к запускаемому при старте системы sshd.

В antix с sysvinit положено:

Проверка состояния ssh:$ sudo service ssh status Запуск вручную:$ sudo service ssh start Останов вручную:$ sudo service ssh stop Запуск при загрузке:$ sudo update-rc.d ssh defaults Запрет автоматического запуска:$ sudo update-rc.d ssh remove 

mky ★★★★★
( 20.09.23 12:33:42 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от wilddogdingo 19.09.23 23:44:55 MSK

Да. Всё равно не думаю что это так. Можете попробовать проверить в виртулке. Может там что-то из initramfs остаётся ещё на момент запуска sshd…

vitruss ★★★★
( 20.09.23 12:36:26 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от Vsevolod-linuxoid 20.09.23 12:28:36 MSK

Если бы ТС изначально не путал antix и debian, было бы проще. А надо ему не ″service″, а ″update-rc.d″.

mky ★★★★★
( 20.09.23 12:38:59 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от krasnh 20.09.23 11:59:09 MSK

Я понимаю что где то просто туплю как новичок, хоть и действую по инструкции. Отвечая по пунктам на ваши вопросы:

Версия установочного iso — core

Нет, я ставил base, это не правильно?

Ты устанавливаешь ssh, выполняя команды sudo apt update && sudo apt install openssh-server

Проверяешь запуск service ssh status, выхлоп будет sshd is running.

Да, но при sudo systemctl status ssh выдаёт inactive (dead)

wilddogdingo
( 20.09.23 12:49:35 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Ответ на: комментарий от mky 20.09.23 12:38:59 MSK

Ну вот. Каждый первый новичок с дурацкими проблемами на ровном месте обязательно взгромоздит какую-то экзотику.

А потом удивляется, что это на ней не работают инструкции от Debian и Ubuntu — да потому что это не Debian и не Ubuntu, а переделки с сюрпризами от разработчиков!

Vsevolod-linuxoid ★★★★★
( 20.09.23 12:52:41 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от verh010m 20.09.23 10:29:52 MSK

Создайте отдельную тему, зачем вы в этой теме путаете других?

И приводите ПОЛНОСТЬЮ всё сообщение об ошибке, а не ваши фантазии. Приведёная вами строка не может пройти через «| grep -i ssh», она не содержит ssh.

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

mky ★★★★★
( 20.09.23 12:53:32 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от wilddogdingo 20.09.23 12:49:35 MSK

при sudo systemctl status ssh выдаёт inactive (dead)

Потому что systemctl — это команды systemd, а в antiX другой init, чем в Debian или Ubuntu.

Если не понимаешь таких тонкостей, поставь оригинальный Debian 12 или Ubuntu 22.04 и не мучайся.

Vsevolod-linuxoid ★★★★★
( 20.09.23 12:54:39 MSK )

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Ответ на: комментарий от wilddogdingo 20.09.23 12:49:35 MSK

я ставил base, это не правильно?

Да, но при sudo systemctl status ssh выдаёт inactive (dead)

Мой коммент выше: «Проверяешь запуск service ssh status , выхлоп будет sshd is running. »
Обрати внимание, здесь нет упоминания systemctl. Остальные команды здесь Не удаётся завести ssh-сервер (комментарий).

krasnh ★★★
( 20.09.23 12:56:45 MSK )
Последнее исправление: krasnh 20.09.23 12:58:18 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от Vsevolod-linuxoid 20.09.23 12:54:39 MSK

Потому что systemctl — это команды systemd,

Этот тот systemctl, который гуглится на форумах/мануалах. А в antix другой systemctl, я уже давал его полное название, написан на питоне. Явно специально, чтобы всех запутать :))

mky ★★★★★
( 20.09.23 12:56:55 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от wilddogdingo 20.09.23 12:49:35 MSK

Если вы действуете по инструкции, с этого лучше было и начинать, давать на ссылку на инструкцию. Инструкции от дистрибутивов с systemd не подходят к antix. Это важно на будущее, если остнитесь на antix.

mky ★★★★★
( 20.09.23 12:59:27 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от mky 20.09.23 12:33:42 MSK

Вы совсем не понимаете вывод команды netstat? У вас там sshd или что-то левое?

Вы извините, я действительно знаком с Linux 2 дня. У меня sshd.

wilddogdingo
( 20.09.23 13:10:40 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от mky 20.09.23 12:59:27 MSK

Если вы действуете по инструкции, с этого лучше было и начинать, давать на ссылку на инструкцию. Инструкции от дистрибутивов с systemd не подходят к antix.

Инструкция касается только установки программы для чпу-станка, а не установки сервера. Всё что касается сервера я старался делать по инструкциям к debian, так как прочитал, что antiX собран на основе debian. Antix 23 я выбрал как раз потому что он на основе debian, а работает на старой 32-х разрядной машине заметно веселее чем debian 12. Я не знал всех нюансов.

wilddogdingo
( 20.09.23 13:21:47 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от krasnh 20.09.23 12:56:45 MSK

Да, я уже понял. У меня sshd is running. Стало быть сервер работает? Может я что то с PuTTY туплю? Хотя там всё просто, да он и находит другие сервера.

wilddogdingo
( 20.09.23 13:27:08 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Как установить и настроить веб-сервер Apache

Рассказываем, как настроить виртуальные хосты, доступ к серверу по протоколу HTTPS и задать настройки безопасности.

Введение

Apache — кроссплатформенный HTTP-сервер, который был создан с учетом ошибок старого web-сервера NCSA HTTPd. На данный момент стабильная версия имеет номер 2.4.48. Основные достоинства Apache: кроссплатформенность и модульная система, позволяющая оптимизировать программное обеспечения для нужд конкретной разработки.

В этой статье рассмотрим установку HTTP-сервера Apache на операционную систему (ОС) Ubuntu. В рамках этой публикации используется релиз Ubuntu 20.04 server. И web-сервер Apache версии 2. Развернута система в «Облачной платформе» Selectel. Для тестового сервера используется минимальная конфигурация мощностей: 1 процессор, 1 ГБ оперативной памяти. Для запуска простого ненагруженного web-приложения этого достаточно.

Настроить виртуальный сервер

Для этой инструкции используется виртуальная среда Selectel. Панель управления расположена по адресу: https://my.selectel.ru/.

В разделе «Облачная платформа» во вкладке «Серверы» создадим новый сервер.

Используем минимальную конфигурацию:

В настройках надо выбрать образ операционной системы для установки.

Оставим себе root-пароль и создадим сервер. После этого в панели управления появится ip-адрес сервера.

Теперь можем подключиться к нему по SSH.

Самым простым способом подключения является использование утилиты PuTTY. Эта утилита является кроссплатформенной. Скачать ее можно с официального сайта https://putty.org.ru/.

Для подключения в поле Host Name (or IP address) вводим полученный ранее ip-адрес, остальные опции оставляем без изменений.

После нажатия кнопки Open эмулятор терминала произведет подключение к серверу. Потребуется ввести комбинацию логин/пароль. На первоначальном этапе используем логин root и пароль, полученные на этапе создания сервера.

login as: vlan48 vlan48@xx.xx.xx.18's password: Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-77-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 31 updates login as: vlan48 vlan48@xx.xx.xx.18's password: Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-77-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 31 updates can be applied immediately. To see these additional updates run: apt list --upgradable *** System restart required *** Last login: Tue Aug 3 09:51:36 2021 from xx.xx.xx.230 vlan48@apachi:~$ 

Установить Apache

При установке и конфигурации будет использован пользователь, отличный от root, но с правами администратора. Для большинства операций применяется повышение привилегий через sudo. Первоначально необходимо загрузить информацию об актуальных списках пакетов и зависимостях.

sudo apt update 

После этой операции произведем установку пакета Apache2, он располагается в стандартном репозитории, дополнительные добавлять не нужно.

sudo apt install apache2 

По окончании демон запускается автоматически, а также попадает в автозагрузку.

Настроить брандмауэр для Apache

По умолчанию в Ubuntu используется ufw. Uncomplicated Firewall — утилита для настройки межсетевого экрана. Если настройка происходит на виртуальном сервере, желательно проверить наличие установленной утилиты.

sudo ufw status verbose 

В случае отсутствия ее в списке установленных пакетов появится ошибка:

sudo: ufw: command not found

Тогда ее необходимо установить:

sudo apt install ufw 

Заново запросим ее статус:

Status: inactive 

Это означает, что она деактивирована. Активируем:

sudo ufw enable 

Разрешаем HTTP на сервере:

sudo ufw allow http 

Очень важно в этом моменте разрешить SSH-доступ. На тестовом сервере SSH на стандартном порту.

sudo ufw allow 22/tcp 

Обязательно перезапустить процесс:

sudo ufw reload 

Проверить базовую настройку Apache

На данный момент сервер доступен из интернета по HTTP. Можно проверить это в браузере по ip-адресу в поисковой строке. Ip-адрес мы уже получили в панели управления сервером.

Появившееся приветствие означает успешную начальную настройку Apache-сервера.

Как запустить Apache и другие полезные команды

В этом разделе будут собраны базовые команды для управления Apache web-сервером. Несмотря на то, что демон запускается самостоятельно, иногда необходимо выключить его или перечитать конфигурацию.

Проверить статуса демона Apache:

sudo systemctl status apache2 

В выводе будет указан текущий статус. Возможны два варианта.

apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-07-15 09:49:55 UTC; 2 weeks 5 days ago Docs: https://httpd.apache.org/docs/2.4/ Process: 535575 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) Main PID: 718 (apache2) Tasks: 55 (limit: 1105) Memory: 12.9M CGroup: /system.slice/apache2.service ├─ 718 /usr/sbin/apache2 -k start ├─535580 /usr/sbin/apache2 -k start └─535581 /usr/sbin/apache2 -k start 
apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: inactive (dead) since Tue 2021-08-03 10:01:39 UTC; 2s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 535575 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) Process: 544224 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Main PID: 718 (code=exited, status=0/SUCCESS)

Иногда возникает ошибка.

apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2021-08-03 10:07:39 UTC; 5s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 544394 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE) Aug 03 10:07:39 apachi systemd[1]: Starting The Apache HTTP Server. Aug 03 10:07:39 apachi apachectl[544401]: AH00526: Syntax error on line 134 of /etc/apache2/apache2.conf:

Чтобы выйти в консоль из статуса, необходимо использовать комбинацию клавиш Ctrl+С.

sudo systemctl stop apache2 
sudo systemctl start apache2 
sudo systemctl restart apache2 

При изменении конфигурации Apache возможно ее перечитать без разрыва текущей сессии с хостов:

sudo systemctl reload apache2 

Чтобы деактивировать запуск web-сервера при загрузке:

sudo systemctl disable apache2 

Активировать в загрузку:

sudo systemctl enable apache2 

Настроить виртуальные хосты Apache

Можно использовать веб-сервер Apache для поддержки одного web-приложения. Но достаточно часто приходится на одном сервере создавать и обслуживать несколько web-ресурсов.

В Apache для этих целей используется модуль виртуальных хостов. Он позволяет развернуть несколько web-приложений на одном сервере с использованием одного ip-адреса, но разных доменных имен. Про теорию доменных имен есть хорошие статьи и книги, например, Крикет Ли, Пол Альбитц “DNS и BIND”. Об управлении доменами и ресурсными записями написали в базе знаний Selectel.

Перейдем к настройке виртуального хоста.

В Ubuntu конфигурации виртуальных хостов расположены в директории /etc/apache2/sites-available. Нам необходимо получить директорию для виртуального хоста по умолчанию. Получим root-директорию из файла дефолтной конфигурации:

grep "DocumentRoot" /etc/apache2/sites-available/000-default.conf 
DocumentRoot /var/www/html

Создадим новые необходимые директории, не меняя корневой.

sudo mkdir -p /var/www/sample.net/html 

В стандартном исполнении Apache ищет документ index.htm или index.html

Создадим простой html5-документ:

sudo touch /var/www/sample.net/html/index.html 

Добавим небольшую структуру документа, открыв его в текстовом редакторе:

sudo nano /var/www/sample.net/html/index.html 

Вставляем в файл.

   Hello 

Hello Selectel!

Чтобы оставить дефолтную конфигурацию виртуального хоста неизменной, копируем его в созданную ранее директорию настроек нового виртуального хоста.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/sample.net.conf 

Теперь откроем скопированный файл, рассмотрим основные директивы и внесем необходимые правки. На данном этапе нам будет интересна только строка, в которой указан путь к директории виртуального хоста. Меняем его на путь к директории, созданной специально для него. Чтобы при обращении Аpache мог перенаправить запрос именно к созданному нами виртуальному хосту.

sudo nano /etc/apache2/sites-available/sample.net.conf 

Файл дефолтного виртуального хоста:

 # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # Available loglevels: trace8, . trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog $/error.log CustomLog $/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

— в этой строке указываем ip-адрес сервера, а также порт, используемый для этого виртуального хоста. На данный момент мы используем HTTP и один ip-адрес. В связи с этим номер порта 80, адрес не указываем. Настройка HTTPS будет описана ниже.

ServerAdmin webmaster@localhost — строка связи с администратором, необходимо указать активный почтовый адрес отвечающего за обслуживание сервера специалиста. Опционально. Добавим адрес, по которому всегда придут на помощь support@selectel.ru.

DocumentRoot /var/www/html — root-директория или корневой каталог виртуального хоста. Обязательна к применению и настройке. В нашем случае это путь к созданной ранее директории с документом index.html. Вносим изменения:

 /var/www/sample.net/html 

ErrorLog $/error.log — путь к файлу с логами сервера. Вносить какие-либо изменения нет необходимости. Здесь будут храниться ошибки запуска демона и ошибки, не относящиеся к клиентам.

CustomLog $/access.log combined — это директива для хранения логов клиентского доступа.

Редактирование файла на этом завершается. Это минимальная конфигурация для запуска виртуального хоста на Apache web-сервере. Изменять конфигурацию далее на данном этапе нет необходимости.

Сохраняем и выходим из редактора. Для сохранения используется комбинация Ctrl+o, для выхода Ctrl+x.

Файл с готовой конфигурацией:

  # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin support@selectel.ru DocumentRoot /var/www/sample.net/html # Available loglevels: trace8, . trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog $/error.log CustomLog $/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

Для подключения виртуальных хостов, а также модулей в Apache HTTP-сервере используется набор команд:

a2enmod — подключение модуля;

a2dismod — отключение модуля;

a2ensite — подключает виртуальный хост;

a2dissite — отключает виртуальный хост.

Нам потребуется a2ensite для активации созданного хоста:

sudo a2ensite sample.net.conf 

И a2dissite для деактивации дефолтного:

sudo a2dissite 000-default.conf 

После внесенных изменений требуется перечитать конфигурацию сервера:

sudo systemctl reload apache2 

Теперь мы можем обратиться с созданному виртуальному хосту по доменному имени.

В этой инструкции мы не используем dns, поэтому для разрешения имени используем файл hosts.

В windows этот файл расположен здесь: C:\Windows\System32\drivers\etc\hosts.

А в linux/mac: /etc/hosts.

Добавим строчку: 94.0.0.0 sample.net.

Где 94.0.0.0 — ранее полученный ip-адрес сервера, а sample.net — доменное имя виртуального хоста.

Теперь перейдем в браузер и в адресной строке наберем :sample.net.

Получим созданное web-приложение:

SSL для Apache

TLS (transport layer security — протокол защиты транспортного уровня) и предыдущая версия защиты SSL (secure sockets layer — слой защищенных сокетов). Это все протоколы криптографии, созданные для защиты передачи данных между узлами в информационной сети.

Оба протокола используют асимметричное шифрование для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений. Подробно останавливаться на теории сейчас нет необходимости. На первоначальном этапе достаточно быть в курсе, что эти протоколы отвечают за сохранность конфиденциальности данных в момент обмена данными между клиентом и сервером. Ключи могут быть самозаверяющими, т.е. созданными и подписанными самим web-сервером.

Такие ключи подходят для использования протокола HTTPS и шифрования данных, но не являются доверенными для сети интернет. Также сертификаты бывают выданными центрами сертификации. Они не только шифруют данные, но также web-браузер знает о таком ключе и доверяет ему по-умолчанию. В таком случае сертификаты платные, но имеется возможность использования бесплатного сервиса Let`s encrypt. С использованием сервиса можно создать и заверить ключ.

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

Облачные серверы с гибкой производительностью ядра vCPU

Создать SSL-сертификат на сервере

Чтобы создать и подписать сертификат, потребуется пакет OpenSSL. Он есть в системе, не нужно устанавливать. Сейчас будет создан и подписан сертификат, а также закрытый и открытый ключи будут перемещены в необходимые директории.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server-sample.key -out /etc/ssl/certs/server-sample.crt 

Расшифровка опций из команды:

req -x509 — опция определения стандарта сертификата (-x509 стандарт инфраструктуры открытого ключа).

-nodes — отказаться от защиты сертификата паролем. Если убрать эту опцию, произойдет запрос пароля для ключа, который необходимо вводить при каждом запуске web-сервера (желательно использовать в продакшене).

-days 365 — срок действия сертификата. Обычно срок устанавливается более длительный, но для тестового сервера достаточно. Также необходимо учитывать, что на web-сервере время и дата должны быть верными.

-newkey rsa:2048 — опция указывает на создание нового сертификата и ключа единовременно. Часть rsa:2048 обозначает размер ключа.

-keyout /etc/ssl/private/server-sample.key — обозначает директорию, в которую необходимо поместить закрытый ключ.

-out /etc/ssl/certs/server-sample.crt- — директория местоположения сертификата.

server-sample.key и server-sample.crt — имена ключа и сертификата.

После ввода команды потребуется ответить на некоторые вопросы, разберем список директив:

Country Name (2 letter code) [AU]:RU — указываем страну

State or Province Name (full name) [Some-State]:LIP — область

Locality Name (eg, city) []:Lipetsk — город

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sel — организацию

Organizational Unit Name (eg, section) []:Sel — отдел

Common Name (e.g. server FQDN or YOUR name) []:94.255.255.255 — вводим доменное имя или белый адрес сервера

После выполнения операции требуется подключение модуля SSL для Apache HTTP-сервера. Ранее были разобраны команды для этого действия. Вот так выглядит необходимая:

sudo a2enmod ssl 

После включения модуля необходимо перезапустить демона Apache.
Переходим к настройке HTTPS для виртуального хоста. Вносим изменения в файл его настройки.

sudo nano /etc/apache2/sites-available/sample.net.conf 

Во-первых, меняем директиву .

Порт изменится на 443 (порт для протокола HTTPS по умолчанию).

Добавляем директиву SSLEngine on после строки DocumentRoot для включения поддержки SSL на web-сервере.

После этого еще две строки, в которых указан путь к ключу и сертификату:

SSLCertificateFile /etc/ssl/certs/server-sample.crt SSLCertificateKeyFile /etc/ssl/private/server-sample.key 

Теперь файл конфигурации виртуального хоста выглядит следующим образом:

 # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.sample.net ServerAdmin support@selectel.ru DocumentRoot /var/www/sample.net/html SSLEngine on SSLCertificateFile /etc/ssl/certs/server-sample.crt SSLCertificateKeyFile /etc/ssl/private/server-sample.key # Available loglevels: trace8, . trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog $/error.log CustomLog $/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

Перед проверкой по web добавим разрешающее правило безопасности:

sudo ufw allow https 

А также перечитаем конфигурацию web-сервера Apache:

sudo systemctl reload apache2 

Теперь при запросе сервера по HTTPS:sample.net браузер выдаст оповещение о небезопасном сертификате. Проигнорировав его, будет отображено созданное ранее web-приложение.

На этом настройка SSL закончена.

Конфигурационные файлы и директории web-сервера Apache

Приведенные файлы и директории используются для настройки Apache-сервера. В данном документе уникальных настроек не приводится. Этот раздел создан для ознакомительных целей.

/etc/apache2 — директория конфигурационных файлов Apache.

/etc/apache2/apache2.conf — основной файл конфигурации сервера. Он отвечает за множество настроек сервера. Например, включить чтение файла .htaccess необходимо именно здесь.

/etc/apache2/envvars — файл значения переменных среды для Apache.

/etc/apache2/magic — отображает инструкции для определения типа файла на сервере и клиенте.

/etc/apache2/ports.conf — настройка слушающих портов по умолчанию.

/etc/apache2/sites-available/ — директория конфигураций виртуальных хостов.

/etc/apache2/sites-enabled/ — здесь хранится информация об активных виртуальных хостах.

/etc/apache2/conf-available/ — директория настроек хостов, не относящихся к виртуальным.

/etc/apache2/conf-enabled/ — ссылки на включенные хосты, не относящиеся к виртуальным.

/etc/apache2/mods-available/ и /etc/apache2/mods-enabled/ — директории модулей. Модули, а также их настройки расположены здесь.

/var/www — директория для хранения web-приложений. Обычно виртуальные хосты тоже хранят здесь. Может быть изменена.

/var/log/apache2 — директория файлов логирования, содержит в себе два файла, ранее в этой инструкции было описано какой из них за что отвечает.

Безопасность web-сервера Apache

Сервер, который смотрит в интернет, вне зависимости от задач на него возложенных, находится в опасности. Он может быть атакован злоумышленниками с последующим вмешательством в его функциональность. Рассмотрим защиту от доступа неблагонадежных пользователей к серверу по протоколу SSH.

В Linux-системах отличным решением является утилита Fail2ban. Принцип ее работы основан на отслеживании файлов логирования доступа к серверу. По заданному количеству попыток обращений создается правило блокировки ip-адреса, с которого предположительно происходит вторжение.

Установка и настройка Fail2ban

sudo apt-get install fail2ban -y 

Утилита из коробки включает защиту от перебора паролей. Но в нашем случае перед включением будут внесены несколько изменений.

/etc/fail2ban/jail.conf — отвечает за настройки безопасности конкретных сервисов.

Вносить изменения в него не рекомендуется, поэтому создадим новый файл с расширением .local. Эти файлы имеют приоритет выше, чем файл .conf для Fail2ban.

sudo nano /etc/fail2ban/jail.local 

Внесем настройки для защиты SSH:

[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 4 bantime = 60 

Директива [sshd] отвечает за защиту доступа по SSH при отказе в авторизации;

enabled = true — состояние;

port = 22 — номер порта;

filter = sshd — имя, по которому идет поиск в логах сервиса;

logpath = /var/log/auth.log — файл журнала, из которого будут взяты результаты поиска по фильтру;

maxretry = 4 — количество неудачных попыток;

bantime = 60 — время блокировки в секундах. Сейчас эта секция добавлена для тестовой инструкции, в продакшене обычно время блокировки больше.

С настройкой закончили, добавим демона fail2ban в загрузку и запустим, а потом проверим его работу.

sudo systemctl enable fail2ban sudo systemctl start fail2ban 

Как мы видим, доступ заблокирован после превышения попыток авторизации.

Через 60 секунд доступ появится.

Для того, чтобы разблокировать доступ, принудительно используется команда:

sudo fail2ban-client set sshd unbanip ip_add 

ip_add — заблокированный адрес.

Заключение

На этом инструкция по настройке web-сервера Apache завершена. Подведем итог: мы настроили один из самых популярных web-серверов и доступ к нему по протоколу HTTPS , изучили возможность настройки виртуальных хостов и обезопасили сервер от злоумышленников. На данном этапе администратор может самостоятельно обслуживать и настраивать Apache web-сервер на linux.

Зарегистрируйтесь в панели управления

И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *