• 웹서버(wordpress) 메모리 사용량 모니터링 하기

    오라클 클라우드 프리티어의 제한된 메모리 환경에서 워드프레스를 안정적으로 운영하기 위한 보안 및 관리 방안을 다룹니다. 독립 서버에서 워드프레스 블로그를 운영할 때 발생하는 보안 위협에 대응하기 위한 웹 방화벽의 필요성과 메모리(RAM) 부족을 해결하기 위한 웹서버와 DB서버의 분리 사례를 보여줍니다. 서버의 실제 물리 메모리 점유율을 정확히 파악하기 위해 RSS 대신 PSS 지표를 활용하는 모니터링 쉘 스크립트를 소개합니다. 이는 아파치나 PHP-FPM처럼 공유 메모리를 사용하는 프로세스의 사용량을 정밀하게 측정하여, 저사양 가 …

  • Googlebot을 사칭하는 악성 봇 탐지하고 차단하기

    구글 검색 봇을 사칭해 웹사이트 정보를 무단 수집하거나 해킹을 시도하는 악성 봇 식별 방법을 다룹니다. 정상적인 구글 봇은 리버스 DNS 조회를 통해 도메인을 확인하거나 특정 IP 대역을 체크하여 구분할 수 있으며, 이를 통해 보안 취약점 노출을 방지합니다. fail2ban과 ipset을 활용해 사칭 봇을 차단하고 서버 보안을 강화하는 실무적인 설정법을 제시합니다. 웹 서버 로그의 사용자 에이전트를 모니터링하여 의심스러운 접근을 탐지하되, 실제 구글 IP 대역을 예외 처리하여 정상적인 검색 엔진 최적화 활동은 방해받지 않도록 구성 …

  • 방문자가 봇(Bot)인지 확인하는 JS Challenge 구현

    필자가 운영하고 있는 이 블로그의 출발은 cybercafe.tistory.com 이라는 도메인 주소를 가진 티스토리였다. 그 후 2013년에 현재의 도메인(blogger.pe.kr)을 구입하여 티스토리에 2차 도메인으로 연결했다. 그리고 3년 전 티스토리에서 독립한 후 티스토리 도메인은 삭제하였다. 너무도 많은 유해 트래픽 독립 서버에서 블로그를 운영하다 보니 대기업의 블로그 서비스를 이용할 때는 알 수 없던 유해트래픽을 온몸으로 느끼고 있다. 실제 검색엔진을 통해 들어오는 "사람"의 방문 트래픽보다 Bot이나 해킹 시도 트래픽은 …

  • Fail2Ban과 ipset으로 구축한 워드프레스 웹 방화벽 적용 후기

    fail2ban과 ipset 그리고 iptable의 조합으로 워드프레스 블로그의 웹 방화벽을 구축한지 만으로 3일 정도가 지났다. 그런데 예상보다 그 효과는 더욱 극적이었다. 필자의 블로그에는 하루에도 수천번의 sshd 무작위 로그인 시도와 워드프레스 웹 로그인 시도 그리고 수시로 몰려오는 파일 스캔으로 로그 파일의 사이즈는 커져만 갔었다. 그래서 앞의 포스트에서 많은 고민 끝에 fail2ban과 ipset 그리고 iptable의 조합으로 웹 방화벽을 구축하고 가장 공격이 많은 세가지의 filter와 jail을 만들고 iptabl …

  • Fail2Ban과 ipset으로 워드프레스 웹 방화벽 구축하기

    클라우드의 VM 또는 홈서버에 직접 서버를 구축하고 워드프레스와 같은 블로그 또는 웹사이트를 운영하는 사람들은 모든 문제를 직접 해결해야 한다. 검색엔진의 봇이 아닌 불법적인 웹 크롤러와 봇이 무단으로 저작물을 가져가는 것을 막아야 하고 광고 댓글이 달리는 것도 차단해야 한다. 게다가 로그인 페이지를 찾아내 무단으로 접속을 시도하는 것도 막아야 하고 웹서버의 해킹 시도도 차단해야 하며 심지어 운영체제에 직접 로그인하려는 원격접속(SSH) 시도도 방어해야 한다. 필자 또한 많은 고민을 하며 이런 저런 방법으로 공격을 막아내고 있다. …

  • iptable과 ipset을 연동하여 대량 IP 효과적으로 차단하기

    Referer 주소가 없는 방문자의 정체 언제부터 인지는 알 수 없지만 필자가 운영하고 있는 워드프레스 블로그의 방문자 로그에 이상한 로그가 잡히기 시작했었다. 바로 다음과 같은 로그다. 방문자 카운터 로그에 기록된 비정상 방문 이력 구글이나 네이버와 같은 검색엔진을 통해 유입이 되는 경우 95% 이상의 비율로 Referer에 Google이나 Naver, Bing 등 검색엔진의 URL 주소가 기록된다. 하지만 앞 화면에 보이는 것과 같은 접속 이력은 Referer 주소가 없다. 이 방문자 접속 이력은 필자의 워드프레스 블로그에 직 …

  • imgproxy를 사용한 이미지 캐시 서버의 효과

    필자가 운영하고 있는 블로그에 Caddy + Nginx + imgproxy 조합의 이미지 캐시 서버를 구축해서 연동한지 1개월 하고도 10여일이 넘게 지났다. 처음 구축했을 때는 안정성을 훼손하지 않을까 염려했는데 성능이나 안정성 측면에서 성공적이라 생각된다. 필자의 블로그에는 대충 어림잡아도 100~250 KB 크기의 이미지 파일이 적게는 3~5개, 많게는 30~40개의 이미지까지도 첨부되기에 포스트 1개만 해도 제법 큰 트래픽이 발생한다. 필자의 워드프레스 블로그(blogger.pe.kr)에는 포스트를 작성할 때 JPG 포맷의 …

  • 우분투 리눅스에 PostgreSQL 설치하기

    오픈소스 RDBMS의 양대산맥은 MariaDB와 PostgreSQL 이다. 하지만 성능과 기능 그리고 안정성은 PostgreSQL (포스트그레스큐엘이라고 읽는다)이 더 우수하다고 많은 이들이 평가한다. 하지만 개인적으로는 PostgreSQL을 사용해보지는 않았다. 대부분 MySQL이나 MariaDB를 사용했다. 지금 운영하고 있는 워드프레스 블로그를 포함해 많은 오픈소스 CMS나 게시판들이 MySQL을 표준으로 지원해왔기 때문이기도 하다. 하지만 최근들어서는 많은 오픈소스들이 PostgreSQL을 표준으로 지원하고 있으며 북미 지 …

  • Proxmox에 리눅스 컨테이너(LXC)로 우분투 24.10 설치하기

    서버 가상화에는 대표적으로 두 가지 종류의 가상화 기술이 사용되고 있다. 첫 번째는 Hypervisor 기반 가상화다. 인텔의 VT-x 또는 AMD의 AMD-V 등 CPU에서 제공하는 가상화 기능을 활용하는 Hypervisor라는 가상머신모니터(VMM)을 통해 가상서버를 생성하는 방식이다. VMWare ESXi나 MS의 Hyper-V, KVM 등이 바로 Hypervisor 기반 가상화다. 두 번째는 Linux Container (LXC)다. LXC는 리눅스에서 지원하는 Cgroup과 Namespace라는 리눅스 커널에서 제공하는 …

  • 나만의 VPN 서버 구축하기 (wireguard)

    이런 저런 보안 관련 테스트를 하거나 무언가 민감한 글(?)이나 댓글을 작성할 때 내 IP를 노출하고 싶지 않은 경우가 있다. 그 때 노출 되는 IP가 해외의 IP라면 더 좋을 것이다. 그래서 많은 사람들이 해외 업체의 VPN 서비스를 유료로 사용하기도 한다. 나름 IT 밥을 먹고 있다고 자부하는 1인으로서 사람으로서 그런 유료 서비스보다는 직접 해외에 VPN 서버를 구축해 사용하고자 지금까지는 오라클 클라우드의 Free Tier 서비스에서 제공하는 OpenVPN 가상서버를 활용했다. https://blogger.pe.kr/992 …