Назад | Перейти на главную страницу

Какие порты следует оставить открытыми на веб-сервере?

Вскоре я попытаюсь развернуть свое первое веб-приложение, поэтому мне не хватает опыта. Я помню, как где-то читал, что сканирование портов ботами происходит в течение нескольких минут после того, как они попадают в Интернет (возможно, именно столько времени требуется для взлома системы Windows 95, прошло много времени с тех пор, как я прочитал эту статью). Этот конкретный сервер работает под управлением серверной версии Ubuntu 9.10 на amd64.

Само веб-приложение должно быть полностью через https, согласно этому вопросу Я только что спросил здесь. Кроме того, на веб-сайте есть раздел загрузки файлов, который теперь выполняется через http-сообщение, и этот файл в конечном итоге передается через отдельный (к сожалению, беспроводной) интерфейс другому компьютеру для обработки фактической обработки.

Итак, в реальном сетевом интерфейсе, доступном миру, я думаю, что должны быть открыты порты 80 и 443, и ничего больше. Как я уже сказал, 80 должен перенаправить на 443. Это нормально? Есть что-то еще, чего я не знаю, какой-то другой порт, который мне нужно активировать? Файлы перемещаются в систему обработки с использованием ruby ​​DRb через порты 9000 и 9001, поэтому они также должны быть открыты, но только на втором интерфейсе.

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

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

  • запустите свое Ruby-приложение как root - не лучшая идея
  • иметь его за apache - может быть лучше, но зависит от того, что вы хотите сделать, это может быть просто дополнительными накладными расходами
  • запустите приложение ruby ​​от имени другого пользователя на другом порту, скажем 8443, и получите iptables для запросов на переадресацию портов с 443 на 8443 - я думаю, это то, что вы хотите сделать

ниже показано, как вы выполняете переадресацию портов (например, вы можете сделать то же самое с 80 на 8080):

iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

кроме этого, нет необходимости открывать какие-либо другие порты в Интернет, просто убедитесь, что вы оставили открытым ssh на другом интерфейсе, чтобы вы могли получить доступ к серверу и управлять им.

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

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

  1. Лимит подключения и ограничение скорости. Вы хотите, чтобы ваш брандмауэр мог замедлить работу в случае DDoS-атаки, повторных попыток взлома порта или подобных вещей.
  2. Заблокируйте весь ненужный исходящий трафик. Это может помочь в случае взлома вашего компьютера, поскольку большинству ботов необходимо подключиться к удаленному серверу управления и контроля.
  3. Заблокируйте все остальные входящие порты. Вам действительно следует заблокировать все остальное, на случай, если злоумышленнику удастся установить какое-то приложение и открыть черный порт.

Это некоторые мысли. Однако конкретных рекомендаций по программному обеспечению у меня нет. Может читать LARTC может помочь.