워드프레스 로그인 무작위 대입 공격을 막는 방법입니다.

All In One WP Security 같은 플러그인으로도 방어가 가능하지만 mod_qos 에 아래의 옵션으로 여러개의 VirtualHost 전체에 대한 Brute force 공격을 막아줄 수가 있습니다.

<IfModule mod_qos.c>
    SetEnvIf	Request_URI ^/wp-login(.*)$ LimitLogin
    QS_ClientEventLimitCount 10 3600 LimitLogin
    <Location /__qos>
        SetHandler qos-viewer
        Order Deny,Allow
        Deny from All
        Allow from 192.168.
    </Location>
</IfModule>

1시간 동안 10번 이상 시도시 접근을 제한하는 설정입니다.

 

원래 mod_qos 는 아파치 속도 제어 모듈인데 이와 같은 유용한 기능이 있어서 좋은것 같습니다.

아 그리고 fail2ban 같은 모듈로도 방어가 가능합니다.

 

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리다이렉트 되도록 처리한 내용이 동작을 안하길래 확인해보니 .htaccess 파일이 초기화가 되어있네요~

파일이 변경된 시간으로 아파치 로그를 확인하니 wp-admin/plugins.php 가 호출된 시간과 동일하였습니다.

이때 워드프레스 플러그인 추가하고 삭제했었는데 아마도 그때 초기화가 된 것 같네요~

아래는 초기화 된 .htacces 파일의 내용입니다.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

미리 백업해놓은 파일이 있어서 확인하고 다시 작성하였네요~

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

wordpress wp_posts 테이블만으로는 썸네일(특성이미지)을 알 수가 없습니다.

wp_postmeta 테이블에서 값을 찾아서 다시 wp_posts 에서 guid 값을 가져와야합니다.

SELECT meta_value FROM `wp_postmeta` WHERE post_id = 포스트id and meta_key = '_thumbnail_id'
SELECT guid FROM `wp_posts` WHERE ID = '$meta_value'

위의 mysql 쿼리를 보시면 아실겁니다.

응용해서 서브쿼리로 작성하면 하나의 쿼리문으로 값을 가져올 수 있습니다.

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] 위젯 메인페이지만 나오게 하는 방법


워드프레스에서 Header Widget 또는 Footer Widget 을 달면 모든 페이지 마다 위젯이 나옵니다.

특정 위젯을 자바스크립트로 메인 홈페이지에만 나오게 하고 나머지 하위 메뉴에서는 숨기는 방법입니다.


먼저 위젯을 달고 소스보기로 해당 위젯 영역의 태그를 살펴봅니다.

<!-- Upper widgets -->
<div class="header-widgets-wrapper">
<div class="header-widgets-three header-widgets-left">
<section id="custom_html-5" class="widget_text header-widget widget swidgets-wrap widget_custom_html"><div class="swidget"><div class="sidebar-title-border"><h3 class="widget-title">인터넷속도측정</h3></div></div><div class="textwidget custom-html-widget"><style>
#sc-container { margin: 0 auto; }
</style>

section id="custom_html-5" 로 해당 위젯을 숨겨 보도록 하겠습니다.


<script>

if(window.location.pathname !== '/') {

document.getElementById('custom_html-5').parentNode.parentNode.style.display='none';

}

</script>

메인 홈이 아닐때를 조건으로 custom_html-5 를 찾아서 상위노드를 숨기는 방법입니다.

위에는 parentNode.parentNode 가 두번이나 있기 때문에 Header Widget 자체를 숨기는 코드입니다.

해당 위젯만 숨기려면 parentNode 하나만 넣어주면 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] All in One SEO 플러그인



워드프레스로 만들 블로그를 구글이나 네이버 웹마스터 도구에 등록하려면 sitemap.xml 과 rss feed 가 있으면 자신의 블로그 게시글의 URL 을 등록해서 검색 노출에 도움이 됩니다.


워드프레스 자체에는 티스토리 처럼 피드 기능은 제공하는데 사이트맵 기능을 제공하지 않네요~


플러그인 이용해서 사이트맵을 만들면 됩니다.


Yoast SEO 와 All in One SEO 가 인기가 좋던데 제가 볼때는 아이콘이 더 가미된 올인원SEO 를 더 추천 하고 싶네요~ ㅎ



[워드프레스] All in One SEO 플러그인


