본문 바로가기
728x90
반응형

전체 글114

도커 컨테이너 격리 1. 컨테이너 간 통신 비활성화 도커 컨테이너가 호스트 네트워크와 독립적인 네트워크 영역을 갖기 위해 네트워크를 사전에 적절히 설계하여, 컨테이너 간 통신이 불가 하도록 네트워크 수준에서 컨테이너를 격리하도록 합니다. 2. 컨테이너 간 격리 상태 확인 방법 # docker ps --quiet --all | xargs docker inspect --format '{{ .Id }} {{ .Name }}: NetworkMode={{ .HostConfig.NetworkMode }}' 2021. 9. 24.
도커 컨테이너 커널 기능 제한 1. 컨테이너 커널 기능 제한 컨테이너 내에서 리눅스 커널 기능은 권한 있는 사용자만 사용할 수 있도록 제한하도록 합니다. 가장 안전한 설정은 모든 기능을 삭제한 후 다음 필요한 기능만 추가하는 것입니다. 2. 컨테이너에 적용된 커널 기능 확인 방법 # docker ps --quiet --all | xargs docker inspect --format '{{ .Id }} {{ .Name }}: CapAdd={{ .HostConfig.CapAdd }} CapDrop={{ .HostConfig.CapDrop }}' 2021. 9. 24.
도커 패치 관리 1. 패치 관리 신규 취약점 및 기타 알려진 취약점에 의해 침해가 발생할 수 있으므로 주기적인 보안 패치를 적용해야 합니다. 2. 도커 패치 현황 확인 방법 # docker version - Docker 최신 Release 현황 버전 Release 일자 비고 20.10.7 2021-06-02 2021. 9. 24.
도커 사용자 보안 1. 사용자 설정 컨테이너(응용 프로그램) 구성 시 기본 관리 권한인 [root] 권한으로 실행되며, 이는 공격자가 컨테이너(응용 프로그램) 권한 탈취 시 보다 많은 공격 권한을 갖게 되므로, 최소 권한 원칙을 적용하여, 컨테이너(응용 프로그램)를 구성하도록 합니다. 2. 컨테이너 구동 계정 확인 방법 # docker ps --quiet --all | xargs docker inspect --format '{{ .Id }} {{ .Name}}: User={{ .Config.User }}' 2021. 9. 24.
정보 시스템 침투 테스트 시나리오 정보 시스템 침투테스트 시나리오 1 2021. 9. 24.
도커 보안 도커 보안 점검 체크리스트 1. 사용자 설정 2. 패치 관리 3. 컨테이너 커널 기능 제한 4. 컨테이너 간 통신 비활성화 5. –no-new-privileges 옵션 추가 6. 컨테이너 로그 설정 7. 컨테이너 리소스 제한 (메모리, CPU 등) 8. 파일 시스템 및 볼륨 읽기 전용으로 설정 9. 주요 디렉토리 및 파일 소유자/권한 설정 10. 호스트 네임스페이스 관리 11. 불필요한 포트 제한 도커 보안 아키텍처 도커 보안 점검 자동화 스크립트 개발 2021. 9. 24.
서블릿 메소드 예외 처리 취약점 서블릿 메소드 예외 처리 취약점 Noncompliant Code Example public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String ip = request.getRemoteAddr(); InetAddress addr = InetAddress.getByName(ip); // Noncompliant; getByName(String) throws UnknownHostException //... } Compliant Solution public void doGet(HttpServletRequest request, HttpServletResponse .. 2021. 9. 17.
로깅 인젝션 공격 로깅 인젝션 공격 Noncompliant Code Example protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String param1 = req.getParameter("param1"); Logger.info("Param1: " + param1 + " " + Logger.getName()); // Noncompliant // ... } Compliant Solution protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String param1 = req.getParamete.. 2021. 9. 17.
서버측 요청 위조 공격 서버측 요청 위조 공격 Noncompliant Code Example protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { URL url = new URL(req.getParameter("url")); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // Noncompliant } Compliant Solution protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String urlWhiteListed = " 2021. 9. 17.
HTTP 응답 헤더 인젝션 HTTP 응답 헤더 인젝션 Noncompliant Code Example protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String value = req.getParameter("value"); resp.addHeader("X-Header", value); // Noncompliant } Compliant Solution protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String value = req.getParameter("value"); String whitelist .. 2021. 9. 17.
728x90
반응형