Как проверить наличие открытых портов в linux

Изменение порта SSH

Выполните следующие действия, чтобы изменить порт SSH в вашей системе Linux:

1. Выбор нового номера порта

В Linux номера портов ниже 1024 зарезервированы для известных служб и могут быть связаны только с правами root. Хотя вы можете использовать порт в диапазоне 1-1024 для службы SSH, чтобы избежать проблем с распределением портов в будущем, рекомендуется выбирать порт выше 1024.

В этом примере порт SSH изменится на 3452, вы можете выбрать любой порт, который вам нравится.

2. Настройка брандмауэра

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

Если вы используете UFW, средство настройки брандмауэра по умолчанию для Ubuntu запускает следующую команду, чтобы открыть новый порт SSH:

sudo ufw allow 3452/tcp

В CentOS инструментом управления брандмауэром по умолчанию является FirewallD. Чтобы открыть новый порт, выполните следующие команды:

sudo firewall-cmd --permanent --zone=public --add-port=3452/tcp
sudo firewall-cmd --reload

Пользователям CentOS также необходимо настроить правила SELinux, чтобы разрешить новый порт SSH:

sudo semanage port -a -t ssh_port_t -p tcp 3452

Если вы используете iptables в качестве брандмауэра, следующая команда откроет новый порт SSH:

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

3. Редактирование конфигурации SSH

Откройте файл конфигурации SSH /etc/ssh/sshd_config в текстовом редакторе:

sudo nano /etc/ssh/sshd_config

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

/etc/ssh/sshd_config

Port 3452

Будьте особенно осторожны при изменении файла конфигурации SSH. Неправильная конфигурация может привести к сбою службы SSH.

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

sudo systemctl restart ssh

В CentOS сервис ssh называется sshd:

sudo systemctl restart sshd

Чтобы убедиться, что демон SSH прослушивает новый порт 3452, введите:

ss -an | grep 3452

Вывод должен выглядеть примерно так:

tcp   LISTEN      0        128            0.0.0.0:3452           0.0.0.0:*
tcp   ESTAB       0        0      192.168.121.108:3452     192.168.121.1:57638
tcp   LISTEN      0        128               :3452              :*

Как просмотреть статус UFW?

По умолчанию UFW в неактивном состоянии т.е. нет правил брандмауэра не настроен и весь трафик разрешен.Чтобы увидеть статус, введите следующую команду:

$ sudo ufw status

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

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

$ grep ‘DEFAULT_’ /etc/default/ufw

Пример результата:

DEFAULT_INPUT_POLICY=»DROP» DEFAULT_OUTPUT_POLICY=»ACCEPT» DEFAULT_FORWARD_POLICY=»DROP» DEFAULT_APPLICATION_POLICY=»SKIP»

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

$ sudo ufw default allow outgoing $ sudo ufw default deny incoming

Создание первого правила брандмауэра, чтобы разрешить подключение к SSH (TCP-порт 22)

Введите следующую команду, чтобы разрешить SSH-соединения с сервером:

$ sudo ufw allow ssh

ИЛИ

sudo ufw allow 22/tcp

Скажем, если вы работаете в SSH на порту 2020, введите следующую команду:

$ sudo ufw allow 2020/tcp

Следующие правила открывают доступ к TCP SSH порт 22 только на 10.8.0.1 (т.е. ваш сервер SSH слущает на IP 10.8.0.1 порт 22) из любого места:

$ ufw allow proto tcp from any to 10.86.115.66 port 22

Открываем порты в Linux

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

Подробнее: Просмотр открытых портов в Ubuntu

Шаг 1: Установка Iptables и просмотр правил

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

  1. Откройте меню и запустите «Терминал». Сделать это также можно, используя стандартную горячую клавишу Ctrl + Alt + T.

В дистрибутивах на базе Debian или Ubuntu пропишите для запуска установки, а в сборках, основанных на Fedora — . После ввода нажмите на клавишу Enter.

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

