Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

인터넷 서비스 개발 및 운영시 주의사항

제목

인터넷 서비스 개발 및 운영시 주의사항

1. webapps 이하에서는 git init 하지 않는다.

/var/lib/tomcat9/webapps/.git 혹은 /var/lib/tomcat9/webapps/ROOT/.git 같은 디렉토리가 있으면 안된다.

.git 디렉토리를 무작위로 뒤적이는 프로그램이 있고, 웹브라우저에서 .git 디렉토리에 접근할 수 있다면, .git 디렉토리가 털릴 가능성이 높다.

소규모 시스템은 개발과 운영의 경계가 모호하고, 곧바로 운영 시스템을 손대는 경우도 많기 때문에, 운영에서도 형상관리가 필요할 수도 있다.

운영 시스템에 .java 파일을 두고 컴파일을 할 것 같지는 앖고, .jsp 나 .js, .css 나 설정파일 정도일 것 같다.

필자는 .git 디렉토리를 보호하기 위해서, /data/webapps/ROOT 와 같이 webapps 외부에 원본 디렉토리를 두고, 이를 /var/lib/tomcat9/webapps/ROOT 로 심볼릭 링크를 걸어서 사용한다.

Apache Httpd 서버에서 .git 디렉토리 접근을 막는 방법도 생각해 볼 수 있는데, 8080, 8009 와 같이 우회할수 있는 포토도 막아야 한다.

2. 웹브라우저에서 직접 요청할 수 있는 경로에는 쓸데없는 파일을 두지 않는다.

webapps/ROOT/file/ 과 같이 웹브라우저에서 직접 요청할 수 있는 경로에 파일 업로드 디렉토리를 두면 안된다.

악의적인 사용자는 .jsp 파일을 업로드한 다음, 그 파일을 요청하는 방법으로 허가받지 않은 명령을 실행시킬 수 있다.

파일 업로드 디렉토리는 WEB-INF 혹은 기타 다른 곳에 두고, 다운로드 Servlet 을 통해서만 접근하도록 하는 것이 일반적이다.

.jsp 파일도 사용자가 직접 요청하는 것이 아니라면, WEB-INF 디렉토리 아래에 두는 것이 좋다.

3. 운영자 혹은 프로그래머를 위한 프로그램은 인트라넷에 둔다.

이런 프로그램은 인트라넷에 두어야 한다.

데이타베이스나 이메일 계정 따위를 관리하는 프로그램이 대표적이지만, 운영자를 위한 다른 프로그램들도 있다.

일반 사용자는 관리자 혹은 프로그래머를 위한 각종의 프로그램에 접근할 수 없어야 하며, 로그인 화면도 볼 수 없어야 한다.

초기 비밀번호를 변경했다고 하더라도, 비밀번호를 무작위로 입력하거나, 보안취약점을 파고드는 공격방법도 있고, 이런 것들은 쉽게 방어할 수 있는 성질의 것이 아니다.

4. 익명 사용자에 대해서는

4.1. 게시판에 Javascript 코드 따위를 올릴 수 없도록 한다.

과거에 비하면 Javascript 따위로 할 수 있는 일들이 많이 줄어들었다.

웹브라우저 취약점이 현저하게 줄어들었고, 결정적으로 ActiveX 가 없어졌다.

ActiveX 를 대체하는 기술이 사용되고 있지만, 이에 대해 일률적으로 평가할 수는 없다.

Cookie 나 Storage 정보를 탈취하거나 무한루프를 돌리는 수준 외에도, 상상력을 조금 발휘하면, 웹페이지의 모든 링크를 피싱사이트로 연결되도록 할 수도 있고, 랜섬웨어 따위를 다운로드 하도록 유도할 수도 있다.

css 나 HTML 도 악용의 소지가 있다.

HTML 의 경우 onload, onclick, onmouseover 등의 이벤트로 Javascript 코드가 실행되게 할 수도 있고, 피싱사이트로 이동시키는 링크를 추가할 수도 있다.

가능성이 높지는 않지만, (이미지를 처리하는 라이브러리에 취약점이 있다면) 그 취약점을 노릴 수도 있다.

css 는 백그라운드 이미지를 지정하거나 웹페이지 디자인을 엉망으로 만들수도 있겠지만, 최신기능 중에는 HTML 을 허용한 것과 같은 결과를 얻을 수 있는 것들도 있기 때문에, 상상력의 문제이다.

4.2. 파일 upload 도 안된다.

실행가능한 파일이나 그것을 압축한 파일은 랜섬웨어 따위이거나, 그것을 포함한 것일 수 있다.

매크로를 포함시킬 수 있는 파일들은 그 매크로에 공격 코드를 포함시킬 수 있다.

.html 파일은 그 안에 Javascript 코드를 포함시킬 수도 있고, 피싱사이트로 이동하거나 랜섬웨어 따위를 다운로드 하도록 유도할 수 있다.

이미지 파일의 경우, 가능성이 높지는 않지만, (이미지를 처리하는 라이브러리에 취약점이 있다면) 그 취약점을 노릴 수도 있다.

제목

첨부파일