Установка и настройка SSH сервера — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
 
Строка 11: Строка 11:
  
 
1. Обновите список пакетов:
 
1. Обновите список пакетов:
<code>sudo apt update</code>
+
<pre>sudo apt update</pre>
  
 
2. Установите OpenSSH сервер:
 
2. Установите OpenSSH сервер:
<code>sudo apt install openssh-server</code>
+
<pre>sudo apt install openssh-server</pre>
  
 
3. Запустите и включите автозапуск SSH:
 
3. Запустите и включите автозапуск SSH:
<code>sudo systemctl start ssh</code>
+
<pre>sudo systemctl start ssh</pre>
<code>sudo systemctl enable ssh</code>
+
<pre>sudo systemctl enable ssh</pre>
  
 
=== Для CentOS/RHEL/Fedora ===
 
=== Для CentOS/RHEL/Fedora ===
  
 
1. Установите OpenSSH сервер:
 
1. Установите OpenSSH сервер:
<code>sudo yum install openssh-server</code>
+
<pre>sudo yum install openssh-server</pre>
 
# или для новых версий
 
# или для новых версий
<code>sudo dnf install openssh-server</code>
+
<pre>sudo dnf install openssh-server</pre>
  
 
2. Запустите и включите автозапуск:
 
2. Запустите и включите автозапуск:
<code>sudo systemctl start sshd</code>
+
<pre>sudo systemctl start sshd</pre>
<code>sudo systemctl enable sshd</code>
+
<pre>sudo systemctl enable sshd</pre>
  
 
== 3. Проверка установки ==
 
== 3. Проверка установки ==
  
 
1. Проверьте статус SSH сервера:
 
1. Проверьте статус SSH сервера:
<code>sudo systemctl status ssh</code>
+
<pre>sudo systemctl status ssh</pre>
  
 
2. Проверьте, что SSH слушает на порту 22:
 
2. Проверьте, что SSH слушает на порту 22:
<code>sudo netstat -tlnp | grep :22</code>
+
<pre>sudo netstat -tlnp | grep :22</pre>
  
 
3. Проверьте версию OpenSSH:
 
3. Проверьте версию OpenSSH:
<code>ssh -V</code>
+
<pre>ssh -V</pre>
  
 
== 4. Базовая настройка SSH ==
 
== 4. Базовая настройка SSH ==
Строка 47: Строка 47:
  
 
1. Отредактируйте файл конфигурации SSH:
 
1. Отредактируйте файл конфигурации SSH:
<code>sudo nano /etc/ssh/sshd_config</code>
+
<pre>sudo nano /etc/ssh/sshd_config</pre>
  
 
2. Настройте основные параметры:
 
2. Настройте основные параметры:
<code>Port 22</code>
+
<pre>Port 22</pre>
<code>Protocol 2</code>
+
<pre>Protocol 2</pre>
<code>ListenAddress 0.0.0.0</code>
+
<pre>ListenAddress 0.0.0.0</pre>
<code>PermitRootLogin no</code>
+
<pre>PermitRootLogin no</pre>
<code>PermitEmptyPasswords no</code>
+
<pre>PermitEmptyPasswords no</pre>
<code>MaxAuthTries 3</code>
+
<pre>MaxAuthTries 3</pre>
<code>LoginGraceTime 60</code>
+
<pre>LoginGraceTime 60</pre>
  
 
=== Настройка безопасности ===
 
=== Настройка безопасности ===
  
 
1. Добавьте дополнительные настройки безопасности:
 
1. Добавьте дополнительные настройки безопасности:
<code>X11Forwarding no</code>
+
<pre>X11Forwarding no</pre>
<code>AllowTcpForwarding no</code>
+
<pre>AllowTcpForwarding no</pre>
<code>AllowUsers username1 username2</code>
+
<pre>AllowUsers username1 username2</pre>
<code>DenyUsers baduser</code>
+
<pre>DenyUsers baduser</pre>
<code>PubkeyAuthentication yes</code>
+
<pre>PubkeyAuthentication yes</pre>
<code>AuthorizedKeysFile .ssh/authorized_keys</code>
+
<pre>AuthorizedKeysFile .ssh/authorized_keys</pre>
<code>PasswordAuthentication yes</code>
+
<pre>PasswordAuthentication yes</pre>
  
 
== 5. Настройка SSH ключей ==
 
