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