특정 SRC IP에 대해 iptables 규칙을 사용하는 순서는 무엇입니까?

특정 SRC IP에 대해 iptables 규칙을 사용하는 순서는 무엇입니까?

몇 시간 동안 특정 주소의 트래픽을 차단하고 싶습니다. 나는 사용한다firehol나를 지배하는 규칙.

다음 규칙은 내 목표 시간 내의 모든 트래픽을 차단합니다.

ACCEPT     all  --  anywhere          anywhere             ctstate NEW,ESTABLISHED TIME from 06:00:00 to 16:00:00 UTC

특정 IP에 대해 동일한 규칙 수정

ACCEPT     all  --  10.10.10.21          anywhere             ctstate NEW,ESTABLISHED TIME from 06:00:00 to 16:00:00 UTC
ACCEPT     all  --  anywhere             anywhere             ctstate NEW,ESTABLISHED

차단하지 않는 트래픽 10.10.10.21. 순서가 올바른 것 같습니다(더 구체적인 것부터 더 일반적인 것까지). 무엇이 누락되었을 수 있는지 궁금합니다.

(이것은 시간 제한과 관련된 발췌일 뿐입니다 iptables -L. 특정 IP에 대한 특정 규칙을 추가할 때 변경되는 규칙(위 시간 이외의 모든 트래픽을 차단하는 -working- 규칙과 반대)

답변1

ACCEPT 규칙만 있는데 일부 트래픽이 차단된다면 규칙의 정책이 DROP임을 의미합니다. 따라서 첫 번째 시도에서는 명시적으로 승인되지 않은 모든 트래픽이 거부됩니다. 두 번째 시도반품명시적으로 승인되지 않은 모든 트래픽을 거부하지만 두 번째 규칙은 대부분의 트래픽을 허용합니다(항상 허용해야 하는 ICMP 오류와 같이 허용되어야 하는 일부 항목만 차단합니다 RELATED).

첫 번째 일치가 적용됩니다. 규칙 1은 특정 시간 창 내에서 10.10.10.21의 트래픽을 허용합니다. 규칙 2는 항상 (거의) 모든 트래픽을 허용합니다. 규칙 1은 규칙 2의 하위 집합이므로 중복됩니다.

지정된 기간 외에 10.10.10.21의 트래픽을 거부하려면 규칙 2를 수정하여 10.10.10.21의 트래픽을 제외하거나 그 사이에 트래픽을 거부하는 규칙을 추가해야 합니다. 나는 두 번째 옵션이 더 명확하다고 생각합니다.

iptables -A INPUT -j ACCEPT -s 10.10.10.21 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -m time --timestart 06:00:00 --timestop 16:00
iptables -A INPUT -j REJECT -s 10.10.10.21 -m conntrack --ctstate NEW,ESTABLISHED,RELATED
iptables -A INPUT -j ACCEPT -m conntrack --ctstate NEW,ESTABLISHED,RELATED
iptables -A INPUT -j REJECT

알아채다차단된 트래픽에는 항상 DROP이 아닌 REJECT를 사용해야 합니다.. 체인 정책을 DROP으로 설정할 수 없기 때문에 끝에 명시적인 REJECT 규칙을 추가했습니다.

관련 정보