Сквозь огненные стены Докучаев Дмитрий aka Forb Xakep, номер #066, стр. 066-064-2 Меняем реквизиты Допустим, что обойти файрвол первым способом не получается - даже поломанную машинку из доверенной подсети не пускают на нужный сервис. В этом случае необходимо прибегнуть к другому методу. Суть его заключается в подмене адреса сетевого интерфейса. Но это сработает лишь в случае сети на хабах, где нет подвязки IP к MAC. Но прежде чем менять адрес, необходимо узнать IP машины, которую файрвол пропустит как родную. В этом тебе поможет знаменитый сканер nmap: используя опции -S и -e ты можешь подменить IP-адрес и увидеть состояние порта. В случае когда на адрес внесено исключающее правило, ты заметишь статус open. Иначе сканер покажет тебе фильтрованный порт. Помни, что из-за архитектуры Unix-систем, для проведения такого спуфинга тебе потребуются рутовые права. В конце концов, ты найдешь достоверный адрес, на который тебе следует переориентировать интерфейс. Замена реквизита - очень рискованное действие, при ошибке ты потеряешь сервер навсегда ;). Исключение составляет лишь случай, когда машина имеет более одного внешнего адреса (при потере одного адаптера ты можешь зайти через другой). После этой махинации попробуй соединиться с сервером, спрятавшимся за файрволом. Пустили? Замечательно! Если же опять ничего не получилось - думай дальше. Причин может быть две: либо сетка построена на умных свитчах, либо файрвол подвязан не только на IP, но и на MAC-адрес. Мак определить проблематично, так как достоверная машина находится в офлайне. Поэтому меняй IP на прежнее значение и жди включения компьютера. Когда дождешься - узнавай его MAC и жди выключения :). После всего этого ты сможешь заменить как IP, так и MAC-адрес. Я обрисовал общее решение, вполне возможно, что ты найдешь заветный MAC в статической arp-таблице, либо dhcpd.conf. Тут все зависит от тебя, но мой алгоритм наверняка прокатит в любой ситуации. Смена IP-адреса в разных системах выполняется немного по-разному, в случае Linux для этого следует выполнить команду: ifconfig eth0 ip-address. Для смены MAC-адреса набери ifconfig eth0 down; ifconfig eth0 hwaddr MAC-addr; ifconfig eth0 up. Еще раз предупреждаю, что ты сильно рискуешь при проведении подобных операций. Однако кто не рискует, тот не пьет шампанского :). Плюсы: 1. Предварительный поиск сервера. Если сканирование nmap'ом удалось, то ты наверняка знаешь, что после смены реквизитов файрвол не отфильтрует твое соединение. Минусы: 1. Большой риск при смене адресов. В случае если что-то пойдет не так, ты потеряешь сервер. 2. Необходимость офлайна достоверной машины. Когда сервер включен, IP-адрес сменить невозможно, поэтому данный метод прокатит, только если компьютер выступает в роли рабочей станции. Форвардинг пакетов Предположим, что первый или второй метод обхода межсетевого экрана сработал. Но каждый раз входить на сервак через промежуточную машину слишком рискованно. Гораздо проще придумать какое-нибудь решение, позволяющее иметь доступ к серверу с твоего домашнего компьютера. Это легко сделать посредством форвардинга пакетов. Метод довольно прост и не требует дополнительных объяснений, поэтому рассмотрим конкретный пример, когда форвардинг может быть полезен. На защищенной файрволом машине установлен терминальный сервис, с которым хотелось бы соединиться. Промежуточный сервер вертится на Linux и имеет активный файрвол iptables. Если ситуация похожая, то самое простое, что можно сделать - вставить правило в цепочку PREROUTING таблицы nat, что фактически подменит адрес назначения у пришедшего пакета. Для тех, кто не понял, объясню еще раз: когда ты будешь коннектиться на службу терминалов, то заюзаешь IP-адрес промежуточного сервера, ядерный модуль которого быстро сменит адрес назначения на желаемый. В итоге пакет будет доставлен в нужном направлении и не срежется брандмауэром. На практике тебе придется выполнить всего одну команду: iptables -t nat -A PREROUTING -s твой_ip -p tcp --dport 3389 -j DNAT --to-destination нужный_ip, где порт 3389 отвечает за службу терминалов. Этот прием достаточно универсален и позволяет форвардить любые пакеты, в том числе UDP и ICMP. |