원하는 기능을 활성화 시켜서 사용하면 될 것 같습니다.




블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] wp-admin 차단하기


워드프레스의 관리자 접근은 사이트주소/wp-admin 형태입니다.

사이트의 보안을 위해서는 다른 이름으로 바꾸는 것이 좋습니다.


.htaccess 파일을 아래와 같이 작성하면 됩니다.

<IfModule mod_rewrite.c>

RewriteEngine On


RewriteCond %{REQUEST_URI} ^/wp-admin(.*)$ [NC]

RewriteRule ^(.*)$ - [L]

RewriteCond %{REQUEST_URI} ^/change-myadmin$ [NC]

RewriteRule ^(.*)$ /wordpress/wp-admin [L]

</IfModule>

change-myadmin 은 관리자가 접근을 허용할 uri 입니다.

사이트주소/change-myadmin 으로 접근시 리다이렉트 되어 관리자 페이지로 이동을 합니다.

/wordpress 는 자신의 경로에 맞게 적으시면 됩니다.


그리고 wp-login.php 파일을 특정IP 만 허용하는 방법도 있습니다.

<Files wp-login.php>

Order Deny,Allow

Deny from All

Allow from 특정IP

</Files>

참고로 특정아이피가 여러개라면 나열을 해도 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] CyberSyn RSS/Atom Syndicator


워드프레스 플러그인 중에 다른사이트나 블로그의 게시글 RSS 를 자동으로 긁어서 가져오는 플러그인이 있습니다.

여러 종류가 있지만 사용해보니 CyberSyn 이라는 Plugin 이 제일 마음에 드네요~


[워드프레스] CyberSyn RSS/Atom Syndicator

설정시 "Check this feed for updates every" 에 30분 정도로 적당하게 설정하세요~

그리고 "Maximum number of posts to be syndicated from each feed at once" 에는 한번에 싱크될 게시글 수를 입력하면 됩니다.

처음엔 수치를 많이 적고 나중에 어느정도 싱크되고 나면 숫자를 줄이면 될 것 같습니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] 관리자 비밀번호 분실시 재설정 방법



워드프레스로 홈페이지를 만들고 난뒤에 관리자 비밀번호를 잊어버렸을 경우 비밀번호를 초기화 할 수 있습니다.


▶ wp-login.php 수정


<?php

/**

 * WordPress User Page

 *

 * Handles authentication, registering, resetting passwords, forgot password,

 * and other user handling.

 *

 * @package WordPress

 */


/** Make sure that the WordPress bootstrap has run before continuing. */

require( dirname(__FILE__) . '/wp-load.php' );

wp_set_password('새로운비밀번호', 1);


wp-login.php 파일을 열어서 require wp-load.php 아래줄에 wp_set_password('새로운비밀번호', 1); 을 추가하고 저장합니다.


http://홈페이지url/wp-login.php 파일을 한번 열어주면 새로운 비밀번호로 설정이 됩니다.


이제 위에 추가한 부분을 지우고 로그인을 하면 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] NGINX 유저 설정



NGINX 는 디폴트 user 가 nginx 입니다.


nginx 로 사용해도 되지만 apache 로 바꿔봅시다~


먼저 /etc/httpd/conf/httpd.conf 파일에 아래 부분을 찾습니다.


User apache

Group apache



/etc/nginx/nginx.conf 파일에서 user 부분을 수정합니다.


#user nginx;

user apache apache;


위와 같이 저장하고 systemctl restart nginx 하면 됩니다.


그리고 홈페이지 root 디렉토리의 소유권을 변경해 주어야 합니다.


읽기전용이라면 755 퍼미션을 주면 되지만 안에서 파일을 생성하거나 디렉토리를 만들려면 소유권을 변경해주어야 됩니다.


# chown -R apache.apache /var/www/html


이렇게 하시면 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[워드프레스] 아파치 .htaccess RewriteRule NGINX 적용



워드프레스에서 사용되는 Apache 용 .htaccess 사용되는 리디렉션을 nginx 에 적용하는 방법입니다.


# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>


# END WordPress



아래 처럼 한줄을 추가해주면 됩니다.


server {

    ...

    location / {

        index    index.html index.htm index.php;

        try_files $uri $uri/ /index.php?$args;

    }

}


생각보다는 간단하네요~


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,