강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

방화벽룰 점검 및 체크리스트 13가지

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

방화벽룰 점검 및 체크리스트 13가지

 

 

 

 

방화벽룰 점검 및 체크리스트 1

 

 

 

방화벽 룰 점검

 

방화벽 룰 설정이 끝났다면 이제 방화벽 룰 설정이 정상적으로 작동하는지 확인해 보아야 할 차례이다.

 

 

 

 

어떤 부분을 조심하고 점검해야하는지 몇 가지 팁 및 체크 리스트를 확인해 보자.

 

 

 

 

룰 테스트를 할 때는 한 줄씩 한 줄씩 수작업으로 하지 말고 스크립트를 만들어서 한번에 테스트하는 것이 좋다.

 

 

 

 

새로운 룰을 적용할 때는 기존의 룰을 모두 초기화(flush)하고 기본정책을 ACCEPT한 후 적용하여야 한다는 것을 잊지 말기 바란다.

 

 

 

 

 

 

다음은 모든 설정을 초기화하는 스크립트이다.

 

 

 

 

 

 

# filter 테이블의 기본정책 허용

 

$IPTABLES -P INPUT ACCEPT

$IPTABLES -P FORWARD ACCEPT

$IPTABLES -P OUTPUT ACCEPT

 

# filternat, mangle 테이블에 있는 모든 룰을 초기화(flush)

# filter가 기본 테이블이므로 -t filter가 있는 것과 동일한 의미이다.

$IPTABLES -F // filter 테이블

$IPTABLES -t nat -F

$IPTABLES -t mangle -F

 

# filternat, mangle 테이블에 없는 모든 chain 삭제

$IPTABLES -X // filter 테이블

$IPTABLES -t nat -X

$IPTABLES -t mangle -X







 

방화벽룰 점검 및 체크리스트 2




 

룰 테스트를 할 때는 원격으로 접속한 상태에서 작업하지 말고 가급적 콘솔에서 작업하는 것이 좋다.

 

 

 

 

특히 기본정책(-P)을 명령어 프롬프트에서 직접 설정할 때에는 접속이 끊겨버릴 수도 있다.

 

 

 

 

부득이 원격으로 하려면 룰 명령어를 일일이 입력하지 말고, 스크립트 파일로 만들어 실행하는 것이 실수를 줄일 수 있는데, 스크립트에는 원격 접속을 허용하는 룰을 제일 먼저 설정해 두어 만약의 문제가 발생했을 때 바로 초기화하고 취소할 수 있도록 하는 것이 좋다.

 

 

 

 

 

 

방화벽룰 점검 및 체크리스트 3




기본정책이 DROP일 경우 루프백(loopback) 인터페이스의 트래픽을 허용해 주어야 한다는 점을 주의하기 바란다.





 

방화벽룰 점검 및 체크리스트 4



 

chain에서 첫 번째 매칭되는 룰이 먼저 적용되므로 룰 설정 순서는 매우 중요하다.

 

 

 

 

또한 룰 순서는 방화벽의 성능에도 큰 영향을 준다는 점에 주의하기 바란다.





 

방화벽룰 점검 및 체크리스트 5



 

서버 자체에 방화벽을 함께 설치하는 독립 실행형(standalone)과 마찬가지로 NAT 방화벽 역시 룰을 설정할 때 방화벽 자체로 향하는 INPUT과 방화벽에서 나가는 OUTPUT의 기본정책 모두를 DROP으로 하지 않고 INPUTDROP으로 하되 OUTPUTACCEPT를 하는 것이 좋다.

 

 

 

 

어차피 방화벽 자체를 향하는 트래픽의 경우 tcpudp 또는 icmp와 관계없이 INPUTOUTPUT chain이 모두 허용되어야 통신할 수 있기 때문이다.

 

 

 

 

따라서 이러한 경우 INPUT chain만 고려하면 되므로 룰 설정을 많이 간소화 할 수 있고, 방화벽 가동으로 인한 속도 저하를 최소화 할 수 있다.

 

 

 

 

그러나 최근에는 2. 웹서버 보안에서 살펴본 바와 같이 reverse telnet등을 이용하여 방화벽을 우회할 수 있는 경우도 있으므로 운영되는 서비스에 맞게 적절히 선택하기 바란다.





 

