목차 개요 nginx에서 특정 아이피들을 차단했지만 문을 닫더라도 두드릴 수는 있기 때문에 지속적으로 시스템 리소스를 사용한다. 따라서 지속적으로 접속을 시도하는 IP는 운영체제에서 차단을 하기로 결정했다. 처음에는 오라클의 VCN 설정만 믿고 iptables는 규칙을 다 제거했었다. 그래도 못 미더워 보통 iptables를 설정하는 것처럼 허용할 포트와 막을 포트부터 설정하려 했으나... $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT $ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT 80 포트와 443 포트를 허용해줘도 실제로 사이트에 접속해보면 접속이 안된다. 아래와 같이 오라클 클라우드에서 안된다고 한다...
Coding
목차 http method 종류 GET 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 오직 데이터를 받기만 한다. HEAD GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다. POST 특정 리소스에 엔티티를 제출할 때 쓰인다. 이는 종종 서버의 상태의 변화나 부작용을 일으킨다. PUT 목적 리소스 모든 현재 표시를 요청 payload로 바꾼다. DELETE 특정 리소스를 삭제한다. CONNECT 목적 리소스로 식별되는 서버로의 터널을 맺는다. OPTIONS 목적 리소스의 통신을 설정하는 데 쓰인다. TRACE (en-US) 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 한다. PATCH 리소스의 부분만을 수정하는 데 쓰인다. http method 차단..
jpg나 png 같은 정적 파일까지 모두 로그에 남기다 보니 로그를 파악하기가 어렵다. 조금 더 쉽게 로그를 확인하기 위해 특정 확장자의 파일들을 로그에서 제외한다. nginx 설정 파일(default 등)의 하단에 아래의 내용을 추가한다. 로그에 기록할 확장자는 지우고 더 제외할 확장자가 있다면 추가로 입력한다. # Log Exception - file map $request_uri $except_file { ~*\.(ico|css|js|gif|jpg|jpeg|png|svg|woff|ttf|eot)$ 0; default 1; } 로그는 서버 블록, location 블록마다 다 기록할 수 있기 때문에 특정 로그에서만 제외하려면 같은 블록에서 작성해야 한다. 나는 서버 블록에서 로그를 기록하기 때문에 서버..
목차 특정 봇/IP의 로그 제외 일단 나보다도 많이 접속하는 구글 봇과 내 접속 로그가 access.log에서 가장 많은 부분을 차지한다. 따라서 내가 주로 사용하는 IP들도 같이 로그에서 제외할 생각이다. 설정할 사이트의 nginx 서버 설정 파일에 아래의 내용을 추가한다. 제외할 봇과 IP 목록은 서버 블록 밖에 있어야 한다. # Default HTTPS server configuration server { [...] set $logging 1; if ( $except_bot = 0 ) { set $logging 0; } if ( $except_ip = 0 ) { set $logging 0; } access_log /var/log/nginx/도메인.access.log combined if=$loggi..
목차 개요 사이트 내에 존재하지 않는 경로에 접속할 경우 일반적으로는 NodeBB같은 CMS에서 페이지가 존재하지 않는다는 내용을 출력한다. 하지만 CMS 외부에 접속 가능한 경로를 지정해뒀을 때 해당 경로에 없는 파일로의 접속을 시도하거나 오류가 나면 nginx에서 응답 코드를 출력한다. 이런 응답 코드도 서버 공격자에게는 정보가 될 수 있기 때문에 모두 404로 통합하는 것이 좋고, 기왕이면 응답 코드 페이지를 따로 설정해서 서버에 대한 정보(nginx)를 알려주지 않는 것이 좋다. HTTP 응답 코드의 종류 1xx ~ 3xx는 응답 코드를 출력하지 않으니 따로 적진 않았다. 1xx (정보): 요청을 받았으며 프로세스를 계속한다. 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다. 3x..
목차 개요 한 사이트에 여러 가지 CMS를 사용할 수도 있지만, 나는 보통 하나의 CMS만을 사용하면서 CMS 자체적으로 해결할 수 없는 부분은 따로 html을 만드는 편이다. 하지만 이렇게 추가적인 html 파일을 웹에서 접근이 가능한 경로에 업로드하면 문제가 생긴다. CMS에서의 로그인 상태로 html 파일에 대한 접근 권한을 설정할 수 없기 때문에 모든 사람이 해당 html 파일에 접근할 수 있는 것이다. 이 문제를 해결하기 위해 StudyForUs에 질문을 올렸고, YGL님께서 알려주신 node의 내장 기능 fs 모듈을 통해 로컬 파일을 include 하는 방식과 OAUTH2님이 알려주신 http auth request 모듈을 통한 인증 방식 중 후자를 먼저 시도해봤다. 인증 방식 http aut..