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

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

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

Небольшое представление об окружающей среде:

|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 host 10.4.1.2 unreachable - admin prohibited. Как я понял, это сообщение 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 расширенных правила были попыткой зарегистрировать заблокированное соединение на брандмауэре)

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

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

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

Третьим шагом будет пересылка каждого HTTP- и HTTPS-трафика на ваш веб-сервер. Здесь у вас 2 шанса.

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

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

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

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

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

  • mkdir / etc / nginx / sites-available / etc / nginx / sites-enabled
  • vim /etc/nginx/sites-available/com.website.your.conf
server {
  server_name your.website.com;
  listen 80;

  location / {
      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

    #include /etc/nginx/conf.d/*.conf; включить /etc/nginx/sites-enabled/*.conf;

  • systemctl перезапустить nginx

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