== 5. Настройка SSH ключей ==
Строка 74: Строка 74:
  
 
1. Сгенерируйте пару ключей:
 
1. Сгенерируйте пару ключей:
<code>ssh-keygen -t rsa -b 4096 -C "your_email@example.com"</code>
+
<pre>ssh-keygen -t rsa -b 4096 -C "your_email@example.com"</pre>
  
 
2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa)
 
2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa)
Строка 82: Строка 82:
  
 
1. Скопируйте публичный ключ на сервер:
 
1. Скопируйте публичный ключ на сервер:
<code>ssh-copy-id username@server_ip</code>
+
<pre>ssh-copy-id username@server_ip</pre>
  
 
2. Или вручную:
 
2. Или вручную:
<code>cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"</code>
+
<pre>cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"</pre>
  
 
=== Настройка прав доступа ===
 
=== Настройка прав доступа ===
  
 
1. Установите правильные права на файлы:
 
1. Установите правильные права на файлы:
<code>chmod 700 ~/.ssh</code>
+
<pre>chmod 700 ~/.ssh</pre>
<code>chmod 600 ~/.ssh/authorized_keys</code>
+
<pre>chmod 600 ~/.ssh/authorized_keys</pre>
<code>chmod 600 ~/.ssh/id_rsa</code>
+
<pre>chmod 600 ~/.ssh/id_rsa</pre>
<code>chmod 644 ~/.ssh/id_rsa.pub</code>
+
<pre>chmod 644 ~/.ssh/id_rsa.pub</pre>
  
 
== 6. Дополнительные настройки безопасности ==
 
== 6. Дополнительные настройки безопасности ==
Строка 100: Строка 100:
  
 
1. Измените порт в конфигурации:
 
1. Измените порт в конфигурации:
<code>Port 2222</code>
+
<pre>Port 2222</pre>
  
 
2. Обновите правила файрвола:
 
2. Обновите правила файрвола:
<code>sudo ufw allow 2222/tcp</code>
+
<pre>sudo ufw allow 2222/tcp</pre>
<code>sudo ufw deny 22/tcp</code>
+
<pre>sudo ufw deny 22/tcp</pre>
  
 
3. Перезапустите SSH:
 
3. Перезапустите SSH:
<code>sudo systemctl restart ssh</code>
+
<pre>sudo systemctl restart ssh</pre>
  
 
=== Настройка двухфакторной аутентификации ===
 
=== Настройка двухфакторной аутентификации ===
  
 
1. Установите Google Authenticator:
 
1. Установите Google Authenticator:
<code>sudo apt install libpam-google-authenticator</code>
+
<pre>sudo apt install libpam-google-authenticator</pre>
  
 
2. Настройте для пользователя:
 
2. Настройте для пользователя:
<code>google-authenticator</code>
+
<pre>google-authenticator</pre>
  
 
3. Добавьте в конфигурацию SSH:
 
3. Добавьте в конфигурацию SSH:
<code>ChallengeResponseAuthentication yes</code>
+
<pre>ChallengeResponseAuthentication yes</pre>
<code>UsePAM yes</code>
+
<pre>UsePAM yes</pre>
  
 
4. Настройте PAM:
 
4. Настройте PAM:
<code>sudo nano /etc/pam.d/sshd</code>
+
<pre>sudo nano /etc/pam.d/sshd</pre>
  
 
5. Добавьте строку:
 
5. Добавьте строку:
<code>auth required pam_google_authenticator.so</code>
+
<pre>auth required pam_google_authenticator.so</pre>
  
 
=== Настройка fail2ban для SSH ===
 
