DBMS 터널링 관련 문제

보통 DBMS에 경우 포트를 개방하지 않고 SSH를 터널링을 하여 접속하곤 하는데
이렇게 SSH 터널링이 성공적으로 끝난 뒤 보통은 자체적으로 Handshake 패킷이 서버에서 날라오게 된다.

대표적으로 MySQL에 경우 MySQL Handshake Initialization Packet이라고 터널링이 성립된 이후에 바로 클라이언트에게 서버에 정보를 담은 패킷을 전송 하게 된다.
즉 이 시점에서 MySQL은 클라이언트가 접속했구나라고 판단했기 때문이다.

여기서 발생하는 문제로 이 시점에 터널링된 클라이언트가 일정 시간 내 해당 패킷에 맞는 응답을 전달하지 못한경우 MySQL은 DB연결을 끊어버린다.

코딩으로 DBMS와에 SSH 포워딩만 구현하여 포트만 확보해 놓은경우, 특정시간 이내
DBMS 클라이언트로 연결시도하는 코드를 구현 하지 않았다면 해당 포트를 통해서 DBMS 연결이 불가하다는 뜻이다.

DB 암호화

사용자가 입력한 비번은 해싱 해서 저장해야 하는데
문제는 사용자가 비번을 qwer1234 이따구로 하면 이건 인터넷에 해당하는 해시값이 널려있음…

이걸 Hash lookup table 이라고 하는데 이게 인터넷 상에 그럴듯한 비번은 올라와있는 경우가 있음

그래서 salt 라고 버번저장 시 내가 특수 문장을 추가로 집어넣는 것
가령 qwer1234 저장 한다면 qwer1234kasdh 로 kasdh 라는 추가적으로 문장을 추가하여 그걸 해싱 하는 거임

검증할때도 qwer1234+kasdh를 해싱한 값으로 검증하면 되고