Ожидайте завершения инсталляции и можете убедиться в активности работы инструмента, просмотрев стандартный список правил, задействовав .

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

Шаг 2: Разрешение обмена данными

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

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

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

Примерно такая же команда — — отвечает за новое правило для отправки информации.

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

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

Шаг 3: Открытие необходимых портов

Вы уже ознакомлены с тем, по какому принципу добавляются новые правила в конфигурацию Iptables. Существуют и несколько аргументов, позволяющих открыть определенные порты. Давайте разберем эту процедуру на примере популярных портов под номерами 22 и 80.

  1. Запустите консоль и введите туда две следующие команды поочередно:

    .

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

Придать ей читабельный вид и вывести все детали можно с помощью дополнительного аргумента, тогда строка будет такой: .

Поменяйте политику на стандартную через и можете смело приступать к работе между узлами.

В случае когда уже администратор компьютера внес свои правила в инструмент, организовал сброс пакетов при подходе к точке, например, через , вам нужно использовать другую команду sudo iptables: , где 1924 — номер порта. Она добавляет необходимый порт в начало цепи, и тогда пакеты не сбрасываются.

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

Теперь вы знаете, как пробрасываются порты в операционных системах Linux на примере дополнительной утилиты Iptables. Советуем обязательно следить за появляющимися строками в консоли при вводе команд, это поможет вовремя обнаружить какие-либо ошибки и оперативно устранить их.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

How to Check (Scan) for Open Ports in Linux

25 Апреля 2020
|

Терминал

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

Что такое открытый порт 

Порт прослушивания — это сетевой порт, который прослушивает приложение. Вы можете получить список прослушивающих портов в вашей системе, запросив сетевой стек с помощью таких команд, как , или . Каждый порт прослушивания может быть открыт или закрыт (отфильтрован) с помощью брандмауэра.

В общих чертах, открытый порт — это сетевой порт, который принимает входящие пакеты из удаленных мест.

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

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

Проверьте открытые порты с  

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

Если доступно, должен быть ваш первый инструмент, когда дело доходит до сканирования портов. Помимо сканирования портов можно также определить Mac-адрес, тип ОС, версии ядра и многое другое.

Следующая команда из консоли определяет, какие порты прослушивают TCP-соединения из сети:

Говорит для сканирования портов TCP и для сканирования всех 65535 портов. Если не используется, будет сканироваться только 1000 портов.

Вывод выше показывает, что только порты , и открыты в целевой системе.

Для сканирования портов UDP используйте вместо :

Для получения дополнительной информации посетите страницу руководства nmap и прочитайте обо всех других мощных опциях этого инструмента.

Проверьте открытые порты с  

Netcat (или ) — это инструмент командной строки, который может читать и записывать данные через сетевые подключения, используя протоколы TCP или UDP.

С его помощью можно сканировать один порт или диапазон портов.

Например, для поиска открытых портов TCP на удаленном компьютере с IP-адресом в диапазоне вы должны использовать следующую команду:

Опция указует сканировать только открытые порты, без отправки каких — либо данных и для более многословной информации.

Вывод будет выглядеть примерно так:

Если вы хотите, чтобы на экране выводились только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep .

Для сканирования UDP-портов передайте параметр в команду:

Проверьте открытые порты с помощью Bash Pseudo Device

Другой способ проверить, является ли определенный порт открытым или закрытым, — использовать оболочку Bash или псевдоустройство.

При выполнении команды на псевдоустройстве Bash откроет TCP или UDP-соединение с указанным хостом на указанном порту.

Следующий оператор if..else проверит, открыт ли порт on :

Как работает приведенный выше код?

Время ожидания по умолчанию при подключении к порту с использованием псевдоустройства очень велико, поэтому мы используем команду для уничтожения команды test через 5 секунд. Если соединение установлено с портом, тестовая команда вернет true.