=== Настройка fail2ban для SSH ===
  
 
1. Установите fail2ban:
 
1. Установите fail2ban:
<code>sudo apt install fail2ban</code>
+
<pre>sudo apt install fail2ban</pre>
  
 
2. Создайте конфигурацию для SSH:
 
2. Создайте конфигурацию для SSH:
<code>sudo nano /etc/fail2ban/jail.local</code>
+
<pre>sudo nano /etc/fail2ban/jail.local</pre>
  
 
3. Добавьте настройки:
 
3. Добавьте настройки:
<code>[sshd]</code>
+
<pre>[sshd]</pre>
<code>enabled = true</code>
+
<pre>enabled = true</pre>
<code>port = ssh</code>
+
<pre>port = ssh</pre>
<code>logpath = /var/log/auth.log</code>
+
<pre>logpath = /var/log/auth.log</pre>
<code>maxretry = 3</code>
+
<pre>maxretry = 3</pre>
<code>bantime = 3600</code>
+
<pre>bantime = 3600</pre>
  
 
4. Запустите fail2ban:
 
4. Запустите fail2ban:
<code>sudo systemctl start fail2ban</code>
+
<pre>sudo systemctl start fail2ban</pre>
<code>sudo systemctl enable fail2ban</code>
+
<pre>sudo systemctl enable fail2ban</pre>
  
 
== 7. Настройка для конкретных случаев ==
 
== 7. Настройка для конкретных случаев ==
Строка 152: Строка 152:
  
 
1. Разрешите только определенным пользователям:
 
1. Разрешите только определенным пользователям:
<code>AllowUsers webadmin deployer</code>
+
<pre>AllowUsers webadmin deployer</pre>
  
 
2. Настройте ограничения по времени:
 
2. Настройте ограничения по времени:
<code>Match User webadmin</code>
+
<pre>Match User webadmin</pre>
<code>AllowUsers webadmin</code>
+
<pre>AllowUsers webadmin</pre>
<code>X11Forwarding no</code>
+
<pre>X11Forwarding no</pre>
<code>AllowTcpForwarding no</code>
+
<pre>AllowTcpForwarding no</pre>
  
 
=== Настройка для разработчиков ===
 
=== Настройка для разработчиков ===
  
 
1. Разрешите порт forwarding:
 
1. Разрешите порт forwarding:
<code>AllowTcpForwarding yes</code>
+
<pre>AllowTcpForwarding yes</pre>
<code>GatewayPorts yes</code>
+
<pre>GatewayPorts yes</pre>
  
 
2. Настройте SSH туннели:
 
2. Настройте SSH туннели:
<code>ssh -L 8080:localhost:80 username@server_ip</code>
+
<pre>ssh -L 8080:localhost:80 username@server_ip</pre>
<code>ssh -R 8080:localhost:80 username@server_ip</code>
+
<pre>ssh -R 8080:localhost:80 username@server_ip</pre>
  
 
=== Настройка для резервного копирования ===
 
=== Настройка для резервного копирования ===
  
 
1. Создайте пользователя для бэкапов:
 
1. Создайте пользователя для бэкапов:
<code>sudo useradd -m -s /bin/bash backupuser</code>
+
<pre>sudo useradd -m -s /bin/bash backupuser</pre>
  
 
2. Настройте ограниченный доступ:
 
2. Настройте ограниченный доступ:
<code>Match User backupuser</code>
+
<pre>Match User backupuser</pre>
<code>AllowUsers backupuser</code>
+
<pre>AllowUsers backupuser</pre>
<code>ForceCommand /usr/local/bin/backup-script.sh</code>
+
<pre>ForceCommand /usr/local/bin/backup-script.sh</pre>
<code>X11Forwarding no</code>
+
<pre>X11Forwarding no</pre>
<code>AllowTcpForwarding no</code>
+
<pre>AllowTcpForwarding no</pre>
  
 
== 8. Мониторинг и логирование ==
 
