SSH-туннели: практические примеры использования и важные функции

В этой статье пойдет речь о Nmap, что способен отправлять пакеты и анализировать ответ, который он получает, чтобы обнаружить хосты и службы, находящиеся в компьютерной сети. Это один из наиболее широко используемых сканеров портов, доступных сегодня.

Другой вариант – помощник Nmap, который используется для мониторинга сети и портов. ПО требует установки, поэтому проинсталлируем его из репозитория.

sudo apt-get install nmap

После инсталляции запускаем утилиту со следующими ключами:

sudo nmap -n -Pn -sS -sU -p- localhost

Результат отобразится в терминале пользователя.

Важно! Процедура сканирования может занять длительное время.Перечень открытых соединений

Если требуется графическая оболочка, то введем в терминале:

sudo apt-get install zenmap

После установки вводим:

sudo zenmap

На мониторе пользователя откроется графическая среда.

Результат сканирования Nmap

В поле Target задаем IP-адрес хоста, который хотим просканировать. Раздел Profile отвечает за тип сканирования. А в нижней части экрана отобразятся результаты.

Как проверить, открытые порты с помощью утилиты netstat?

Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:

  • -l или —listening — посмотреть только прослушиваемые порты;
  • -p или —program — показать имя программы и ее PID;
  • -t или —tcp — показать tcp порты;
  • -u или —udp показать udp порты;
  • -n или —numeric показывать ip адреса в числовом виде.

Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:

$ netstat -tulpn

Способ nmap

Nmap — мощный сетевой сканер,  разработанный для сканирования и пентестинга удаленных узлов, но ничего не мешает направить его на локальный компьютер:

$ nmap localhost

Starting Nmap ( ) at 2015-08-02 17:27 EEST Nmap scan report for localhost (127.0.0.1) Host is up ( latency). Other addresses for localhost (not scanned): 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 rDNS record for 127.0.0.1: Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3493/tcp open nut 8080/tcp open http-proxy

Nmap done: 1 IP address (1 host up) scanned in seconds

Детальнее об опциях сканирования в Nmap можно узнать в статье как просканировать сеть в Nmap.

Если вы хотите посмотреть какие порты на компьютере доступны снаружи, здесь тоже пригодится Nmap. Если компьютер — общедоступный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:

$ wget -O — -q

Дальше запускаем сканирование:

$ nmap 

В результате мы можем получить открытый порт 80 веб сервера, или даже 21 — файлового сервера, которых мы не устанавливали, эти порты открыты роутером, 80 — для веб-интерфейса, а 21 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS.

Читайте также:  Изменить язык мазилы. Как изменить язык в internet explorer

Открытие портов в Ubuntu

Дорогие друзья, сегодня мы с вами обсудим два вопроса: как открыть порт в Ubuntu и посмотреть список уже запущенных. Таким образом можно будет контролировать процессы на своём компьютере.

То есть, например, если не получается открыть какую-то утилиту из-за занятости одного из портов, такое дело можно будет исправить.

Для начала давайте узнаем, как посмотреть открытые порты? После этого уже рассмотрим вторую часть сегодняшней темы об открытии портов Убунту.

Управление портами на ПК необходимо для полноценной работы приложений.

Как посмотреть открытые порты

Если с запуском портов уже более или менее в голове что-нибудь прояснилось, то давайте разберём, что же делать, чтобы посмотреть открытые порты? Итак, этот метод предусматривает наличие установленной утилиты netstat на вашем компьютере под управлением операционной системы Linux.

Если этой программы на вашем устройстве нет, то обязательно установите его уже знакомыми средствами. После, достаточно будет ввести следующую команду в консоль: netstat -ltupn. Таким образом откроется окно с портами, адресами IP, а также именами процессов, которые являются владельцами соединений.

Способ достаточно простой и не требует каких-либо усилий с вашей стороны, кроме использования утилиты netstat.

