Документация по ОС FreeBSD Суббота, 20.04.2024, 09:50
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » SSH

Настройка SSH в FreeBSD, Ubuntu. Настройка безопасности, ipfw [2010]
Будем брать во внимание ОС FreeBSD и немного Linux Ubuntu . При установке все необходимое нами уже поставлено, нам только остается активировать данный сервис и правильно настроить его.
Для того чтобы активировать, нужно в файл /etc/rc.conf прописать следующее:

sshd_enable=”YES”

теперь, после перезагрузки, система создаст все необходимые ключи и активирует нам sshd сервис, после чего мы можем удаленно заходить на сервер с помощью security shell.
Рассмотрим настройку демона sshd с точки зрения безопасности:
Первое, что необходимо сделать, это указать, что использоваться будет только версия 2, т.к. версия 1 имеет достаточно много уязвимостей.
Для этого необходимо отредактировать sshd_config . По умолчанию , конфигурационный файл находится по пути: /etc/ssh/
Версия протокола указывается следующим образом:

Protocol 2

Необходимо проверить, так ли у вас в вашем конфигурационном файле. В ранних версиях для совместимости использовалась деректива:

Protocol 1,2

Это говорило о том, что может использоваться как версия 1, так и версия 2.
Далее, проверяем в этом же конфиге чтоб PermitRootLogin было установлено в значении no, это запращает под пользователем root входить на ssh напрямую (можно залогиниться под обычным юзером, после через su сделаться рутом), это более правильный вариант.
В последних версиях OpenSSH всё это уже установлено (но мало ли, может кто-то тюнит старый сервер).
Ограничение доступа по SSH по IP.
Если возможно, разрешайте подключаться по ssh только определенным IP. Сделать это можно несколькими способами:
 
- с помощью Firewall
- с помощью tcpwrapper

Можно объеденить оба способа и использовать их совместно. Рассмотрим по порядку.
1. Будем рассматривать ipfw файрволл, который входит в систему по умолчанию (так же может использоваться pf – packet filter)
Допустим у нас есть машина, с которой осуществляется управление, так наываемая management-pc, в том числе и нашим сервером. На сервере мы должны ограничить доступ, только по IP адресу нашей управляющей системы.
Создадим правила для ssh:

ipfw add allow log tcp from 10.0.0.2 to me 22 keep-state
ipfw add deny log tcp from any to me 22

Эти два правила говорят нам о том, что доступ к ssh на сервере можно осуществлять только с ip адреса 10.0.0.2. , причем все попытки авторизации, в том числе и разрешенные нам (тоесть с «правильного» IP) будут логироваться. По умолчанию, логируется в /var/log/security
2. TCPWRAPPER
Для того что бы запретить доступ по SSH всем, кроме определенного IP, в /etc/hosts.allow прописываем:

sshd2 : x.x.x.x/y.y.y.y : allow
sshd2 : ALL : deny

, где x.x.x.x – ваш IP , y.y.y.y – маска подсети.
Манипулируя этими значениями можно не только разрешить конкретному IP ходить по SSH на данный сервер, но и разрешить это делать всей сети.
Т.е. получилось два правила, первое – разрешает кому-то, второе – запрещает всем остальным.
Так же многие меняют порт по умолчанию, который слушает SSHd, но я не считаю это какой-то защитой. Если кому понадобится то, порт можно изменить в этом же sshd_config файле используя директиву Port. По умолчанию выглядит так:

bsd# grep Port /etc/ssh/sshd_config
#Port 22
#GatewayPorts no
bsd#

