35

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

Обновить

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

8 ответов8

36

Порт не открыт, если что-то не прослушивает соединение на нем.

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


РЕДАКТИРОВАТЬ

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

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

Как вы указали, выполнение произвольного / удаленного кода представляет собой огромный риск. К сожалению, переполнения буфера и другие недостатки безопасности, которые позволяют это, распространены. Посмотрите на любое обновление безопасности Microsoft, и я держу пари, что оно исправляет либо удаленное выполнение кода, либо повышение привилегий, а MS - огромная компания с сотнями разработчиков и миллиардами долларов.

9

Что касается обновления вы написали:

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

Очень сложно написать программное обеспечение, которое нельзя использовать!

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

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

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

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

6

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

6
  • Открытый порт. Когда кто-то спрашивает, компьютер отвечает, что на этом порту прослушивается служба. Это означает, что все, что поступает на этот порт, будет обрабатываться программой (службой), запущенной на этом компьютере.
  • Закрытый порт. Когда кто-то спрашивает, компьютер отвечает, что на этом порту нет служб, которые прослушивают. Аксер узнает, что по адресу отвечает компьютер.
  • Стелс-порт: когда кто-то спрашивает, он не получает ответа. Смысл в том, чтобы скрыть, есть ли компьютер по адресу вообще. Это может быть не очень эффективно, однако, как говорит Йоси в комментариях.

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

Закрытые порты по-прежнему реагируют на akser, поэтому возможный злоумышленник может продолжить проверку других портов. Опять же, это то, как Интернет предназначен для работы. Хотя стелс-порты пытаются не дать потенциальному злоумышленнику никакой информации, теоретически они нарушают спецификацию.

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

3

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

Предположение - мать всех отличий :)

скорее безопасно, чем извините ... вот вам хорошее чтение на makeuseof.com:

Объясненные технологии: открытые порты маршрутизатора и их последствия для безопасности

1

Я не экспорт безопасности, но я провел небольшое исследование ... "Открытый" порт - это порт, который настроен на прием входящего TCP-соединения.

Если у вас есть приложения, прослушивающие только порты 9, 21 и 80, и ваш брандмауэр блокирует доступ к этим трем портам, технически у вас нет открытых портов. IOW, порт 25, например, не открыт, потому что ничего не слушает его.

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

0

По той же причине, что вы закрываете и закрываете свои двери и окна дома.

-2

Давайте просто скажем, что открытые порты похожи на открытое окно и открытую дверь, но когда ваши окна открыты, грабитель или крыса и паук могут попасть в #, пожалуйста, скажите мне, тупой ли я или измененный Отредактировано нет асинина Открытые порты похожи на открытое окно, но в интернете есть открытый порт, я думаю, что также закрытый порт - закрытые окна, без него мы не можем подключиться или просмотреть, я думаю, точно так же, как HTTP и SSH или FTP без него, мы не можем подключиться, потому что это клиент, это просто TCP-соединение

Я не эксперт по безопасности

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .