도순씨의 코딩일지

보안 시스템 :: 네트워크 계층, 방화벽, IDS / IPS 본문

𝐒𝐄𝐂𝐔𝐑𝐈𝐓𝐘/𝐒𝐄𝐂𝐔𝐑𝐈𝐓𝐘 𝐒𝐓𝐑𝐔𝐂𝐓𝐔𝐑𝐄

보안 시스템 :: 네트워크 계층, 방화벽, IDS / IPS

도순씨 2020. 10. 24. 00:00

🌼 방화벽

백본망(백본 네트워크) 는 넓은 지역에 걸쳐 다양한 네트워크를 묶어 다른 네트워크들과 연결되는 네트워크입니다. 백본 스위치는 어느 쪽으로 데이터가 흘러가는지 방향을 잡아줍니다. 네트워크 중심에 설치하며 모든 데이터가 거쳐가기에 성능이 매우 중요합니다. 성능이 부족하면 병목 현상이 발생할 수 있습니다. 라우팅 프로토콜은 어느 네트워크에 어느 IP가 존재하는지 확인합니다. 다른 라우터와 공유하여 데이터를 어디로 보내야할 지 확인합니다. L3 스위치는 네트워크의 경로를 알고 있는 경우 라우터의 역할을 대신하기도 합니다. 라우터에 비해서 빠르게 처리가 가능합니다.

 

네트워크 계층은 코어(core), 분배(Distribution), 액세스(Access)의 3계층으로 이루어져 있습니다. 코어 계층은 계층적 네트워크 백본으로 외부 인터넷망과의 연결이 가능합니다. 모든 분배 계층의 데이터 흐름을 통합하여 많은 양의 데이터를 빠르게 전달합니다. 또 분배 계층 장치간 상호 연결을 위해 고도의 가용성과 이중화 안정성이 필요합니다. 분배 계층은 액세스 계층의 데이터를 종합하여 코어 계층으로 전송합니다. 액세스 계층 VLAN 사이의 라우팅 기능을 수행하기 위해서 브로드 캐스팅 도메인을 구분해줍니다. 소규모 네트워크에서는 코어와 분배계층을 통합합니다. 액세스 계층은 사용자가 네트워크에 접근하기 위한 계층입니다. 우리의 PC는 액세스 스위치에 연결되어 있습니다. 장치를 네트워크에 연결하는 수단을 제어하고 장치를 제어합니다.

 

방화벽은 침입차단시스템의 일종으로 미리 정의된 보안 규칙에 기반하여 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어할 수 있는 네트워크 보안 시스템입니다. 일반적으로 신뢰할 수 있는 구간(LAN)과 신뢰할 수 없는 구간(WAN) 간에 장벽을 구성합니다. 방화벽은 기본적으로 네트워크 장비이면서 보안장비라 할 수 있습니다. 따라서 네트워크팀과 보안팀의 역할 구분이 필요합니다.

방화벽의 원칙은 Deny-all과 Allow-all로 나눌 수 있습니다. Deny-All(White list)은 일반적인 경우로 접근이 허용된 경우를 제외한 모든 접속을 차단합니다. 다시 말해 허용되어야 하는 정책만 선택적으로 등록하는 것입니다. Allow-All(Black list)는 접속을 허용하지 않는 정책을 제외하고 모든 접속을 허용합니다.

 

1세대 방화벽은 패킷 필터링(Packet Filtering)을 사용합니다, 모든 트래픽은 패킷 단위로 전송되며 각 패킷의 헤더에는 해당 패킷의 목적지, 발신지(IP 주소), 프로토콜(port) 정보가 존재합니다. 방화벽은 각 패킷의 헤더에서 목적지, 발신지, 프로토콜 정보를 확인하고 등록된 정책과 비교하여 해당 패킷의 통과 여부를 경정합니다. 예전 소켓 통신 시절에는 포트가 적어 관리하기 편리했지만 1024번부터 포트를 자유롭게 사용할 수 있어 어려움이 있습니다. 하지만 이러한 방식에는 취약점이 존재합니다. Src Port만 80으로 바꾸면 어디든지 갈 수 있기 때문입니다. 이러한 보안상 취약점을 해결하기 위해서 2세대 방화벽이 나타났습니다.

