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

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

Текущая версия на 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 и обеспечением безопасности вашего сервера!