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
Я думаю, что это должно работать для вас. Если нет, сообщите в комментарии, и я вам помогу. Это только то, что только что появилось в моей голове по поводу вашего вопроса.