• 워드프레스 플러그인 pwnd 해킹툴 조심

    워드프레스 플러그인 pwnd 해킹툴 조심

    워드프레스 플러그인 pwnd

    1단계: 진단 및 분석 (Triage & Analysis)

    현재 상황을 정확히 이해하는 것이 가장 중요합니다. 공격의 원인과 확산 경로를 파악하여 효과적인 대응 계획을 수립합니다.

    핵심 문제: 파일 업로드 취약점과 교차 감염

    제공된 `pwnd.php` 파일은 ‘파일 업로드 취약점’을 악용하는 전형적인 웹쉘(Webshell)입니다. 이 취약점은 공격자가 서버에 악성 스크립트 파일을 업로드하여 원격으로 명령을 실행할 수 있게 합니다.

    더 큰 문제는 서버의 모든 웹사이트가 동일한 `apache` 사용자 권한으로 실행되고 있다는 점입니다. 이로 인해 하나의 사이트가 뚫리면, 공격자는 해당 사이트의 권한을 이용해 서버 내 다른 모든 사이트의 파일을 읽고, 쓰고, 수정할 수 있습니다. 이것이 바로 ‘교차 감염’이며, 반복적인 해킹의 주된 원인입니다.

    공격 흐름 시각화

    ?‍?

    공격자

    ?

    취약한 플러그인

    (pwnd-1)

    ?

    웹쉘 업로드

    (pwnd.php)

    ?

    교차 감염

    (모든 사이트로 확산)

    로그 분석을 통한 침입 증거 확인

    아파치(Apache) 접근 로그를 분석하면 공격자의 침입 흔적을 찾을 수 있습니다. 아래는 웹쉘 업로드를 시도할 때 로그에 남는 패턴을 확인하는 명령어 예시입니다.

    # uploads 폴더에 PHP 파일이 업로드된 기록 찾기
    grep “POST” /var/log/httpd/access_log | grep “/wp-content/uploads/.*\.php”

    2단계: 악성코드 제거 (Eradication)

    서버에 존재하는 모든 악성 파일을 체계적으로 찾아내고 데이터베이스에 삽입된 악성코드를 제거합니다.

    1. 의심스러운 파일 찾기

    업로드 폴더에 있어서는 안 될 PHP 파일을 찾습니다.

    # 모든 사이트의 uploads 폴더에서 .php 파일 검색
    find /var/www/html/_______site_* -path “*/wp-content/uploads/*.php”

    2. 악성코드 패턴 검색

    웹쉘과 백도어에 자주 사용되는 위험한 함수 패턴을 모든 파일에서 검색합니다.

    # 재귀적으로 악성 함수 패턴 검색 (파일 경로만 출력)
    grep -rEil “(eval\(|base64_decode|gzinflate|passthru|shell_exec)” /var/www/html

    3. 워드프레스 코어 파일 무결성 검사

    WP-CLI를 사용하여 핵심 파일이 변조되었는지 확인하고, 변조 시 원본으로 덮어씁니다.

    # 특정 사이트 경로 지정 후 실행
    wp –path=/var/www/html/_______site_TAMJUNGSCOM core verify-checksums –allow-root
    # 변조된 파일 발견 시 강제 재설치
    wp –path=/var/www/html/_______site_TAMJUNGSCOM core download –skip-content –force –allow-root

    4. 악성 플러그인 제거

    확인된 악성 플러그인(`pwnd`, `pwnd-1`)을 모든 사이트에서 삭제합니다.

    # 삭제되는 폴더 경로를 출력하며 pwnd 및 pwnd-1 디렉토리 전체 삭제
    find /var/www/html -type d -name “pwnd” -print -exec rm -rf {} +
    find /var/www/html -type d -name “pwnd-1” -print -exec rm -rf {} +
  • nas 서버 구축 wordpress 설치

    nas 서버 구축 wordpress 설치

    나만의 nas 서버를 멋지게 만들어보겠습니다.

    보통 나스 서버 그러면 클라우드 같은 파일서버를 떠 올리게됩니다.

    오늘 제가 설치하는 nas 서버 구축은 파일서버가 아닌 워드프레스 설치 입니다.

     

    시놀로지 나스에서 기본적으로 제공해주는 기능으로 워드프레스를 설치 하여 블로그를 운영할수 있습니다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    시놀로지 나스 워드프레스 설치 완료

     

    오늘부터 나스에 구축한 워드프레스 블로그를 열심히 운영해보시기 바랍니다.

  • MySQL에서 9시간 차이 나는 현상 해결

    MySQL에서 9시간 차이 나는 현상 해결

    클라우드 환경 GCP 예시

    클라우드 환경(GCP 등)에서 MySQL을 사용하다 보면,

    서버의 기본 시간대가 UTC(협정 세계시)로 설정되어 있어 한국 표준시(KST)보다 9시간이 뒤쳐져서 데이터가 저장·조회되는 경우가 종종 발생

    이 글에서는 MySQL과 JavaScript에서 시간 차이를 다루는 방법을 정리

    MySQL의 날짜/시간 자료형 정리

    MySQL에는 크게 DATE, DATETIME, TIMESTAMP 자료형이 있습니다. 다음 표로 비교해보겠습니다.

    자료형예시타임존 반영 여부특징
    DATE2023-02-06없음연-월-일만 저장 (시·분·초 정보 없음)
    DATETIME2023-02-06 11:00:00없음날짜와 시간을 함께 저장하되, DB서버 타임존이 직접 반영되지는 않음
    TIMESTAMP2023-02-06 11:00:00있음 (UTC 기준으로 저장 후 변환)UTC 기준으로 저장되며, 조회 시 MySQL 서버의 타임존에 따라 시간차가 반영되어 표시됨
    • DATETIME은 “그냥 적힌 시각”을 저장하는 방식이므로, DB 자체에서 시간대 정보를 고려하지 않습니다.
      예: 2020-08-25 11:00:00 → MySQL에 어떤 타임존 설정이 되어 있어도 이 형식 그대로 저장·조회됨.
    • TIMESTAMP는 실제로는 UTC 기준으로 저장되지만, MySQL 서버의 타임존 설정에 따라 조회 시점에 시차를 보정하여 표시합니다.
      예: DB 서버 타임존이 Asia/Seoul (UTC+09:00)일 때, 2020-08-25 11:00:00로 입력 → 내부적으로 UTC로 보정되어 저장(다른 시간처럼 보일 수 있음) → 조회 시 KST로 보정되어 다시 11:00:00임을 이해할 수 있음.

    MySQL에서 타임존 설정 바꾸기 (일시 적용)

    3-1. 현재 타임존 확인

    sql복사SELECT @@global.time_zone, @@session.time_zone, @@system_time_zone;
    
    • @@global.time_zone : MySQL 전체(Global)의 타임존
    • @@session.time_zone : 현재 연결된 세션(Session)의 타임존
    • @@system_time_zone : OS 시스템 레벨의 타임존

    3-2. 타임존 변경 (일시 적용)

    sql복사-- 글로벌 타임존 설정 (서버 전체)
    SET GLOBAL time_zone = '+09:00';
    
    -- 현재 세션 타임존 설정
    SET time_zone = '+09:00';
    

    이렇게 설정하면 즉시 타임존이 적용되지만, MySQL 서버를 재시작하면 다시 원래 설정으로 돌아갑니다.

    확인

    sql복사SELECT NOW();
    

    위 명령으로 시간을 조회했을 때, 원하는 한국 시각(KST)이 나온다면 정상입니다.
    만약 Asia/Seoul 을 직접 쓰고 싶다면 SET GLOBAL time_zone = 'Asia/Seoul'; 로 시도할 수도 있으나, OS나 MySQL 타임존 정보 설정이 제대로 되어 있지 않으면 에러가 날 수 있습니다. 그 경우 숫자 형태(+09:00)로 설정하는 방법이 확실합니다.

    4. MySQL 설정 파일에서 타임존 변경 (영구 적용)

    MySQL이 재시작될 때도 설정이 유지되려면 설정 파일을 수정해야 합니다.

    1. MySQL 설정 파일 열기 (우분투 예시)bash복사sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    2. [mysqld] 섹션 아래에 다음 내용을 추가pgsql복사default-time-zone = "+09:00"
    3. MySQL 재시작bash복사sudo service mysql restart 혹은bash복사sudo systemctl restart mysql.service
    4. 재시작 후 다시 MySQL에 접속, 다음 명령어로 타임존이 제대로 반영됐는지 확인sql복사SELECT @@global.time_zone, @@session.time_zone;

  • latin1_swedish_ci vs utf8mb4_unicode_ci

    latin1_swedish_ci vs utf8mb4_unicode_ci

    latin1_swedish_ci VS utf8mb4_unicode_ci

    CHARSET=latin1 COLLATE=latin1_swedish_ci 설정은 기본적으로 latin1 문자셋스웨덴어 대소문자 구분 방식을 사용하여 데이터를 저장하고 정렬하는 방식입니다. 그러나, utf8 또는 utf8mb4 방식이 더 널리 사용되며, 많은 경우 더 유리한 선택이 될 수 있습니다. 각 방식의 장단점을 간략히 설명드리겠습니다.

    1. latin1 (latin1_swedish_ci) 방식의 장단점

    장점

    • 공간 절약: latin1은 한 문자를 1바이트로 저장하여, 주로 영어와 같은 라틴 알파벳 기반의 데이터를 다룰 때 공간 절약 효과가 있습니다.
    • 빠른 처리 속도: utf8 방식보다 데이터가 작게 저장되기 때문에, 특정한 경우 쿼리 성능이 다소 향상될 수 있습니다.

    단점

    • 다국어 지원 부족: latin1은 영어, 프랑스어, 스페인어 등의 라틴 알파벳 기반 언어는 처리할 수 있지만, 한국어, 일본어, 중국어와 같은 비라틴 문자는 지원하지 않습니다. 따라서 다국어 웹사이트나 다양한 언어 데이터를 저장하기엔 적합하지 않습니다.

    2. utf8 또는 utf8mb4 방식의 장단점

    장점

    • 다국어 지원: utf8은 전 세계 대부분의 언어를 지원하므로 다국어 데이터가 필요한 경우 매우 유용합니다.
    • 이모지 및 확장 문자 지원: utf8mb4utf8보다 확장된 4바이트 문자를 지원하며, 이모지와 특수 문자까지 처리할 수 있습니다.

    단점

    • 공간 사용량 증가: utf8은 한 문자를 최대 3바이트, utf8mb4는 최대 4바이트로 저장하기 때문에 공간 사용량이 증가할 수 있습니다.
    • 처리 성능: 데이터 크기 증가로 인해 latin1보다 약간의 성능 저하가 발생할 수 있습니다.

    결론

    일반적으로 다국어 지원유연성이 필요하다면 utf8 또는 utf8mb4를 사용하는 것이 좋습니다.

    단일 언어(특히 영어 등 라틴 문자)를 다루는 경우라면 latin1으로도 충분할 수 있습니다. 다국어 지원 필요성과 성능 요구사항에 따라 적합한 방식을 선택하세요.

    latin1_swedish_ci
  • dDos 공격 route 방어 기술

    dDos 공격 route 방어 기술

    dDos 공격

    제일 아까운 기술 중 하나라고 보는 dDos 공격 기술은 좋은 의미로는 서버를 해킹까지하여 지식의 과시라고 볼 수 있지만

    실제로 지금 시대에서 상대의 서버를 공격한다는 것은 악의적인 측면만 보더라도 너무 나쁜 행위이다.

    dDos 공격을 막기 위해 해야할 부분은 방화벽 부분인데 대부분 iptable을 이용하여 아이피를 차단하는 경우가 많다.

    나 역시 따로 방화벽 장비를 구성하지않다보니 AWS 유료서비스보다는 단순 무식한 route 명령어로 ip를 차단하는 방법을 주로 사용한다.

    이 방법은 서버를 직접 운영할 경우에 route명령어를 apache 계정으로 실행 할 수 있을때 가능하다.

    아파치 권한을 우선 visudo 설정에 넣는다

    www-data 계정이라면

    www-data ALL=(ALL) NOPASSWD: /sbin/route

    apache 계정이라면

    apache ALL=(ALL) NOPASSWD: /sbin/route

    이렇게 입력한다.

    그리고 워드프레스에서 명령어를 아래처럼 넣으면 된다.
    $cmd = “sudo /sbin/route add -host $ip reject”;
    shell_exec($cmd);

    워드프레스 스니핏 자동화

    이를 워드프레스에서 스니핏을 이용하여 자동화시키는 방법은 아래와같다

    // 아래 링크를 통해 사용방법을 꼭 확인하고 사용하세요!! - 프로그래머 문호영
    // https://snippets.stofarm.com/iptables
    
    // 최상단에서 차단될 접근 횟수와 접근 제어할 페이지 리스트 설정
    define('MAX_ACCESS_COUNT', 20);
    define('BLOCKED_URLS', serialize(array('/', '/xmlrpc.php', '//xmlrpc.php', '/wp-admin/admin.php')));
    
    
    function should_block_ip($ip) {
        $access_count = get_transient('access_count_' . $ip) ?: 0;
        if ($access_count >= MAX_ACCESS_COUNT) {
            return true;
        }
        return false;
    }
    
    function block_ip_with_route($ip) {
        $cmd = "sudo /sbin/route add -host $ip reject";
        shell_exec($cmd);
    }
    
    function unblock_ip_with_route($ip) {
        $cmd = "sudo /sbin/route del -host $ip reject";
        shell_exec($cmd);
    }
    
    function check_and_block_ip() {
        $client_ip = $_SERVER['REMOTE_ADDR'];
        $current_url = $_SERVER['REQUEST_URI'];
    
        $blocked_urls = unserialize(BLOCKED_URLS);
    
        if (in_array($current_url, $blocked_urls) || is_404()) {
            $access_count = get_transient('access_count_' . $client_ip) ?: 0;
            set_transient('access_count_' . $client_ip, ++$access_count, 60); // 1분 동안 저장
    
            if (should_block_ip($client_ip)) {
                block_ip_with_route($client_ip);
    			header("Location: https://snippets.stofarm.com/from_iptables");
                wp_die('Your IP has been blocked.'); 
            }
        }
    }
    
    add_action('init', 'check_and_block_ip');

    이 코드를 이용할 경우 1분동안 20회 공격이 들어오면 자동으로 IP가 차단되게 된다.

  • 와일드카드 ssl 인증서 적용

    와일드카드 ssl 인증서 적용

    와일드카드 ssl 인증서 적용

    와일드카드 ssl 인증서 설치 방법

    1. Certbot 설치

    먼저 Certbot을 설치해야 합니다.

    sudo apt update
    sudo apt install certbot

    2. SSL 인증서 발급 및 설정

    Amazon Lightsail의 경우, Route53과 유사하게 작동하는 API 자격 증명을 직접 제공하는 경우는 드물지만, DNS 레코드를 직접 관리할 수 있습니다. 아래와 같이 Certbot으로 도메인과 와일드카드(*.totel.link)를 포함하여 인증서를 발급해보세요.

    sudo certbot certonly --manual --preferred-challenges=dns -d "totel.link" -d "*.totel.link"

    Certbot이 실행되면 DNS TXT 레코드 생성을 요청합니다. 이때 Lightsail의 DNS 관리 페이지로 이동해 지정된 TXT 레코드를 추가합니다.

    3. Bitnami SSL 파일 설정

    위에서 설명한 단계와 동일하게, 인증서 파일을 Bitnami Apache 설정 파일과 연결하고 Apache를 재시작합니다:

    sudo ln -sf /etc/letsencrypt/live/totel.link/fullchain.pem /opt/bitnami/apache/conf/server.crt
    sudo ln -sf /etc/letsencrypt/live/totel.link/privkey.pem /opt/bitnami/apache/conf/server.key
    sudo ln -sf /etc/letsencrypt/live/totel.link/chain.pem /opt/bitnami/apache/conf/server-ca.crt
    sudo /opt/bitnami/ctlscript.sh restart apache

    4. 자동 갱신 설정

    Lightsail에서는 도메인에 따라 인증서 갱신이 자동으로 되지 않으므로, cron 작업을 통해 수동으로 갱신해야 합니다.

    sudo crontab -e

    다음 명령을 추가하여 자동 갱신과 Apache 재시작을 예약합니다:

    0 0 * * 0 certbot renew --non-interactive --post-hook "/opt/bitnami/ctlscript.sh restart apache"

    이제 3개월마다 자동으로 갱신되며, 모든 Lightsail 서브도메인에 SSL 인증이 적용됩니다

    와일드카드 ssl 인증서 적용
  • 화이트메일 네이버 등록 방법

    화이트메일 네이버 등록 방법

    화이트메일

    1. 화이트메일 서비스 확인하기

    화이트메일 서비스는 대량의 메일을 주요 포털로 발송할 때 스팸 오차단을 줄이기 위한 서비스입니다. 이 서비스가 제대로 작동하는지 확인하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.

    a. 주요 포털의 화이트메일 상태 확인

    각 주요 포털(Naver, Daum, Gmail, Kakao 등)은 자체적으로 화이트메일 상태를 확인하거나 관리할 수 있는 방법을 제공할 수 있습니다. 다음은 일반적인 확인 절차입니다:

    1. 포털 관리자 센터 접속:
      • 각 포털의 메일 관리 또는 비즈니스 서비스 관리자 센터에 로그인합니다.
      • 예를 들어, Naver의 경우 Naver Business에 접속합니다.
    2. 화이트메일 서비스 상태 확인:
      • 관리자 대시보드에서 화이트메일 서비스 관련 섹션을 찾습니다.
      • 도메인이 화이트리스트에 등록되어 있는지 확인합니다.
      • 만약 등록되지 않았다면, 등록 절차를 진행합니다.
    3. 포털별 문의:
      • 특정 포털에서 화이트메일 서비스가 비활성화되었는지 확인하려면 해당 포털의 고객 지원팀에 직접 문의하는 것이 가장 확실합니다.
      • 문의 시 도메인(tion.kr)과 메일 서버(mail.tion.kr) 정보를 제공하여 상태를 확인할 수 있습니다.

    b. 화이트메일 서비스 제공업체 확인

    만약 화이트메일 서비스를 외부 업체를 통해 이용 중이었다면, 해당 업체의 서비스 상태를 확인합니다.

    1. 서비스 상태 페이지 확인:
      • 서비스 제공업체의 상태 페이지나 공지사항을 확인하여 서비스 중단 여부를 확인합니다.
    2. 고객 지원팀에 문의:
      • 서비스 제공업체의 고객 지원팀에 연락하여 화이트메일 서비스 상태를 문의합니다.

    2. SPF 레코드 설정 확인 및 등록

    SPF(Sender Policy Framework) 레코드는 도메인의 메일 서버 정보를 DNS에 등록하여, 수신자가 발송자의 메일 서버 정보와 실제 메일 서버 정보가 일치하는지 확인할 수 있게 하는 기술입니다. 올바르게 설정된 SPF 레코드는 이메일의 신뢰성을 높이고 스팸 오차단을 줄이는 데 도움이 됩니다.

    a. 현재 SPF 레코드 확인하기

    1. DNS 관리 도구 사용:
      • 도메인 등록기관 또는 DNS 호스팅 제공업체의 관리 도구에 로그인합니다.
      • tion.kr 도메인의 DNS 설정 페이지로 이동합니다.
    2. TXT 레코드 확인:
      • TXT 유형의 레코드를 찾아 현재 설정된 SPF 레코드를 확인합니다.
      • 예를 들어, 다음과 같은 형식일 수 있습니다
      • v=spf1 include:_spf.google.com ~all

    b. SPF 레코드 등록 또는 수정하기

    1. SPF 레코드 생성:
      • 새로운 SPF 레코드를 생성하거나 기존 레코드를 수정합니다.
      • 기본 형식은 다음과 같습니다
      • v=spf1 include:your_mail_server.com -all
      • your_mail_server.com을 실제 메일 서버의 도메인으로 대체합니다. 예를 들어, mail.tion.kr을 포함하려면:css
      • v=spf1 a:mail.tion.kr -all
    2. 다중 메일 서버 포함:
      • 여러 메일 서버를 사용하는 경우, include 지시어를 사용하여 추가할 수 있습니다.
      • 예시
      • v=spf1 a:mail.tion.kr include:_spf.google.com -all
    3. DNS 레코드 추가:
      • 생성한 SPF 레코드를 TXT 레코드로 추가합니다.
      • 예시
      • Host: @ Type: TXT Value: v=spf1 a:mail.tion.kr -all
    4. 변경 사항 적용 대기:
      • DNS 변경 사항이 전파되는 데 최대 48시간이 소요될 수 있습니다. 일반적으로 몇 시간 내에 적용됩니다.

    c. SPF 레코드 테스트하기

    SPF 레코드가 올바르게 설정되었는지 확인하려면 다음 도구를 사용할 수 있습니다:

    이 도구들에 도메인을 입력하면 SPF 레코드의 유효성을 검사할 수 있습니다.

    3. DKIM 및 DMARC 설정

    SPF 외에도 DKIM(DomainKeys Identified Mail)과 DMARC(Domain-based Message Authentication, Reporting & Conformance) 레코드를 설정하면 이메일의 신뢰성을 더욱 높일 수 있습니다.

    a. DKIM 설정

    1. 메일 서버에서 DKIM 키 생성:
      • Postfix와 같은 메일 서버에서 DKIM을 설정하려면 opendkim 패키지를 설치하고 설정합니다.
      sudo apt install opendkim opendkim-tools
    2. DKIM 키 생성
    3. sudo mkdir /etc/opendkim/keys/tion.kr cd /etc/opendkim/keys/tion.kr sudo opendkim-genkey -s default -d tion.kr sudo chown opendkim:opendkim default.private
    4. DNS에 DKIM 공개 키 추가:
      • 생성된 default.txt 파일의 내용을 DNS TXT 레코드로 추가합니다.
      • 예시
      • host: default._domainkey Type: TXT Value: "v=DKIM1; k=rsa; p=YOUR_PUBLIC_KEY"
    5. OpenDKIM 설정 파일 수정:
      • /etc/opendkim.conf 파일을 편집하여 다음을 추가합니다
      • Domain tion.kr KeyFile /etc/opendkim/keys/tion.kr/default.private Selector default Socket inet:12301@localhost
    6. Postfix와 OpenDKIM 연동
    7. sudo nano /etc/postfix/main.cf
      • 다음 줄을 추가합니다
      • milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301
    8. 서비스 재시작
    9. sudo systemctl restart opendkim sudo systemctl restart postfix

    b. DMARC 설정

    1. DNS에 DMARC 레코드 추가:
      • TXT 레코드를 추가하여 DMARC 정책을 설정합니다.
      • 예시
      • Host: _dmarc Type: TXT Value: "v=DMARC1; p=none; rua=mailto:postmaster@tion.kr"

    4. 이메일 발송 테스트 및 로그 확인

    SPF, DKIM, DMARC 설정이 완료되었으면, 이메일 발송 테스트를 통해 설정이 올바르게 작동하는지 확인합니다.

    a. PHP 메일 스크립트 재실행

    1. PHP 테스트 스크립트 실행
    2. php /root/mailtest.php
    3. 수신자 이메일 확인:
      • a@tion.kr 이메일 계정으로 로그인하여 테스트 이메일이 도착했는지 확인합니다.
      • 스팸 폴더도 함께 확인합니다.

    b. 메일 로그 확인

    1. Postfix 메일 로그 확인
    2. sudo tail -n 100 /var/log/mail.log
      • 로그에서 이메일 전송과 관련된 정보 및 오류 메시지를 확인합니다.
    3. OpenDKIM 로그 확인
    4. sudo tail -n 100 /var/log/mail.log | grep opendkim

    5. 주요 포털과의 직접 문의

    화이트메일 서비스가 사라졌다는 증거를 포털에서 확인하려면, 해당 포털의 고객 지원팀에 직접 문의하는 것이 가장 확실한 방법입니다. 다음은 주요 포털별 문의 방법입니다:

    a. Naver

    1. Naver Business 문의:

    b. Kakao

    1. Kakao for Business 문의:
      • Kakao for Business 지원 페이지로 이동합니다.
      • 관련 문의를 작성하여 화이트메일 서비스 상태를 확인합니다.

    c. Gmail

    1. Google Workspace 지원:
      • Google Workspace 지원 페이지로 이동합니다.
      • 관리자 계정으로 로그인 후 이메일 전송 관련 문제를 문의합니다.

    6. 추가 팁

    a. 이메일 인증 도구 사용

    이메일 인증 도구를 사용하여 SPF, DKIM, DMARC 설정이 올바르게 작동하는지 확인할 수 있습니다.

    • Mail Tester
    • MXToolbox Email Health

    b. 이메일 발송 모니터링

    이메일 발송 상태를 지속적으로 모니터링하여 문제가 발생할 경우 신속히 대응할 수 있도록 합니다.

    • Postfix 로그 분석
    • 외부 이메일 모니터링 서비스 사용
  • 라이트세일 메모리 부족 해결 스왑파일 생성

    라이트세일 메모리 부족 해결 스왑파일 생성

    라이트세일 메모리 부족

    비트나마 Bitnami (라이트세일)는 아랫쪽 제일 밑에 방법대로 한다.

    AWS 라이트세일 메모리 부족 현상은 스왑 파일을 만들어서 어느정도 해결이 가능하다.

    하지만 물리적인 부분이 아니기에 권장은 더 높은 요금제로 변경하는것을 권함!!

    1개월에 $5 요금제는 하드용량이 20GB 이므로 스왑을 4GB로 잡게되면 워드프레스 하나도 겨우 돌릴 정도로 전체 용량이 부족해진다.

    하지만 이정도면 일단 시작을 해볼수 있다는 점에서 스왑 메모리 올리고 제일 작은 인스턴스로 워드프레스를 시작해보자.

    비트나미 기본 스왑 삭제 및 8기가 생성

    기존 스왑 파일 비활성화 및 삭제

    1. 스왑 비활성화
      sudo swapoff /mnt/.bitnami.swap
    2. 기존 스왑 파일 삭제
      sudo rm /mnt/.bitnami.swap

    새 스왑 파일 생성 (예: 2GB)

    1. 새 스왑 파일 생성
      sudo fallocate -l 2G /mnt/.bitnami.swap
      (만약 fallocate 명령이 지원되지 않는다면, 아래 명령을 사용할 수 있습니다.)
      sudo dd if=/dev/zero of=/mnt/.bitnami.swap bs=1M count=2048
    2. 권한 설정
      sudo chmod 600 /mnt/.bitnami.swap
    3. 스왑 파일 포맷 및 활성화
      sudo mkswap /mnt/.bitnami.swap sudo swapon /mnt/.bitnami.swap
    4. 스왑 활성화 확인
      sudo swapon --show free -h

    재부팅 후 스왑 유지 설정

    1. /etc/fstab 파일을 수정합니다
      sudo nano /etc/fstab
    2. 아래 내용을 추가합니다
      /mnt/.bitnami.swap none swap sw 0 0

    스왑 사용 최적화 (선택 사항)

    스왑 사용 빈도를 조정하려면 vm.swappiness 값을 낮출 수 있습니다. 기본값은 60입니다. 성능을 위해 10 정도로 조정해 보세요.

    1. 일시적으로 조정
      sudo sysctl vm.swappiness=10
    2. 영구적으로 유지 /etc/sysctl.conf 파일에 아래 내용을 추가합니다
      vm.swappiness=10

    이제 스왑이 2GB로 늘어나고 최적화된 상태로 유지될 것입니다.

  • 파이썬 자동 서비스 활성화 만들기

    파이썬 자동 서비스 활성화 만들기

    파이썬 자동 서비스

    1. systemd 서비스 파일 생성

    systemd 서비스 파일 생성: /etc/systemd/system/monitor_py.service 파일을 만듭니다.

    2. 서비스 활성화 및 시작

    이렇게 파이썬 자동 서비스를 만들어서 중복없이 자동으로 한다.

  • Briefly unavailable for scheduled maintenance. Check back in a minute

    Briefly unavailable for scheduled maintenance. Check back in a minute

    Briefly unavailable for scheduled maintenance. Check back in a minute.

    Briefly unavailable for scheduled maintenance. Check back in a minute

    유지보수 모드란 무엇인가?

    워드프레스는 사용자의 사이트를 업데이트할 때 일시적으로 유지보수 모드로 전환된다.
    이는 워드프레스 코어, 플러그인, 또는 테마 업데이트 중 데이터 손상이나 버그를 방지하기 위함이다.
    유지보수 모드 동안 웹사이트는 일시적으로 접근이 제한된다.

    문제 발생 원인

    일반적으로 워드프레스는 업데이트가 완료된 후 자동으로 유지보수 모드를 비활성화하지만, 업데이트 과정에서 문제가 발생하면 사이트가 유지보수 모드에서 빠져나오지 못할 수 있다.
    이는 업데이트 파일이 제대로 설치되지 않았거나, 서버의 응답 지연 등 다양한 기술적 이유로 인해 발생할 수 있다.

    해결 방법

    이 문제를 해결하기 위해서는 몇 가지 단계를 따라야 한다.
    먼저 FTP 클라이언트를 사용하여 웹사이트의 루트 디렉토리에 접속한다.
    그 다음, ‘.maintenance’ 파일을 찾아 삭제한다.
    이 파일은 유지보수 모드가 활성화되어 있음을 나타내는 파일로, 삭제하면 웹사이트가 정상적으로 작동하기 시작한다.

    추가적으로, 워드프레스의 ‘wp-config.php’ 파일에서 ‘WP_DEBUG’ 모드를 활성화하여 구체적인 에러 메시지를 확인할 수 있다.
    이는 문제의 원인을 파악하는 데 도움이 될 수 있다.

    예방 조치

    미래에 유사한 문제를 예방하기 위해, 정기적으로 웹사이트 백업을 수행하고, 업데이트를 진행하기 전에는 반드시 사이트가 완전히 백업되었는지 확인하여야한다.
    또한, 신뢰할 수 있는 호스팅 서비스를 사용하는 것이 중요하며, 가능하다면 업데이트를 수동으로 진행하여 각 단계를 철저히 모니터링하는 것이 좋다.

    위의 정보가 워드프레스 사이트 관리에 도움이 되기를 바란다.
    추가적인 문제 해결이 필요한 경우 워드프레스 커뮤니티나 전문 기술 지원팀에 문의해야한다.

    워드프레스 유지보수 모드 해결하기

    유지보수 모드 진입의 원인과 해결 방법

    워드프레스가 유지보수 모드에 진입하는 주된 원인은 시스템이나 플러그인 업데이트 중 발생하는 것이다.
    이 글에서는 FTP (File Transfer Protocol)를 이용하여 웹 서버 파일에 직접 접근하여 유지보수 모드를 해제하는 방법을 설명한다.
    대표적인 FTP 클라이언트로는 FileZilla, WinSCP가 있으며, 각 클라이언트는 웹에서 쉽게 다운로드할 수 있다.

    WinSCP를 사용하여 접속을 진행할 경우, SFTP 설정을 FTP로 변경한 후, 사이트 주소나 호스팅 IP를 입력하고 관리자 전용 ID와 비밀번호로 로그인한다.
    포트 번호는 일반적으로 21이지만 호스팅 업체에 따라 다를 수 있으므로 확인이 필요하다.

    유지보수 파일 삭제 및 접속 복구

    FTP 접속에 성공하면 서버와 로컬 디스크의 파일 목록이 표시된다.
    이때 서버 측에서 ‘maintenance’ 파일을 찾아 삭제하면 워드프레스 유지보수 모드가 해제되고, 사이트 접속이 정상적으로 가능하다.

    오류 예방 및 관리 방법

    유지보수 모드 오류를 예방하기 위해서는 플러그인 충돌을 피하고 서버 자원을 적절히 관리해야 한다.
    워드프레스 플러그인들은 간혹 충돌을 일으킬 수 있으며, 이로 인해 유지보수 파일이 생성되어 사이트 접속이 차단될 수 있다.
    이러한 상황을 방지하기 위해, 플러그인 업데이트는 주의 깊게 관리하고, 서버의 메모리 상황도 정기적으로 점검해야 한다.


    이 가이드가 워드프레스 사이트의 유지보수 모드 문제 해결에 도움이 되기를 바란다.
    문제가 지속될 경우, 워드프레스 전문가에게 추가적인 조언을 구하는 것이 좋다.

  • NAT LINUX IP MATCHING DDNS 서버 구축

    NAT LINUX IP MATCHING DDNS 서버 구축

    NAT LINUX

    NAT LINUX

    IP MATCHING is just match

    낫리눅스 생성방법

    1. 가상스위치 NAT 생성

    2. 포트 그룹 NAT 생성

    3. ___NAT_TVM7 업로드

    3.1. ___NAT_TVM7 네트워크 연결 – (1)항목에 생성한 가상 스위치 NAT

    4. ___NAT_LINUX 업로드

    4.1. ___NAT_LINUX 네트워크 연결 – (3.1)항목에 연결된 가상 스위치 NAT

    5. ___NAT_TVM7 새로운 네트워크 추가

    6. ___NAT_TVM7 네트워프 NAT 설정 및 HOSTNAME 등록

    7. crontab -e

    7. 81 MONITOR CHECKED!!

    DDNS 서버 구축

    DDNS 서버 구축완료!

    DDNS 서버를 구축하기 위해서는 2가지만 알면된다.

    DNS서버의 개념과 클라이언트 서버의 IP를 어떻게든 프로그램이든 뭐든 이용해서 자동으로 알아낼 수 있으면 된다.

    내 경우에는 윈도우즈와 NAT서비스를 이용하여 리눅스 서버의 IP를 자동으로 수집하도록 만들었다.

    그리하여 2개의 OS (WINDOWS, LINUX) 만 존재하면 자동으로 서버 IP를 유지할 수 있다.

    정말 재미있는 사실은…

    이 글을 나 이외 아무도 이해를 못한다는 점이다.

    그래서 이 시스템구축 분야는 블루오션이 아니라 독점분야라는것이다.