개발16 Log4j 라이브러리 보안 이슈(CVE-2021-44228). 영향 받는 버전 및 해결 방안 로그를 남기기 위한 라이브러리 가운데 Log4j라는 오픈 소스가 있다. 오픈 소스이면서도 로그 저장에 있어 유용한 기능들이 많아 JAVA 프로그래밍을 하는 대부분의 개발사에서 사용 중인 라이브러리인데, 이번에 문제가 조금 생겼다. 아니 좀 크게 생겼다. 문제가 된 것은 Log4j 라이브러리의 취약점(명령어를 실행시킬 수 있다는) 때문인데, 앞서 말했듯이 JAVA 프로그래밍된 대부분의 사이트 및 프로그램에서 Log4j를 사용 중이기 때문에 더 문제점이 크다고 볼 수 있다. 덧붙여 이 이슈가 문제가 되는 것은 서버에 로그인한 것 만으로 해커가 사용자의 컴퓨터를 사실상 원격 조종할 수 있는 것이기 때문이다. 단순히 원격 조종이라고 하면 실감이 안날 수도 있는데, 구체적으로 설명하자면 비밀번호도 없이 서버를 통.. 개발/Java 2021. 12. 13. 리눅스 서버 세션 타임아웃으로 종료되는 것을 방지해 보자 리눅스 서버에서 로그를 확인하거나 기타 다른 쉘 작업을 위해 세션을 맺어 놓았는데, 잠시 어딘가 다녀오니 세션이 끊어져, 다시 로그인해야 했던 경험들을 한 사람들이 많을 것이라고 생각한다. 만약 그랬던 경험이 있다면, 리눅스 서버에서 세션(로그인)을 맺은 후 아래의 명령어를 쳐 보도록 하자. 어디가서 시간을 꽤 오래 보내고 오더라도 세션이 유지되어 있을 것이다. ㅁ명령어 : export TMOUT=0 개발/알아두면 쓸데 있을까? 2021. 12. 12. 리눅스 서버에서 비밀번호 만료 시 cron 배치 실행 멈춤 현상 이번에 배치를 모니터링 도중 당황스러운 일을 겪었다. 전 날 배치를 확인해보니 08시 이후로 배치가 실행되지 않았다. 급히 확인을 해보고자 서버를 켰더니 날 당혹스럽게 하는 메시지가 노출된다. 비밀번호 만료 및 비밀번호 변경 요청.... 그렇다. 보안을 위해 서버 비밀번호를 주기적으로 변경하도록 강제해 놓았는데, 이렇게 만료기간이 지났음에도 변경하지 않는다면 crontab에 등록을 해놓은 배치들은 실행이 되지 않는다. 해결 방법은 비밀번호를 변경하고 배치를 매뉴얼 수행하는 방법밖에 없다. 나 같은 고민을 하는 사람이 없었으면 하는 마음에 몇 자 남긴다. 개발/알아두면 쓸데 있을까? 2021. 11. 30. 데이터베이스(DB)란 무엇인가? DataBase 혹은 DB라 불리는 이것은 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 말한다. 데이터베이스 자체만으로는 거의 아무 것도 못하기 때문에 그걸 관리하는 시스템과 통합되어 제공되며 따라서 정확한 명칭은 데이터베이스 관리 시스템(DBMS)이 된다. 데이터베이스만 제공되는 건 CSV같이 아주 단순한 데이터에 국한되는데 이걸 직접 사용하는 경우는 많지 않고 이런 데이터를 RAW데이터로 간주해 다른 DBMS시스템에 적재하고 사용하는 게 일반적이다. 최근의 IT 동향을 보면 관계형 데이터베이스(RDBMS)가 가장 널리 쓰이고 있다. 그리고 이 관계형 데이터베이스를 이용하기 위한 표준 언어가 만들어져 있는데 그것이 SQL이다. SQL은 구조화 질의 언어(Structure.. 개발/DB 2021. 1. 31. JAVA의 객체지향프로그래밍(OOP)에 대해 알아보자 - 추상화 편 지난 시간에는 객체지향 프로그래밍의 한 요소인 캡슐화에 대해 다뤄보았다. 이번 시간에는 객체지향 프로그래밍의 요소인 추상화에 대해 알아보고자 한다. 추상화란 말은 어려워 보이지만 실상 안으로 들어가 보면 생각하기에 따라 참 단순한 개념이라고 할 수 있다. 이번 포스팅에서는 최대한 이것을 알기 쉽게 설명해 보고자 한다. 첫 번째로 예를 들자면 강아지, 고양이, 양, 소 이렇게 4마리의 동물이 있다고 했을 때 이것들을 하나로 묶기 위한 공통의 카테고리를 뽑는다면 무엇으로 뽑겠는가? 필자라면 문제에 답이 있다고 동물이라는 카테고리로 강아지, 고양이, 양, 소를 묶을 것이다. 이렇게 동물이라는 카테고리로 묶는다고 하였을 때 동물이 추상 클래스(abstract), 그리고 강아지, 고양이, 양, 소가 동물이라는 추.. 개발/Java 2019. 11. 14. JAVA의 객체지향프로그래밍(OOP)에 대해 알아보자 - 캡슐화 편 JAVA를 사용하여 개발하다 보면 반드시 알아야 하는 일부 개념들이 있다. OOP라는 개념이 그것인데, OOP란 객체지향 프로그래밍의 약자다. 그리고 이 객체지향 프로그래밍은 캡슐화, 상속, 추상화, 다형성을 통해서 이루어진다. 앞으로 이어지는 포스팅을 통해 해당 내용에 대해서 알아보는 시간을 보내고자 한다. 오늘은 캡슐화에 대해서 알아볼 것인데 거창한 것은 아니고, 실제 현장에서 어떻게 캡슐화가 이용되는지 아래 글을 통해 조금이라도 알고 가기를 원하는 마음으로 작성해 보고자 한다. 해당 글이 부디 도움이 되었으면 좋겠다. 캡슐화는 다음과 같은 내용으로 정의가 되고 있다. 데이터들(변수 : variable)과 그 데이터를 처리하는 코드(메서드 : method)들을 하나의 단위(Single Unit)로 묶.. 개발/Java 2019. 11. 12. 리눅스 7편-웹개발자에게 필요한 tail -f 옵션의 명령어를 활용해 보자 리눅스 관련 7번째 포스팅이다. 지난 편에 find/grep 명령어 포스팅 이후 고민을 하는 시간을 가졌다. 지금 이 글을 보는 분들은 어떤 분들일까? 어떤 글이 도움이 될까?라고 고민을 해보았는데, 이 검색어로 들어오는 분들은 현직에서 개발을 하는 사람들 혹은 개발을 하려는 사람들이 아닐까라는 생각이 들었다. 그래서 사실 원래 이번 편에서는 jdk 설치 및 개발환경 구축 이야기를 하려고 했는데 지난번 명령어 편에서 다루지 않은 tail에 관련해서 다루고 넘어가려고 한다. 사실 로그 분석에 cat 보다 많이 쓰이는 것이 tail이기도 하고 말이다. 실제 tail은 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용된다. 현재 해당 포스팅을 하는 리눅스에는 서버가 구축되어 있지 않기 때.. 개발/Linux 2019. 10. 10. 리눅스 6편-파일찾기 find/grep에 대해 알아보자 지난 시간까지 디렉터리도 만들어보고 vi 편집기를 통해 새로운 파일도 만들어 보았다. 그러면 이제 다음 과정으로 리눅스 내에서 파일을 찾는 방법에 대해 알아보고자 한다. 기본적으로 파일이 어디에 어떤 것이 위치해 있는지 모두 다 기억하고 있으면 좋겠지만 사람의 기억력이라는 것이 사실 그렇게 좋지 않다. 그리고 리눅스는 이러한 사용자들을 위해 다양한 찾기 기능을 제공해 주고 있는데, 그 가운데 find 및 grep 기능에 대해 살펴보는 시간을 갖도록 하겠다. 관련 글 2019/09/26 - [Linux 이야기] - 리눅스 1편-맥(Mac)에 Linux 설치하기(Ubuntu) 2019/09/27 - [Linux 이야기] - 리눅스 2편-Ubuntu 루트(root) 계정을 활성화해보자 2019/09/28 - .. 개발/Linux 2019. 10. 8. 리눅스 5편-vi 편집기에 대해 알아보자 지난 시간에는 기본적인 명령어들에 대해서 익히는 시간을 가졌다. 지난 포스팅에 기재했던 명령어들 이외 tail, cat 같은 명령어도 있지만 이러한 것들은 추후 필요할 때 기재하는 것으로 하고 오늘은 vi 편집기에 대해 알아보고자 한다. tail의 경우 파일을 역순으로 읽어오는 명령어인데 주로 로그 파일을 호출하여 로그 분석에 쓰이는 경우가 많다. 나중에 리눅스에 서버 설치도 진행해볼 예정이니 그때 원 없이 다뤄보도록 하자. 관련글 2019/09/26 - [Linux 이야기] - 리눅스 1편-맥(Mac)에 Linux 설치하기(Ubuntu) 2019/09/27 - [Linux 이야기] - 리눅스 2편-Ubuntu 루트(root) 계정을 활성화해보자 2019/09/28 - [Linux 이야기] - 리눅스 3.. 개발/Linux 2019. 10. 7. 리눅스 4편-기본 명령어 편 이전 글 2019/09/28 - [Linux 이야기] - 리눅스 3편-리눅스의 디렉터리 구조를 파악하자 지난번 글에서는 리눅스의 디렉터리 구조에 대해 간략히 알아보았는데, 오늘은 이어서 리눅스를 이용하면서 자주 이용하게 될 명령어를 익혀보는 시간을 가져보고자 한다. 우리가 설치한 Ubuntu는 기본적으로 그래픽 기반의 사용자 환경을 제공하지만 우리가 이제부터 주로 사용하게 될 영역은 그곳이 아니라 아래와 같은 깜깜한 터미널 화면이다. 그리고 시작하기에 앞서 모든 명령어의 뒤에 --help 옵션을 주면 자세한 이용 방법이 나오므로 아래 기재되지 않은 명령어를 본다고 하더라도 당황하지 말고 --help 옵션을 보도록 하자(사용 예시: ls --help). 1. pwd(print working director.. 개발/Linux 2019. 9. 30. 리눅스 3편-리눅스의 디렉터리 구조를 파악하자 리눅스 이야기를 시작한고 난 다음부터 3번째 이야기를 쓰고 있다. 사실 리눅스 관련 글을 작성하기 전에 걱정을 했었다. 이렇게 글을 작성하다가 중간에 내가 귀찮다고 글 쓰는 것을 게을리하게 되면, 이후 포스팅을 기다리는 분들께 민폐를 끼치는 것이 아닐까? 차라리 처음부터 시작을 하지 않는 것이 좋지 않을까?라는 생각들 말이다. 하지만 과거 필자가 리눅스를 공부했던 때를 떠올리고는 글을 써야겠다는 다짐을 하게 됐다. 당시 리눅스를 공부하며 책도 보고 Google 선생님의 도움도 받아가며 공부를 했지만 그러면서도 어디선가 명확하게 궁금증을 해소해주는 곳이 있겠다면 좋겠다는 생각을 했었는데 지금 그 생각을 실천하려 하고 있다. 오늘의 주제인 디렉터리 구조와 관계없는 내용을 주저리주저리 하는 이유가 궁금할 수도.. 개발/Linux 2019. 9. 28. 리눅스 2편-Ubuntu 루트(root) 계정을 활성화해보자 이전 글 2019/09/26 - [Linux 이야기] - 리눅스 1편-MacBook에서 Linux 설치하기(Ubuntu) 지난번 시간에는 Ubuntu 설치를 진행해 보았다. 실제 기업에서는 centOS를 라이선스 구매하여 사용하는 경우가 많지만 일단 공부하는 데 있어 Ubuntu도 기본 맥락은 같기에 해당 내용으로 이어서 진행을 해보도록 하겠다. 이 글들의 호응이 괜찮으면 추후 centOS에 대한 포스팅도 진행해 볼 예정이다. 일단 리눅스라고 했을 때 떠오르는 장면은 Windows의 도스 화면 같은 창이 떠 있고 거기에 무언가 알 수 없는 명령어를 빠른 속도로 입력하는 장면이다. 적어도 필자는 과거 그렇게 떠올렸었다. 하지만 우리를 반긴 Ubuntu 화면은 Windows나 Mac 같이 UI(User In.. 개발/Linux 2019. 9. 27. 이전 1 2 다음