Я рекомендую. — Защищаем ssh
тут наткнулся на статейку http://www.opennet.ru/opennews/art.shtml?num=22511 , которая заставила задуматься о защите ssh.
В интернете есть много советов как защитить ssh,но мне бы хотелось все советы объединить в одну статейку которая послужила бы неким комплексом по защите ssh.
начну...
у мну debian так что у кого-то что-то может не сходится.
также обращю внимание новичков что ssh_config и sshd_config две разные вещи, первый конфиг для клиента второй для сервера.
обычно ключи(публичный и секретный) генерируются автоматически при установке ssh клиента/сервера.
на сервере в /etc/ssh/sshd_config надо добавить/изменить
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
публичный ключ клиента отправить в .ssh/authorized_keys (который находится на сервере)
если настроена аутентификация по ключам, советую отключить аутентификацию по паролю.
в /etc/ssh/sshd_config
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM no
но для не которых не всегда удобно использовать авторизацию по ключам.
в /etc/ssh/sshd_config надо изменить
#Port 22
Port 2222
ПыСы не забудьте при подключении указать порт.
example: ssh -p 2222 [email protected]
в /etc/ssh/sshd_config надо изменить
#Protocol 2,1
Protocol 2
Демон просматривает логи и в случае нескольких неправильных попыток ввода пароля блокирует доступ для ssh с атакующего ip адреса.
apt-get install denyhosts
/etc/init.d/denyhosts start
ПыСы: можно еще использовать Fail2ban
в /etc/ssh/sshd_config надо изменить
PermitRootLogin no
в /etc/ssh/sshd_config надо проверить!
PermitEmptyPasswords no
по пользователям:
AllowUsers user user1 user2 weuser
по группе пользователей:
AllowGroups groupuser
А также можно указать с каких адресов пользователь может входить в систему.
AllowUsers [email protected]
A.с помощью iptables можно фильтровать соединения по ip и по mac`y
советую по mac`y так как в Linux`e сменить мак на сетевом интерфейсе не проблема.
example: ЖДУ ОТ АУДИТОРИИ.
B.также можно рубить ботов которые ломятся ежесекундно на порт.
example:
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
К примеру: KNOCKD - Простой "port knocking" сервер. Осуществляет запуск указанной в конфигурации команды, если в пределах заданного таймаута было произведено соединение к заданной последовательности сетевых портов.
ПыСы: ставил год назад knockd...не стабильно работал!
можно выкрутится с помощью iptables и модулем recent
example: ЖДУ ОТ АУДИТОРИИ.
Жду ваших советов/фич, отзывов и поправок ...
В интернете есть много советов как защитить ssh,но мне бы хотелось все советы объединить в одну статейку которая послужила бы неким комплексом по защите ssh.
начну...
у мну debian так что у кого-то что-то может не сходится.
также обращю внимание новичков что ssh_config и sshd_config две разные вещи, первый конфиг для клиента второй для сервера.
1.Сделать авторизацию по ключам.
обычно ключи(публичный и секретный) генерируются автоматически при установке ssh клиента/сервера.
на сервере в /etc/ssh/sshd_config надо добавить/изменить
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
публичный ключ клиента отправить в .ssh/authorized_keys (который находится на сервере)
если настроена аутентификация по ключам, советую отключить аутентификацию по паролю.
в /etc/ssh/sshd_config
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM no
но для не которых не всегда удобно использовать авторизацию по ключам.
2.Запуск sshd на не стандартном порту.
в /etc/ssh/sshd_config надо изменить
#Port 22
Port 2222
ПыСы не забудьте при подключении указать порт.
example: ssh -p 2222 [email protected]
3.Использовать только Protocol 2.
в /etc/ssh/sshd_config надо изменить
#Protocol 2,1
Protocol 2
4.Использовать denyhosts.
Демон просматривает логи и в случае нескольких неправильных попыток ввода пароля блокирует доступ для ssh с атакующего ip адреса.
apt-get install denyhosts
/etc/init.d/denyhosts start
ПыСы: можно еще использовать Fail2ban
5.Запретить авторизацию root-пользователю
в /etc/ssh/sshd_config надо изменить
PermitRootLogin no
6.Запретить авторизацию по пустому паролю...
в /etc/ssh/sshd_config надо проверить!
PermitEmptyPasswords no
7.Установть пользователей/группу пользователей, которые могут входить в систему.
по пользователям:
AllowUsers user user1 user2 weuser
по группе пользователей:
AllowGroups groupuser
А также можно указать с каких адресов пользователь может входить в систему.
AllowUsers [email protected]
8.Использовать iptables.
A.с помощью iptables можно фильтровать соединения по ip и по mac`y
советую по mac`y так как в Linux`e сменить мак на сетевом интерфейсе не проблема.
example: ЖДУ ОТ АУДИТОРИИ.
B.также можно рубить ботов которые ломятся ежесекундно на порт.
example:
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
9.Можно использовать port knocking.
К примеру: KNOCKD - Простой "port knocking" сервер. Осуществляет запуск указанной в конфигурации команды, если в пределах заданного таймаута было произведено соединение к заданной последовательности сетевых портов.
ПыСы: ставил год назад knockd...не стабильно работал!
можно выкрутится с помощью iptables и модулем recent
example: ЖДУ ОТ АУДИТОРИИ.
Жду ваших советов/фич, отзывов и поправок ...