iptables 규칙은 모든 발신 발신 트래픽을 허용합니까?


11

누군가 다음 iptables 규칙으로 나를 도울 수 있는지 궁금합니다.

iptables를 실행하는 서버에서와 같이 로컬에서 발생하는 모든 트래픽을 허용하고 싶습니다.

DNS, HTTP 등. iptables를 실행하는 서버에서 시작한 모든 연결이 허용되어야합니다.

현재 기본적으로 OUTPUT 기본 정책 인 ACCEPT를 사용하고 있습니다. 이 올바른지? 입력이 차단되었으므로 우리 측이 OUTPUT 정책에 도달하기 전에 연결이 끊어지기 때문에 연결을 시작할 수 없다는 것을 의미한다고 가정합니다.

죄송합니다. 내 iptables 기술이 약합니다.)

감사합니다.

답변:


26

이를 위해서는 두 가지 규칙이 필요합니다.

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

몇 가지 메모.

  • 기존 규칙에 따라이 작업을 이미 수행했을 수도 있지만 다르게 보입니다.
  • 이를 통해 -I이러한 규칙을 먼저 적용합니다. iptables규칙은 하향식으로 평가됩니다.
  • -o-i플래그는 각각 "에서" "OUT"등을 의미한다. 교체 eth0적절한 이더넷 인터페이스 이름으로.

우리는 둘 다 :) 내가 말한 것처럼 ... 두 번째 하나를 언급하지 못했습니다 ... 내 iptables 기술은 약한 소스입니다. 설명을 주셔서 감사합니다 :)
anonymous-one

2
-d 0.0.0.0/0중복되며 필요하지 않습니다.
zapstar

좋은 대답입니다. 그러나 이제 서버를 핑할 수 있는데 이유를 이해할 수 없습니다. 설명 할 수 있습니까?
다니엘

@Daniel 아웃 바운드 트래픽 만 허용하면 호스트에 도달 할 때 ping 응답이 패킷 필터에 의해 삭제됩니다. 이를 방지하려면 나가는 트래픽과 동일한 세션에 연결되거나 나가는 트래픽과 관련된 들어오는 트래픽도 허용해야합니다. 즉, 핑 응답은 핑 요청과 관련이 있으므로 허용되어야합니다. 수신 핑 요청이 있고 세션 테이블에 기록 핑이 기록되지 않으면 수신 패킷이 삭제됩니다. 이해가 되길 바랍니다!
bahamat

@bahamat : 다시 시도한 후 ICMP 트래픽을 명시 적으로 허용해야한다는 것을 알았습니다. 그리고 위의 규칙을 구현 한 서버를 핑 (ping) 할 수 있다는 것에 대해 이야기했습니다. 어쩌면 실수로 어딘가에 실수를했을 수도 있습니다. 어쨌든 고마워
다니엘

0

현재 기본적으로 OUTPUT 기본 정책 인 ACCEPT를 사용하고 있습니다.

Netfilter는 상태 저장 연결 추적을 시작하기 위해 특별한 규칙이 필요하지 않기 때문에 OUTPUT에 충분합니다.

그러나 " 기본 거부 "정책 에 따라 인바운드 트래픽을 필터링하려면 INPUT-chain을 DROP다음 으로 전환하여 수행 할 수 있습니다 .iptables -P INPUT DROP

그 후에는 두 가지 규칙 으로 설정됩니다 .

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

루프백 인터페이스에서 입력 트래픽을 허용하는 규칙에주의를 기울이십시오. " 최종 사용자를위한 최소 방화벽 "을 게시 한 블로그에서 지적했듯이 , 명시 적으로 허용되지 않는 한 루프백 트래픽은 반환과 비교하여 "확립 된"상태 확인으로 처리되지 않습니다. 교통 체증 eth0.

이 최소 규칙 집합이 이미있을 수있는 규칙을 방해하지 않고 "있는 그대로 "로드 되도록하려면iptables-restore SHELL-session에서 사용하는 것이 편리합니다 .

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

그렇게하기 전에 , 이미 열려있는 SSH 세션이 계속 정상적으로 작동하지만 새 세션을 열려고 시도해도 작동하지는 않지만, 자신의 네트워킹 연결끊지 않도록하십시오 1 .

__

  1. 물론 이러한 연결을 허용하기 위해 다른 규칙을 추가 할 수 있습니다. 여기서 처럼 -A INPUT -j ACCEPT -p tcp --dport 22고민 할 필요없이 간단 할 수 있습니다 -m state. 또한 시도 lptables-restore하기 iptables-restore전에 다시 고치는 것을 잊지 마십시오 .)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.