Сквозь защитные порядки: Пробрасываем порты в окнах, никсах и кисках

Предыдущая версия настоящего обучающего модуля составлена Хейзел Вирдо

Просмотр правил Iptables

Прежде чем что-либо менять, нужно понять каким образом система работает сейчас. Возможно, для лучшего понимания материала вам сначала стоит ознакомиться со статьей iptables для начинающих. Для просмотра текущих правил iptables выполните такую команду:

sudo iptables -L

Здесь мы видим три цепочки OUTPUT, INPUT и FORWARD, за открытые порты отвечает цепочка INPUT, именно через нее проходят все входящие пакеты. Сейчас политика по умолчанию – ACCEPT, это значит, что подключение ко всем портам разрешено. Здесь нам нужно настроить все самим и это будет проще если бы какая-либо программа уже создала свои настройки, но этот вариант мы тоже рассмотрим ниже.

ответа

Запустите это из командной строки; это должно решить проблему: sudo iptables -A INPUT -m conntrack —ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

Чтобы сделать определенный порт:

sudo iptables -A INPUT -p <tcp OR udp> <—dport OR —sport> <port> -j ACCEPT

INPUT является цепочкой для входящего трафика. -p — это протокол (либо tcp, либо udp, либо —dport, либо —sport указывают разрешение для порта назначения или порта источника. -j — это «прыжок», и вы его ACCEPT, REJECT или DROP пакет (ы)

Подробную информацию о iptables можно найти, прочитав справочную страницу. Поскольку вы новичок, вы, вероятно, найдете это полезным: http: // www.

7 ответ дан Kamil Renczewski , 10:10 Ссылка

  • 1 @J Moore: Спасибо, но где я вставляю номер порта? Также помог бы, если Вы могли бы вставить один лайнер о том, для чего эти аргументы?PJSCopeland , 10:10
  • 2 Я попробовал методы выше, и хотя я думаю, что они должны работать, проверяющая клиентский порт страница: всегда шоу, что порт ЗАКРЫВАЕТСЯ. Какие-либо идеи?Thomas , 10:11

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

для 32 битов — Firestarter для 64 битов — Firestarter

[ 1112]

  • Установите и откройте firestarter, добавьте входящую политику с этим ip: & nbsp; 0.0.0.0/0 & nbsp; (чтобы разрешить все IP-адреса)
  • Добавьте порты, которые нужно открыть.
  • Затем нажмите кнопку «Применить изменения».

0 ответ дан Camilo Martin , 10:11 Ссылка

  • 1 Я don' t думают, что это обращается к вопросу вообще. Также ясно op имеет смутное представление о том, как выполнить то, что Вы просто выдвигаете.philsnow , 10:11

Теги Похожие вопросы

Читайте также:  Как включить родительский контроль в Яндекс.Браузере

Настройка Брандмауэра (netfilter) для SSH и тырем порт

По умолчанию для SSH соединения, используется порт ТСP-порт 22. Забегая перед следует сказать, что многие рекомендует его поменять, но я так не думаю. Смена порта не поможет, «любой» сканер без труда отыщет ваш порт куда вы его не запрятали. Способ смены порта хорошо известен и Хакеры пишут соответствующие скрипты. Ниже будут приведены меры безопасности, прочитав их вы можете решить стоит ли менять порт или нет. Чтобы узнать какой порт слушает демон (sshd) на сервере, нужно выполнить команду:

$ sudo grep -w ‘Port’ /etc/ssh/sshd_config #Port 22

Применив директиву Port поменяв значение, вы укажете демону (sshd) порт который нужно слушать;

Port 8822

Теперь демон (sshd) будет слушать порт 8822, для подключения к серверу, нужно воспользоваться на клиентской машине командой:

$ ssh -p8822 [email protected]

Ключ ‘-p‘ указывает порт, вместо user пишем имя пользователя, 127.0.0.1 меняем на IP своего сервера.

C портами разобрались, теперь нужно настроить брандмауэр. Можно воспользоваться средствами TUI дистрибутива.

Внимание! Будьте внимательны и последовательны в ваших действиях ! Неправильные действия могут привести к потере удалённого доступа.

Для Red-Hat based:

$ sudo yum install iptables system-config-securitylevel-tui $ sudo system-config-securitylevel-tui

Нужно открыть порты (SSH) ТСP-22, UDP-22 или соответственно открыть порт который указали в директиве Port

Для SuSE:

$ sudo yast

Заходим в /Безопасность и пользователи/ Брандмауэр / Разрешённые службы — добавляем «Сервер Secure Shell», если вы указали порт директивой Port то / Брандмауэр / Разрешенные службы /Дополнительно и добавляем порт TCP и UDP .

Для «ручной настройки» следует внимательно ознакомиться с правилами iptables и настройкой брандмауэра вашего дистрибутива.

Приведу пример открытия портов простыми правилами:

iptables -A INPUT -p tcp —dport 22 -j ACCEPT iptables -A OUTPUT -p udp —sport 22 -j ACCEPT

Внимание ! Следует понимать, что к примеру SuSEfirewall2 генерирует правила для iptables из конфигурационного файла /etc/sysconfig/SuSEfirewall2, в каждом дистрибутиве есть свои особенности управления брандмауэром.

Шаг — Настройка политик по умолчанию

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

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

  • sudo ufw default deny incoming
  • sudo ufw default allow outgoing

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

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

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

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

Другие подходы

Для осуществления проброса порта совсем необязательно использовать брандмауэры или системные демоны, как, например, этого требуют старые версии FreeBSD. Существует несколько других способов сделать это с помощью специализированного софта или стандартных инструментов ОС (кто знает, возможно, ты используешь Minix в качестве ОС для шлюза :)). Один из таких инструментов — SSH. Далеко не каждый системный администратор в курсе, что проброс порта является стандартной функцией этой программы. Возьмем, к примеру, следующую ситуацию. В локальной сети, закрытой от внешней сети NAT’ом, есть сервер, к которому тебе необходимо иметь доступ. Ситуация усугубляется тем, что ты не имеешь привилегий для настройки файервола на машине-шлюзе. Зато у тебя есть доступ к SSH-серверу, работающему на этом шлюзе. Как это может помочь? На самом деле очень сильно. Ты просто выполняешь следующую команду на удаленной машине (serverip — адрес внутреннего сервера, gateway-ip — адрес шлюза):

