localhost를 제외한 모든 수신 트래픽에 대해 22,80,443을 제외한 모든 포트를 차단하려면 어떻게 해야 합니까?

localhost를 제외한 모든 수신 트래픽에 대해 22,80,443을 제외한 모든 포트를 차단하려면 어떻게 해야 합니까?

나는 이 행동을 원한다:

모든 외부 컴퓨터는 내 서버의 포트 22(ssh), 80(http) 및 443(https)에만 바인딩할 수 있습니다.

그러나 모든 localhost 앱은 원하는 포트에 바인딩할 수 있습니다.

검색해보니 이런게 나오네요.

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

내가 원하는 것을 수행하지만 모든 localhost 앱도 차단합니다. localhost 앱이 모든 포트에 바인딩되도록 하려면 여기서 무엇을 변경해야 합니까?

그러면 어떻게 규칙을 영구적으로 만들 수 있나요?

감사해요!

답변1

규칙은 순서대로 일치됩니다. 거부할 호스트보다 먼저 localhost를 허용하는 호스트를 만드세요.

iptables -A INPUT -p tcp -s localhost -m tcp -m 멀티포트 ! --dports 22,80,443 -j 수락

iptables -A 입력 -p tcp -m tcp -m 멀티포트 ! --dports 22,80,443 -j DROP

OS에 따라 저장하는 방법은 여기를 참조하세요. https://www.thomas-krenn.com/en/wiki/Saving_Iptables_Firewall_Rules_Permanently

관련 정보