iptables에서 8006에서 443으로 전달이 작동하지 않습니다.

iptables에서 8006에서 443으로 전달이 작동하지 않습니다.

내 전용 서버는 vmbr0에 브리지되어 있으며 2개의 브리지 이더넷 카드 eth0 및 eth1이 있습니다.

전달을 활성화했습니다 net.ipv4.ip_forward=1.

포트 8006을 443으로 리디렉션하고 싶습니다.

이제 포트 8006에서 웹 애플리케이션에 액세스하고 있으며 443으로 리디렉션을 사용하려고 합니다 iptables.

현재 전달에 이 규칙을 사용하고 있지만 작동하지 않습니다.

iptables -t nat -I PREROUTING -d 192.168.1.100 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:8006

이 규칙을 적용하면 iptables192.168.1.100:8006에서 페이지에 액세스할 수 없습니다.

# Default filter

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Loopback allows all.

iptables -I INPUT -i lo -j ACCEPT
iptables -I FORWARD -i lo -j ACCEPT

# Null packets are, simply said, recon packets. see how we configured the VPS and find out weaknesses.

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# Reject is a syn-flood attack

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# XMAS packets, also a recon packet

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# Allow all Outgoing connection

iptables -A OUTPUT -j ACCEPT
# Ethernet allows established/related Except invalid.

iptables -A INPUT -i vmbr0 -m state --state ESTABLISHE,RELATED -j ACCEPT
iptables -A INPUT -i vmbr0 -m state --state INVALID -j DROP

# Allow TCP on Port 22 SSH with rate limiting

iptables -A INPUT -i vmbr0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -m recent --set
iptables -I INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -m recent --update --seconds 10 --hitcount 5 -j DROP

# Allow Ping ICMP echo With Limiting

iptables -A INPUT -i vmbr0 -p icmp -m state --state NEW -m icmp --icmp-type echo-request -j ACCEPT
iptables -I INPUT -i vmbr0 -p icmp -m icmp --icmp-type echo-request -m recent --set
iptables -I INPUT -i vmbr0 -p icmp -m icmp --icmp-type echo-request -m recent --update --seconds 10 --hitcount 10 -j DROP

# Allow HTTP Requests for NON-secured 80

iptables -A INPUT -i vmbr0 -p tcp --dport 80 -m state --state NEW -m tcp -j ACCEPT
iptables -I INPUT -i vmbr0 -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -i vmbr0 -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP

# Allow HTTP Requests for SLL 443

iptables -A INPUT -i vmbr0 -p tcp --dport 443 -m state --state NEW -m tcp -j ACCEPT
iptables -I INPUT -i vmbr0 -p tcp --dport 443 -m state --state NEW -m recent --set
iptables -I INPUT -i vmbr0 -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP

# Enabling Logging

iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 10/min -j LOG --log-prefix "IPTables-log:" --log-level 4
iptables -A LOGGING -j DROP

# DROP ALL Except Above Rules

iptables -A INPUT -j DROP

답변1

할말은 많은데 물어볼게 너무 적습니다. 원격 컴퓨터가 포트 8006의 무언가에 액세스하도록 하려면 방화벽에 포트 8006의 연결을 수락하도록 지시해야 하지만 아직 그렇게 하지 않았습니다.

PREROUTING의 규칙은 주소가 443인 네트워크 세그먼트를 수정하고 대상 주소를 8006으로 변경합니다. 포트 443을 포트 8006으로 리디렉션합니다. 그러나 포트 8006을 443으로 리디렉션하고 싶다고 명시하셨습니다. PREROUTING 규칙에서 숫자를 변경해도 원하는 대로 작동하지 않을 수도 있습니다.

참고 사항: 방화벽을 다시 스크립트해야 합니다. 분명히 인터넷에서 찾은 내용을 복사하여 붙여넣은 조합입니다. 이것이 작동하면 (지금) 확실히 작동이 중지됩니다. 예를 들어 INPUT에 대한 정책을 DROP으로 설정했지만 여전히 iptables -A INPUT -j DROP스크립트 끝에 있습니다. 그것은 중복되며 당신이 그 문제에 대해 많이 생각하지 않았다는 것을 보여줍니다. 더 심각한 실수는 전달을 활성화했지만 전달하려는 의도가 없다는 것입니다… 제 생각에는.

관련 정보