== 8. Мониторинг и логирование ==
Строка 187: Строка 187:
  
 
1. Включите подробное логирование:
 
1. Включите подробное логирование:
<code>LogLevel VERBOSE</code>
+
<pre>LogLevel VERBOSE</pre>
<code>SyslogFacility AUTH</code>
+
<pre>SyslogFacility AUTH</pre>
  
 
2. Настройте ротацию логов:
 
2. Настройте ротацию логов:
<code>sudo nano /etc/logrotate.d/ssh</code>
+
<pre>sudo nano /etc/logrotate.d/ssh</pre>
  
 
3. Добавьте конфигурацию:
 
3. Добавьте конфигурацию:
<code>/var/log/auth.log {</code>
+
<pre>/var/log/auth.log {</pre>
<code>weekly</code>
+
<pre>weekly</pre>
<code>missingok</code>
+
<pre>missingok</pre>
<code>rotate 4</code>
+
<pre>rotate 4</pre>
<code>compress</code>
+
<pre>compress</pre>
<code>delaycompress</code>
+
<pre>delaycompress</pre>
<code>notifempty</code>
+
<pre>notifempty</pre>
<code>create 640 root adm</code>
+
<pre>create 640 root adm</pre>
<code>}</code>
+
<pre>}</pre>
  
 
=== Мониторинг подключений ===
 
=== Мониторинг подключений ===
  
 
1. Просмотрите активные SSH сессии:
 
1. Просмотрите активные SSH сессии:
<code>who</code>
+
<pre>who</pre>
<code>w</code>
+
<pre>w</pre>
  
 
2. Просмотрите историю входов:
 
2. Просмотрите историю входов:
<code>last</code>
+
<pre>last</pre>
<code>lastb</code>
+
<pre>lastb</pre>
  
 
3. Просмотрите логи SSH:
 
3. Просмотрите логи SSH:
<code>sudo tail -f /var/log/auth.log | grep sshd</code>
+
<pre>sudo tail -f /var/log/auth.log | grep sshd</pre>
  
 
=== Создание скрипта мониторинга ===
 
=== Создание скрипта мониторинга ===
  
 
1. Создайте скрипт мониторинга:
 
1. Создайте скрипт мониторинга:
<code>sudo nano /usr/local/bin/ssh-monitor.sh</code>
+
<pre>sudo nano /usr/local/bin/ssh-monitor.sh</pre>
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>echo "=== SSH Connections ==="</code>
+
<pre>echo "=== SSH Connections ==="</pre>
<code>who</code>
+
<pre>who</pre>
<code>echo "=== Failed Login Attempts ==="</code>
+
<pre>echo "=== Failed Login Attempts ==="</pre>
<code>sudo grep "Failed password" /var/log/auth.log | tail -10</code>
+
<pre>sudo grep "Failed password" /var/log/auth.log | tail -10</pre>
<code>echo "=== Recent SSH Logins ==="</code>
+
<pre>echo "=== Recent SSH Logins ==="</pre>
<code>sudo grep "sshd" /var/log/auth.log | tail -10</code>
+
<pre>sudo grep "sshd" /var/log/auth.log | tail -10</pre>
  
 
3. Сделайте скрипт исполняемым:
 
3. Сделайте скрипт исполняемым:
<code>sudo chmod +x /usr/local/bin/ssh-monitor.sh</code>
+
<pre>sudo chmod +x /usr/local/bin/ssh-monitor.sh</pre>
  
 
== 9. Управление SSH сервером ==
 
== 9. Управление SSH сервером ==
Строка 238: Строка 238:
  
 
* '''Запуск SSH''':
 
* '''Запуск SSH''':
<code>sudo systemctl start ssh</code>
+
<pre>sudo systemctl start ssh</pre>
  
 
* '''Остановка SSH''':
 
* '''Остановка SSH''':
<code>sudo systemctl stop ssh</code>
+
<pre>sudo systemctl stop ssh</pre>
  
 
* '''Перезапуск SSH''':
 
