
웹 애플리케이션에서는 클라이언트, Web 서버, WAS 서버, DB 서버가 있다.
클라이언트가 웹에 요청할 때 static한 데이터는 웹에서 실행하고, dynamic한 데이터는 WAS 서버 관련된 데이터를 DB 서버에서 조회해서 그에 맞는 응답을 전달한다.
이때, 클라이언트에서 오는 데이터가 안전한지 아닌지를 판단해야 하고, 그 판단이 안전하지 않다고 판단되는 것들은 더 이상 내부로 진입할 수 없도록 하는 기법들이 나온다.
기법 중 가장 앞에 나오는 것은 방화벽인데 방화벽은 특정 IP나 특정 Port로의 진입과 진출을 제어하는 데 사용한다.
Web 서버에 접근할 때 80 포트를 사용할 때, 80 포트로만 접근해야 하는데, 80 포트가 아닌 허용하지 않는 포트로 접근한다는 것은 정상적이지 않은 작업을 한다는 것이라고 할 수 있다. IP 주소와 포트 번호가 들어오고 나가는 것을 제어하는 것을 방화벽이 한다.
방화벽만으로 모든 것을 막을 수 있을까?
만약 동적인 데이터가 들어와서 DB 서버에 쿼리를 전달해 데이터를 받아와야 할 때 방화벽은 동적인 데이터나 쿼리문에 대해 제어하지 않고 서버 주소가 맞고 서비스 포트가 맞으면 통과한다.
동적인 매개변수에 올 수 없는 값들이 포함되는 것을 방화벽은 모른다. 이를 확인할 수 있는 것이 WAF(웹 애플리케이션 방화벽)라고 한다.
WAF는 웹으로 넘어오는 매개변수들의 패턴을 추출해서 검증해 서버로 들어가지 못하도록 막아주는 역할을 한다.
기존 방화벽의 한계를 보완해 준다.
방화벽과 WAF는 네트워크 단에서 H/W 기반으로 방어하는 것이다.
이 두 가지를 사용해서 100% 막을 수 있을까? 100%로 막기는 어렵다.
방호벽, IDS/IPS, 웹 방화벽에서의 침해사고 발생빈도는 크게 높지 않다. 최근 침해사고는 서버 구간에서 제일 많이 나온다. 잘못 만들어진 애플리케이션의 취약점으로 인해 보안 사고가 발생하는데 최근 조사에 따르면 이곳에서 보안사고 92%가 생긴다고 한다.
이러한 보안 사고를 막기 위해서는 시큐어 코딩해야 한다. 가이드라인을 확인하고 그것에 맞게 시큐어 코딩해야 한다.
사전점검을 통해 SW 개발 보안이 이루어지면 취약점 조치 비용이 절약된다. 설계단계 대비 최대 30배의 취약점 수정 비용 절약할 수 있다.
가이드라인은 종류별로 있으니 필요한 것을 찾아 확인 후 가이드라인에 맞게 개발해야 보안 사고가 줄어든다.
소스코드 등에 존재할 수 있는 잠재적인 보안 약점을 제거하고, 보안을 고려하여 기능을 설계 구현하는 등
SW 개발 과정에서 실행되는 일련의 보안 활동을 수행해야 한다.
시큐어 코딩과 SW 개발 보안 활동을 해야 한다.

연결, 요청, 응답, 연결 해제




