기술 블로그
태그 구체를 돌려보고, 클릭해 글을 걸러 보세요.
1인 회사에 보안팀이랑 감사팀을 만들었음 (AI 에이전트로)
설정은 멀쩡한데 실제로는 안 돌아가는 것들이 계속 나왔다. 만드는 쪽이랑 확인하는 쪽을 나눠야 잡힌다 싶어서 Paperclip에 팀을 팠다.
fail2ban 24시간으로 늘렸더니 recidive가 죽어있었다
밴 기간 늘리고 영구밴 붙이는 김에 설정 몇 개를 봤는데, 서로 물려서 무력화되는 조합이 있었다. 상습 IP 84개 일괄 영구밴까지.
서버 보안용 대시보드 제작기
로그 보는걸로 부족해서 회사에서 쓰던 대시보드 이식
집 서버 공격과 방어 기록
SSH 무차별 대입 하루 4천건 이상, 국내 회선 최다
사업 공고 판정을 Claude 구독으로 자동화하기
크롤러가 물어온 공고를 사람이 다 읽기 귀찮아서 Claude Code 구독을 판정 엔진으로 썼다. 사무실 서버와 집 서버를 파일큐로 잇고, 첫 실전에서 바로 장애가 났던 기록.
마크 서버, 디스코드 봇으로 원격조작하기 (RCON 직접 구현)
서버 주인이 부재중일 때를 대비해 믿을 만한 사람에게 조작을 맡기고 싶었다. RCON 포트를 열어주는 대신 봇을 만들었고, 프로토콜은 40줄로 직접 구현한 기록.
재부팅했더니 모니터링만 13시간 죽어있던 이유
커널 업데이트로 새벽에 재부팅됐는데 컨테이너 20여개 중 모니터링 스택만 안 올라왔다. 도커와 WireGuard의 부팅 순서 경주, 커널 설정 한 줄로 해결.
미니PC 홈서버 CPU가 94도까지 오르길래
마크 서버 하나 더 팔까 하다가 온도 그래프를 봤다. 저녁마다 94도. 범인은 부스트 클럭이었고 설정 몇 줄로 20도를 벌었다.
팰월드 서버 새벽 재시작에 예고 방송 붙이기
팰월드는 메모리가 샌다. 내장 자동재시작은 접속자 있으면 건너뛰는게 함정. REST API로 인게임 공지 쏘고 Discord로 예고한 다음 강제 재시작하게 만들었다.
마크 서버 하나 더 파기 (그리고 Java 25 함정)
바닐라 감성 서버를 하나 더 올렸다. 최신 버전 고르다 CoreProtect에 한번 발목 잡히고, 자바 버전에 한번 더 잡힌 기록.
새벽에 서버가 혼자 재부팅됐다 (알림은 안 왔다)
정전으로 추정되는 비정상 재부팅. 마크 서버는 안 올라왔고, 그걸 알려줘야 할 모니터링도 같이 죽어있었다. 원인 추적이랑 수습한 기록.
집 서버 마크 운영 자동화 (DDNS, 모니터링, 알림 한글화)
유동 IP 자동 갱신, 서버 다운 감시, 그리고 디스코드 알림을 한글로 바꾼 기록. 첫 실전 알림에서 초록색을 보고 잠깐 의심했던 것도.
취준생 때 만든 팰월드 디스코드 봇 개량기
2년 전에 screen 세션에 명령 밀어넣고 ps로 PID 긁던 봇을, 도커와 공식 REST API 시대에 맞게 뜯어고쳤다.
팰월드 전용 서버 구축기 (도커, 메모리 관리)
친구가 6명까지 늘어날 수 있다면 답은 전용 서버뿐이다. 도커로 띄우고, 악명높은 메모리 문제를 상한과 자동 재시작으로 눌러놓은 기록.
팰월드 프로메테우스 익스포터를 파이썬 50줄로 자작하기
마크는 기성 익스포터가 있는데 팰월드는 없다. REST API가 다 주는데 변환기만 없는 상황이라 그냥 만들었다.
마크 모드팩 서버 구축기 (Society: Sunlit Valley)
바닐라 서버 옆에 농사 모드팩 서버를 하나 더 팠다. 자바 버전, tmux 재시작 함정, 게임 계정 권한 분리까지의 기록.
Cloudflare Tunnel, 설정 파일을 고쳐도 반영이 안 되던 이유
config.yml에 서브도메인을 추가하고 재시작했는데 404가 나왔다. 알고 보니 터널이 어느샌가 원격 관리로 넘어가 있었음(AI 한테 맡겨놓고 신경 안썼더니 이래 됐다.)
해킹당한 서버 되살리기 (침해 조사부터 하드닝까지)
취미로 돌리던 게임 서버에 불청객이 왔다. 침해 흔적 확인, 공격 표면 파악, Lynis 점수 59에서 67까지 올린 기록.
홈 서버에 Prometheus + Grafana 모니터링 스택 올리기
미니PC 한 대를 관측 가능한 상태로 만들기까지. node_exporter, cAdvisor, Alertmanager 붙이면서 만난 문제들 정리.
[Python][이게 왜 안돼?] * (애스터리스크), map, zip
위 포스팅이랑 이어지는 글임.
[Python][이게 왜 안돼?] yield 키워드와 Generator
예전에 회사에서 만들었던 프로젝트를 재구성하다가 몰랐던걸 발견해서 기록함.
서블릿(Servlet)이 뭐지? (CGI, Servlet, Tomcat)
Java로 구현된 (개선된 형태의)CGI 이다.
[Python][이게 왜 되지?][Selenium 3.141.0] import 작동 원리
이전 포스팅 :
[프로그래머스 SQL] Lv4. 특정 세대의 대장균 찾기
정답 보기
[프로그래머스 SQL] Lv4. 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
정답보기
[프로그래머스 SQL] Lv3. 대장균의 크기에 따라 분류하기 2 (NTILE 없이)
처음 푼 코드
[저장용] DB 관련 면접 질문 정리
아래 질문들은 흔하게 나오는 질문들인데, 얼마나 알고 있는지 문항을 보고 답변해봅시다.
[저장용] HTTP 관련 면접 질문 정리
아래 질문들은 흔하게 나오는 질문들인데, 얼마나 알고 있는지 문항을 보고 답변해봅시다.
[프로그래머스 SQL] Lv4. 그룹별 조건에 맞는 식당 목록 출력하기
서브쿼리 + GROUP BY + DENSE_RANK 를 활용하였고 핵심 아이디어는 이렇습니다.