개발

· 개발/RDBMS
트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 트랜잭션의 특징 원자성 (Atomicity) 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것이다. 트랜잭션은 사람이 설계한 논리적인 작업 단위로서, 일처리는 작업단위 별로 이루어 져야 사람이 다루는데 무리가 없다. 만약 트랜잭션 단위로 데이터가 처리되지 않는다면, 설계한 사람은 데이터 처리 시스템을 이해하기 힘들 뿐만 아니라, 오작동 했을시 원인을 찾기가 매우 힘들어질것이다. 일관성 (Consistency) 일관성은 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것이다. 트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이..
기존 Windows를 통한 RDP 연결이 서버에서 RDP 포트를 열고 해당 포트로 다이렉트로 진입하는 방식이였다. 다만 이 방식은, Brute Force공격에 취약하고, 포트탐지 봇등에 의해, 해당 포트를 통해 공격받을 가능성이 높았다. 따라서 해당 부분을 보안하고자, 기존 RDP연결 방식에서 SSH 터널링 방식을 추가함으로써 보안을 더욱 더 강화하였다. 목적 SSH 터널 통과로 인한 패킷 암호화 SSH 인증방식은 ssh-key 인증방식을 채용(key파일 없이 외부접속 불가) RDP 포트 미노출 내부 서버 접속 현황을 하나의 서버에서 통제 가능 단순 서버접속을 위한 포트개방이 필요없음 장점 뛰어난 보안 SSH 터널링 방식을 도입할 시, 외부에서 ssh private key 없이는 inbound rdp 접..
얼마 전 잠시 테스트용도로 외부로 노출시켜놨던 서버에 악성 맬웨어가 감지되었다. 발견된 상황과 해결방법을 아래에 정리해놓았다. 1. 발견 어느 날, DB호출 속도가 조금 느려진것같아, 서버에 접속해 top명령어를 통해 서버 리소스 상황을 확인해보는데, 이상하게 CPU점유율이 높은것을 확인하였다. 확인해보니 busybox라는 프로세스가 매우 과하게 점유하고있었다. 여기서 아 맬웨어구나 라고 직감하게 되었고, 일단 모든 포트 접근을 차단 시킨후, 현재 내가 접속한 세션을 제외한 의심스러운 세션을 확인 한 후, 접속한 세션을 kill 시킨후 작업을 진행했다. 2. 시스템에 열려있는 파일 확인 sudo lsof / | grep 'busybox' lsof는 List Open Files 의 약자이다. 현재 시스템에..
· 개발/WEB
진행 중인 프로젝트에 실시간 알림 기능 구현이 필요해졌습니다. 실시간 알림 기능은 클라이언트가 서버에게 요청을 보내는 기존 기능과는 달리, 서버가 클라이언트에게 데이터를 보내면 클라이언트가 이를 인지하고 알림을 띄워줘야하는 구조를 가지고 있습니다. HTTP 프로토콜의 주요 특징은 비연결성 입니다. 따라서 위와 같은 경우, Server가 전송하고 싶어도 해당 Client와 지속적으로 연결이 되어있지 않기 때문에 보낼 수 없는 상황이 발생하게 되는 것입니다. 이를 해결하는 방식으로 폴링, 긴 폴링, 소켓, SSE 총 네 가지가 존재합니다. Polling Client가 주기적으로 Server로 요청을 보내는 방식입니다. 일정시간마다 client가 Server로 요청을 보내 데이터 갱신이 있는지 확인하고, 갱신..
· 개발/WEB
개요 웹 어플리케이션에서 로그인을 구현하는 방법은 크게 쿠키, 세션을 이용하는 방법과 토큰을 이용하는 방법 2가지가 있습니다. 간단히 말하면 쿠키, 세션 방식은 서버에서 세션아이디를 기록하고 브라우저에서 쿠키를 저장하는 방법이고 토큰 방식은 토큰을 발행하여 토큰의 유효성을 검증하는 방법입니다. 쿠키, 세션 (cookie, session) 사용자(클라이언트)가 서버에 자원을 요청 시 서버에서 사용자를 특정할 수 있는 데이터를 기반으로 세션 아이디를 생성하고, 해당 아이디를 키값으로 하여 필요한 값들을 서버의 메모리에 저장하고, HTTP 프로토콜의 header의 setCookie를 통해서 브라우저의 쿠키에 세션 아이디를 기록하도록 합니다. 브라우저는 request 요청을 보낼 시 header에 cookie를..
· 개발/WEB
1. [SSL디지털 인증서?] SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다. SSL과 SSL 디지털 인증서를 이용했을 때의 이점은 아래와 같다. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다. 통신 내용의 악의적인 변경을 방지할 수 있다. 2. HTTP 통신의 문제점 HTTP를 사용하여 통신하고있는 내 도메인을 확인해보겠다. 스마트스니퍼를 이용하여 패킷을 가져와보겠다. 기존 HTTP방식에서는 데이터가 암호화되..
SUSEOL
'개발' 카테고리의 글 목록 (2 Page)