방화벽룰 점검 및 체크리스트 6



 

chain 내에서 룰 설정은 방화벽의 성능을 위해 가급적 tcp -> udp -> icmp 순으로 하며 table 내에서 chain은 패킷의 이동경로에 따라 순서대로 선언하는 것이 좋다.

 

 

 

 

또한 서버의 특성에 따라 접속이 많은 룰을 먼저 선언하는 것이 좋은데, 이를테면 웹 서버의 경우 80번 포트를 허용하는 룰을, 메일 서버의 경우 25번과 110번 포트를 허용하는 룰을 다른 포트에 대한 것보다 먼저 선언하는 것이 좋다.





 

방화벽룰 점검 및 체크리스트 7



 

filter 테이블은 기본 테이블이므로 -t filter와 같이 별도로 언급하지 않아도 된다.

 

 

 

 

그러나 mangle이나 nat등 다른 테이블을 사용하려면 반드시 -t nat, -t mangle과 같이 지정하여야 한다.





 

방화벽룰 점검 및 체크리스트 8



 

방화벽 자체를 향하는 패킷은 INPUTOUTPUT chain을 통과하고, 방화벽을 통과하여 내부 서버로 향하는 패킷은 FORWARD chain을 통과한다는 점에 유의하기 바란다.

 

 

 

 

FORWARDinbound, outbound 패킷에 관계없이 FORWARD chain만으로 설정된다.

 

 

 

 


 

방화벽룰 점검 및 체크리스트 9





NAT를 사용할 경우, 방화벽에서는 인터넷이 되지만 방화벽 내부에서는 외부 네트워크로 연결되지 못할 경우 대부분 ip_forward 설정을 하지 않은 경우이다.

 

 

 

 

이러한 경우에는 cat /proc/sys/net/ipv4/ip_forward로 확인하여 이 값이 1로 설정되어 있는지 확인하여야 한다.






 

방화벽룰 점검 및 체크리스트 10



 

방화벽 룰을 체크할 때 iptables -L을 실행하면 IP를 호스트이름으로, 포트번호를 포트이름으로 변환하는 reverse lookup 때문에 목록이 출력되는 속도가 느린데, reverse lookup 을 하지 않으려면 -n을 추가하여 iptables -L -n을 실행하면 된다.



 

예전에 어떤 관리자가 룰이 이상한 것 같다며 문의를 해왔다.

 

 

 

 

 

방화벽을 설정 후 iptables -L을 실행하면 제일 상단에 아래의 룰이 보이게 되는데, 방화벽에서는 룰의 순서가 중요하므로 가장 위에 모든 접속을 허용하는 룰이 있으면 이하의 룰은 아무런 의미가 없는 것이 아니냐는 것이다.

 

 

 

 

 

ACCEPT all -- anywhere anywhere

 

하지만, iptables -L -v 와 같이 실행해 보면 그 오해가 풀리게 될 것이다.

 

 

 

 

, -v 옵션을 주면 인터페이스 정보도 함께 출력되는데, 위 룰은 eth0과 같은 외부 인터페이스가 아닌 루프백인 lo인 것을 알 수 있다.

 

 

 

 

 

 

ACCEPT all -- lo any anywhere anywhere






 

방화벽룰 점검 및 체크리스트 11



 

-L 이용시 -v 옵션을 함께 이용하면 룰에 매칭된 패킷수와 바이트수를 볼 수 있다.





 

방화벽룰 점검 및 체크리스트 12

 

-L 이용시 --line옵션을 추가하면 각 룰의 순서번호를 볼 수 있다.





 

방화벽룰 점검 및 체크리스트 13




iptables에서 명령어나 옵션 등을 사용할 때 대소문자를 구별하므로 주의하기 바란다.




이를테면 대문자 -P는 기본정책을, 소문자 -p는 프로토콜을 의미한다.

 

 


 

 

그러나 -p 다음에 오는 프로토콜을 명시할 때 tcp, udp, icmp등은 대소문자에 관계가 없다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,785 개
  • 현재 접속자 :  234 명