420 likes | 850 Views
14. 방화벽. 학습목표 방화벽의 기능과 목적을 이해한다 . 네트워크에서 방화벽의 위치와 구조를 이해한다 . 패킷 필터링의 규칙을 이해하고 적용할 수 있다 . NAT 의 원리를 이해하고 적용할 수 있다 . 프록시의 원리를 이해하고 적용할 수 있다 . 내용 방화벽의 기능과 목적 방화벽의 구조 패킷 필터링 NAT 프록시. 방화벽의 기능과 목적. 방화벽 개념 원래 방화벽은 화재가 발생했을 때 불길이 다른 곳으로 번지지 않게 설치해놓은 구조물
E N D
14 방화벽
학습목표 • 방화벽의 기능과 목적을 이해한다. • 네트워크에서 방화벽의 위치와 구조를 이해한다. • 패킷 필터링의 규칙을 이해하고 적용할 수 있다. • NAT의 원리를 이해하고 적용할 수 있다. • 프록시의 원리를 이해하고 적용할 수 있다. • 내용 • 방화벽의 기능과 목적 • 방화벽의 구조 • 패킷 필터링 • NAT • 프록시
방화벽의 기능과 목적 • 방화벽 개념 • 원래 방화벽은 화재가 발생했을 때 불길이 다른 곳으로 번지지 않게 설치해놓은 구조물 • 네트워크에서 방화벽은 신뢰하지 않는 외부 네트워크와 신뢰하는 내부 네트워크 사이를 지나는 패킷을 미리 정해놓은 규칙에 따라 차단하거나 보내주는 기능을 하는 하드웨어나 소프트웨어
방화벽의 기능과 목적 • 방화벽 기능 • 접근 제어(Access Control) • 통과시킬 접근과 그렇지 않은 접근을 결정하여 허용과 차단을 함 • 접근 제어 방식은 구현 방법에 따라 패킷 필터링 방식과 프록시 방식으로 나뉨 • 로깅(Logging)과 감사 추적(Auditing) • 허용 또는 거부된 접근에 대한 기록을 유지 • 인증(Authentication) • 메시지 인증, 사용자 인증, 클라이언트 인증을 할 수 있음 • 데이터 암호화 • 방화벽에서 다른 방화벽까지 전송되는 데이터를 암호화해서 보내는 것으로, 보통 VPN의 기능을 이용
방화벽의 기능과 목적 • 방화벽 한계 • 바이러스를 막을 수 없음 • 방화벽은 패킷의 IP 주소와 포트 번호로 접근 제어를 하는 것이 보통 • 좀 더 높은 수준의 접근 제어가 가능하지만 패킷의 데이터 내용 자체는 검사하지 않는 것이 보통 • 방화벽은 보통 두 네트워크 사이에 존재하며, 높은 트래픽을 처리해야 하므로 데이터 내용까지 검사하면, 큰 오버헤드(overhead)가 발생하고 네트워크 대역폭에 큰 손실을 가져오기 때문 • 방화벽은 자신을 통과하지 않은 통신에 대한 제어가 불가능 • 내부 사용자가 방화벽을 통과하는 통신 선로가 아닌 무선이나 사설 통신 선로를 이용해 통신을 한다면, 공격자는 방화벽을 우회하여 내부 네트워크로 접속할 수 있음 • 내부 사용자 역시 방화벽을 우회하여 외부로 허용되지 않은 접속을 시도할 수 있음 • 방화벽은 전혀 새로운 형태의 공격을 막을 수 없음 • 방화벽은 예측된 접속에 대한 규칙을 세우고 이에 대해서만 방어하기 때문에 새로운 형태의 공격에는 능동적으로 적용할 수 없음 • 실제로 많은 해킹 공격이 방화벽을 우회하거나 통과하는 데 성공하여 공격을 실행하므로 보안의 완성은 절대 아님
방화벽의 구조 • 베스천 호스트 • 철저한 방어 정책이 구현되어 있고 외부 접속에 대한 일차적인 연결을 받아들이는 시스템을 지칭 • 보통 강력한 로깅과 모니터링 정책이 구현되어 있으며, 접근을 허용하거나 차단하는 등 방화벽의 일반 기능을 함 • 꼭 하나가 아니며 방화벽과 동일하지도 않음 • 베스천 호스트 위치 중 한 곳에 방화벽이 놓임
방화벽의 구조 • 스크리닝(screening) 라우터 • 외부 네트워크와 내부 네트워크의 경계에 놓이며, 보통 일반 라우터에 패킷 필터링 규칙을 적용하여 방화벽 역할 수행 • 세부 규칙 적용이 어렵고 많은 규칙을 적용하면 라우터에 부하가 걸려 대역폭을 효과적으로 이용할 수 없음 • 실패한 접속에 대한 로깅을 지원하지 않으며, 패킷 필터링 규칙에 대한 검증이 어려움 • 아주 저렴한 가격으로 방화벽의 기본 역할을 할 수 있으며, 규칙을 효과적으로 설정할 경우 무척 빠른 처리 속도를 유지할 수 있음 • 정상적인 내부, 외부 사용자는 패킷 필터링 라우터가 존재함을 인식하지 않고 서비스를 자유로이 이용할 수 있으므로 방화벽으로 인한 불편함을 겪지 않음 • 고가의 방화벽을 설치하기 힘든 중소기 업에서는 많이 이용
방화벽의 구조 • 단일 홈 게이트웨이(Single-Homed Gateway) • 일반적으로 이 구조를 베스천 호스트라고 부름 • 접근 제어, 프록시, 인증, 로깅 등 방화벽의 가장 기본 기능을 수행하며 윈도우NT, 유닉스 등과 같은 운영체제에 설치되어 운용되어 다음과 같은 작업을 반드시 수행해야 함 • 일반 사용자 계정을 모두 삭제한다. • 방화벽 기능 외의 유틸리티와 파일은 모두 지운다. • 대용량의 모니터링과 로깅이 가능해야 한다. • IP 포워딩 및 소스 라우팅 기능을 없앤다. • 비교적 강력한 보안 정책을 실행할 수 있으나 방화벽이 손상되면 내부 네트워크에 대한 무조건적인 접속을 허용할 가능성이 있으며, 방화벽으로의 원격 로그인 정보가 노출되어 공격자가 방화벽에 대한 제어권을 얻게 되면 내부 네트워크를 더는 보호할 수 없음 • 2계층 공격 등을 통한 방화벽 우회 가능
방화벽의 구조 • 이중 홈 게이트웨이(Dual-Homed Gateway) • 외부 네트워크에 대한 네트워크 카드와 내부 네트워크에 대한 네트워크 카드를 구분하여 운영 • 내부 네트워크에서 인터넷을 이용하거나, 인터넷에서 내부 네트워크가 제공하는 서비스를 이용하려면 이중 홈 게이트웨이를 반드시 지나야 함 • 이중 홈 게이트웨이는 단일 홈 게이트웨이보다 네트워크 카드를 하나 더 지원하므로 좀 더 효율적으로 트래픽을 관리할 수 있음
방화벽의 구조 • 스크린된 호스트 게이트웨이(Screened Host Gateway) • 라우터와 방화벽을 구분하여 운영하며, 스크리닝 라우터와 단일 홈 게이트웨이의 조합 • 스크리닝 라우터에서 패킷 필터링을 함으로써 1차 방어를 하며, 베스천 호스트로써 단일 홈 게이트웨이에서 프록시와 같은 서비스를 통해 2차 방어를 함 • 베스천 호스트는 스크리닝 라우터를 거치지 않은 모든 접속을 거부하며, 스크리닝 라우터도 베스천 호스트를 거치지 않은 모든 접속을 거부하도록 설정 • 이중 홈 게이트웨이와 함께 사용할 수도 있음 • 2단계로 방어를 실행하므로 무척 안전하며, 스크리닝 라우터에서 3계층과 4계층에 대한 접근 제어, 베스천 호스트에서 7계층에 대한 접근 제어까지 실행하므로 공격하기 어려움 • 가장 많이 이용하는 구조며 융통성이 좋음 • 스크리닝 라우터를 해커가 해킹하면 베스천 호스트를 거치지 않고 내부 네트워크에 직접 접근할 수 있다는 약점이 있음
방화벽의 구조 • 스크린된 호스트 게이트웨이(Screened Host Gateway)
방화벽의 구조 • 스크린된 서브넷 게이트웨이(Screened Subnet Gateway) • 외부 네트워크와 내부 네트워크 사이에 서브넷(subnet)이라는 완충지대를 두는 것 • 방화벽도 서브넷에 위치하며 주로 프록시가 설치됨 • 다른 방화벽의 장점을 모두 갖추고 있으며 융통성이 아주 뛰어남 • 해커가 침입하려면 통과할 것이 많아 상당히 안전한 편 • 다른 방화벽보다 설치와 관리가 어렵고, 서비스 속도가 느리며, 비용도 만만치 않음 • 이중 홈 게이트웨이에 적용할 경우 [그림 14-9]와 같은 구조가 됨 • 단일 홈 게이트웨이를 쓴 경우보다는 빠르며 좀 더 강력한 보안 정책을 실행할 수 있음
방화벽의 구조 • 스크린된 서브넷 게이트웨이(Screened Subnet Gateway)
실습 14-1 Astaro 방화벽 설치하기 실습환경 • 설치 시스템 : 네트워크 카드가 두 개인 시스템 • 필요 프로그램 : Astaro Security Gateway V7.3
실습 14-1 Astaro 방화벽 설치하기 【Astaro 설치】 • Astaro는 리눅스 기반 방화벽으로, 다른 운영체제와 함께 설치할 수 없음. 설치 시 하드디스크의 내용이 포맷되므로 새로운 하드 디스크를 구해야 함. 설치 중 관리 인터페이스를 선택하는 과정이 있는데, 관리자가 방화벽에 접근하여 관리할 IP를 설정해주면 됨 • 설치가 완료되면 시디를 빼낸 뒤 리부팅. 리부팅하면 일반 리눅스처럼 로그인해야 하는데, 아이디에 root를 입력하고 패스워드는 새로 설정함. 패스워드 설정 후 로그인하면 리눅스에서 사용하는 대부분의 명령을 쓸 수 있음 【Astaro 관리자 인터페이스 접속】 • 원격지에서 Astaro가 설치된 시스템으로 브라우저를 통해 접속. ‘https://Astaro 방화벽 주소:4444’를 입력하면 Astaro의 초기 화면을 볼 수 있음 1 2 3
실습 14-1 Astaro 방화벽 설치하기 • Astaro 초기 설정 마법사 시작 Astaro 처음 로그인 화면 【기본 설정 마법사 실행】 • Astaro 초기 설정 마법사 시작 라이선스 등록 4 5 6 7
실습 14-1 Astaro 방화벽 설치하기 • Astaro 초기 설정 마법사 시작 Astaro 처음 로그인 화면 • Astaro 초기 설정 마법사 시작 라이선스 등록 11 10 8 9
실습 14-1 Astaro 방화벽 설치하기 • 메신저에 대한 차단 설정, 웹 트래픽에 대한 모니터링 설정, 이메일에 대한 모니터링 설정을기본대로 두고 설정 완료 • Astaro 대시 보드 확인 13 12
실습 14-1 Astaro 방화벽 설치하기 【외부 인터페이스 활성화】 • 네트워크 인터페이스 생성 • 네트워크 인터페이스 생성 결과 확인 • 내부 클라이언트가 Astaro를 거쳐 인터넷이 되는지 확인 11 14 15 16
패킷 필터링 • Fail Safe • 시스템이 오류 발생 등으로 정상적으로 작동하지 않을 때 사용자나 시스템에 피해를 입히지 않는 상태로 남아 있어야 한다는 의미 • 시스템이 인증 시스템 등의 오류 때문에 정상적인 운용이 불가능한 상태가 됐을 때 공격자가 인증을 받지 않고 접속할 수 없어야 함 • 이러한 상태에 있으면 합당한 사용자도 인증 시스템의 오류 때문에 정상적인 서비스가 가능해질 때까지 시스템을 이용할 수 없음 • Safe Failure • 안전한 실패로, 실패(Failure)가 일어났을 경우 안전(Safe)해야 한다는 의미 • 방화벽 • 일반적으로 Fail Safe 원칙이 적용되며,‘ 명백히 허용하지 않은 서비스에 대한 거부’를 기본 원칙으로 함 • '거부를 명시하지 않은 모든 서비스에 대한 허용’을 기본 원칙으로 설정하는 경우도 있으나 방화벽에 이 원칙을 적용하는 것은 아주 예외적인 경우로 매우 위험
패킷 필터링 • 방화벽에‘명백히 허용하지 않은 서비스에 대한 거부’ 적용 과정 ① 허용할 서비스를 확인한다. ② 제공하고자 하는 서비스에 보안 문제는 없는지, 그리고 허용이 타당한지 검토 ③ 서비스가 이루어지는 형태를 확인하고, 어떤 규칙(rule)을 적용할지 구체적으로 결정 ④ 방화벽에 실제로 적용을 하고, 적용된 규칙을 검사
패킷 필터링 실습 • [그림14-22]의 구조를 바탕으로 간단한 패킷 필터링 규칙 정하기 • 내부 네트워크에는 웹 서버와 메일 서버, FTP 서버가 있음
패킷 필터링 실습 • 내부 클라이언트가 외부의 웹 서버로 접근 가능하도록 설정 • 1번 규칙 : 내부(Internal)에서 80번 포트를 목적지로 하는 외부(External)로 나가는 패킷은 허용한다. • 2번 규칙 : 방화벽은 기본적으로 명백히 허용하지 않은 모든 패킷은 거부하게 되어 있지만 이와 같이 마지막에 명시해주는 것이 좋다. 왜냐하면 방화벽이 생각만큼 완벽하지 않기 때문이다.
패킷 필터링 실습 • 외부 클라이언트가 내부의 웹 서버와 FTP 서버에 접근할 수 있도록 패킷 필터링 규칙 추가 • 2번 규칙 : 내부와 외부에서 모두 192.168.1.10 웹 서버에 접근할 수 있도록 허용한다. • 3번 규칙 : FTP 서버에도 같은 접근을 허용한다.
패킷 필터링 실습 • 메일에 대한 필터링 규칙 적용
패킷 필터링 실습 • 4번 규칙 : 내부 메일 서버(192.168.1.11)에서 외부 메일 서버(10.10.10.21)로 가는 SMTP 패킷을 허용한다. • 5번 규칙 : 내부 메일 서버에서 외부 메일 서버로의 POP3 접근은 금지한다. • 6번 규칙 : 내부 메일 서버에서 외부 메일 서버로의 IMAP 접근은 허용한다. • 7~9번규칙: 외부 메일 서버에 대한 내부 메일 서버의 접근에 대한 규칙을 똑같이 설정한다. • 10번 규칙 : 외부 모든 시스템에서 내부 시스템으로 메일을 보내지 못하도록 설정한다. 스팸 메일을 막기 위한 규칙이다.
패킷 필터링 실습 • DNS 서버에 대한 접근 규칙 추가 • 11번 규칙 : 내부에서 외부로의 DNS 접근을 허용한다.
NAT • NAT • 시스템은 내부 네트워크에서 사설 주소를 소유하고 있다가 외부로 접근할 때 라우팅이 가능한 외부 공인 주소를 NAT 규칙에 따라 할당받아 접속할 수 있음 • 고갈되는 공인 주소를 효과적으로 쓰려는 목적도 있으나 내부 시스템의 네트워크 구조를 노출하지 않는 보안상의 이점도 제공 • 구현 방법에 따라 다음 네 가지로 나뉨 • Normal NAT(노말NAT) • Reverse NAT(리버스NAT) • Redirect NAT(리다이렉트NAT) • Exclude NAT(익스클루드NAT)
NAT • Normal NAT • 내부 사설 IP 주소를 가진 클라이언트가 외부로 접속하고자 할 때 사용 ➊클라이언트는 내부(사설) IP 주소를 출발지 주소로, 접속하고자 하는 외부 IP 주소를 목적지 주소로 하는 패킷을 생성하여 방화벽으로 보낸다. 이때 방화벽은 기본 게이트웨이처럼 동작한다. ➋방화벽은 Normal NAT 규칙에 따라 패킷의 출발지 주소를 미리 설정되어 있는 방화벽(공인) IP 주소로 바꾸어 원격지 서버에 전송한다. ➌원격지 서버가 방화벽이 보낸 패킷에 대한 응답 패킷을 보낸다. ➍방화벽은 다시 Normal NAT 규칙에 따라 목적지 주소를 처음 접속을 시도한 클라이언트의 내부(사설) IP 주소로 바꾼 후, 실제로 접속을 시도한 클라이언트에 전송해준다.
NAT • Reverse NAT • 내부에 서버가 존재하는 경우에 설정 • 클라이언트는 Normal NAT를 통해 원격 접속을 할 수 있지만, 서버는 처음 패킷의 시도가 원격에서 오므로 여러 내부 IP 주소 중 어떤 곳에서 접속해온 패킷을 보낼 지 모름 • 내부 네트워크에서 작동하는 서버에 대해서는 Reverse NAT 규칙이 존재해야 함 • 'Static Mapping’이라고도 하며, 사설 IP 주소 하나를 공인 IP 주소 한 개로 설정 작동 순서는 Normal NAT와 유사
NAT • Reverse NAT ➊외부 클라이언트는 공인 IP 주소를 출발지 주소로, 방화벽 지정 외부 IP 주소를 목적지 주소로 하는 패킷을 생성하여 방화벽으로 보낸다. ➋ 방화벽은 Reverse NAT 규칙에 따라 패킷의 목적지 주소를 미리 설정되어 있는 내부(사설) IP 주소로 바꾸어 내부 서버에 전송한다. ➌내부 서버는 이에 대한 응답을 방화벽으로 보낸다. ➍방화벽은 내부(사설) IP 주소로 되어 있는 출발지 IP 주소를 방화벽 지정 외부 IP 주소로 바꾸어 외부 클라이언트에 전송한다.
NAT • Redirect NAT • 목적지 주소를 재지정할 때 사용 • 210.100.100.1로 사용하던 서버의 주소가 210.100.100.2로 바뀔 경우, 210.100.100.1로 접속을 시도해온 패킷의 목적지 주 • 소를 210.100.100.2로 바꾸어줌 • Exclude NAT • Normal NAT를 적용받지 않고 방화벽을 지나도록 설정하는 것 • 방화벽과 라우터 사이에 서버가 있는 경우와 같이 특정한 목적지에 대해서만 Normal NAT가 적용되지 않도록 설정할 수 있음
실습 14-2 Astaro 패킷 필터링 규칙 적용하기 • 패킷 필터링 룰셋 확인 실습환경 [실습 14-1]에서 Astaro Security Gateway V7.3 설치 후 기본 설정을 완료한 시스템 1
실습 14-2 Astaro 패킷 필터링 규칙 적용하기 • 패킷 필터링 룰셋 구성 2 ➊ Source : 출발지 주소나 호스트를 입력할 수 있다. 내부 시스템이 외부의 인터넷에서 DNS 정보를 접근해야 하므로,‘ Internal_Network’(192.168.0.1/24)를 입력한다. ➋ Service : 제공하고자 하는 서비스를 선택한다. 잘 알려진 서비스는 [그림 14-19]에서 볼 수 있듯이 이름이 이미 설정되어 있다. DNS(53)를 선택한다. ➌ Destination : 목적지 주소다. Web Surfing은 Any, 즉 모든 네트워크에 허용되어 있다. 외부 네트워크로 한정하려면WAN(200.200.200.0)을 입력한다. ➍ Action : 1, 2, 3을 만족하는 패킷이 왔을 때 이를 허용(Allow)할 지를 설정한다. 다른 설정으로는 Drop, Reject가 있다. Drop은 기본적으로 응답 패킷을 보내지 않은 채 패킷을 버린다. Reject는 막힌 서비스임을 클라이언트에 알려준다. 허용(Allow)으로 설정한다.
실습 14-2 Astaro 패킷 필터링 규칙 적용하기 • 패킷 필터링 룰셋의 활성화 패킷 필터링 룰셋의 순서 조정 3 4
실습 14-3 Astaro에서 NAT 적용하기 • DNAT 설정 실습환경 [실습 14-1]에서 Astaro Security Gateway V7.3 설치 후 기본 설정을 완료한 시스템 • ➊Traffic Source : 패킷의 출발지 주소는 외부 네트워크(WAN(Network))로 설정한다. • ➋Traffic Service : 방화벽의 외부 인터페이스로 접근해 오는 패킷 중 목적지가 80번 포트인 패킷에 대한 DNAT를 실행하려고 하므로, HTTP를 선택한다. • ➌Traffic Destination : 목적지 주소는 방화벽의 외부 인터페이스(WAN(Address))로 설정한다. • ➍NAT Mode : DNAT, SNAT, Both 세 가지 중 선택할 수 있다. DNAT를 선택한다. • ➎ Destination : 패킷의 목적지 주소를 방화벽의 외부 인터페이스에서 로컬 웹 서버 IP 주소로 바꾼다. • ➏ Destination Service : 목적지는 8080번 포트로 한다. 1
실습 14-3 Astaro에서 NAT 적용하기 • Normal NAT 설정과 결과 ➊ Network : 해당 네트워크를 내부 네트워크(Internal(Network))로 정한다. 내부 네트워크 사용자가 외부 네트워크에 접속할 때 자신의 주소를 위장하기 위한 것이다. ➋ Interface : 인터페이스도 외부의 NIC 카드(WAN)를 지정해야 한다. 21
실습 14-3 Astaro에서 NAT 적용하기 • Masquerading • 흔히, PAT(Port Address Translation)라고 부르는 방법 • PAT는 IP 주소와 소스 포트의 조합으로 사용됨. 1개 이상의 시스템이 각각의 내부 IP로 외부에 접근할 때 하나의 외부 IP에 포트만 달리하여 연결할 수 있게 해주는 것 • PAT에서 세션은 포트 번호로 구분되고, 많은 세션이 한 IP를 통해 인터넷에 접근 가능 • NAT를 추가하면 룰셋처럼 목록으로 확인할 수 있고, 활성화와 비활성화 여부를 선택할 수 있음
프록시 • 프록시 • 크게 회로 계층 프록시(Circuit Level Proxy)와 응용 계층 프록시(Application Level Proxy)로 나뉨 • 회로 계층 프록시가 먼저 개발됨 • 응용 계층 프록시는 HTTP, FTP 등 하나의 서비스에 대한 프록시가 개별적으로 존재 • 회로 계층 프록시는 SOCKS처럼 하나의 회로를 만들뿐 실제적인 프로토콜 분석이 가능한 것은 아님 • 바이러스 같은 것을 잡아낼 수는 없음 • 메일 서비스 같은 경우 기본적으로 프록시와 비슷한 성격을 띠는 서비스 • 클라이언트가 메일을 보내면 메일 서버는 이를 저장한 후 다른 메일 서버로 전송해주는데, 메일 서버가 프록시와 마찬가지로서비스의 중개자 역할을 해준다는 점에서 프록시와 아주 비슷하게 동작 • 프록시는 전송되는 데이터의 내용을 볼 수 있지만 모두 읽을 수 있는 것은 아님 • 프로토콜이 개발되면 이에 해당하는 프록시는 보통 한참 뒤에 개발되므로 모든 내용을 프록시할 수는 없음 • 프록시를 쓰면 몇 가지 유연한 서비스를 제외하면 클라이언트와 서버에 조금씩 수정을 가해야 정상적으로 인터넷 등을 사용 가능
실습 14-4 Astaro 프록시 설정하기 • 개별 항목 프록시 설정과 결과 실습환경 [실습 14-1]에서 Astaro Security Gateway V7.3 설치 후 기본 설정을 완료한 시스템 1
실습 14-4 Astaro 프록시 설정하기 • HTTP 프록시 설정 항목 • SMTP 프록시 설정 항목 2 3