User defined rule 제어
목차 1. 개요 2. Pre user defined rule 1. Syntax 2. Case study 3. Post user defined rule 1. Syntax 2. Case study
1. 개요
oops-firewall은 일종의 iptables rule을 생성하는 template 같은 도구 이기 때문에, rule을 만들다 보면 의도하는 바가 제한이 될 수 있습니다.
그렇게 때문에 사용자 rule을 등록 할 수 있도록 지원을 합니다.
이 기능은 ipatbles rule에 대해 이해를 하고 있어야 사용을 할 수 있으니 주의 하시기 바랍니다.
일단, iptables rule은 먼저 적용한 rule이 우선권을 가지는 순차 적용 방식의 특징을 가지고 있습니다.
상기 rule은 비록 1.1.1.0에서의 접근을 허가를 하고 있지만, 먼저 모든 INPUT packet을 drop 시키라고 하였기 때문에 결과적으로는 1.1.1.0에서의 접근이 불가 합니다. 그러므로 원하는 바를 실현하기 위해서는 다음과 같이 rule을 적용해야 합니다.
그러므로 oops-firewall에서 설정한 rule들이 어떤 순서로 적용이 되는지는 굉장히 중요한 부분이며, user defined rule 작성에도 많은 영향을 미칠 수 있습니다.
다음은 oops-firewall의 설정이 적용이 되는 순서를 보여 줍니다.
ALLOWSELF (filter.conf)
ALLOWALL (filter.conf)
BURTE_FORCE_FILTER (application.conf)
pre user define rule (user.conf % directive)
OUT_TCP_ALLOWPORT (filter.conf)
OUT_UDP_ALLOWPORT (filter.conf)
BR_OUT_TCP_ALLOW (bridge.conf)
BR_OUT_UDP_ALLOW (bridge.conf)
TCP_ALLOWPORT (filter.conf)
TCP_HOSTPERPORT (filter.conf)
UDP_ALLOWPORT (filter.conf)
UDP_HOSTPERPORT (filter.conf)
BR_TCP_ALLOW (bridge.conf)
BR_UDP_ALLOW (bridge.conf)
ICMP_HOSTPERPING (filter.conf)
ICMP_HOSTPERTRACE (filter.conf)
BR_PING_ALLOW (bridge.conf)
BR_TRACE_ALLOW (bridge.conf)
MASQ_MATCH_START (masq.conf)
masquerading rule (masq.conf)
ALL_FORWARD_TO (forward.conf)
TCP_FORWARD_TO_SS (forward.conf)
TCP_FORWARD_TO_S (forward.conf)
TCP_FORWARD_TO (forward.conf)
UDP_FORWARD_TO_SS (forward.conf)
UDP_FORWARD_TO_S (forward.conf)
UDP_FORWARD_TO (forward.conf)
post user define rule (user.conf @ directive)
USE_TOS (tos.conf)
oops-firewall의 user defined rule은 /etc/oops-firewall/user.conf에서 적용을 합니다.
사용자 정의 rule은 위의 설명과 같이 pre rule과 post rule 두가지로 구분이 됩니다.
pre rule 이라는 것은 oops-firewall이 rule을 적용하기 전에 적용을 한다는 의미이고, post rule은 oops-firewall이 rule을 모두 적용한 후에 적용을 한다는 의미입니다.
보통은 pre rule을 많이 사용을 하며, post rule을 사용하는 경우는 oops-firewall이 적용한 rule 중간에 내가 원하는 rule을 끼워 넣고 싶을 경우 post rule을 사용하면 됩니다.
상단의 oops-firewall 룰 적용 순서를 보면, 4번째가 pre rule이 적용이 되고, 28번째에 post rule이 적용이 되는 것을 확인 하실 수 있습니다.
2. Pre user defined rule
2.1. Syntax
user defined rule은 iptables 명령을 직접 실행하는 것과 거의 동일하게 설정이 됩니다. 예를 들어
위와 같은 rule을 pre user defined rule 로 설정을 하기 위해서, user.conf에 다음과 같이 설정을 합니다.
즉, shell에서 실행했던 commaind line중 실행 명령어(여기서는 iptables)를 '%'로 치환해 주면 됩니다. rule의 제일 처음이 '%'로 시작하면, pre rule로 처리가 되고, '@'으로 시작이 되면 post rule로 처리가 되는 것입니다.
2.2. Case study
pre rule을 자주 사용할 경우에 대해서 기술 합니다.
원격에서 방화벽 작업을 할 경우 rule 을 잘못 작성할 경우, 작업자 마저 block 될 수 있습니다. 그러므로 pre rule에서 작업자의 IP를 미리 등록해 주고 작업을 합니다. 예를 들어, 작업자가 원격(123.112.0.5)에서 작업을 한다고 가정을 하면,
위와 같은 작업을 해 둔다면, 방화벽 설정 중에 rule이 잘못되어 rule이 적용이 되다가 중지가 되어도 이에 영향을 받지 않고 123.112.0.5에서는 계속 작업이 가능하게 됩니다.
oops-firewall은 기본적으로 white list 정책이기 때문에 deny 정책이 없습니다. 그러므로 명확하게 deny 할 정책이 있다면, pre rule에서 처리할 수 있습니다. 예를 들어, 123.1.1.2에서 계속적인 spam 등록 시도가 있다면 다음과 같이 rule을 적용할 수 있습니다.
막는 경우에는 DROP 또는 REJECT를 사용할 수 있습니다. DROP의 경우에는 말 그대로 오는 들어오는 packet에 대응을 하지 않기 때문에 상대방에서는 이 서버의 상태를 알 수가 없습니다. 하지만 REJECT를 사용할 경우에는 들어오는 packet에 대해서 reset을 보내기 때문에 상대 측에서 filtering을 하고 있다는 것을 인지할 수 있습니다. 이 차이점을 생각해서 DROP이나 REJECT를 사용하시면 됩니다.
특정 포트가 anywhere로 허가된 상태에서 특정 곳에서의 해당 포트로 접근을 막고 싶을 경우 pre rule에서 처리할 수 있습니다. 이 경우는 2번째 경우와 동일하게 처리할 수 있습니다.
3. Post user defined rule
3.1. Syntax
post rule 역시 pre rule의 문법과 동일하며, 처음의 '%' 대신 '@'을 사용해 주면 됩니다. 예를 들어
위와 같은 rule을 post user defined rule 로 설정을 하기 위해서, user.conf에 다음과 같이 설정을 합니다.
즉, shell에서 실행했던 commaind line중 실행 명령어(여기서는 iptables)를 '@'으로 치환해 주면 됩니다.
3.2. Case study
post rule을 사용하는 경우는 oops-firewall이 생성한 rule 중간에 rule 을 끼워 놓고 싶을 경우 외에는 사용할 일이 거의 없습니다.
그러므로, 여기서는 rule을 끼워 넣는 방법에 대해서 기술을 합니다.
일단 INPUT chain에 rule을 끼워 넣어 보겠습니다.
현재 INPUT chain의 rule을 line-number와 함께 확인 합니다.
2번 rule 앞에 "10.0.0.1/32 에서의 접근 허가 rule"을 넣도록 합니다.
2번째 rule로 들어갔는지 확인해 봅니다.
2번 라인에 10.0.0.1에 대한 ACCEPT가 들어가 있는 것이 확인이 됩니다. 그럼, user.conf에
와 같이 등록을 해 주면 됩니다.
Last updated