При администрировании серверов, очень часто нужен удаленный доступ, для установки и настройки программного обеспечения, внесения корректив, мониторинга различных параметров и всего того, что мы относим к слову «администрировать». В Линукс, как и в большинстве других операционных системах, такой удаленный доступ происходит через SSH или попросту шел.
Справка
SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы имеются для большинства сетевых операционных систем.
SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры)[2]. Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System.
Большинство хостинг-провайдеров за определенную плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удаленного запуска программ (в том числе графических приложений).
http://ru.wikipedia.org
Как правило, SSH сервер в CentOS устанавливается по умолчанию. Для доступа к нему существует множество клиентов, которые вы без труда найдете по первому же поисковому запросу.
Шел доступ к серверу, конечно же удобен и очень часто жизненно необходим, но вместе с удобствами, мы получаем и дополнительную лазейку для злоумышленника, который может воспользоваться SSH для своих темных дел.
Поэтому, в этой статье, мы рассмотрим способы усилить безопасность SSH.
Прежде всего, нужно отключить вход root по SSH, если потребуются права администратора, никто не запрещает вам из-под залогиненного обычного пользователя воспользоваться командой su.
Для этого нам нужно отредактировать файл /etc/ssh/sshd
Раскоментируем строчку PermitRootLogin , и заменим значение yes, на no.
В этом же файле меняем номер стандартного порта, по которому мы подключаемся к нашему серверу, на любой другой свободный порт. Защита конечно примитивная и не поможет, если вас будут целенаправленно сканировать, но, по крайней мере, отсечет множество ботнетов, использующих подключения на стандартный 22 порт.
Итак, я у себя в файле /etc/ssh/sshd, в строке Port 22,поставил 2222, вы - смотрите по обстоятельствам.
Далее
Нам нужна утилита, которая бы блокировала, хосты подбирающие пароли к нашему серверу. В этом нам поможет Denyhosts.
Справка
Denyhosts - это скрипт, написанный на Python для защиты SSH серверов от переборов паролей (брутфорса).Скрипт отслеживает логи системы о неудачных авторизациях и после того, как N-раз был неверно введена связка "логин-пароль" блокирует IP-адрес, с которого производилась атака(Банально вносит IP-адрес в /etc/hosts.deny).
Для установки Denyhosts воспользуемся yum:
yum install denyhosts
Возможно, в стандартных репозиториях Denyhosts не окажется, но можно добавить дополнительный, например этот:
http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
После установки, вы можете изменить конфигурационный файл (/etc/denyhosts.conf) по своему усмотрению, хотя по умолчанию в нем уже выставлены оптимальные настройки.
В denyhosts.conf, все параметры, достаточно хорошо прокоментированы, и думаю у вас не возникнет вопросов по внесению своих коррекций.
Приведу несколько основных параметров конфига Denyhosts, на которые следовало бы обратить внимание:
# Количество попыток входа с несуществующим логином
DENY_THRESHOLD_INVALID = 5
#Количество попыток входа с неверным паролем
DENY_THRESHOLD_VALID = 5
# Количество попыток войти c учетной записью root
DENY_THRESHOLD_ROOT = 1
#Интервал времени, после которого заблокированный хост будет разблокирован
PURGE_DENY = 12h
Внеся свои коррективы или оставив все по умолчанию, запускаем Denyhosts:
service denyhosts start
После чего добавляем его в «автозагрузку»:
setup
или так:
chkconfig --level 2345 denyhosts on
На этом все. Существует, конечно же, еще множество способов обезопасить наш SSH, здесь я перечислил лишь некоторые из них, ну а вы можете сами решить что необходимо для вашей безопасности, а что нет.
При перепечатке указание ссылки на http://centos.moy.su обязательно