* '''Перезапуск SSH''':
<code>sudo systemctl restart ssh</code>
+
<pre>sudo systemctl restart ssh</pre>
  
 
* '''Перезагрузка конфигурации''':
 
* '''Перезагрузка конфигурации''':
<code>sudo systemctl reload ssh</code>
+
<pre>sudo systemctl reload ssh</pre>
  
 
* '''Проверка статуса''':
 
* '''Проверка статуса''':
<code>sudo systemctl status ssh</code>
+
<pre>sudo systemctl status ssh</pre>
  
 
* '''Проверка конфигурации''':
 
* '''Проверка конфигурации''':
<code>sudo sshd -t</code>
+
<pre>sudo sshd -t</pre>
  
 
=== Управление пользователями ===
 
=== Управление пользователями ===
  
 
1. Добавьте пользователя в группу ssh:
 
1. Добавьте пользователя в группу ssh:
<code>sudo usermod -aG ssh username</code>
+
<pre>sudo usermod -aG ssh username</pre>
  
 
2. Заблокируйте пользователя:
 
2. Заблокируйте пользователя:
<code>sudo usermod -L username</code>
+
<pre>sudo usermod -L username</pre>
  
 
3. Разблокируйте пользователя:
 
3. Разблокируйте пользователя:
<code>sudo usermod -U username</code>
+
<pre>sudo usermod -U username</pre>
  
 
== 10. Устранение неполадок ==
 
== 10. Устранение неполадок ==
Строка 271: Строка 271:
  
 
1. '''SSH не запускается''':
 
1. '''SSH не запускается''':
* Проверьте конфигурацию: <code>sudo sshd -t</code>
+
* Проверьте конфигурацию: <pre>sudo sshd -t</pre>
* Проверьте логи: <code>sudo journalctl -u ssh</code>
+
* Проверьте логи: <pre>sudo journalctl -u ssh</pre>
  
 
2. '''Не могу подключиться по SSH''':
 
2. '''Не могу подключиться по SSH''':
* Проверьте статус сервиса: <code>sudo systemctl status ssh</code>
+
* Проверьте статус сервиса: <pre>sudo systemctl status ssh</pre>
* Проверьте файрвол: <code>sudo ufw status</code>
+
* Проверьте файрвол: <pre>sudo ufw status</pre>
* Проверьте порт: <code>sudo netstat -tlnp | grep :22</code>
+
* Проверьте порт: <pre>sudo netstat -tlnp | grep :22</pre>
  
 
3. '''Ошибка "Permission denied"''':
 
3. '''Ошибка "Permission denied"''':
* Проверьте права на ключи: <code>ls -la ~/.ssh/</code>
+
* Проверьте права на ключи: <pre>ls -la ~/.ssh/</pre>
* Проверьте конфигурацию SSH: <code>sudo nano /etc/ssh/sshd_config</code>
+
* Проверьте конфигурацию SSH: <pre>sudo nano /etc/ssh/sshd_config</pre>
  
 
=== Диагностика подключения ===
 
=== Диагностика подключения ===
  
 
1. Подключитесь с подробным выводом:
 
1. Подключитесь с подробным выводом:
<code>ssh -v username@server_ip</code>
+
<pre>ssh -v username@server_ip</pre>
  
 
2. Проверьте сетевую связность:
 
2. Проверьте сетевую связность:
<code>ping server_ip</code>
+
<pre>ping server_ip</pre>
<code>telnet server_ip 22</code>
+
<pre>telnet server_ip 22</pre>
  
 
3. Проверьте DNS:
 
3. Проверьте DNS:
<code>nslookup server_ip</code>
+
<pre>nslookup server_ip</pre>
  
 
== 11. Дополнительные настройки ==
 
== 11. Дополнительные настройки ==
Строка 300: Строка 300:
  
 
1. Создайте конфигурацию SSH клиента:
 