Вы также можете использовать цикл for для проверки диапазона портов:

Вывод будет выглядеть примерно так:

Мы показали вам несколько инструментов, которые вы можете использовать для поиска открытых портов. Есть также другие утилиты и методы для проверки открытых портов, например, вы можете использовать модуль Python , или .

netstat — проверка открытых портов в Linux

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

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

Злоумышленники любят, когда порты открыты, так как приложения, прослушивающие эти порты, являются простыми целями.

Чтобы обеспечить нашей системе Ubuntu Linux (или любой другой системе в этом отношении) максимальную безопасность, мы должны знать о том, какие порты открыты и для каких служб.

Чтобы проверить, какие порты открыты на нашей рабочей станции Ubuntu, можно выполнить команду, показанную ниже

Обратите внимание, что она должна работать и для других разновидностей Linux, если установлена утилита netstat

Используя команду netstat

netstat -anltp | grep “LISTEN”

Обычный веб-сервер, на котором запущены FTP, SSH и MySQL, выведет следующую информацию:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090/apache2

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213/sshd

tcp6 0 0 :::21 :::* LISTEN 19023/proftpd

tcp6 0 0 :::22 :::* LISTEN 7234/sshd

Вышеуказанная команда запускает утилиту netstat с соответствующими флагами и передает вывод функции grep, которая извлекает строки, содержащие слово «LISTEN». В результате мы получаем список открытых портов и имена процессов, прослушивающих эти порты.

Читать также  NVIDIA вылечила опасные уязвимости в Display Driver

Все команды netstat, ss, netcat относится к сетевым утилитам и доступны по-умолчанию в большинстве linux-дистрибутивах.

Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д.

Используя команду ss

Утилита ss позволяет просматривать информацию об используемых сокетах в системе. Эта команда обладает схожим функционалом к netstat, но есть и уникальные возможности. Например можно фильтровать вывод по установленным соединениям с определенным портом.

Список процессов, использующие соединения в данный момент

ss -p

Список сокетов в режиме прослушивания

ss -l

Пример фильтра — список всех соединений к порту 80

ss -o state established ‘( dport = :www or sport = :www )’

Используя команду lsof

Утилита lsof умеет отображать процессы, которые работают с определенным файлом или сокетом.

Список всех сетевых соединений

lsof -i

Список процессов, работающих с портом 80

lsof -i :80

Используя команду netcat

Утилита netcat позволяет передавать/принимать данные через TCP/UDP соединения.

Шаблон вызова утилиты

nc host port

Откроем прием (ключ -l) данных на порте 1234 с подробным выводом информации (ключ -v) и продолжением работы после разрыва соединения (ключ -k), по-умолчанию nc разрывает соединение после первого дисконекта.

nc -l 1234

Подключаемся к открытому порту и отправим import antigravity

ОС для корпоративного сектора

Основная статья: ОС для корпоративного сектора

Эффективная работа IT-инфраструктуры любой современной компании невозможна без грамотно выбранной серверной операционной системы.

Назначение серверной операционной системы — это управление приложениями, обслуживающими всех пользователей корпоративной сети и внешних пользователей (СУБД, средства анализа и управления сетями, службы каталогов, средства обмена сообщениями и групповой работы, Web-серверы, почтовые серверы, корпоративные брандмауэры, серверы приложений, серверные части бизнес-приложений).

Выбор серверной операционной системы и аппаратной платформы для нее в первую очередь определяется кругом решаемых задач, и тем, какие требования предъявляются к ее производительности, стабильности и доступности.
Основными игроками на рынке серверных операционных систем являются ОС семейств Windows и Unix.

Операционные системы семейства Windows

Cерверные версии операционной системы Windows сегодня применяются довольно широко — благодаря удобству администрирования и невысокой совокупной стоимости владения.

  • Windows 2000
  • Windows Server 2003
  • Windows Server 2008

Операционные системы семейства UNIX