2세대 방화벽은 상태감시방화벽(Stateful Inspection)입니다. TCP 3-way handshaking 단계에서 방화벽이 패킷을 감시하며 응답 패킷에 대한 정책을 자동으로 생성하여 추가합니다. 통신 종료시점인 FIN 패킷 수신 또는 일정기간 패킷이 없다면 동적으로 생성한 방화벽의 룰은 자동으로 삭제됩니다.

3세대 방화벽은 L7 방화벽으로 어플리케이션 방화벽이라고 불리기도 합니다. 기존 2세대 방화벽은 L4레벨에서 IP, Port를 기반으로 패킷을 검증합니다. 차세대 방화벽은 L7 어플리케이션 패킷 내용까지 파악하여 상세 룰을 설정 가능합니다. 웹 서버 도메인 네임을 기준으로 특정 웹 서비스의 차단이 가능해집니다. 

 

 

DMZ(DeMilitarized Zone, 비무장지대)는 외부 접속으로부터 내부 자산을 보호하기 위해 내부 네트워크와 외부 네트워크 사이에 설치하는 보호된 네트워크 영역입니다. 외부에서 DMZ까지만 들어와서 필요한 정보를 얻을 수 있습니다. 외부에서는 내부망에 접속하지 못하고 DMZ까지만 접속이 가능합니다. DMZ의 구성은 다음과 같습니다.

💡 DMZ : 외부에서 직접 접속이 가능한 유일한 영역

💡 2차 방화벽 : DMZ 서버가 해킹 당했을 경우 내부망 확산을 방지

💡 Private Zone : 외부에서 직접 연결이 필요하지 않은 서버. DMZ 서버와의 접속이 필요한 서버 위치, 패당 포트만 허용.      

                          ex) WAS 서버

💡 Protected Zone : 외부 인터넷 차단, 민감 정보(금융, 개인정보 등) DB 서버 등

 

고가용성은 정보 시스템이 정지되지 않고 지속적으로 운영될 수 있는 능력입니다. 서버 장애에 대비한 서버 이중화는 고가용성을 위한 기본적 구성입니다. 만약에 방화벽에 장애가 발생하게 된다면 전체 정보 시스템에 장애가 발생하게 됩니다. 따라서 이중화 구성이 필요합니다. 방화벽 이중화는 두 가지로 나뉩니다. 차례대로 알아봅시다.

 

Active-Standby 구성은 Active 장비만 트래픽을 처리하고 Active 장비는 현재 세션 정보를 Standby 장비에게 전달합니다. 만약 Active 장비 장애가 발생하면 Standby 장비가 Active로 자동 전환됩니다. 하지만 장애가 발생하지 않으면 standby 장비의 효율성이 떨어진다는 단점이 있습니다.

Active-Active 구성은 Load Balancing이라고 불리기도 합니다. 모든 장비가 Active 상태에서 트래픽을 처리합니다. 방화벽 전과 후에 로드 밸런싱 장비를 두고 트래픽을 분산합니다. 로드 밸런싱 기법은 다음과 같습니다. 

💡 Least Connection : 현재 Connection이 가장 적은 쪽으로 전달합니다.

💡 Round Robin : 들어오는 순서에 따라 장비 순서대로 전달합니다.

💡 Fast Response Time : 가장 응답이 빠른 장비로 전달합니다. 부하가 적습니다.

💡 Hash(Source) : Client, IP, Port 정보를 기준으로 해시 알고리즘을 사용하여 장비를 결정합니다. 항상 동일한 결과가 나         오기 때문에 해당 장비로 일관성있게 보낼 수 있습니다.

로드밸런서는 최소 L4 스위치를 사용하고 있습니다. 

 

서버 로드 밸런싱(Server Load Balancing)은 서버 부하를 분산하기 위해서 여러 대의 서버를 하나의 서버처럼 동작합니다. 각 서버마다 Real IP를 할당하고 외부 사용자의 서비스 접속을 위한 Virtual IP를 L4 스위치에 설정합니다. 

 

