컴퓨터 관련/기타 등등

암호만 신경써도 성공적인 보안 체계이다

sunyzero 2025. 1. 10. 11:33

2023년 1월경에 LG U+에서 해킹 침해 사고가 발생했었다. 그 결과 많은 고객의 정보가 유출되었는데, 조사 결과 원인은 관리자 유저의 암호가 "admin"이었다는 충격적인 사실이 밝혀졌다.

참고 기사 - https://n.news.naver.com/mnews/article/047/0002390308

LG U+ 해킹 사고 : 관리자 암호가 admin

 

1. 현실에서의 해킹

해킹이 등장하는 영화나 드라마를 보면 주인공들은 분당 1,000타 정도의 현란한 키보드 타이핑과 창을 엄청많이 띄워두고 급박하게 침투한다. 물론 키보드 화면에서는 빠른 속도의 Hello world 같은 기초적인 코드들을 보여주는 엉성함이 있긴 하다.

그러나 영화나 드라마는 현실과 다르다. 실상 해킹의 대부분은 brute force attack, SQL injection이나 사회공학해킹이 대부분이다. LG U+ 같은 곳이 뚫린 것이 대표적으로 brute force attack으로 뚫린 것이다. 이 공격은 별다른게 아니다. 그냥 무차별로 암호를 대입해보는 공격이다. 대표적으로 "00000", "qwer1234", "asdf1234", "q1w2e3r4", "admin", "asdfqwer" 등등 간단한 암호 테이블을 계속 시도해본다. 재밌게도 이렇게 하면 몇몇 서버들은 간단하게 뚫려버린다.

brute force attack

그래서 현실 세계의 해킹은 멋있게 타이핑하는 모습이 아니라 공격툴을 백그라운드에서 실행시켜두고 기다리는 것이 대부분이다. 그러다가 뚫리는 곳이 있으면 접속해보는 것이다. 그리고나서 root 권한을 획득하거나 혹은 각종 시스템의 암호키를 훔치려고 노력하는 것이다.

반대로 말하면 암호를 복잡하게 만들어서 관리하면 거의 뚫리지 않는다는 것이다. 

이번에 LG U+가 뚫려서 난리였지만 과거 농협도 비슷하게 암호가 너무 단순해서 해킹을 당했었다. 모대학교도 암호가 너무 단순해서 뚫렸었다. 이렇듯 암호 관리를 제대로 안해서 뚫리는 회사나 기관들이 한둘이 아니다.

 

2. 어떤 암호가 안전한가?

암호의 안전성을 판단할 때 제일 중요한 것은 길이와 알파벳 순서, 알려진 단어를 쓰지 않는 것이다. 특히 암호의 길이는 최소 12자 이상에 숫자, 알파벳, 특수문자를 섞으면 brute force attack에서 99.99% 안전하다. 그리고 암호를 알고 있는 직원이 퇴사하거나 하는 경우에는 꼭 패스워드를 바꿔야만 한다. 의외로 퇴사자에 의한 해킹이 빈번하게 발생하기 때문이다.

조금 더 보안이 중요한 회사라면 OTP라든지 FIDO2 같은 기능을 도입하면 더 좋다.

그리고 직원들에게 암호를 포스트잇으로 써서 책상이나 의자 밑에 붙이지 말라고 교육해야 한다. 특히 공기업이나 학교 같은 곳은 모니터 뒤쪽이나, 의자, 책상을 뒤집으면 암호가 써있는 쪽지가 붙어있는 경우가 진짜 허다하다.

그리고 SQL injection은 진짜 개발하는 단계에서 조금만 신경쓰면 해결이 가능한 문제인데, 이걸 안하는 회사들도 많다. 설계할 때 SQL injection 방어에 대해서 꼭 신경써서 시스템을 개발해야 한다.

 

3. 암호를 저장하는 방법

시스템을 설계할 때 암호를 plain text로 저장하도록 설계하는 것은 매우 위험한 행동이다. 암호는 무조건 hash된 값으로 저장해야만 하며, 그 자체를 hash하기보다는 salt와 여러번 해시를 반복해서 유추할 수 없도록 해야 한다. 예를 들어 salt도 짤라서 반절을 먼저 더해서 10번을 hash하고 그 다음 반절을 더해서 몇십번을 더 hash를 하면 해시값을 보고 원래 값을 알아내기는 힘들다. 이렇게 해야만 내부자의 소행으로 암호 데이터베이스가 유출된 경우에 해킹을 방어 할 수 있다.

 

4. 그 외의 보안

이 외에 방화벽을 통한 IP차단, 로그인 실패 횟수에 따라서 차단하기, 외부 설치 프로그램 막기 정도는 시스템 관리자가 꼭 도입해야 하는 기능이다. 특히 외부에서 랩탑(노트북)을 들고 들어오는 직원들 중에 이상한 프로그램 설치해서 사고를 치는 경우가 꽤 많다. 그래서 몇몇 보안이 까다로운 회사들은 외부에서 랩탑을 들고 오는 직원들은 맥북, 리눅스만 쓰도록 강제하는 경우도 많다. (대부분의 감염은 윈도 컴퓨터를 통해서 일어나기 때문이다)

그리고 조금 더 보안을 챙기자면 DDoS 방어하는 전략도 짜두는게 좋다. DDoS 공격은 직접적인 유출 피해가 아니라 서비스 불가로 얻는 피해이고, 방어하기가 더 까다롭다. Cloudflare 서비스를 사용하는 것도 방법이지만, 시스템적으로 설계할 때 특정 IP에서 특정 시간대에 많이 접속한다든지, 혹은 keepalive를 이용해서 접속 후 아무짓도 안하면서 시간을 질질 끈다든지 하는 것들을 감지해서 차단할 필요가 있다.

그리고 항상 중요한 데이터는 백업을 해야 한다. 하지만 sftp, 스토리지, NAS같은 것으로 다이렉트 백업하는 짓은 매우 위험하다. 이러면 서버가 털리면 백업 서버나 스토리지, NAS까지 줄줄이 털린다. 이런 비극적인 상황을 막기 위해 백업을 위한 전용 서비스를 간단하게 개발하고, 시스템 유저의 암호나 key 없이, 프로그램 레벨에서의 해시된 암호로 단방향 백업만 받을 수 있도록 만들어야 한다.(알려진 툴을 쓰는 것보다 직접 개발하는게 오히려 보안이 더 높다. 알려진 툴들일 수록 해킹이 더 쉽다) 이런 간단한 백업 서비스 개발에는 큰 돈이 드는게 아니다.

 

5. 결론

보안 기법은 뭐 대단한 것을 하라는 것이 아니다. 진짜 기본적인 암호만이라도 잘 관리하면 90% 이상이다. 끝.

반응형