1. Создайте конфигурацию SSH клиента:
<code>nano ~/.ssh/config</code>
+
<pre>nano ~/.ssh/config</pre>
  
 
2. Добавьте настройки:
 
2. Добавьте настройки:
<code>Host myserver</code>
+
<pre>Host myserver</pre>
<code>HostName server_ip</code>
+
<pre>HostName server_ip</pre>
<code>Port 22</code>
+
<pre>Port 22</pre>
<code>User username</code>
+
<pre>User username</pre>
<code>IdentityFile ~/.ssh/id_rsa</code>
+
<pre>IdentityFile ~/.ssh/id_rsa</pre>
<code>ServerAliveInterval 60</code>
+
<pre>ServerAliveInterval 60</pre>
<code>ServerAliveCountMax 3</code>
+
<pre>ServerAliveCountMax 3</pre>
  
 
=== Настройка SSH агента ===
 
=== Настройка SSH агента ===
  
 
1. Запустите SSH агент:
 
1. Запустите SSH агент:
<code>eval "$(ssh-agent -s)"</code>
+
<pre>eval "$(ssh-agent -s)"</pre>
  
 
2. Добавьте ключ в агент:
 
2. Добавьте ключ в агент:
<code>ssh-add ~/.ssh/id_rsa</code>
+
<pre>ssh-add ~/.ssh/id_rsa</pre>
  
 
3. Настройте автозапуск агента:
 
3. Настройте автозапуск агента:
<code>echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc</code>
+
<pre>echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc</pre>
<code>echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc</code>
+
<pre>echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc</pre>
  
 
=== Настройка SSH туннелей ===
 
=== Настройка SSH туннелей ===
  
 
1. Создайте туннель для базы данных:
 
1. Создайте туннель для базы данных:
<code>ssh -L 3306:localhost:3306 username@server_ip</code>
+
<pre>ssh -L 3306:localhost:3306 username@server_ip</pre>
  
 
2. Создайте SOCKS прокси:
 
2. Создайте SOCKS прокси:
<code>ssh -D 8080 username@server_ip</code>
+
<pre>ssh -D 8080 username@server_ip</pre>
  
 
3. Настройте автоматический туннель:
 
3. Настройте автоматический туннель:
<code>Host tunnel</code>
+
<pre>Host tunnel</pre>
<code>HostName server_ip</code>
+
<pre>HostName server_ip</pre>
<code>LocalForward 3306 localhost:3306</code>
+
<pre>LocalForward 3306 localhost:3306</pre>
<code>LocalForward 8080 localhost:80</code>
+
<pre>LocalForward 8080 localhost:80</pre>
  
 
== 12. Безопасность и рекомендации ==
 
== 12. Безопасность и рекомендации ==
Строка 342: Строка 342:
  
 
1. '''Регулярно обновляйте SSH''':
 
1. '''Регулярно обновляйте SSH''':
<code>sudo apt update && sudo apt upgrade openssh-server</code>
+
<pre>sudo apt update && sudo apt upgrade openssh-server</pre>
  
 
2. '''Используйте сильные пароли или ключи'''
 
2. '''Используйте сильные пароли или ключи'''
Строка 353: Строка 353:
  
 
1. Проверьте конфигурацию на уязвимости:
 
1. Проверьте конфигурацию на уязвимости:
<code>sudo ssh-audit server_ip</code>
+
<pre>sudo ssh-audit server_ip</pre>
  
 
2. Проверьте версию OpenSSH:
 
2. Проверьте версию OpenSSH:
<code>ssh -V</code>
+
<pre>ssh -V</pre>
  
 
3. Проверьте поддерживаемые алгоритмы:
 
3. Проверьте поддерживаемые алгоритмы:
<code>ssh -Q cipher</code>
+
<pre>ssh -Q cipher</pre>
<code>ssh -Q mac</code>
+
<pre>ssh -Q mac</pre>
<code>ssh -Q kex</code>
+
<pre>ssh -Q kex</pre>
  
 
== Заключение ==
 