네트워크 계층별 스위치를 한 번 정리해보겠습니다.

💡 L2 스위치 : MAC 주소 기반, Frame 전송, Collision 도메인 분리

💡 L3 스위치 : IP 주소 기반, Packet 전송, Broadcast 도메인 분리, IP기반 스위칭(라우팅 지원)

💡 L4 스위치 : IP 주소와 Port 정보 기반 스위칭. 로드 밸런싱 기능.

💡 L7 스위치 : 컨텐츠 기반 로드밸런싱 지원

 

NAT(Network Address Translation) 은 사설 IP 주소를 외부 서버에 접근할 때 외부망에서 라우팅이 가능한 공인 IP 주소를 부여해줍니다. IPv4 주소의 부족으로 인한 인터넷 공인 IP의 효과적 사용 목적과 함께 보안상의 목적도 존재합니다. NAT이 내부 시스템의 네트워크 구조를 노출하지 않고 인터넷에 연결된 내부 사용자들을 외부에 직접 노출시키지 않기 때문입니다. Normal NAT는 내부 사설 IP 주소를 가진 클라이언트가 외부로 접속할 때 사용합니다. Reverse NAT은 내부에 공인 IP 주소로 접속이 필요한 서버가 존재하는 경우 사용합니다.

 

PAT(Port Address Translation)은 IP 주소와 소스 포트의 조합으로 사용합니다. 내부에서 사설 IP 주소를 가진 클라이언트에서 외부 서버로 접근할 때 하나의 외부 공인 IP에 포트만 다르게 구분하여 연결할 수 있게 해줍니다. 

 

 

🌼 IDS / IPS

IDS(Intrusion Detection System, 침입 탐지 시스템)은 방화벽이 탐지할 수 없는 방화벽 정책 통과 후 악의적인 네트워크 트래픽 및 컴퓨터 사용을 탐지하기 위한 보안 시스템입니다. 취약한 서비스에 대한 네트워크 공격, 애플리케이션에서의 데이터 처리 공격, 권한 확대 및 침입자 로그인, 침입자에 의한 주요 파일 접근, 악성 소프트웨어와 같은 호스트 키반 공격을 탐지합니다. 침입 탐지 시스템은 두 가지로 분류를 할 수 있습니다.

IPS(Intrusion Prevention System, 침입 방지 시스템)은 IDS와 방화벽을 합친 것으로 볼 수 있습니다. IDS는 침입을 발생했을 때 문제를 즉각적으로 처리하지 못합니다. 또한 방화벽에 차단 정책을 등록해야 정상적으로 차단이 이루어지는데, 침입을 탐지한 이후에 정책 적용까지 시간이 너무 오래 걸린다는 한계점이 있습니다. IPS는 이를 보완한 것으로 공격 시그니처를 찾아내고 네트워크 트래픽을 관찰하여 이상 활동을 능동적으로 조사하여 침입을 탐지합니다. 

데이터 소스 기반은 호스트 기반 침입 탐지 시스템과 네트워크 기반 침입 탐지 시스템으로 나뉩니다. 호스트 기반 IDS는 운영체제에 설치되어 운용되거나 일반 클라이언트에 설치합니다. 운영체제에 설정된 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 명령을 쳤는지, 공격을 했는지 등을 추적합니다. 호스트 기반 IDS는 독립적으로 설치되는 경우보다 서버보안 제품에서 활용하는 경우가 많습니다. 유지, 관리 비용이 많이 들어서 중요한 시스템에만 설치합니다. 네트워크 기반 IDS는 운영체제에 기반하는 호스트 기반과는 달리 네트워크에서 하나의 독립된 시스템으로 운용됩니다. 네트워크 목적에 따라 중간에 NIDS를 선택적으로 설치 가능합니다. 실시간 데이터를 직접 차단하기보다는 네트워크 상에 흘러가고 있는 트래픽을 미러링해서 감시하는 방식이기 때문에 네트워크 자원이 손실되거나 데이터가 변조되지 않습니다. 호스트 기반 IDS에 비해 감시 영역이 상대적으로 매우 크며 네트워크 전반에 걸쳐서 감시를 할 수 있다는 장점이 있습니다. 네트워크 기반 IDS는 방화벽 뒤에 설치하는 것이 가장 좋습니다. 방화벽 외부에서 기본적인 공격은 탐지하고 있지만, 굉장히 중요한 부분이기 때문입니다. 방화벽 뒤에서 탐지되는 공격은 네트워크에 직접적으로 영향을 줍니다. 이 곳은 내부에서 외부로 향하는 공격도 탐지할 수 있는 곳이므로 내부의 공격자도 어느정도 탐지할 수 있습니다. 

