libssh.orgхочу подключиться на cisco роутер выполнить команду и отключиться.
к библиотеки прилагаются некоторые примеры, на их основании пытаюсь написать своё.
почему libssh - по тому, что штатно в линуксе ничего не нашел.коротко: устанавливаем подключение ssh на роутер, по имени пользователя и паролю.
открываем канал. отправляем команду "en" для перехода в административный режим:
rc = ssh_channel_request_exec(channel, "en");
читаем, что шлет нам роутер. "password:" отлично.а какой функцией вводить пароль?
rc = ssh_channel_request_exec(channel, "********");
вылетает в ошибку djpdhfn -1:
[1] Error : Channel request exec failed
пробовал еще:
printf("******\n")
тоже ни как..язык Си. догадываюсь, что врядли кто использовал. но может быть...
http://api.libssh.org/master/libssh_tutor_guided_tour.html
> http://api.libssh.org/master/libssh_tutor_guided_tour.htmlда все верно!
rc = ssh_channel_request_exec(channel, "enable");
if (rc != SSH_OK)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return rc;
}
nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0);
while (nbytes > 0)
{
if (write(1, buffer, nbytes) != nbytes)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return SSH_ERROR;
}
nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0);
}
if (nbytes < 0)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return SSH_ERROR;
}приезжает "password:"
вопрос как теперь ввисти этот enable пароль?
я пробовал так:
rc = ssh_channel_request_exec(channel, "********");
if (rc != SSH_OK)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
получал ошибку:
[1] Error : Channel request exec failed
error : Channel request exec failedвот в этом месте у меня и возникла проблема, которая в мауале не описана. точнее описание ее я не нашел. (возможно плохо искал... но пока не попалась.)
в продолжение.. так как тема еще актуальна.тот пример что выше, это для одной команды. но есть для нескольких комманд.
channel_request_shell(channel);
channel_write(channel,"help\n");
channel_read(...)
channel_write(channel,"help\n");
channel_read(...)
......да, действительно получаю хелп роутера два раза.
хочу зайти в привелигированный режим.
отправляю enable
читаю password:
отправляю сам пароль
читаю password: то есть не принял.возникает вопрос, почему??
> потому, что штатно в линуксе ничего не нашел.
#!/usr/bin/expect -fspawn ssh siska
expect "login:";
send "odmin\n"
expect "password: "
send "PASSWORD\n"
expect "$ "
...http://sourceforge.net/projects/sshpass/
Ещё куча вариантов на Perl, Ruby, Tcl, sh/chat через ssh-туннель
> язык Си. догадываюсь, что врядли кто использовал. но может быть...
Всё украдено уже до вас.
а на Си ?
> а на Си ?http://sourceforge.net/p/sshpass/code/HEAD/tree/trunk/main.c
Кстати, а ты это читал?http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ios_tcl/con...
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ios_tcl/con...И ещё есть волшебный протокол SNMP
про sshpass вчера весь вечер читал и искал примеры. с cisco-ой что то ни кто не использует.
примеры тоже, как я понял, позволяют пройти первую проверку пользователя и пароля. а дальше, пароль enable ни кто не пробовал проходить. наверно надо просто попробовать.tcl почитал. есть некое непонимание. в статье IOS, я так понимаю это относится к роутерам. у меня ASA-5500.
SNMP да, сила. родной веб интерфейс для управления железкой, я так понимаю, активно использует SNMP. Но как там применить к моей задаче, я не придумал. (по SNMP отправить новое правило)
моя задача:
меня брутят по ssh. поэтому я хочу написать скриптик которой смотрит, если 5 попыток подключиться по ssh неудачны (я это смотрю по логам), надо добавить на железку правило блокировки это ip адрес. что я и пытаюсь сделать на си через ssh. почему си? скорость, и хочу все в одной программе сделать. разносить по скриптам, в какой то момент становится неудобно. если получиться, будут довешиваться дополнительные полезности автоматизации.
> я так понимаю это относится к роутерам. у меня ASA-5500.Скорее надо на версию IOS смотреть, много фич общих.
> я хочу написать скриптик которой смотрит, если 5 попыток подключиться по ssh неудачны
> (я это смотрю по логам), надо добавить на железку правило блокировки это ip адрес.router(config)# login block-for <sec> attempts <attempts> within <sec>
router(config)# login block-for 300 attempts 5 within 30Хост будет заблокирован на 300 сек., если в течение 30 секунд будет 5 неудачных попыток логина
Исключение своего апишнегаrouter(config)# access-list 10 permit 192.168.1.2
router(config)# login quiet-mode access-class 10
да, это справедливо для роутеров.
ASA это немного другое оборудование.
данный функционал я пока не нашел для ASA.вот что есть на железке:
asa(config)# ?
.....
isakmp Configure ISAKMP key, peer, policy and other options
l2tp Configure Global L2TP Parameters
ldap Configure LDAP Mapping
logging Configure logging levels, recipients and other options
logout Logoff from config mode
mac-list
.....login - нету..
гуголь на запрос: cisco +asa login block-for
тоже ничего не дает пока.
> ASA это немного другое оборудование.У меня этих ASA/PIX было, туева хуча.
>гуголь на запрос: cisco +asa login block-for
>тоже ничего не дает пока.http://www.security-solutions.co.za/cisco-asa-firewall-harde...
----Feature Information for Cisco IOS Login Enhancements (Login Block)
Cisco IOS Login Enhancements (Login Block)
Releases
12.3(4)T
12.2(25)S
12.2(33)SRA
12.2(33)SRB 12.2(33)SXH
12.4(15)T1Feature Information
The Cisco IOS Login Enhancements (Login Block) feature allows users to enhance the security of a router by configuring options to automatically block further login attempts when a possible DoS attack is detected.
This feature was introduced in Cisco IOS Release 12.3(4)T.
This feature was integrated into Cisco IOS Release 12.2(25)S.
This feature was integrated into Cisco IOS Release 12.2(33)SRA.
Support for HTTP login blocking was integrated into Cisco IOS Release 12.2(33)SRB, 12.2(33)SXH, 12.4(15)T1.
я так понимаю что ключевое:
aaa-server TACACS+ protocol tacacs+
reactivation-mode depletion deadtime 1
aaa-server TACACS+ (inside) host 192.168.1.1
max-failed attempts 2?
у меня:
aaa authentication ssh console LOCALнесколько проще..
сейчас попробую разобраться с этими хитросплетениями..
почитал...
нужен сервер, можно поднять на FreeBSD
целесобразен при большом количетве железяк, и большем количестве обслуживающего персонала, с разганичением по командам и с персональным логированием действий.для 1-3 железяк, не целесобразно.
- припадении сервера теряем доступ.
- две штуки держать или более (опять расходы растут)
- энерго снабжение им надо хорошее.
не ну можно конечно PasPI на батарейках запустить. Но... пока неверное нет.раньше вообще был проет MARS не знаю жив ли он. там вообще огого. правда дорог.
мне бы все таки как бы домучить библиотечку на Си. Очень уж интересная опция...
> почитал...
> нужен сервер, можно поднять на FreeBSDTACACS это конечно круто, но мож пароль CWSrgrt4214GB&%0-2234FV111, и пущай трахаются.
Ах да, можно ещё ssh "на другой порт завести" загугли, вариантов навалом.
пароль такой уж есть. и логин такой же. и словари прозапас уже набраны :)
но сам факт не приятен, да и ресурсы кушаются до 20% цпу.как порт поменять для asa что то не знаю. для ios знаю как.
может в новенких прошивках на конец то сделали эту возможность...
сейчас попробую поискать..
для asa не нашел как поменять номер порта ssh
> для asa не нашел как поменять номер порта sshПорт не поменяешь. Команды точные не помню, но смысл такой:
Запретить коннекты на 22 порт через OUTSIDE фейс,
Сделать маппинг/алиас 22 порта на любой другой, напр. 11220
Спрятаться за NATом (PAT), то есть коннекты к 22 порту должны идти с адреса циски.---
Где-то выдел, ща пороюсь по закладкам....
> для asa не нашел как поменять номер порта sshВо
https://supportforums.cisco.com/discussion/11359826/how-chan...
предыдущее сообщение я Вас что то не понял...
за ссылку спасобо, изучил..на сколько я понял (английский не мой родной язык, сорри) там пытаются разрулить ssh на трех устройсвах.
потом приводится полный конфиг ASA. версии 8.3(1) , у меня 7.2.4 старенькая стоит.
в восьмой ветки они переделали нат полностью. мне не очень это понравилось (синтаксис), да и памяти надо было доставлять. вообщем я пока не перехожу на новые прошивки...
так вот там есть:
interface Vlan2
nameif outside
security-level 0
ip address x.x.x.x 255.255.255.252object network ROUTER
host 10.10.1.1
object service MAPPED_SSH_TO_ROUTER
service tcp source eq 2001
object service REAL_SSH
service tcp source eq ssh
access-list ALLOW_FROM_OUTSIDE extended permit tcp any object ROUTER eq sshnat (inside,outside) source static ROUTER interface service REAL_SSH MAPPED_SSH_TO_ROUTER
access-group ALLOW_FROM_OUTSIDE in interface outside
ну тоесть:
access-list "С внешнего интерфейса" extended permit tcp any object "host 10.10.1.1" eq 22
nat (inside,outside) source static "host 10.10.1.1" interface "service tcp source eq 2001"я так понимаю что меняется порты для хоста 10.10.1.1 ???
а нас интересует x.x.x.x 255.255.255.252в старой версии это выглядели на мой взляд очевидней:
static (Inside,Outside) udp interface 26301 192.168.1.6 26301 netmask 255.255.255.255здесь четко показано какой порт берем с внешнего интерфейса и куда в какой отправляем.
я допускаю, что мне нехватает кармы, и я не заметил как сделать что бы ASA свой ssh слушала на другом порту.
можите это место конфига указать?
еще раз перечитал Ваше непонятное сообщение...получается так:
access-list Outside_access_in extended deny tcp any host x.x.x.x eq ssh
access-list Outside_access_in extended permit tcp any host x.x.x.x eq 7722
static (Outside,Outside) tcp interface 7722 x.x.x.x 22 netmask 255.255.255.255
same-security-traffic permit intra-interface???
:) :) :)https://supportforums.cisco.com/discussion/12715691/change-p...
> ???Дальше уже тестить надо иль на форум цискарей: sysadmin.ru и подобные.
мне бы все таки с программированием по Си этот ssh победить...