Как открыть порт в Убунту

Теперь рассмотрим нашу вторую часть сегодняшнего обсуждения. Прежде всего вам потребуется запустить консоль для ввода команд и скриптов. Далее, пробуем следующие две комбинации, которые позволят вам открыть определённый порт.

Стоит отметить, что все выполняемые действия производятся на ваш страх и риск, так как они предназначены для опытных пользователей. Любые неверные шаги или же неблагополучные манипуляции могут привести вас к неприятным последствиям.

Например, есть вероятность потерять важные файлы и данные или же поломать что-нибудь в строе системы. Приступайте к следующим действиям только при полной уверенности своих сил и возможностей.

Способ первый

Ниже рассматриваются примеры для порта 7777:

  1. Итак, добавляем в нашу консоль правило: iptables -t filter -A INPUT -i eth0 -p tcp —dport 7777 -j ACCEPT. 
  2. Если так не получилось, то стоит проверить настройки конфигурации файрволла, только потом ввести следующее значение: iptables -L. После этого для открытия нужного порта используете консольную команду: iptables -A INPUT -p tcp —dport 777 -j ACCEPT.
  3. Если же и эта команда вам не помогла, то воспользуйтесь следующей: sudo iptables -A INPUT -p tcp —dport 7777-j ACCEPT.

Стоит отметить, однако, очень важный момент. Дело в том, что файрволл iptables имеется абсолютно во всех дистрибутивах Linux.

Более того, правила их являются также одинаковыми, но зато настройка и запуск может различаться. Вот почему может понадобиться наличие универсального способа.

Вероятнее всего, что опытные пользователи не применят его, но вот обычные юзеры вполне могут воспользоваться им.

Способ второй

  1. Для начала стоит проверить наличие iptables в вашей ОС. Для этого делаем следующую команду в консоли: iptables -list. После этого вы получите необходимые вами данные.
  2. Наиболее приемлемым вариантом будет закрытие всех портов, необходимых операционке.

    Далее, устанавливая правила, откройте порты Linux для игры, трансфера документов и веб-сёрфинга. Чтобы сделать это, убедитесь в наличие iptables. После этого создайте файл /etc/ с суперпользовательскими правами.

    файла будет следующее:

#!/bin/bashiptables -P INPUT DROPiptables -P OUTPUT DROP

iptables -P FORWARD DROP

# закрываем все соединенияiptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

# разрешаем трафик loopback, нужен обязательноiptables -A INPUT -p all -m state —state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

# разрешаем инициированные программами, системой и их дочерние -A INPUT -m state —state INVALID -j DROP

iptables -A FORWARD -m state —state INVALID -j DROP

#отбрасываем все пакеты без статуса.

## далее команды чтобы открыть порт Linux:

iptables -A INPUT -i eth0 -p tcp —dport 80 -j ACCEPTiptables -A INPUT -i eth0 -p udp —dport 80 -j ACCEPT

# открываем порты для посещения сайтов

iptables -A INPUT -i eth0 -p tcp —dport «номер нужного входящего порта» -j ACCEPTiptables -A OUTPUT -i eth0 -p tcp —dport «номер нужного исходящего порта» -j ACCEPT

# добавляем ещё, которые нам нужны, в список открытых портов Linux

Этот скрипт подходит для всех дистрибутивов Linux, в том числе и Ubuntu. Поэтому можно не волноваться по поводу несовместимости кодов и их работы в операционной системе.

Но вдруг если ни один из этих методов вам не помог, потребуется дополнительная диагностика. Например, вы можете посмотреть, не занят ли случайно необходимый порт другим приложением.

Если ответ будет положительным, то понадобится закрыть все утилиты, связанные с ним. Только потом можно будет повторить свои попытки со скриптами и кодами.

Подведём итоги

Зачем нужны динамические SSH tunnels

