iptables 포털 포털 포털 리디렉션 http는 허용하지만 https 통과 허용


1

나는 따라 갔다. 이 튜토리얼 모든 HTTP 요청을 내 로컬 웹 페이지로 리디렉션하는 액세스 포인트를 만듭니다.

그러나 https 요청은 인증서 오류로 인해 내 페이지를 가져 오지 않고 영원히로드하는 것처럼 작동합니다.

https 요청이 인터넷에 액세스 할 수 있도록 허용하지만 잠시 후 사용자가 http 링크를 클릭해야하기 때문에 내 페이지로 HTTP 요청을 리디렉션하는 일종의 walled garden을 만들고 싶습니다.

기본적으로 데비안과 같은 Raspbian 라이트를 실행하는 Raspberry Pi를 사용하고 있습니다. Apache2는 웹 페이지를 제공하고 dnsmasq는 dhcp를 처리하며 hostapd는 액세스 포인트를 작성합니다.

/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=FreeWiFi
channel=6

/etc/dnsmasq.conf

log-facility=/var/log/dnsmasq.log
address=/#/10.0.0.1
interface=wlan0
dhcp-range=10.0.0.10, 10.0.0.250,12h
no-resolv
log-queries

/ etc / network / interfaces

auto lo
iface lo inet loopback
iface eth0 inet dhcp
iface wlan0 inet static address 10.0.0.1
netmask 255.255.255.0
broadcast 255.0.0.0
pre-up iptables-restore < /etc/iptables.rules

IP 테이블 규칙 생성됨

sudo iptables -F
sudo iptables -i wlan0 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -i wlan0 -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -i wlan0 -A INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -i wlan0 -A INPUT -p udp --dport 67:68 -j ACCEPT
sudo iptables -i wlan0 -A INPUT -j DROP
sudo sh -c "iptables-save > /etc/iptables.rules"

https 요청을 허용하기 위해 포트 443에 다른 규칙을 추가해야한다고 가정합니다. dnsmasq 설정 방법과 트래픽을 내 하드웨어 연결 eth0으로 전달하는 방법을 잘 모르겠습니다.

편집하다: 주위를 둘러 보니 dnsmasq에서 아무 것도 변경할 필요가없는 것 같지만 https 트래픽을 eth0로 재 라우팅하는 데 iptable 규칙을 사용해야합니다. 나는 https 요청을 위해 특별히 그렇게하는 방법을 모른다.

sudo iptables -nvL

Chain INPUT (policy ACCEPT 491 packets, 45444 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.0.0.0/24                  tcp multiport dports 80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.0.0.0/24                  tcp multiport dports 80

Chain OUTPUT (policy ACCEPT 413 packets, 52820 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      wlan0   0.0.0.0/0            0.0.0.0/0                    tcp dpt:443
    0     0 ACCEPT     tcp  --  *      wlan0   0.0.0.0/0            0.0.0.0/0                    tcp dpt:443

sudo iptables-save

# Generated by iptables-save v1.4.21 on Tue Mar  7 22:56:30 2017
*nat
:PREROUTING ACCEPT [1781:191954]
:INPUT ACCEPT [704:143612]
:OUTPUT ACCEPT [204:15231]
:POSTROUTING ACCEPT [219:16055]
-A PREROUTING -i wlan0 -p tcp -m tcp -m multiport --dports 80 -j DNAT --to-destination 10.0.0.1
-A PREROUTING -i wlan0 -p tcp -m tcp -m multiport --dports 80 -j DNAT --to-destination 10.0.0.1
COMMIT
# Completed on Tue Mar  7 22:56:30 2017
# Generated by iptables-save v1.4.21 on Tue Mar  7 22:56:30 2017
*filter
:INPUT ACCEPT [389:44149]
:FORWARD ACCEPT [84:3648]
:OUTPUT ACCEPT [376:86142]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -d 10.0.0.0/24 -p tcp -m tcp -m multiport --dports 80 -j ACCEPT
-A FORWARD -d 10.0.0.0/24 -p tcp -m tcp -m multiport --dports 80 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Mar  7 22:56:30 2017

"인증서 오류로 인해 https 요청은 내 페이지를 가져 오지 않고 대신 영원히로드됩니다."- 방화벽 구성 일뿐입니다. 실제로 인증서 오류 일 경우 브라우저에서 Big Red Error 메시지가 나타납니다.
grawity

@ 그래 웨이 좋아, 그게 말이야 ... 내가 통과 할 수 있도록 올바른 방화벽 설정을 얻는 데 문제가있다.
NULL

답변:


1
iptables -A OUTPUT -o wlan0 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT 1 -m conntrack -j ACCEPT  --ctstate RELATED,ESTABLISHED

iptables -A FORWARD -p tcp -m tcp -m multiport -d 192.168.2.2/32 -j ACCEPT --dports 80

iptables -A PREROUTING -t nat -p tcp -m tcp -m multiport -i wlan0 -j DNAT --to-destination 192.168.2.2 --dports 80

첫 번째 규칙은 암호화 된 트래픽을 허용하며 반환 트래픽에 대해 설정된 것으로 간주됩니다.


이것은 작동 할 것 같습니다! 하지만 IP 주소에 대해서는 10.0.0.1을 사용합니다. 이는 / etc / network / interfaces에 설정된 IP 주소입니까? 두 번째 줄 10.0.0.1/24와 세 번째 줄 10.0.0.1에 대해서도 마찬가지입니까?
NULL

IP 주소로 10.0.0.1/24 및 10.0.0.1 명령을 실행했을 때 처음 두 명령은 오류가 없었지만 마지막 명령은 You must specify '--match-set' with proper arguments
NULL

죄송합니다. 복사하여 붙여 넣기 오류가 발생했습니다. 결정된. 나는 -m 세트를 꺼냈다. IP 주소는 암호화되지 않은 웹 트래픽이있는 곳입니다.
cybernard

오류가 발생했지만 지금은 말합니다. iptables: No chain/target/match by that name. 마지막 명령에 -t nat를 추가해야합니까? 나는 그것을 어딘가에서 읽었지만 그것이 적용되는지 모르겠습니다.
NULL

좋아, 3 라인에 잘못된 인터페이스가 있는데, 어떤 라인은 체인 / 타겟 / 매치를 말하지 않습니까?
cybernard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.