침입탐지 모델 기반은 오용 침입 탐지 기법과 비정상 침입 탐지 기법으로 나뉩니다. 오용 침입 탐지 기법은 명확하게 잘못된 행위(미리 공격으로 등록된 패턴들)을 탐지합니다. 공격이 무엇인지 정의되어 있기 때문에 오탐률이 낮고 효율적이지만 공격 패턴을 생성하는 것이 어렵고 유지보수 비용이 높습니다. 최신 공격을 등록하기 위해서 백신처럼 계속 IDS는 업데이트를 해줍니다. 단점은 크게 세 가지로 나눠볼 수 있습니다. 첫째, 알려진 공격 외에는 탐지할 수 없습니다. 이미 누군가 공격을 당하고 분석이 돼서 IDS에 패턴이 등록되어야 탐지할 수 있습니다. 둘째, 등록된 공격 패턴을 우회하는 경우 탐지가 어렵습니다. 우회하는 것까지 탐지하기 위해서는 여러가지 패턴을 더 등록해야 하는데, 시스템이 복잡해지기 때문에 지양해야 합니다. 셋째, 신규 취약점을 이용하는 제로 데이 공격(Zero Day Attack)은 식별할 수 없습니다. 취약점이 발견되고 나서 코드를 분석하여 패턴을 등록하는데, 이 시간 내에 공격이 일어난다면 속수무책으로 당할 수 밖에 없습니다. 오용 탐지 기법과 비슷한 형태인 상태 전이(state transition) 방법은 공격 상황별로 시나리오를 세우고 공격 이후에 상대가 어떻게 변하는지 공격 패턴을 상태 변화로 분석합니다. 결과가 매우 직관적이지만 세밀한 시나리오를 만들기 어려우며 추론 시스템이 포함되어 시스템 성능에 부담이 된다는 단점이 있습니다. 이상 탐지 기법은 이상한 행위를 탐지하는 기법입니다. 이상한 행위란 상대적으로 급격한 변화를 일으키거나 확률이 낮은 일이 발생하는 경우입니다. 인공지능을 이용하는 경우도 있는데, 성향적 오류나 오버피팅 오류가 발생할 수도 있습니다. 성향적 오류는 부족한 데이터로 인해 부정확한 값이 도출되는 오류로 잘못된 값으로 값이 치우치는 경우에 발생합니다. 오버피팅 오류는 너무 많은 데이터를 고려해서 사소한 값 변화에 민감하게 반응하여 오히려 나쁜 결과를 도출하는 경우입니다. 

침입 탐지 시스템 구성 방법은 port mirroring과 network tap이 있습니다. Port Mirroring은 스위치에 포함된 미러링 기능을 활용합니다. 명령어를 사용하여 포트를 복사합니다. 모든 패킷이 복사되고 monitoring computer로 패킷이 들어오게 됩니다. 이를 활용하여 ids에서는 패킷을 분석합니다. Network Tap은 L2 스위치와 유사한 패킷을 복제하여 분기시키는 별도의 장비를 사용합니다. 직접 통신을 하는데 분기시키는 것이 어렵거나 미러링하기가 어려운 경우 포트를 때고 탭 장치를 놓습니다. 그리고 양 쪽으로 연결시킵니다. 단점은 설치되는 시점에 잠시 네트워크 단절이 발생한다는 점입니다. 

 

Comments