Динамический SSH tunnel отличается от рассмотренных выше типов соединений. Он открывает локальный TCP-сокет для его использования в качестве SOCKS4/SOCKS5 прокси. Обычно его применяют, когда требуется VPN, а его развертывание невозможно. Такой тип SSH-туннеля также отвечает необходимым требованиям безопасности.

Кроме того, создание динамического туннеля удобно, когда пользователю необходимо выйти в интернет однократно:

ssh -D 1080 [email protected]

SOCKS-прокси работает через порт 1080.

Помимо этого, динамический туннель не предусматривает открытие дополнительных портов во внешнюю сеть. Весь трафик будет проходить исключительно через SSH-соединение, скрывая тем самым характер интернет-деятельности пользователя.

Редактирование файла конфигурации knockd

Изменения, которые мы внесем в файл, выделены красным цветом ниже:

Мы расширяем «seq_timeout» до 15 секунд. Это щедро, но если кто-то запускает запросы на подключение вручную, ему может понадобиться много времени.

В разделе «openSSH» мы меняем опцию -A (добавление) в команде на -I (вставка). Эта команда вставляет новое правило брандмауэра в начало списка правил брандмауэра. Если вы оставите параметр -A , он добавит список правил брандмауэра и поместит его внизу .

Входящий трафик проверяется по каждому правилу брандмауэра в списке сверху вниз. У нас уже есть правило, которое закрывает порт 22. Таким образом, если входящий трафик проверяется по этому правилу до того, как он увидит правило, разрешающее трафик, в соединении будет отказано; если он сначала видит это новое правило, соединение разрешается.

Команда close удаляет правило, добавленное openSSH, из правил брандмауэра. Трафик SSH снова обрабатывается ранее существовавшим правилом «порт 22 закрыт».

После внесения этих изменений сохраните файл конфигурации.

СВЯЗАННЫЕ: Как графически редактировать текстовые файлы в Linux с помощью gedit

Как сделать проброс портов в Ubuntu

Проброс портов в Ubuntu server может происходить разными путями. Причем у каждого метода есть своя специфическая методика.

С помощью маршрутизатора

Пусть есть конкретная ситуация:

$EXT_IP – внешний, реальный IP-адрес шлюза

$INT_IP – внутренний IP-адрес шлюза, в локальной сети

$LAN_IP – внутренний IP-адрес сервера, предоставляющего службы внешнему миру

$SRV_PORT – порт службы. Для веб-сервера равен 80, для SMTP – 25 и т. д.

eth0- внешний интерфейс шлюза. Именно ему присвоен сетевой адрес $EXT_IP

eth1 – внутренний интерфейс шлюза, с адресом $INT_IP

А для облегчения понимания, в таких блоках рассмотрены конкретные ситуации:

1.2.3.4 – внешний адрес шлюза

– внутренний адрес шлюза

В локальной сети работает веб-сервер (порт 80) для сайта

– внутренний адрес веб-сервера

Тогда методика проведения проброса портов будет выглядеть следующим образом:

  1. Маршрутизация: установка параметров маршрутизатора iptables -t nat -A PREROUTING —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination и установка процесса iptables -I FORWARD 1 -i eth0 -o eth1 -d -p tcp -m tcp —dport 80 -j ACCEPT .
  2. Для разрешения доступа других пользователей с другими адресами: iptables -t nat -A POSTROUTING — -p tcp —dport 80 -j SNAT —to-source
  3. Для предотвращения переадресации к маршрутизатору: iptables -t nat -A OUTPUT —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination

Для автоматического запуска изучаемого процесса можно создать скрипт.

И дальнейшее обращение к пробросу будет выполняться пользователем записью в командной строке: ./ 20,21.

С помощью установки Hamachi в Ubuntu

Технология немного отличается от предыдущего варианта:

Осталось только перезагрузить систему.

С помощью Squid

Он используется для контроля слишком большого трафика.

Алгоритм также прост:

  1. Установка: sudo apt-get install squid3.
  2. Настройка: /etc/squid/

