Форумы

Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Срд Окт 20 2010, 08:40
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
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 tastelinux@gnu.su


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.Запретить авторизацию tastelinux-пользователю

в /etc/ssh/sshd_config надо изменить
PermittastelinuxLogin no


6.Запретить авторизацию по пустому паролю...

в /etc/ssh/sshd_config надо проверить!
PermitEmptyPasswords no


7.Установть пользователей/группу пользователей, которые могут входить в систему.

по пользователям:
AllowUsers user user1 user2 weuser

по группе пользователей:
AllowGroups groupuser

А также можно указать с каких адресов пользователь может входить в систему.
AllowUsers weuser@192.168.1.2


8.Использовать iptables.

A.с помощью iptables можно фильтровать соединения по ip и по mac`y
советую по mac`y так как в Linux`e сменить мак на сетевом интерфейсе не проблема.

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.

IPT="/sbin/iptables"
INET_IFACE="eth0" # Интерфейс на "улицу"

KNOCK_PORT1=222
KNOCK_PORT2=333
KNOCK_PORT3=111
KNOCK_PORT4=444
KNOCK_ACCESS="-m recent --rcheck --seconds 5 --name PHASE4 -j ACCEPT"

$IPT -N KNOCK2
$IPT -A KNOCK2 -i $INET_IFACE -m recent --name PHASE1 --remove
$IPT -A KNOCK2 -i $INET_IFACE -m recent --name PHASE2 --set
$IPT -A KNOCK2 -i $INET_IFACE -j LOG --log-prefix "KNOCK PHASE2: "

$IPT -N KNOCK3
$IPT -A KNOCK3 -i $INET_IFACE -m recent --name PHASE2 --remove
$IPT -A KNOCK3 -i $INET_IFACE -m recent --name PHASE3 --set
$IPT -A KNOCK3 -i $INET_IFACE -j LOG --log-prefix "KNOCK PHASE3: "

$IPT -N KNOCK4
$IPT -A KNOCK4 -i $INET_IFACE -m recent --name PHASE3 --remove
$IPT -A KNOCK4 -i $INET_IFACE -m recent --name PHASE4 --set
$IPT -A KNOCK4 -i $INET_IFACE -j LOG --log-prefix "KNOCK PHASE4: "

$IPT -A INPUT  -i $INET_IFACE -m recent --update --name PHASE1

$IPT -A INPUT -i $INET_IFACE -p tcp --dport $KNOCK_PORT1 -m recent --set    --name PHASE1
$IPT -A INPUT -i $INET_IFACE -p tcp --dport $KNOCK_PORT2 -m recent --rcheck --name PHASE1 -j KNOCK2
$IPT -A INPUT -i $INET_IFACE -p tcp --dport $KNOCK_PORT3 -m recent --rcheck --name PHASE2 -j KNOCK3
$IPT -A INPUT -i $INET_IFACE -p tcp --dport $KNOCK_PORT4 -m recent --rcheck --name PHASE3 -j KNOCK4

$IPT -A INPUT -i $INET_IFACE -p tcp --dport 22   $KNOCK_ACCESS  # SSH



Жду ваших советов/фич, отзывов и поправок ...

[ Редактирование Птн Окт 22 2010, 06:48 ]
Наверх
ssh   linux   secure ssh connection   защита ssh   способы защиты ssh   

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System