После того, как изменили значение, не забываем убирать комментарий (символ #)
Следующее что необходимо сделать. По умолчанию, при создании пользователя, пользователю устанавливается шелл по умолчанию, например /bin/bash (или другое, в зависимости от настроек системы), и пользователь, зная имя пользователя и пароль, может подключиться по ssh к серверу.
Если это пользователю не нужно, то необходимо поменять шелл пользователя. Рассмотрим на примере FreeBSD.

bsd# grep sasha /etc/passwd
sasha:*:1001:0:Alexander A:/home/sasha:/bin/csh
bsd#

Здесь вы видим, что пользователь sasha, имеет оболочку C-shell.
Для того, чтоб её заменить, и чтоб этот пользователь не мог подключиться к ssh необходимо убрать эту оболочку с /etc/passwd. Вопрос в том, на что заменить? Я использую nologin.

bsd# which nologin
/sbin/nologin
bsd#

Но перед тем как это делать, необходимо указать в системе, что существует такой шелл как /sbin/nologin для этого необходимо добавить в /etc/shells путь к нашей оболочке.
Посмотрим что у нас получилось:

bsd# more /etc/shells
# $FreeBSD: src/etc/shells,v 1.5 2000/04/27 21:58:46 ache Exp $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/sh
/bin/csh
/bin/tcsh
/sbin/nologin
bsd#
bsd# grep sasha /etc/passwd
sasha:*:1001:0:Alexander:/home/sasha:/sbin/nologin
bsd#

Теперь этот пользователь не сможет использовать ssh подключение к нашему серверу, но может пользоваться другими сервисами, тем же FTP (если это не исключено самим FTP сервисом).
Теперь поговорим о защите против брутфорсеров на наш SSH. Если нет возможности ограничить доступ по IP то встает такая проблема.
Единственная на мой взгляд защита от брутфорсеров на сегодняшний момент состоит в элементарных вещах – блокирование IP адреса после нескольких раз неуспешной авторизации.
Для этого мы будем использовать: denyhosts. Как на Linux системах, так и на BSD.
Установка не должна вызвать никаких трудностей.
В FreeBSD можно воспользоваться системой портов:

cd /usr/ports/security/denyhosts
make install clean
rehash

Для введения в эксплуатацию данного демона необходимо в /etc/rc.conf указать:

denyhosts_enable=”YES”

1. В /etc/hosts.allow 

sshd : /etc/hosts.deniedssh : deny
sshd : ALL : allow


3. Если файл /etc/hosts.deniedssh не существует (а ему неоткуда взяться) необходимо его создать:
 
touch /etc/hosts.deniedssh

4. Желательно запустить syslogd с опцией "-c”, прописать это нужно в /etc/rc.conf

syslogd_flags=”-c”

Для запуска:
 
/usr/local/etc/rc.d/denyhosts start

Как мы видим, этот демон работает с уже знакомым нам TCPWRAPER’ом. Все хосты, которые были забанены помещаются в /etc/hosts.deniedssh, которые будут блокироваться, все остальные хосты он будет пускать нормально.
Основной конфигурационный файл находится здесь: /usr/local/etc/denyhosts.conf
Там можно указать сколько попыток нужно, чтоб попасть в hosts.deniedssh, сколько по времени будет действовать бан, и так далее.
В Linux так же нет никаких сложностей, в зависимости от того что используете, устанавливаем через yum или через apt-get , либо всё установить их исходных текстов самостоятельно.
Настройка практически идентична с FreeBSD, меняется только имена конфигурационных файлов системы.
Примеры:

yum install denyhosts
chkconfig denyhosts on
service denyhosts start

Ещё один способ ограничения доступа к SSH на уровне sshd.
По умолчанию, все пользователи могут подключаться по SSH и даже попадать в систему (если у них есть своя оболочка).
В конфигурационном файле sshd_config можно указать список пользователей или грппы, которые могут работать с демоном. Делается это с помощью директив: AllowUsers и AllowGroups. Использовать эти директивы просто:

apt-get install denyhosts
/etc/init.d/denyhosts start

AllowUsers sasha
AllowGroups sshusers

Дополнительную информацию можно почерпнуть из man sshd_config
Говоря о настройке SSHd нельзя не упомянуть о том, что авторизация может происходить по имени пользователя и паролю (интерактивная атовризация), а может осуществляться по ключу.
Какой способ ограничения доступа использовать зависит от поставленных вами задач.
Иногда подходит один способ, иногда другой, иногда используется сочетание.


Источник: http://admindoc.ru/566/nastrojka-ssh-v-freebsd-ubuntu-nastrojka-bezopasnosti-ipfw/
Категория: SSH | Добавил: oleg (10.04.2010) | Автор: admin
Просмотров: 1342 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024