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

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

  • Одна Кали для симуляции интернета: 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 host 10.4.1.2 unreachable - admin prohibited, Как я понял, это сообщение icmp отправляется с FW, если запрос заблокирован.

Вот конфигурация двух зон: 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 ответ

Решение

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

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

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

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

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

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

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

  • 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-маскарад
  • firewall-cmd --zone= доверенный --change-интерфейс = ens192
  • firewall-cmd --zone= доверенный --add-service = http
  • firewall-cmd --zone= доверенный --add-service = https
  • firewall-cmd --zone= доверенный --add-service = ssh
  • firewall-cmd --zone= доверенный --add-маскарад
  • 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; include /etc/nginx/sites-enabled/*.conf;

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

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

Другие вопросы по тегам