$ ssh -L 8080:<server-ip>:80 [email protected]<gateway-ip>

И вуаля, порт 8080 локальной машины становится портом 80 внутреннего сервера локалки. Теперь достаточно набрать в веб-браузере адрес localhost:8080, и ты попадешь туда, куда надо. Твой SSH-клиент создаст туннель с SSH-сервером шлюза, все передаваемые в рамках которого данные будут направлены на порт 80 внутреннего сервера.

Более радикальный способ — установка софта, специально созданного для осуществления проброса портов. Одна из таких программ носит имя rinetd и представляет собой высокопроизводительный сервер, позволяю щий пробрасывать любое количество соединений. Он есть в пакетах для популярных Linux-дистрибутивов и портах BSD-систем. После его установки достаточно отредактировать файл /etc/ (/usr/local/etc/), поместив туда строки следующего вида:

1.2.3.4 80 80

И (пере)запустить сервер командой:

$ sudo /etc/init.d/rinetd restart

в Ubuntu или:

# /usr/local/etc/rc.d/rinetd start

во FreeBSD. Так же во FreeBSD придется активировать запуск rinetd при старте:

# echo "rinetd_enable="YES"" >> /etc/

После этого весь трафик, пришедший на порт 80 машины 1.2.3.4, будет автоматически перенаправлен на тот же порт машины с IP-адресом

Один из излюбленных способов проброса портов среди UNIX-администраторов заключается в использовании утилиты socket совместно с сетевым супер-сервером inetd. Как и все гениальное, идея в этом случае проста, а реализация очевидна. Открываем файл /etc/ (даже если в твоей системе используется более новый xinetd, ты все равно можешь использовать этот файл) и добавляем в него строку следующего вида:

порт1 stream tcp nowait root /usr/local/bin/socket socket порт2

Здесь порт1 — это прослушиваемый порт на машине-шлюзе, а порт2 — порт назначения на внутренней машине При этом оба они должны быть заданы в форме имени службы (www, ftp и т.д.), если же таковой не имеется (ты выбрал произвольный порт), то ее необходимо добавить в файл /etc/services.

Далее можно перезагрузить inetd командой «kill -HUP» и наслаждаться результатом. Если же его нет, то смотрим в файл /etc/ Доступ к службе должен быть открыт.

Как настройки подключения по SSH влияют на безопасность

В этом разделе разберем основные настройки для повышения уровня безопасности SSH. Все настройки выполняются в уже известном конфигурационном файле /etc/ssh/sshd_config.

Первая настройка — проверка соответствия DNS-имени IP-адресу клиента. За это отвечает параметр UseDNS.

# UseDNS yes

Следующий шаг к безопасности — запрет пустых паролей. Задается в параметре PermitEmptyPasswords.

# PermitEmptyPasswords no

Дополнительно можно ограничить количество неудачных попыток подключения:

# MaxAuthTries 3

Еще один подход к ограничению несанкционированных подключений — задание пользователей и групп, которым разрешен доступ по SSH. Они перечисляются в параметрах AllowUsers и AllowGroups.

# AllowUsers User1, User2, User3 # AllowGroups Group1, Group2, Group3

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

# Login GraceTime 30

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

# ClientAliveInterval 300

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

Нельзя не упомянуть про эффективный инструмент борьбы с попытками аутентификации — утилите fail2ban. Это сервис, который читает лог безопасности и блокирует злоумышленников по IP. Штатно устанавливается при помощи apt:

# sudo apt install fail2ban

После установки появляются два конфигурационных файла: /etc/fail2ban/ и /etc/fail2ban/ Первый отвечает за настройки запуска fail2ban, а второй за настройки защиты конкретных сервисов.