ХАКЕР.PROКонфиг для обхода правил файрволаlinks• Для борьбы сперебором пароляможно использоватьспециальные приложения:DenySSH(wiki.wonko.com/software/denyssh),pam-abl (pam-abl.sf.net), DenyHosts(denyhosts.sf.net) идругие.• VShell Serverдля Windows:www.vandyke.com/products/vshell/.info• Аутентификация ипоследующее шифрованиеSSH-сессии выполняютсянезаметнодля пользователей.• Управляющая последовательностьиспользуетспециальныйуправляющий символ(escape-символ), чтобыидентифицироватьначало команды.• Некоторые примерыпродвинутой работыс OpenSSH смотри впредыдущем номережурнала, в статье«Калейдоскоп тайныхзнаний».Допустим, мы с mail.domain.ru зашли наbastion.domain2.ru и решили, что неплохо былобы открыть обратный шифрованный туннельк почтовому серверу для безопасной загрузкисообщений. С помощью комбинации клавиш«~C» можно интерактивно управлятьлокальным и удаленным форвардингами (ключи-L и -R):bastion% ~Cssh> -R 8110:mail.domain.ru:110Forwarding port.Проверяем работу созданного почтового туннеля:bastion% telnet localhost 8110+OK Dovecot ready.В ответ получен баннер от Dovecot. Значит, все в порядке.Кстати, обратившись к подсказке, получим список всех доступныхключей и дополнительных параметров:bastion% ~Cssh> helpCommands:-L[bind_address:]port:host:hostportRequest local forward-R[bind_address:]port:host:hostportRequest remote forward-KR[bind_address:]portCancelremote forwardЕсли в ~/.ssh/config установить значение директивыPermitLocalCommand в yes, то мы сможем выполнять командыв локальном шелле (то есть на хосте, с которого зашли):ns% ssh mx3mx3% ~Cssh> !uptime /* команда выполняется на хосте ns */7:02PM up 100 days, 11 mins, 1 user, loadaverages: 0.13, 0.21, 0.23 mx3% uptime /* команда выполняется на хосте mx3 */7:02PM up 4 days, 7:34, 1 user, loadaverages: 0.21, 0.23, 0.19Если на предыдущем узле требуется выполнить сразу несколькокоманд, то SSH-сессию лучше временно «засуспендить»(приостановить выполнение программы ssh):mx3% ~[1] + Suspended "ssh" "$@"Чтобы перевести SSH-сессию из остановленного режима вактивный, воспользуйся командой fg.Список текущих SSH-соединений можно просмотреть комбинацией:mx3% ~#The following connections are open:#0 client-session (t4 r0 i0/0 o0/0 fd 5/6 cfd -1)А для быстрого завершения SSH-сессии ставим точку:mx3% ~.Connection to 213.167.XX.YY closed.Админ должен быть ленив!Чтобы в консоли не вводить полное доменное имя, порт иучетную запись для подключения к удаленной системе, стоитзаручиться поддержкой директивы Host:% vim ~/.ssh/configHost mx2Hostname mx2.domain.ruPort 2022User adminТаким образом, нам достаточно ввести «ssh mx2», — и мыпопадем на заветный сервер. Уже не плохо, однако каждый разприходится набирать четыре «лишних» символа (ssh и пробел).Лень сподвигает на написание двухстрочного сценария, «съедающего»ssh, но сохраняющего все переданные в команднойстроке аргументы, пробелы и кавычки:% cd ~/bin% vim myssh#!/bin/shexec /usr/bin/ssh '/usr/bin/basename $0' $@Наделяем скрипт атрибутом исполнения и создаем символическуюссылку на псевдоним удаленного сервера:% chmod +x myssh% ln -s myssh mx2Вводить ssh больше не требуется (P.S. Подкаталог bin долженбыть прописан в переменной окружения PATH):% mx2 uptime5:16PM up 45 days, 8:40, 0 users, loadaverages: 0.55, 0.40, 0.35Если узлов несколько, то для каждого создаем аналогичнуюсимволическую ссылку, выбрав в качестве имени егоhostname.Небольшой оптимизации можно достигнуть, отказавшисьот вызова утилиты basename(1) и применив встроенныевозможности командной оболочки:% vim myssh#!/bin/shexec /usr/bin/ssh ${0##*/} $@Обходим файрволыМногие администраторы в целях безопасности скрывают своисервера в демилитаризованной зоне либо за NAT’ом и разрешаютвходящие соединения только с доверенных IP-адресов ипо определенным портам. Поэтому доступ ко многим полезнымресурсам получить напрямую нельзя. Это как раз тот случай,когда использование SSH-форвардинга может исправить ситуацию.Некоторые примеры были рассмотрены в предыдущемномере журнала, в статье «Калейдоскоп тайных знаний». Вотеще один вариант:% vim ~/.ssh/config# Шлюз на базе OpenBSDHost gateHostname gate.domain.ru# Для ускорения соединений включаем мультиплексированиеSSH-сессий134xàêåð 07 /115/ 08
ХАКЕР.PROСтатья на сайте OpenBSD.ru, посвященная OpenSSHКонфигурирование /etc/ssh/sshd_configControlMaster autoControlPath ~/.ssh/ctl-%r-%h-%p# Перенаправляем локальный порт на файловый сервер(Win2k3 с поднятым VShell)LocalForward 8022 192.168.1.101:22# Подключаясь к localhost:8022, мы будем попадать в файлопомойкуHost fileserverHostname localhostPort 8022ControlMaster autoControlPath ~/.ssh/ctl-%r-%h-%pHostKeyAlias fileserverСоединяемся с узлом gate и проверяем возможность подключения к локальномупорту 8022:% ssh -N -f gate% telnet localhost 8022SSH-2.0‐VShell_3_0_4_656 VShellТеперь можно логиниться на файловый сервер, который находится заNAT’ом, в обход рулесетов, установленных на шлюзе:# Работаем по защищенному протоколу SFTP в chroot окруженииForceCommand internal-sftpChrootDirectory /var/www/hosting/%uТеперь зарегистрированные пользователи будут допущены только к «своему»каталогу, при подключении модификатор «%u» будет заменен именемпользователя. При необходимости можно использовать «%h», которыйсоответствует домашнему каталогу юзера.Ограничение подключений к SSHСервис SSH — любимая мишень злоумышленников, поэтому следует принятьнекоторые предосторожности. Одна из них — ограничение количестваподключений, чтобы избежать DoS-атаки и брутфорса паролей. Если в логахты находишь большое количество записей вроде: «Failed password forroot from» или «Invalid user admin from», можешь быть уверен— к твоему серверу подбирают пароли при помощи программ-брутфорсеров.Паниковать не стоит, эту проблему можно решить очень просто. Приведуправила для iptables:# iptables -A INPUT -p tcp — dport 8022 -i eth1 -m state \–state NEW -m recent — set# iptables -A INPUT -p tcp — dport 8022 -i eth1 -m state \–state NEW -m recent — update — seconds 300 \–hitcount 3 -j DROP% ssh fileserverMicrosoft Windows [Version 5.2.3790]C:\Documents and Settings\Smelaya\My Documents>Как видишь, SSH-туннель — это самый простой способ, позволяющийобойти файрвол и получить доступ к закрытому админом сервису. Есть испециализированные приложения, предназначенные для более удобнойорганизации SSH-туннелей. Например, RSTunnel (Reliable SSH Tunnel,rstunnel.sf.net), Corkscrew (www.agroman.net/corkscrew) и другие.Безопасный SFTPМногие хостинговые компании предоставляют своим пользователям доступпо FTP. Назначение каталогов может быть разное, но нас интересует, каксделать доступ безопаснее. Здесь на помощь также может прийти SSH:% sudo vim /etc/ssh/sshd_configSubsystem sftp internal-sftp# Секция с хостинговыми клиентамиMatch Group wwwusers# Отключаем форвардингX11Forwarding noAllowTcpForwarding noТак мы разрешили три подключения к 8022 порту в течение пяти минут. В PFне сложнее:% sudo vim /etc/pf.conftable persistblock in log quick on $ext_if inet from pass in log on $ext_if inet proto tcp to $ext_if port sshkeep state \(max-src-conn-rate 5/60, overload flushglobal)Здесь фильтр пакетов не допустит более пяти одновременных соединений к22 порту за 60 секунд. При желании правила можно ужесточить.ЗаключениеС помощью семейства команд SSH можно не только обеспечить аутентификациюи шифрование данных между хостами, существенно затрудняяперехват со стороны других узлов, но и создать виртуальную частную сеть,объединяющую несколько компьютеров или сетей, обойти эшелонированныезаслоны, заботливо выставленные админом, и наделить различныеприложения новым функционалом. Набор сетевых инструментов OpenSSHобладает чрезвычайно богатыми возможностями, и с ними стоит познакомитьсяпоближе. zxàêåð 07 /115/ 08135