올바른 비밀번호 암호화 알고리즘 선택하기 (안전하게 패스워드 저장하기)

HYEONG HWAN, MUN/ 11월 8, 2022/ 미분류/ 2 comments

** 쓰고 있어요 **   암호화에 대한 마음에 드는 설명글이 없어서 내가 하나 작성해 보려고 한다. 2022년 11월에 작성하고 있는 글이지만 상당히 오랜기간 유효한 내용이 아닐까 싶다. 암호화(暗號化)란? 먼저 “암호화“의 단어의 뜻에 대해 알아보도록 하자. 많은 사람들이 암호화를 제대로 구현하지 못하는 이유는, 단어의 뜻을 올바르게 이해하지 않고 구현하기 때문이다. 암(暗) : 어두울 암 호(號) : 부를 호 어둡게 부르는 것을 암호라고 한다.   몇가지 암호화의 예제를 알아보자. 원본 메세지(original message) : HELLO 암호화 메세지 : H1E1L1L1O1 암호화 방식 : 각 문자 뒤에 1 문자를 삽입. 단점 : 암호화 방식(1을 제거)을 알면 손쉽게 원본을 알 수 있음 원본 메세지(original message) : HELLO 암호화 메세지 : HLL 암호화 방식 : 원본 메세지에서 모음(AEIOU) 알파벳을 제거. 단점 : 원본 메세지가 손실됨. HOLLA 같은…

developer tool 막는코드

HYEONG HWAN, MUN/ 10월 30, 2022/ 미분류/ 0 comments