UNIX — группа многозадачных многопользовательских операционных систем. В данный момент существует большое количество вариаций ОС в данной сфере — как коммерческих, так и с открытым кодом.

  • Linux
  • FreeBSD
  • Solaris

Большинство российских серверов работают под управлением тех или иных клонов от Unix.
По данным выборочного исследования, проведенного порталом RuMetrika (данные за 2006 г. на российских серверах безусловно лидирует Free BSD (53%), на втором месте Linux (32%) , количество серверов, на которых установлена ОС Windows составило 9%, реже встречается Solaris — всего 5%.

Как выполнить проброс портов в Ubuntu Server

Термин «проброс портов» активно используют в своей терминологии профессионалы, а для новичков подобный жаргон часто остаётся непонятным. Это технология, которая позволяет работать с компьютером в локальной сети из интернета.

При этом в локальной сети может находиться маршрутизатор, который использует преобразование сетевых адресов. Таким образом, происходит перенаправление трафика с определённых портов по внешнему адресу на определённый адрес ПК во внутренней сети.

С Ubuntu проброс портов достаточно несложен в исполнении.

Проброс портов может понадобиться при организации пиринговой сети.

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

Средствами маршрутизатора

На некоторых маршрутизаторах есть возможность быстро включить поддержку проброса. Допустим, на устройствах D-Link она носит название «виртуальный сервер». Как правило, такая настройка выполняется через web-оболочку.

  1. Откройте браузер. В адресной строке наберите 192.168.0.1.
  2. Введите имя пользователя и пароль.
  3. Если на вашем маршрутизаторе есть Мастер настройки, запустите его и выберите задачу «Настройка виртуального сервера». Или же попробуйте найти такую функцию в разделах настроек «Межсетевой экран (Брандмауэр, firewall).
  4. В появившихся окнах задайте все необходимые параметры сервера. Как правило, это:
    • Интерфейс. Здесь нужно выбрать соединение для связи между компьютерами.
    • Внутренний IP. Это адрес сервера в местной сети.
    • Внешний (удалённый) IP. Адрес сервера, с которого будет осуществляться доступ.
    • Имя настройки. Имя для набора параметров.
  5. Сохраните введённые настройки.

Такой подход позволяет создать перенаправление средствами роутера. Он применим к любой операционной системе, в том числе, к Убунту Сервер.

С использованием hamachi

Этот способ ориентирован именно на Ubuntu, где проброс портов будет выполняться с помощью Hamachi. Хамачи позволяет построить VPN. Другими словами — это программа для работы с виртуальными частными сетями.

Допустим, в разных сетях существует группа удалённых друг от друга ПК, а связь в сети выполняется через VPN Hamachi. Сама программа должна быть установлена на сервере. После этого можно настраивать проброс портов.

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

 Для выполнения инструкций потребуется компьютер с установленной Ubuntu Server.

Установка Хамачи. Для начала, загрузите пакет с официального сайта:

wget https://secure.logmein.com/labs/logmein-hamachi_2.1.0.119-1_amd64.deb

Инсталлируйте нужный пакет:

sudo apt-get install lsb

Теперь проведите сборку пакета, который был загружен:

dpkg -i logmein-hamachi_2.1.0.119-1_amd64.deb

Можно запустить соответствующую службу, а также саму программу:

service logmein-hamachi starthamachi login

Присвойте личному компьютеру имя в Хамачи. После этого подключитесь к нужной сети:

hamachi set-nick $NAME.hamachi join $NAME_NETWORK

Введите все нужные данные для доступа к сети.

sudo apt-get install rinetd

Теперь в файлы конфигурации потребуется внести изменения:

nano /etc/rinetd.conf

Сам файл, открываем при помощи редактора nano. В конце документа нужно добавить строчку:

(IP-интерфейса сервера) (прослушиваемый порт) (адрес внешнего ПК) (порт внешнего ПК)

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

service rinetd restart

Теперь потребуется отключить межсетевой экран:

sudo ufw disable

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

С использованием squid

Squid — это прокси-сервер для Ubuntu. Мы уже рассматривали, как прокинуть порт на Ubuntu Сервер, Squid — также хороший инструмент для этого. Он поможет, когда необходим максимальный контроль сетевого трафика. Squid можно установить по команде:

sudo apt-get install squid3

Настройка программы выполняется правкой директив, расположенных в файле:

/etc/squid/squid.conf

О других особенностях использования Squid вы сможете узнать на официальном сайте.

Основные абстракции¶

Процесс — совокупность инструкций и данных, что находятся в оперативной памяти и обрабатываются процессором. Другими словами — исполнение программы в целом (не путать с потоком исполнения).

Примечание

Компьютерная программа сама по себе — лишь пассивная последовательность инструкций. В то время как процесс — непосредственное выполнение этих инструкций.

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

Состояние (контекст) процесса

С внешней стороны, процесс можно описать следующим:
  • Состояние
    • Состояние памяти
    • Содержимое регистров процессора
  • Адрестное пространство — у каждого процесса своё.
  • Состояние исполнения — то, исполняется ли этот процесс на процессоре в данный момент или ожидает чего-либо.
  • CPU — величина использовния процессорного времени.

Изнутри, процесс можно условно разделена на четыре части: Stack, Heap (кучу), Text (код) и данные (Data).

Рис 7. Сегменты памяти процесса

Состояния исполнения

Когда процесс выполняется, он проходит через разные состояния. Эти этапы могут различаться в разных операционных системах.

Общая картина выглядит так:

Рис 8. Состояния исполнения процесса

Примечание

  • Новый: начальное состояние при создании процесса.
  • Готов: процесс ожидает исполнения на процессоре. В течение работы процессор может переключаться между процессами, переводя одни в режим готовности, другие – в режим исполнения.
  • Исполнение: непосредственное выполнение инструкций на процессоре.
  • Ожидает: процесс переходит в состояние ожидания. Например, ждёт ввода данных или получения доступа к файлу.
  • Завершен: как только процесс завершится, он перейдёт в это состояние и будет ожидать удаления.

Информация о процессе

Вся информация о процессе содержится в специальной структуре данных, поддерживаемой операционной системой для каждого процесса – PCB (Process Control Block) — Блок управления процессов.

Рис 9. Process Control Block

Примечание

  • Process ID: идентификатор каждого из процессов в ОС.
  • State: текущее состояние процесса.
  • Privileges: разрешения доступа к системным ресурсам.
  • Pointer: указатель на родительский процесс.
  • Priority: приоритет процесса и другая информация, которая требуется для планирования процесса.
  • Program Counter: указатель на адрес следующей команды, которая должна быть выполнена.
  • CPU registers: регистры процессора, необходимые для состояния исполнения.
  • Accounting Information: уровень нагрузки на процессор, статистика и другие данные.
  • I/O Information: список ресурсов, использующих чтение и запись.

Информацию о процессах в целом, ОС хранит в специальной таблице процессов.

Процесс может делиться на потоки (threads). Они обеспечивают параллелизм, то есть одновременное исполнение нескольких потоков инструкций, на уровне программы.

Поток выполнения (нить, thread) — последовательность исполнения инструкций. Ход исполнения программы**.

Процесс является контейнером ресурсов (адресное пространство, процессорное время и тд), а поток – последовательность инструкций, которые исполняются внутри этого контейнера.

Примечание

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

Рис 10. Многопоточный процесс

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

Также поток называют легковесный процесс.

Сегодня потоки широко применяются в работе серверов и многопроцессорных устройств с общей памятью.

Рассмотрим на примере утилиты htop.

Рис 11. Вывод утилиты мониторинга процессов htop

Примечание

PID — Process ID; Уникальное число идентификатор для каждого процесса

TGID — Tread Group ID; Индентификатор группы потоков

На скриншоте, процесс 2881 имеет множество потоков, отношение которых к нему можно определить по тому, что TGID у этих потоков имеет значение PIDа этого процесса — 2881. Таким образом, один процесс разбивается на множество потоков, в которых инструкции исполняются параллельно.

Как открыть порт Ubuntu

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

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

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

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

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

sudo iptables -L

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

Как открыть порт iptables с нуля

Если в iptables уже есть какие-либо правила и вы хотите их удалить просто выполните:

sudo iptables -F

Теперь нам нужно добавить правила, которые разрешат обмен данными между любыми портами на локальном интерфейсе lo, это нужно чтобы не вызвать системных ошибок:

sudo iptables -A INPUT -i lo -j ACCEPT$ sudo iptables -A OUTPUT -o lo -j ACCEPT

Иначе получится, что мы отправляем серверу запрос (цепочка OUTPUT открыта), соединение открывается, но сервер не может нам ответить, потому что все пакеты отбрасываются в INPUT. Поэтому нужно разрешить все пакеты с состоянием ESTABLISHED и RELATED.

Для этого есть модуль state:

sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

Теперь самое интересное, рассмотрим как открыть порт 22 и 80 для протокола TCP:

sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT$ sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT

Опция -A сообщает, что нужно добавить пакет в конец цепочки, -p – указывает протокол, а –dport или Destination Port (порт назначения) указывает из какого порта пакеты нужно принимать. Теперь вы можете снова посмотреть список правил:

sudo iptables -L

 sudo iptables -nvL

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

sudo iptables -P INPUT DROP

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

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

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

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

sudo iptables -A INPUT -j DROP

Как вы понимаете, это значит, что все пакеты, которые до него доходят, будут отброшены. Ваше правило добавляется в конец цепочки, уже после этого.

Чтобы обойти эту проблему нужно использовать опцию -I (INSERT) вместо -A (ADD), она добавляет правило в начало цепочки и все будет работать. Осталось открыть порты Linux:

sudo iptables -I INPUT -p tcp –dport 1924 -j ACCEPT

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

sudo iptables -L

Выводы

В этой статье мы рассмотрели как открыть порт Ubuntu 16.04 или в любом другом Linux дистрибутиве, а также закрыть ненужные порты. Это повысит безопасность вашей системы. Только на первый взгляд кажется, что с iptables сложно работать. Если разобраться, то все будет достаточно просто. Надеюсь, эта информация была полезной для вас.

(11 4,55 из 5) Загрузка…

Просмотр открытых портов в Linux через «tcpdump» и описание атрибутов утилиты

Команда «tcpdump» — это один из самых важных инструментов для специалистов, работающих с информационной безопасностью компьютерных сетей, основанных на линуксе. Если пользователь хочет овладеть всеми тонкостями настройки протоколов TCP и IP, то он должен быть хорошо знаком с функциями «tcpdump».

Далее приведено несколько важных атрибутов этой утилиты, позволяющие проверять свободные портовые соединения и узнавать айпи-адреса служб, использующих их:

  • «-nn» — отображение айпи-адресов и номеров портов вместо имени хоста и названия используемого протокола передачи данных;
  • «-i any» — прослушивание всем интерфейсов для поиска скрытого тарифа, если таковой имеется;
  • «-q» — показ минимальных данных о пакете трафика.

Также есть три выражения: «type», «dir» и «prito». Опции тоже три: хосты, сети и порты. Комбинации для выполнения директорий: «src» и «dst». Протоколы по запросу: TCP, UDP, ICMP, AH и т. д. К примеру, для показа интернет-трафика, который связан с тем или иным портом, необходимо выполнить команду «# tcpdump port 3389», а затем «tcpdump src port 1025». Показ трафика одного протокола выполняется так: «# tcpdump icmp».

Пример использования «tcpdump»

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: