Extra Form
PHP PHP 8.1
CMS WordPress

https://ivps.tistory.com/74

위 글을 참고해서 설정해봤는데

 

지금 리노드 가상서버로 차근차근 한 개씩 해보는데 자신의 서버 아이피로 접속되면 안된다고 해서 해봤는데

아래 사진처럼 뜹니다!

0101.jpg

 

/etc/apache2/sites-available에 있는 wordpress.conf 파일을 메모장에 아래 코드를 입력했습니다!

 

<VirtualHost *:80>

    ServerName "내 아이피"

    <Location />

        Order deny,allow

        Deny from all

    </Location>

</VirtualHost>


자꾸 질문올려서 죄송합니다. 

  • Lv9

    내가 등록한 도메인으로 들어오는 것만 받아주고, 나머지(ip로 들어오든 뭘로 하든)는 default로 몰아서 처리해주면 됩니다.

    서버마다 디렉토리 구조가 다르지만, /etc/apache2/sites-available/default.conf 를 편집하여,
    <Virtualhost _default_:*>
        DocumentRoot /var/www/html/
    </Virtualhost>

    라고 한 다음, /var/www/html에 index.html을 만들고 <p>거부되었습니다</p> 이렇게 해주면 되겠지요.

    내가 등록한 도메인을 받아주려면, /etc/apache2/sites-available/내사이트.conf가 아래와 같은 모양이 되어 있는 것이 보통입니다. (Let's Encrypt를 쓴다면 터미널에서 sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge 처럼 입력해서 디렉토리를 만들어줘야 합니다)

    <Virtualhost *:80>
        ServerName www.내사이트.com
        ServerAlias 내사이트.com

        Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/

        <Directory "/var/www/letsencrypt/.well-known/acme-challenge/">

            Options None

            AllowOverride None

            ForceType text/plain

            RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"

        </Directory>
        Redirect permanent / https://www.내사이트.com/
    </Virtualhost>

    <Virtualhost *:443>
        ServerName www.내사이트.com
        ServerAlias 내사이트.com
        DocumentRoot /home/내사이트/
        SSLEngine On
        SSLCertificateFile "crt 파일 경로"
        SSLCertificateKeyFile "key 파일 경로"
        SSLCertificateChainFile "fullchain 파일 경로"
        ... (기타 등등)
    </Virtualhost>

  • Lv9 ?
    /etc/apache2/sites-available/000-default.conf < 이 파일에 기존에 있던 코드 싹 다 지우고

    <Virtualhost _default_:*>
    DocumentRoot /var/www/html/
    </Virtualhost>
    이렇게 하면 되나요?? 근데 이렇게 해도 달라진 것이 없는것 같아요
    혹시 이부분 도와주실 수 있을까요?
  • ? Lv9
    혹시 설정 변경한 다음 apache reload 해주셨겠죠?
    (systemctl reload apache 또는 systemctl restart apache)
    ip로 접속하거나 등록하지 않은 도메인등으로 들어오면 여기로 도착해야 맞겠지요.
  • Lv36

    윗분의 좋은 답변에 두 가지 보충하자면

     

    첫째, 443 포트의 <VirtualHost>는 www 붙은 도메인과 붙지 않은 도메인을 나누는 것이 좋습니다. 둘 중 메인으로 사용할 것 하나를 선택해서 그것 하나는 자세하게 설정하고, 나머지 하나는 인증서 설정과 Redirect permanent만 남겨두고요. 즉, 사이트 메인을 담당하는 <VirtualHost>에는 ServerAlias가 존재하지 않도록 해야 합니다.

     

    라이믹스 시스템 설정에 추가하지 않은 도메인으로 접속하면 자동으로 리다이렉트해 주는 기능이 있긴 하지만, 이건 라이믹스가 관리하는 URL 한정이므로 첨부파일이나 css/js, 별도로 추가한 스크립트 등은 위와 같은 조치를 하지 않으면 여전히 다른 도메인으로 접속할 수 있습니다. 이것 때문에 SEO상의 불이익이나 예상치 못한 공격 경로가 생길 수 있습니다. 라이믹스를 꾸준히 업데이트하시려면 .htaccess로 리다이렉트시키기도 귀찮을 테고요.

     

    둘째, 443 포트에도 default를 처리할 <VirtualHost>가 필요합니다. http://IP주소로 접속할 수 있는 사람이라면 https://IP주소로도 얼마든지 접속을 시도할 수 있으니까요. 이 때는 유효한 Let's Encrypt 인증서 대신 어디에서도 인정받지 못하는 self-signed 인증서를 사용해서 실제 도메인이 노출되지 않도록 하는 것이 좋습니다. 서버에서 자동으로 생성된 뱀기름(snakeoilㅡ.ㅡ) 인증서가 있다면 그걸 쓰셔도 됩니다.

     

    결론: 아래의 6가지 가능성을 모두 커버한다면 완벽합니다.

     

    1) https://내도메인.com → 정상 인증서 사용, 실제 사이트
    2) https://www.내도메인.com → 정상 인증서 사용, 1)로 리다이렉트
    3) https://IP.주소 (443포트 디폴트)→ 무효 인증서 사용, 인증서 무시하고 접속할 경우 에러 표시
    4) http://내도메인.com → 1)로 리다이렉트
    5) http://www.내도메인.com → 1)로 리다이렉트
    6) http://IP.주소 (80포트 디폴트) → 에러 표시

     

    이렇게 하려면 최소 5개의 <VirtualHost>가 필요합니다. 4)와 5)는 ServerAlias로 묶어도 무방하니까요.

     

    nginx도 마찬가지입니다.

  • Lv36 ?

    여러 사이트에 찾아가면서 적용해봤는데 괜찮을까요??

    원래는 아래로 리디레션되었는데 

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^(abc.com)

    RewriteRule (.*)  http://www.abc.com/$1  [L]

     

    로보트님의 소스를 따라해서 

    Redirect permanent / https://[www.내 도메인]/ 이걸로 변경했습니다.

    지금 http, https 아이피로 들어가면 

    Forbidden

    You don't have permission to access this resource.

    Apache/2.4.52 (Ubuntu) Server at 50.116.14.96 Port 80 둘 다 이렇게 뜨네요

    01001001.jpg

  • ? Lv36

    443 포트로 접속하면 내도메인.com, www.내도메인.com 가릴 것 없이 무조건 Redirect permanent를 해버리고 있네요. 이러면 정상 접속되는 곳이 한 군데도 없게 됩니다.

    위에서 ServerAlias를 사용하지 말라고 말씀드린 또 하나의 이유입니다. 두 개의 도메인을 동시에 처리하게 만들다 보니, 한 군데에만 적용해야 할 것을 광역으로 적용해 버리는 실수가 생기거든요.

    아, 그리고 혹시 저 상태에서 설정을 변경했는데도 증상이 마찬가지라면 브라우저 캐시를 모두 비우셔야 합니다. Redirect permanent 한 번 잘못 설정하면 상당히 오랫동안 캐시에 남아요.

  • Lv36 ?

    아! 메인이 되는 서버니까 443 포트 = https군요??

    일단 443 포트에서만 ServerAlias를 지웠습니다.

    80포트는 그대로 나두고 일단 443 포트를 아래처럼 변경했는데 이대로 적용을 해도 될까요??

    000000000000.jpg

    그리고 클라우드 플레어 전체(엄격)이 아닌 전체를 쓰고 있습니다!

    서버 초기 세팅 단계라서 여러 사이트에 사람들이 적은 거 보고 적용해보고 있습니다!!

  • ? Lv36

    중간에 Redirect permanent가 있는 것을 보면 거기는 메인이 아닌 것 같은데요?

    위에 말씀드렸듯이 <VirtualHost>는 최소 5개가 있어야 합니다.
    그 중 하나는 메인이니까 Redirect나 Require all denied 같은 것이 있어서는 안되겠고요.
    반면, 나머지는 모두 Redirect permanent 또는 Require all denied 처리하시고요.

     

    클플 SSL 설정은 "전체"가 정석이 맞습니다.

    실제 서버에도 인증서를 설치하여 443 포트로 통신하고, 클플에서도 SSL을 사용하고

    양쪽 모두 보안이 되어야 안전하지요.

  • Lv36 ?

    일단 말씀하신대로 해봤는데 이상태로도 괜찮을까요??

    무효인증서는 일단 방법을 몰라서 아래처럼 해봤습니다.

     

     

    아이피-설정-1.jpg

    아이피-설정-2.jpg

     

  • ? Lv36
    대강 맞습니다. 1번과 3번에 해당하는 <VirtualHost>에도 2번과 마찬가지로 letsencrypt 관련 3줄을 복사해서 넣어 주세요. 3번은 무효인증서를 붙이는 것이 이상적이겠지만, 어렵다면 그냥 letsencrypt 인증서로 때워야지요.
  • Lv36 ?
    감사합니다!! 덕분에 어떻게든 해킹당할 위험을 줄였습니다 ㅎㅎ