== Заключение ==

Текущая версия на 10:44, 15 октября 2025

Содержание

Установка и настройка SSH сервера

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть физический доступ к серверу (на случай блокировки SSH).

2. Установка SSH сервера

Для Ubuntu/Debian

1. Обновите список пакетов:

sudo apt update

2. Установите OpenSSH сервер:

sudo apt install openssh-server

3. Запустите и включите автозапуск SSH:

sudo systemctl start ssh
sudo systemctl enable ssh

Для CentOS/RHEL/Fedora

1. Установите OpenSSH сервер:

sudo yum install openssh-server
  1. или для новых версий
sudo dnf install openssh-server

2. Запустите и включите автозапуск:

sudo systemctl start sshd
sudo systemctl enable sshd

3. Проверка установки

1. Проверьте статус SSH сервера:

sudo systemctl status ssh

2. Проверьте, что SSH слушает на порту 22:

sudo netstat -tlnp | grep :22

3. Проверьте версию OpenSSH:

ssh -V

4. Базовая настройка SSH

Основная конфигурация

1. Отредактируйте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

2. Настройте основные параметры:

Port 22
Protocol 2
ListenAddress 0.0.0.0
PermitRootLogin no
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 60

Настройка безопасности

1. Добавьте дополнительные настройки безопасности:

X11Forwarding no
AllowTcpForwarding no
AllowUsers username1 username2
DenyUsers baduser
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes

5. Настройка SSH ключей

Генерация SSH ключей на клиенте

1. Сгенерируйте пару ключей:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa) 3. Введите пароль для ключа (рекомендуется)

Копирование ключа на сервер

1. Скопируйте публичный ключ на сервер:

ssh-copy-id username@server_ip

2. Или вручную:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Настройка прав доступа

1. Установите правильные права на файлы:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

6. Дополнительные настройки безопасности

Изменение порта SSH

1. Измените порт в конфигурации:

Port 2222

2. Обновите правила файрвола:

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp

3. Перезапустите SSH:

sudo systemctl restart ssh

Настройка двухфакторной аутентификации

1. Установите Google Authenticator:

sudo apt install libpam-google-authenticator

2. Настройте для пользователя:

google-authenticator

3. Добавьте в конфигурацию SSH:

ChallengeResponseAuthentication yes
UsePAM yes

4. Настройте PAM:

sudo nano /etc/pam.d/sshd

5. Добавьте строку:

auth required pam_google_authenticator.so

Настройка fail2ban для SSH

1. Установите fail2ban:

sudo apt install fail2ban

2. Создайте конфигурацию для SSH:

sudo nano /etc/fail2ban/jail.local

3. Добавьте настройки:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

4. Запустите fail2ban:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

7. Настройка для конкретных случаев

Настройка для веб-сервера

1. Разрешите только определенным пользователям:

AllowUsers webadmin deployer

2. Настройте ограничения по времени:

Match User webadmin
AllowUsers webadmin
X11Forwarding no
AllowTcpForwarding no

Настройка для разработчиков

1. Разрешите порт forwarding:

AllowTcpForwarding yes
GatewayPorts yes

2. Настройте SSH туннели:

ssh -L 8080:localhost:80 username@server_ip
ssh -R 8080:localhost:80 username@server_ip

Настройка для резервного копирования

1. Создайте пользователя для бэкапов:

sudo useradd -m -s /bin/bash backupuser

2. Настройте ограниченный доступ:

Match User backupuser
AllowUsers backupuser
ForceCommand /usr/local/bin/backup-script.sh
X11Forwarding no
AllowTcpForwarding no

8. Мониторинг и логирование

Настройка логирования

1. Включите подробное логирование:

LogLevel VERBOSE
SyslogFacility AUTH

2. Настройте ротацию логов:

sudo nano /etc/logrotate.d/ssh

3. Добавьте конфигурацию:

/var/log/auth.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 640 root adm
}

