모든 포트 (입출입)를 차단하는 것은 쉽지만 “제외”라는 단어는 어렵습니다. 나는 그 조건을 만족시키는 규칙을 모른다.
추신 :이 질문은 새로운 것이 아니라는 것을 알고 있습니다. 그러나 실제로, 나는 도움이되는 것을 찾지 못했습니다. 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 오류로 열리지 않는다고 가정합니다.