워드프레스에서 wp-login.php 차단하기(내 아이피 빼고, nginx)

wp-login.php로 brute force 공격이 너무 많이 들어와서 wp-login.php를 내 아이피 말고 다른 아이피를 가진 사람들로부터 다 차단하려고 오늘 보안을 강화했습니다. 코드 몇 줄 적고 테스트해봤더니 이제 내 아이피 말고 다른 아이피로는 더 이상 wp-login.php에 접근하지 못하더군요(정상적으로 작동했습니다).

그럼 제가 wp-login.php 차단한 방법 공개하겠습니다. 참고로 저는 nginx를 사용합니다.

nginx에서 wp-login.php 차단하는 방법

1. 먼저 nginx의 .conf 파일을 찾는다

저 같은 경우는 /etc/nginx/sites-available/wordpress.conf가 저의 웹사이트 .conf 파일입니다.

vim으로 제 .conf 파일에 접속합니다.

2. .conf 파일을 변경한다

location = /wp-login.php {
    allow XXX.XXX.XX.XX(본인 Ip);
    deny all;
    include snippets/fastcgi-php.conf;
    fastcgi_pass php-handler;
}

이 코드를 제 .conf 파일에 넣어줬습니다.

********위의 IP주소는 고정 IP 주소여야 합니다!!! 가정에서 이용하는 와이파이나 휴대폰에서 이용하는 데이터는 유동 IP이니 꼭 고정 IP로 저 IP주소를 입력하세요!! 아니면 본인의 웹사이트에 본인이 못 들어가게 됩니다************** (고정 IP가 없는 경우, 이 글처럼 .conf 파일에 ip주소 차단을 설정하지 마시고 워드펜스의 2 factor authentification을 이용하시는 것을 추천드립니다. wordfence의 2 factor authentification 사용법은 여기를 눌러 확인하세요.)

이렇게 들어갑니다. 위의 빨간 php 설정 부분을 /wp-login 부분에도 붙여줬습니다.

이후 변경한 .conf 파일을 저장하고 닫기 위해 esc를 누르고 :wq를 입력한 후 엔터를 칩니다.

위에 변경한 .conf 파일에 혹시 문법 에러가 있는지 sudo nginx -t로 제가 입력한 코드들이 nginx 문법에 맞는지 확인해줬습니다. 문법이 맞으면 ‘nginx: the configuration file /etc/nginx/nginx.conf syntax is ok, nginx: configuration file /etc/nginx/nginx.conf test is successful’라고 뜹니다.

이후, sudo systemctl restart nginx를 쳐서 nginx를 재시작해줍니다.

그랬더니 이제 정상적으로 /wp-login.php가 외부 ip로부터 차단되는 걸 확인할 수 있었습니다. 저 위에 등록한 ip 주소가 아닌 다른 ip로 제 워드프레스에 접근했더니 403 Forbidden 에러가 뜨더군요.

나이스 work

.conf 파일 안에 허용한 단 하나의 ip만이 제 워드프레스 wp-login.php에 접근할 수 있는 것을 확인할 수 있었습니다.

이상입니다.




Leave a Comment