Мониторинг подключений

1. Просмотрите активные SSH сессии:

who
w

2. Просмотрите историю входов:

last
lastb

3. Просмотрите логи SSH:

sudo tail -f /var/log/auth.log | grep sshd

Создание скрипта мониторинга

1. Создайте скрипт мониторинга:

sudo nano /usr/local/bin/ssh-monitor.sh

2. Добавьте содержимое:

echo "=== SSH Connections ==="
who
echo "=== Failed Login Attempts ==="
sudo grep "Failed password" /var/log/auth.log | tail -10
echo "=== Recent SSH Logins ==="
sudo grep "sshd" /var/log/auth.log | tail -10

3. Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/ssh-monitor.sh

9. Управление SSH сервером

Основные команды управления

  • Запуск SSH:
sudo systemctl start ssh
  • Остановка SSH:
sudo systemctl stop ssh
  • Перезапуск SSH:
sudo systemctl restart ssh
  • Перезагрузка конфигурации:
sudo systemctl reload ssh
  • Проверка статуса:
sudo systemctl status ssh
  • Проверка конфигурации:
sudo sshd -t

Управление пользователями

1. Добавьте пользователя в группу ssh:

sudo usermod -aG ssh username

2. Заблокируйте пользователя:

sudo usermod -L username

3. Разблокируйте пользователя:

sudo usermod -U username

10. Устранение неполадок

Частые проблемы

1. SSH не запускается:

  • Проверьте конфигурацию:
    sudo sshd -t
  • Проверьте логи:
    sudo journalctl -u ssh

2. Не могу подключиться по SSH:

  • Проверьте статус сервиса:
    sudo systemctl status ssh
  • Проверьте файрвол:
    sudo ufw status
  • Проверьте порт:
    sudo netstat -tlnp | grep :22

3. Ошибка "Permission denied":

  • Проверьте права на ключи:
    ls -la ~/.ssh/
  • Проверьте конфигурацию SSH:
    sudo nano /etc/ssh/sshd_config

Диагностика подключения

1. Подключитесь с подробным выводом:

ssh -v username@server_ip

2. Проверьте сетевую связность:

ping server_ip
telnet server_ip 22

3. Проверьте DNS:

nslookup server_ip

11. Дополнительные настройки

Настройка SSH клиента

1. Создайте конфигурацию SSH клиента:

nano ~/.ssh/config

2. Добавьте настройки:

Host myserver
HostName server_ip
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
ServerAliveCountMax 3

Настройка SSH агента

1. Запустите SSH агент:

eval "$(ssh-agent -s)"

2. Добавьте ключ в агент:

ssh-add ~/.ssh/id_rsa

3. Настройте автозапуск агента:

echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc
echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc

Настройка SSH туннелей

1. Создайте туннель для базы данных:

ssh -L 3306:localhost:3306 username@server_ip

2. Создайте SOCKS прокси:

ssh -D 8080 username@server_ip

3. Настройте автоматический туннель:

Host tunnel
HostName server_ip
LocalForward 3306 localhost:3306
LocalForward 8080 localhost:80

12. Безопасность и рекомендации

Рекомендации по безопасности

1. Регулярно обновляйте SSH:

sudo apt update && sudo apt upgrade openssh-server

2. Используйте сильные пароли или ключи 3. Отключите root вход 4. Измените стандартный порт 5. Настройте fail2ban 6. Используйте двухфакторную аутентификацию

Аудит безопасности

1. Проверьте конфигурацию на уязвимости:

sudo ssh-audit server_ip

2. Проверьте версию OpenSSH:

ssh -V

3. Проверьте поддерживаемые алгоритмы:

ssh -Q cipher
ssh -Q mac
ssh -Q kex

Заключение

SSH сервер успешно установлен и настроен! Теперь вы можете безопасно подключаться к серверу.

Для размещения ваших проектов с настроенным SSH на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой SSH и обеспечением безопасности вашего сервера!