Затем действия идут такие же, как и в предыдущем варианте.

С помощью Iptables

Такая программа аналогична первому варианту. Собственно алгоритм будет такой же:

  1. Маршрутизация: установка параметров маршрутизатора iptables -t nat -A PREROUTING —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination и установка процесса iptables -I FORWARD 1 -i eth0 -o eth1 -d -p tcp -m tcp —dport 80 -j ACCEPT.
  2. Для разрешения доступа других пользователей с другими адресами: iptables -t nat -A POSTROUTING — -p tcp —dport 80 -j SNAT —to-source
  3. Для предотвращения переадресации к маршрутизатору: iptables -t nat -A OUTPUT —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination

Для автоматического запуска изучаемого процесса можно создать скрипт.

И дальнейшее обращение к пробросу будет делаться пользователем записью в командной строке: ./ 20,21.

Cisco

С моей стороны было бы кощунством не рассказать про настройку проброса портов с помощью сетевого оборудования небезызвестной компании Cisco. Благо, здесь все решается одной простой строкой, которая, тем не менее, будет разной для различных типов устройств. Например, проброс портов в Cisco PIX (Private Internet Exchange) или ASA (Adaptive Security Appliance) осуществляется с помощью следующей строки конфигурации:

static (inside,outside) tcp 1.2.3.4 www \ www netmask

В то же время для оборудования, работающего на операционной системе Cisco IOS, строка будет выглядеть так:

ip nat inside source static tcp 80 \ 1.2.3.4 80

Обе они не делают ничего кроме проброса порта 80 на сервер для клиента с адресом 1.2.3.4. При этом если необходимо настроить проброс всех портов, достаточно просто опустить номера/ имена портов в строке конфигурации.

Как открыть порт, если уже есть правила

Довольно часто возникает ситуация, когда вам нужно открыть порт Linux, а iptables уже содержит набор правил, запрещающих доступ к портам. Иногда вы добавляете правило, все как нужно, с помощью описанной выше команды, но не замечаете никакого эффекта.

Как открыть порт, если уже есть правила

Рассмотрим почему так происходит. Допустим, программа или предыдущий администратор для надежности добавили в конец цепочки правило такого вида:

$ sudo iptables -I INPUT -p tcp —dport 1924 -j ACCEPT

Как открыть порт, если уже есть правила

Теперь смотрим список правил и проверяем:

(Пока оценок нет)

Как открыть порт, если уже есть правила

Похожие материалы

  • Как в Windows 8 включить ответ на ping-запросы
  • Как узнать какая программа слушает TCP/IP порт в Windows
  • Удаленный рабочий стол ubuntu

Использование Netstat в Windows

Для того чтобы вывести на экран командной строки все соединения, при этом разместив их на нескольких страницах, нужно использовать такой синтаксис: «-a | more». Если нужно сохранить всю статистику в определенный файл, нужно использовать « -a > C:\имя файла». Таким образом, в файл, указанный по данному пути, будет записана вся собранная информация.

Результатом работы может выступать небольшая таблица, которая содержит следующие типы данных:

  • Имя. Здесь указывается название найденного активного протокола.
  • Локальный адрес. IP-адрес и порт, использующиеся локальным сервисом для создания соединения. Среди значений может встречаться 0.0.0.0, что означает любой доступный адрес или 127.0.0.1. Это говорит о локальной петле.
  • Внешний адрес. IP и порт внешней службы в сети, с которой установлено соединение.
  • Состояние. Показывает текущий статус соединения. Может принимать разные значения. Например, Listening говорит о том, что служба «слушает» и ждет входящего подключения. Established означает активное соединение.

Netstat, запущенная с ключами -a и -b, покажет все сетевые подключения, а также связанные с ними программы. Это очень удобно, если нужно вычислить, какая программа активно использует трафик и куда отсылает данные.