iptables로 80,443을 제외한 모든 포트를 차단하는 방법은 무엇입니까? [복제]

모든 포트 (입출입)를 차단하는 것은 쉽지만 “제외”라는 단어는 어렵습니다. 나는 그 조건을 만족시키는 규칙을 모른다.

추신 :이 질문은 새로운 것이 아니라는 것을 알고 있습니다. 그러나 실제로, 나는 도움이되는 것을 찾지 못했습니다. pls 도와주세요!



답변

먼저! NOT 기호입니다.

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 80,443 -j DROP

둘째, 작성한 규칙에 예상 결과가 없을 수 있습니다. 포트 80의 연결에 대한 응답을 포함하여 모든 항목을 삭제합니다. 따라서 웹 서버의 목적으로 연결에 연결할 수 없습니다.

이러한 규칙은 관련 및 확립 된 연결을 허용하므로 웹 서버가 실제로 수행하려는 경우 웹 서버가 작동해야합니다.

iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
<insert further allowed list here>
iptables -A INPUT -m conntrack -j ACCEPT  --ctstate RELATED,ESTABLISHED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP

답변

# Set the default policy of the INPUT chain to DROP
iptables -P INPUT DROP

# Accept incomming TCP connections from eth0 on port 80 and 443
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

이것은 당신에게 필요한 것을 줄 것입니다


답변

기본 조치를 DROP으로 설정 한 후 다음과 같이 80 및 443을 허용하는 예외 규칙을 작성할 수 있습니다.

# Setting default policies:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Exceptions to default policy
iptables -A INPUT -p tcp --dport 80 -j ACCEPT       # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT      # HTTPS

iptables는 일치하는 것을 찾을 때까지 ‘예외’목록을 통과합니다. 그런 다음 -j매개 변수로 지정된 조치를 수행합니다 (이 경우 ACCEPT). 일치하는 항목을 찾지 못하면 기본 정책으로 돌아가서 패킷을 삭제합니다.

참고 이 해결 방법으로 하위 도메인이 잠겨됩니다. 예를 들어이 방법을 사용하면 www.mydomain.com에서 제대로 작동하지만 하위 도메인에서 www.sub.mydomain.com이 DNS 오류로 열리지 않는다고 가정합니다.