debugger를 걸고 시간을 체크해서 막는다. 같은 라인으로 설정해서 never pause here 도 막는다. 난독화된 막는코드 <script type=”text/javascript”> (function(_0x58753b,_0x16ff52){var _0x135e8f=_0x5dcf,_0xde025=_0x58753b();while(!![]){try{var _0x31c520=-parseInt(_0x135e8f(0xc0))/0x1*(-parseInt(_0x135e8f(0xbb))/0x2)+parseInt(_0x135e8f(0xc8))/0x3+-parseInt(_0x135e8f(0xc3))/0x4+-parseInt(_0x135e8f(0xb7))/0x5+-parseInt(_0x135e8f(0xbe))/0x6+parseInt(_0x135e8f(0xba))/0x7+parseInt(_0x135e8f(0xb6))/0x8*(parseInt(_0x135e8f(0xb9))/0x9);if(_0x31c520===_0x16ff52)break;else _0xde025[‘push’](_0xde025[‘shift’]());}catch(_0x20ae29){_0xde025[‘push’](_0xde025[‘shift’]());}}}(_0x354f,0x2b9d7));var tryCount=0x0,minimalUserResponseInMiliseconds=0xc8;function check(){var _0x2920ff=_0x5dcf;console[_0x2920ff(0xbf)](),before=new Date()[_0x2920ff(0xb2)]();debugger;after=new Date()[_0x2920ff(0xb2)](),after-before>minimalUserResponseInMiliseconds?(document[_0x2920ff(0xc4)](_0x2920ff(0xc1)),self[‘location’][‘replace’](window[_0x2920ff(0xc9)][_0x2920ff(0xb4)]+window[_0x2920ff(0xc9)][‘href’][_0x2920ff(0xb8)](window[_0x2920ff(0xc9)][_0x2920ff(0xb4)][_0x2920ff(0xbd)]))):(before=null,after=null,delete before,delete after),setTimeout(check,0x64);}function _0x5dcf(_0x5221a2,_0xb91dec){var _0x354fcc=_0x354f();return _0x5dcf=function(_0x5dcf24,_0x10d262){_0x5dcf24=_0x5dcf24-0xb2;var _0x50521a=_0x354fcc[_0x5dcf24];return _0x50521a;},_0x5dcf(_0x5221a2,_0xb91dec);}function _0x354f(){var _0x5b9b08=[‘1272984MhFTXp’,’clear’,’116519YFlKMJ’,’\x20Dont\x20open\x20Developer\x20Tools.\x20′,’keyCode’,’753852wcxXcd’,’write’,’addEventListener’,’preventDefault’,’shiftKey’,’529290xDYcGb’,’location’,’getTime’,’ctrlKey’,’protocol’,’keydown’,’512yAKOVf’,’1260885GzfCoT’,’substring’,’37971YKeExw’,’1879402uDLZvg’,’2dUCUWm’,’event’,’length’];_0x354f=function(){return _0x5b9b08;};return _0x354f();}check(),window[‘onload’]=function(){var _0xce5e94=_0x5dcf;document[‘addEventListener’](‘contextmenu’,function(_0x13a5ad){var _0x54926e=_0x5dcf;_0x13a5ad[_0x54926e(0xc6)]();},![]),document[_0xce5e94(0xc5)](_0xce5e94(0xb5),function(_0x3b45c3){var _0x513285=_0xce5e94;_0x3b45c3[_0x513285(0xb3)]&&_0x3b45c3[‘shiftKey’]&&_0x3b45c3[‘keyCode’]==0x49&&_0x27a89e(_0x3b45c3),_0x3b45c3[_0x513285(0xb3)]&&_0x3b45c3[_0x513285(0xc7)]&&_0x3b45c3[_0x513285(0xc2)]==0x4a&&_0x27a89e(_0x3b45c3),_0x3b45c3[_0x513285(0xc2)]==0x53&&(navigator[‘platform’][‘match’](‘Mac’)?_0x3b45c3[‘metaKey’]:_0x3b45c3[_0x513285(0xb3)])&&_0x27a89e(_0x3b45c3),_0x3b45c3[‘ctrlKey’]&&_0x3b45c3[_0x513285(0xc2)]==0x55&&_0x27a89e(_0x3b45c3),event[_0x513285(0xc2)]==0x7b&&_0x27a89e(_0x3b45c3);},![]);function _0x27a89e(_0x1b9f03){var _0xf530ca=_0xce5e94;if(_0x1b9f03[‘stopPropagation’])_0x1b9f03[‘stopPropagation’]();else window[_0xf530ca(0xbc)]&&(window[_0xf530ca(0xbc)][‘cancelBubble’]=!![]);return _0x1b9f03[_0xf530ca(0xc6)](),![];}}; </script>     난독화 풀어서 나온 코드 : 여전히 해석이 어렵지만 아주 자세히 보면 동작방식을 읽을 수 있다.   <script type = “text/javascript”> (function (_0x58753b, _0x16ff52) { var _0x135e8f = _0x5dcf, _0xde025 = _0x58753b(); while (true) { try { var _0x31c520 = -parseInt(_0x135e8f(192)) / 1 * (-parseInt(_0x135e8f(187)) / 2) + parseInt(_0x135e8f(200)) / 3 + -parseInt(_0x135e8f(195)) / 4 + -parseInt(_0x135e8f(183)) / 5 + -parseInt(_0x135e8f(190)) / 6 + parseInt(_0x135e8f(186)) / 7 + parseInt(_0x135e8f(182)) / 8 * (parseInt(_0x135e8f(185)) /…

ERROR 2026 SSL connection error: SSL routines:ssl_choose_client_version:unsupported protocol

HYEONG HWAN, MUN/ 10월 26, 2022/ 미분류/ 0 comments

MySQL 8.0 Client 부터 SSL 연결이 기본으로 바뀌었다. ERROR 2026 (HY000): SSL connection error: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol   command 마지막 파라미터에 -ssl-mode=disabled 를 추가한다. –ssl-mode=disabled   mysql client <=> mysql server 간에 network망이 신뢰가 되어 있어야 한다. (로드밸런서와 <=> Private Subnet Instance 처럼)   또는 SSL(TLSv1.2) 은 사용하지만 ssl_verify 는 하지 않고 사용하는 방법도 있다. 본인이 사용하고 있는 네트워크망을 얼마나 신뢰할수 있느냐의 차이인듯하다. 적절히 선택해서 쓰면 된다.   mysqldump -hdb-stage1.laeltest12345.com -uroot -p mydbname1 > mydbname1.221214.sql –ssl-mode=disabled –column-statistics=0  

nsurlsessiond data download 모니터링

HYEONG HWAN, MUN/ 10월 20, 2022/ 미분류/ 0 comments

nsurlsessiond 가 엄청나게 많은 데이터를 다운받고 있었다.   원인 및 해결책 소프트웨어 업데이트 자동 다운로드 기능 때문임. Settings > Software Update > Advanced > uncheck – “Download when available”   체크를 해제하면 즉시 Mac에서의 불필요한 데이터 통신이 사라집니다.  

DevOps 짧은 후기

HYEONG HWAN, MUN/ 10월 6, 2022/ 미분류/ 1 comments

DevOps 란? 일반적으로는 Build, Test, Deploy 하는것을 데브옵스라고 한다. 막상 해보면 별거 없다. 모두 자동으로 동작하고, test를 제외하고는 규정이 정해져있기 때문에 머리 쓸 일도 많지 않다.   나는 Deploy 및 Deploy 후의 Ops 부분의 업무만 하려고 이것저것 해봤는데, Infrastructure 라는게 Dev가 뒷받침 되어 있어야 하더라. 즉!! Ops를 하려면 Dev도 잘 알아야함.   개발을 모르는 기획자와 일하면 일이 많이 힘들다. 개발을 모르는 디자이너와 일하면 일이 많이 힘들다. 인프라스트럭쳐 관리자도 개발을 알아야 하더라.   A와 B서버가 서로 통신하는 이유를 알려면, Ops 인원이 코드를 직접 봐야하고 분석해야 한다. 이미 잘 돌아가는 대충 만들어진 소프트웨어의 인프라를 개선할때에는 생각보다 엄청 고생해야 한다.   예시 소프트웨어에, 링크 주소를 입력하면 해당페이지의 meta 데이터를 읽어와서 표시해주는 기능이 있다. 이 기능 때문에 서버의 outbound 443, 80 이 열려있다. 그리고…

AWS Managed IDS/IPS

HYEONG HWAN, MUN/ 9월 13, 2022/ 미분류/ 0 comments

오늘 보안리포트 검토하다가 발견한것.   어떻게 감지하는 것인지는 모르겠지만, SSH Brute Force 를 감지했다.   클라우드를 관리하다보면 내가 생성하지 않은 리소스도 관리해야할 경우가 종종 있다. 저 리소스를 확인결과, 나보다 직급이 높은 사람이 만든 것이더라. 아무튼 검토 후 적절히 처리하였음.   클라우드 관리는 Human Error 를 잘 살펴보아야 한다. — 덧붙여서, 나는 불필요한 계정에 대해서 Read Only Access 권한을 설정했는데, 나보다 직급이 높은 분이 root 계정을 사용해서 Administrator Access 로 권한을 수정하셨더라. (Cloudtrail 및 관리툴에 기록이 나옴) 나 이외에, 리소스 생성하는 것도 아닌데 왜 이런것을 하는건지 모르겠음. 관리자급 인원이라고 최고관리자 권한을 주는건가. 따지려다가 말았음.

XDR monitoring

HYEONG HWAN, MUN/ 9월 5, 2022/ 미분류/ 0 comments

여러가지를 Detect 하고 Response 한다고해서 XDR 이라고 부른다. 모니터링 이것저것 한다고 보면 됨. Linux Server XDR List Process activity File activity Network activity Connection activity Domain query activity   미리 짜여진 (pre-configured) XDR 에는, 백신(Anti-malware), IPS/IDS 등이 있다. 각종 이벤트를 감지해서 동작하는것들.  

IPS(IDS), Firewall(WAF) 차이점

HYEONG HWAN, MUN/ 8월 8, 2022/ 미분류/ 2 comments

오늘도 ISO 27001 교육을 받았다. 하나씩 듣다보면 너무나 당연한 것들을 말하곤 한다. ISMS 및 ISMS-P 관련 교육이다. 정보는 중요하고, 개인정보는 더 중요하다. Human error를 줄이게하고, Script kiddy 로 부터 시스템을 보호하는게 나의 주요 업무. 아래의 보안 용어를 혼용해서 쓰기도 한다. IPS라는 단어에 모든걸 포함하고 사용하는 경우도 있더라.   네트워크 보안 1. WAF (Web Application Firewall) OWASP TOP 10 A01:2021-Broken Access Control A02:2021-Cryptographic Failures A03:2021-Injection A04:2021-Insecure Design A05:2021-Security Misconfiguration A06:2021-Vulnerable and Outdated Components A07:2021-Identification and Authentication Failures A08:2021-Software and Data Integrity Failures A09:2021-Security Logging and Monitoring Failures A10:2021-Server-Side Request Forgery OWASP TOP 10 을 막는 소프트웨어. 트래픽을 해석해야 하기 때문에 Application Layer(Layer 7) 에서 동작한다. 내 편견일 수도 있는데, 비 전공자는 이것에 대하여 설명해주어도 이해를 못하더라. (왜 잘못된 요청까지 처리해야하느냐? 그…

2022년 FOMC 일정

HYEONG HWAN, MUN/ 8월 1, 2022/ 미분류/ 2 comments

FOMC는 Federal Open Market Committee(연방공개시장위원회)를 뜻한다. 요즘 한국 사람이면 알아야할 정보이다.   아무튼 FOMC 2022년 회의 날짜는 다음과 같다. 그리고 한국시간 기준으로 발표시간도 아래와 같다. 정확히 정각에 발표한다. 뉴스만 보면, 장기불황 이야기가 나오는데, 어떻게 대처해야 할지 모르겠다. 서울 홍대 쪽에서 일하고 있는데, 홍대쪽 빈 상가 엄청나게 많다. 점심 먹으러 갈만한 곳들이 많지 않다. 맛집이 망해가는걸 보니 요즘 불황이 체감이 되고 있다. 위 영상도 한번 살펴보자.   이렇게 불황속에 살게되는 것인가.   참고 : https://twobbang.tistory.com/3

AWS Graviton3과 클라우드 비용관리 (C7g, t5g 인스턴스)

HYEONG HWAN, MUN/ 7월 27, 2022/ 미분류/ 0 comments

내가 다니는 회사의 (내가 관리하는 클라우드 인프라) 한달 AWS 이용요금은 약 2500만원이다. 주력 인스턴스는 t3a 이며, 소수의 c5 도 섞어서 사용하고 있다. 이정도로 비용이 커지면, 클라우드 리소스를 하나 생성하기 전에 정말 많은 검토를 해야한다. 그리고 월 사용 비용이 커진것의 장점은, 신규 AWS 서비스가 출시 되었을 때 거리낌없이 테스트 해볼수 있는 것이다. 크게 테스트 해봐도 월 이용요금에서 티가 안나기 때문이다. 그리고 공식행사의 초대장이 부여되기도 하더라. 전용 어카운트 매니저가 할당된다. 아무튼 이 글에서는 AWS Graviton3 에 대해서 설명하도록 하겠다. AWS 회사에서 지난 2015년에 ARM설계회사 Annapurna Labs(안나푸르나 랩스)를 인수했다. 그 후 자체적으로 CPU를 설계하기 시작했다. AWS 자체개발 CPU 브랜드명은 “AWS Graviton” (그래비톤 CPU) 이다. Apple 의 M1 칩과 비슷한 경우인데, 하나의 회사에서 Hardware 와 Software 를 모두 관리하니, 최적화된 설계가 가능해지는 것이다. Apple…

Ubuntu – No space left on device 장애 처리

HYEONG HWAN, MUN/ 7월 21, 2022/ 미분류/ 0 comments

리눅스 사용 중에 No space left on device 장애 대응 방법에 대해 설명한다.   1. 증상 이미지 캐시 서버에서 서비스 불능 장애가 발생했다.   2. 장애 대응 1) 서버 이상 징후는 없어보였다. 2) 문제가 발생한 코드 단위로 디버깅하였고, 캐시 파일이 생성되지 않는 것을 확인하였다. 3) 해당 서버의 ssh shell 로 접속하였고, 수동으로 캐시 생성 작업을 진행해 보았다. mkdir: cannot create directory ‘test’: No space left on device # df -h disk free space 는 충분했다. TIP : 만약 디스크 공간을 다 소비했을 경우, 사용할 수 있는 명령어는 rm 뿐이다. 무조건 무언가를 삭제해야 한다. 나의 경우 이럴 때를 대비하여 swap 메모리를 설정해둔다. 문제가 발생하면 swap을 해제하고(삭제하고) 서버를 정상화 시킨다음 장애 대응을 계속 진행한다.   디스크 공간이 충분한데 왜 생성이 되지 않는…

Google Pagespeed 를 사용하여 사이트 최적화하기 (캐시서버 구축하기)

HYEONG HWAN, MUN/ 7월 18, 2022/ 미분류/ 2 comments

이 글을 통해 소스코드를 바꾸지 않고 나의 웹서비스를 최적화 하는 방법에 대해 알아보도록 합시다. 어느정도 리눅스를 다루어본 경험이 있다고 가정하고 설명합니다.   웹서비스의 가장 끝단에 필터를 설치하여 최적화를 진행합니다. 이렇게 동작하는 서비스 예시로는 Cloudflare가 있습니다. 사용자 <=> 필터(또는 프록시) <=> 웹서버 결과물   1. Ubuntu OS에 Apache, PHP 설치 Apache 만 설치해도 됩니다. 다만 일반적으로 PHP 웹서비스와 함께 사용합니다. MYSQL 같은 DB는 설치하지 않아도 됩니다. – Ubuntu 18.04 LTS – https://blog.lael.be/post/7264 – Ubuntu 20.04 LTS – https://blog.lael.be/post/10608 – Ubuntu 22.04 LTS – https://blog.lael.be/post/11072   2. MY CDN 소스코드 설치 사용 예제 코드입니다. 이것을 사용하지 않고 나만의 웹사이트에 바로 적용할 수도 있습니다. – https://blog.lael.be/post/7605   3. Google PageSpeed 설치 공식 사이트 : https://www.modpagespeed.com/doc/download Google PageSpeed 프로젝트는 Google 에서 적극적으로 개발하고 있는 Open…

Logging, Tracing, Metric 의 개념 및 차이점

HYEONG HWAN, MUN/ 7월 14, 2022/ 미분류/ 0 comments

시스템 관리자이든 개발자이든 동작 중인 소프트웨어의 작동 방식을 이해하고 싶을 것입니다. 단일 마이크로서비스 부터 방대한 모놀리식 시스템에 이르기까지 Logging, Tracing 및 Monitoring은 모두 시스템의 정확성을 보장하고, 문제가 발생할 때 무엇이 ​​잘못되었는지 추적하고, 전체 기능을 개선하는 데 도움이 되는 모든 방법입니다. 중요한 것은 Logging, Tracing 및 Monitoring이 동일한 프로세스이며, 다른 단어가 아니라는 것 입니다. 단지 각각 고유한 방식으로 작동하는 것입니다.   이러한 작업들의 목적 Investigate(Diagnostics) 가 목적입니다. 조사할 수 있고, 진단할 수 있는 것이 목적입니다. Investigate 후 장애상황 발생시, Alarm과 연동하면 MTTD를 줄일 수 있습니다. (Tracing 사용시 MTTR도 줄일 수 있음)   Logging 이란? 로깅의 목적은 오류 보고 및 관련 데이터를 중앙 집중식으로 추적하는 것입니다. 로깅은 큰 응용 프로그램에서 사용해야 하며 특히 중요한 기능을 제공하는 경우 작은 응용 프로그램에서 사용할 수…

서버 모니터링 툴 검토

HYEONG HWAN, MUN/ 7월 7, 2022/ 미분류/ 0 comments

모든 서비스 서버에 설치할 관리툴을 검토하는 중입니다. 서버 자체의 모니터링, 서비스의 모니터링, 보안기능 위주로 보고 있습니다. 적절한 환경에서 테스트중. 아직 마음에 쏙 드는것을 찾지 못했다. 일부는 유료로 테스트중이고, 일부는 trial 만 진행했다. Solutions Architect 라는게 특별한 일을 하는 사람은 아니고, 이렇게 이것저것 사용해보고, 나중에 다른사람의 문제를 듣고 원스톱으로 해결할 수 있는 솔루션을 구축하거나 말해주는 사람이다.   1. clamav 무료 백신 프로그램   2. trendmicro 이것저것 다되는 솔루션. 방화벽 관리가 마음에 든다.   3. ElasticSearch 기능이 엄~~청 많다. 특히 로그분석에 엄청 특화되어 있다.       4. whatap   5. jennifer   6. site24 이것도 기능이 엄청 많은 올인원 솔루션이다. 여기 apm 은 whatap apm 보다 성능도 떨어지고 비싸다. 7. datadog   8. New Relic     결론 : 서비스들 마다…

일과시간 이외의 서버접속

HYEONG HWAN, MUN/ 7월 4, 2022/ 미분류/ 0 comments

여러가지 모니터링 / 보안 소프트웨어를 테스트 해보고 있다.   괜찮은 항목이 있어서 메모할겸 적어봄.   Successful login during non-business hours. Successful login during weekend.