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

iptables를 활용한 룰 설정

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

iptables를 활용한 룰 설정




 

이번 절에서는 iptables를 활용하여 룰을 설정하는 방법과 아울러 서비스 중인 서버에 직접 방화벽을 탑재하여 운영하는 standalone 형태의 방화벽을 구현해 보도록 하자.

 

 

[룰 설정시의 주의사항 1]

패킷 필터링 룰은 커널 테이블에 저장되기 때문에 시스템이 재부팅 되면 초기화되므로 재부팅 후에도 적용하기 위하여 부팅 스크립트에서 실행하도록 설정하여야 한다.

 

 

 

 

따라서 아래에서 설명하는 룰을 정리하여 부팅스크립트인 /etc/rc.d/rc.local 파일 내에 설정해 두면 된다.

 

 

 

 

또는 firewall.sh와 같은 별도의 파일에 룰을 설정한 후 /etc/rc.d/rc.local에서 해당 스크립트 파일을 실행하도록 “sh /etc/rc.d/init.d/firewall.sh”와 같이 설정해 두면 된다.

 

[룰 설정시의 주의사항 2]

 

이미 기존의 룰이 있을 경우 추가하는 룰은 입력한 순서대로 INPUT, OUTPUT등의 chain 끝에 추가된다.

 

 

 

 

물론 -A 대신 -I를 이용할 경우 가장 앞에 추가된다.

 

 

 

 

다시 한 번 강조하지만 룰의 순서는 매우 중요하다.

 

 

 

 

 

 

[룰 설정시의 주의사항 3]

 

외부에서 방화벽 자체로 들어오는 패킷은 INPUT chain에 선언된 룰 순서대로, 방화벽 내부에서 외부로 나가는 패킷은 OUTPUT chain에 선언된 순서대로 매칭 여부를 판단하여 매칭이 될 때까지 순서대로 비교를 하게 되고 매칭이 되면 매칭된 타겟에 따라 ACCEPTDROP등의 적용을 하고 더 이상의 매칭 시도를 하지 않는다.

 

 

 

 

만약 끝까지 매칭 되는 룰이 없을 경우에는 -P 옵션으로 지정한 기본정책(ACCEPTDROP)으로 지정한 룰에 따른다.

 

 

 

 

따라서 먼저 선언한 룰에 적용되면 이하의 룰은 체크하지 않으므로 룰 지정 순서가 매우 중요하다.

 

[룰 설정시의 주의사항 4]

 

호스트 주소나 포트 이름을 지정할 때 IP 주소나 포트 번호로 지정하지 않고 호스트 이름이나 포트 이름으로 지정해도 된다.

 

 

 

 

그러나 호스트 이름으로 지정할 때에는 DNS 리졸빙(resolving)이 되어야 하므로 룰을 설정할 때 DNS 트래픽을 허용하거나 /etc/hosts에 일일이 정의되어야 하며 포트이름은 배포판이나 시스템마다 조금씩 차이가 있을 수 있으므로 호스트 이름이나 포트 이름보다는 IP 주소나 포트번호를 이용하는 것이 좋다.

 

 

[룰 설정시의 주의사항 5]

 

네트워크 구조가 복잡하면 복잡할수록 룰 스크립트도 복잡해진다.

 

 

 

 

아무리 전문가라 하더라도 실수를 할 수 있으므로 일일이 각각의 룰을 터미널에서 입력하지 말고 스크립트 파일로 작성 후 수정이나 실행하도록 하는 습관을 갖도록 한다.

이제 지금까지 배운 내용을 기반으로 실제 방화벽 서비스를 구축할 수 있도록 응용해 보자.

 

여기에서는 먼저 한 대의 리눅스 서버에서 웹이나 메일 등의 서비스를 제공하면서 방화벽도 함께 운영하는 형태를 예로 들어보도록 하자. 리눅스 시스템 자체를 방화벽의 용도로만 사용하는 NAT나 브리지를 이용한 방법은 다음에 알아보도록 한다.

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  81 명