Firewalld блокирует HTTP-трафик, даже если он активирован

Я пытаюсь настроить простую тестовую среду с 3 машинами:

  • Одна Kali для имитации Интернета: IP = 10.99.0.2
  • Одна CentOS, которая действует как межсетевой экран с использованием firewalld: IPs = 10.99.0.1, 10.4.1.1
  • Одна CentOS, которая действует как веб-сервер с использованием httpd: IP = 10.4.1.2

Небольшое представление среды:

|Kali|------------------(ens160) |Firewalld| (ens192)------------------- |Web Server|
10.99.0.2                    10.99.0.1 | 10.4.1.1                             10.4.1.2

Я могу пинговать 10.4.1.2 из 10.99.0.2, но только когда firewalld активирован, я не могу получить веб-страницу по умолчанию на 10.4.1.2 из 10.99.0.2.

Я попытался выполнить tcpdump на FW, я вижу, что http-запрос идет от kali к firewalld, но затем firewalld отвечает пакет ICMP: Узел ICMP 10.4.1.2 недоступен - администратор запрещен . Насколько я понял, это сообщение icmp отправляется из микропрограммного обеспечения, если запрос заблокирован.

Вот конфигурация двух зон: public и dmz

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: http https
  ports: 443/tcp 80/tcp
  protocols:
  masquerade: yes
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:
        rule service name="https" log level="info"
        rule service name="http" log level="info"

dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources: 10.4.1.2
  services: http https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

(2 расширенных правила были попыткой зарегистрировать заблокированное соединение на брандмауэре)

1
задан 8 December 2017 в 13:14
1 ответ

Вы слишком просто думаете о firewalld. Он блокирует ваш доступ из Kali к веб-серверу, потому что вы не позволяете ничему переходить на него. Например, вы не добавили свой сетевой адаптер Ens192 ни в одну из зон. Вот что я бы сделал на вашем месте:

Сначала поместите ваш интерфейс ens160 в зону, которая называется external. На мой взгляд, общественность вводит в заблуждение. С точки зрения веб-серверов Kali - это внешняя сеть. Если у вашего брандмауэра нет другой цели, кроме пересылки входящего трафика от Kali на веб-сервер, просто поместите интерфейс на внешний. Убедитесь, что вы разрешаете только службы HTTP, HTTPS и SSH для внешних. Также должен быть включен маскарад.

Во-вторых, вы должны настроить внутренний интерфейс. DMZ используется, если у вас есть другая сеть, управляемая вашим брандмауэром, в которую вы не хотите, чтобы гости или другие могли входить. Как и наш гостевой WiFi, он обслуживается в зоне межсетевого экрана DMZ. Для вашей настройки я бы поместил его во внутренний или доверенный. Для максимальной безопасности удалите все службы и снова добавьте только SSH, HTTP и HTTPS. Также очень важно добавить маскарад: снова да.

Третий шаг будет заключаться в перенаправлении каждого трафика HTTP и HTTPS на ваш веб-сервер. У вас есть 2 шанса.

  • Менее профессионально переадресовывать каждый входящий трафик от вашего внешние интерфейсы 80 порт на внутренние 80 порт. Это бы сделайте ваш брандмауэр практически бессмысленным.
  • Другой - настроить на нем прокси-сервер пересылки. Тот так было бы профессиональнее и надежнее. Просто установите NginX (веб-сервер) и настройте файл конфигурации для пересылки всех входящих трафик на IP-адрес вашего веб-сервера.

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

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

  • firewall-cmd --zone = external --change-interface = ens160
  • firewall-cmd - zone = external --add-service = http
  • firewall-cmd --zone = external --add-service = https
  • firewall-cmd --zone = external --add-service = ssh
  • firewall -cmd --zone = external --add-masquerade
  • firewall-cmd --zone = trust --change-interface = ens192
  • firewall-cmd --zone = trust --add-service = http
  • firewall-cmd --zone = доверенный --add-service = https
  • firewall-cmd --zone = доверенный --add-service = ssh
  • firewall-cmd --zone = доверенный --add-masquerade
  • firewall-cmd --runtime-to-постоянный

Если вы решите установить NginX, просто сделайте следующее:

  • mkdir / etc / nginx / sites- доступно / etc / nginx / sites-enabled
  • vim /etc/nginx/sites-available/com.website.your.conf[12122 providedserver { имя_сервера your.website.com; слушать 80; расположение / { proxy_pass http: //10.4.1.2$request_uri; proxy_set_header Host $ host; } }
    • ln -s /etc/nginx/sites-available/com.website.your.conf / etc / nginx / sites-enabled
    • vim /etc/nginx/nginx.conf[12125 provided#include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*.conf;[12126 sizesystemctl restart nginx

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

3
ответ дан 3 December 2019 в 18:28

Теги

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