03.01.2015 Views

Офисное западло - Xakep Online

Офисное западло - Xakep Online

Офисное западло - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ХАКЕР.PRO<br />

user@domain.ru<br />

groups = yes<br />

bind = 127.0.0.1<br />

}<br />

Продвинутое использование .ssh/config<br />

Другой вариант настройки форвардинга — использование<br />

файла ~/.ssh/config. Например, настроим 192.168.1.1<br />

на перенаправление входящей и исходящей почты по шифрованному<br />

каналу для клиентов из 192.168.1.0/24 на mail.<br />

domain.ru:<br />

Создаем SOCKS-сервер<br />

$ vim .ssh/config<br />

Host mail<br />

Hostname mail.domain.ru<br />

LocalForward 192.168.1.1:8025 mail.<br />

domain.ru:25<br />

LocalForward 192.168.1.1:8110 mail.<br />

domain.ru:110<br />

LocalForward 192.168.1.1:8143 mail.<br />

domain.ru:143<br />

GatewayPorts yes<br />

forwarding,no-port-forwarding ssh-rsa AAAA[...]<br />

Кстати, прописав в ~/.ssh/config параметры используемых серверов,<br />

можно с легкостью управлять сразу всей стаей.<br />

Подключаемся:<br />

# ssh -i ~/.ssh/tunnel_key user@domain.ru<br />

В ответ должны получить баннер удаленного почтового сервера. Теперь<br />

создаем файл для xinetd:<br />

$ sudo vim /etc/xinetd.d/smtp<br />

service smtp<br />

{<br />

socket_type = stream<br />

protocol = tcp<br />

wait = no<br />

user = root<br />

disable = no<br />

server = /usr/bin/ssh<br />

server_args = -q -T -i /root/.ssh/tunnel_key<br />

$ vim .ssh/config<br />

Host server1<br />

HostName ns.domain1.ru<br />

User admin<br />

Host server2<br />

Hostname mail.domain2.ru<br />

User support<br />

Теперь опросим серверы командой:<br />

ksh% for i in 1 2; do ssh server$i «uptime»; done<br />

5:37PM up 1 day, 23:45, 1 user, load averages: 0.25,<br />

0.22, 0.22<br />

5:37PM up 51 days, 1:49, 0 users, load averages: 0.25,<br />

0.25, 0.24<br />

Как вариант, для этих целей можно использовать интерпретатор Perl<br />

(пример для десяти подконтрольных серверов):<br />

Из чего<br />

состоит OpenSSH<br />

ssh-add — вспомогательная программа для добавления личных<br />

ключей в кэш;<br />

ssh-agent — демон, занимающийся кэшированием дешифрованных<br />

личных ключей;<br />

scp — утилита для безопасного копирования файлов между хостами;<br />

sftp — клиентская программа для sftp-server;<br />

sftp-server — серверная реализация защищенного ftp;<br />

ssh — клиент, обеспечивающий безопасное соединение;<br />

sshd — демон, ожидающий подключения, выполняющий аутентификацию<br />

и полностью обслуживающий ssh-клиента;<br />

ssh-keygen — утилита для создания и модификации ключей;<br />

ssh-keyscan — утилита для сбора публичных ключей;<br />

ssh-keysign — помощник при использовании метода аутентификации,<br />

основанного на проверке хостов.<br />

% perl -e ‘foreach $i (1 .. 10) {print 'ssh server$i "uptime"'}'<br />

Если часто приходится работать с несколькими удаленными хостами,<br />

советую присмотреться к проекту ClusterSSH (clusterssh.sf.net). Он позволяет<br />

открыть несколько соединений по SSH и одновременно выполнять на<br />

них команды. Нужные пакеты уже есть в репозитарии Debian/Ubuntu:<br />

$ sudo aptitude install clusterssh<br />

И запускаем:<br />

$ cssh one two three<br />

Параметр ProxyCommand позволяет выполнить произвольную команду.<br />

Для примера подключимся через шлюз к файловому серверу, который<br />

находится за NAT:<br />

$ vim .ssh/config<br />

Host gateway<br />

HostName ns.domain.ru<br />

132<br />

xàêåð 06 /114/ 08

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!