잠시만 기다려 주세요


 
HOME   |  여기는?   |  바다물때표   |  여러가지 팁 (763)  |  추천 및 재미 (15)  |  자료실 (16)  |  끄적거림 (421)  |  시나리오 (757)  |  드라마 대본 (248)  |  

2019년 04월 22일
다시 사는 것이다. 다 이유가 있을 것이다. - 바다아이
 

    리눅스 서버

리눅스 서버 - 우분투 Nginx 특정 디렉토리 폴더에 암호 거는 방법, htpasswd, auth
이 름 : 바다아이   |   조회수 : 1481         짧은 주소 : https://www.bada-ie.com/su/?691523075555

1. 들어가며

 

최근에 Zend OPcache와 Memcached를 깔고 GUI로 잘 보고 있는데요. (관련 링크:결국 Zend OPcache와 memcached로 정착했네요.)

 

이게 아무래도 보안이 걸려있는게 좋을 것 같아서 찾아보게 되었습니다.

 

전체적인 내용은 관련링크1을 번역한 수준이므로, 정확하게 보시려면 관련링크를 참조하세요.

 

 

2. 암호가 저장 될 폴더 생성하기

 

우선 암호파일이 저장될 공간을 지정하는 것이 좋습니다.

 

웹에서는 원천적으로 접근이 불가능한 곳이 좋죠.

 

 

nginx를 쓰니깐 /etc/nginx/passwd 이 경로로 넣겠습니다.

 

 

mkdir /etc/nginx/passwd

 

위 명령어로 폴더를 만듭니다.

 

물론 본인이 원하는 폴더에 넣어도 상관없습니다. 위 경로는 단지 예시입니다.

 

 

3. 암호파일 생성하기

 

암호파일을 만드는 방법은 크게 두가지가 있습니다.

 

 

(1) 아파치의 htpasswd 명령어를 이용하면 됩니다.

 

그런데 아파치를 깐적이 없다면

 

htpasswd

 

위 명령어를 내릴 때

 

-bash: htpasswd: command not found

 

위와 같이 그런 명령어가 없다고 합니다.

 

 

apt-get install apache2-utils

 

그러면 위 명령어로 아파치 관련 유틸을 깔아줘야겠죠.

 

이제 htpasswd 명령어를 쓸 수 있습니다.

 

 

htpasswd -c /etc/nginx/passwd/.htpasswd woosung

 

위 명령어는 woosung이라는 user의 암호를 .htpasswd라는 암호파일에 생성(-c옵션)한다는 말입니다.

 

암호를 2번 물어봅니다. 같은 암호 두번 넣으면 되구요.

 

참고로 -c는 처음에만 쓰면 되고, 

 

다른 유저의 암호를 추가하고 싶다면 -c 옵션을 빼면 됩니다.

 

만약에 기존 유저가 있을 때 -c 옵션을 쓴다면 기존유저의 암호정보는 날아갑니다.

 

 

 

(2) 아파치 명령어를 쓰기 싫거나, 패키지를 깔 상황이 아니라면, 파이썬 스크립트를 사용해도 됩니다.

 

cd /usr/local/bin

 

wget http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py

 

chmod 755 /usr/local/bin/htpasswd.py

 

위 명령어를 한줄씩 실행하면 됩니다.

 

 

htpasswd.py -c -b /etc/nginx/passwd/.htpasswd woosung woopasswd

 

위와 같이 -c와 -b 옵션을 같이 쓰는데요.

 

-c는 생성입니다. 앞선 아파치명령어와 같습니다.

 

암호 파일이 없을 때 생성하며, 있어도 덮어쓰므로 기존 유저의 암호 정보는 날아갑니다.

 

그리고 -b 옵션은 woosung이라는 유저이름으로 woopasswd라는 암호를 저장한다는 옵션입니다.

 

아파치 명령어와는 달리 암호를 물어보지 않습니다.

 

 

그리고 해당 암호파일에 유저를 추가하려면 -c옵션만 빼면 됩니다.

 

 

4. 암호파일 권한 설정하기

 

참고로 .htpasswd 처럼 파일 앞에 .이 있으면 숨김파일이 됩니다.

 

chmod 640 /etc/nginx/passwd/.htpasswd

 

위와 같이 640으로 주면 나름 안전하게 보관 가능합니다.

 

 

5. Nginx에서 설정하기

 

이제 특정 폴더에 암호를 걸어보겠습니다.

 

홈페이지의 root는 /var/www 로 설정하고, 암호를 걸고 싶은 폴더는 /var/www/test 라고 지정하구요.

 

 

nano /etc/nginx/sites-available/default

 

위와 같이 nginx설정에 들어가서

 

 

server {

       listen 80;

       server_name www.example.com example.com;

       root /var/www;

[...]

       location /test {

                auth_basic "Restricted";

                auth_basic_user_file /etc/nginx/passwd/.htpasswd;

       }

[...]

}

 

 

위와 같이 location /test 부분만 넣어주면 끝입니다. 완전 쉽죠?

 

만약에 root폴더부터 암호를 걸어주려면

 

 

server {

       listen 80;

       server_name www.example.com example.com;

       root /var/www;

[...]

       location / {

                auth_basic "Restricted";

                auth_basic_user_file /etc/nginx/passwd/.htpasswd;

       }

[...]

}

 

위와 같이 넣으면 됩니다.

 

 

이상 Nginx 디렉토리 폴더에 암호거는 방법에 대해서 알아보았습니다.


출처 : https://www.wsgvet.com/bbs/board.php?bo_table=web&wr_id=84
 

| |


      1 page / 5 page
번 호 카테고리 제 목 이름 조회수
130 리눅스 서버 , ubuntu generic kernel 바다아이 34
129 리눅스 서버 .. apt ... 바다아이 30
128 리눅스 서버 ... ubuntu kernel compile 바다아이 32
127 리눅스 서버 nginx http2 , . 바다아이 46
126 리눅스 서버 psql libreadline.so.7: cannot open shared object file: No such file or directory 바다아이 236
125 리눅스 서버 ssh .bashrc , bash .. .bash_profile 바다아이 231
124 리눅스 서버 , , 바다아이 240
123 리눅스 서버 ... 바다아이 251
122 리눅스 서버 rc.local ... , 바다아이 241
121 리눅스 서버 ? - IPv4 Subnetting, (Subnet Mask) 바다아이 270
120 리눅스 서버 TCP UDP ? 바다아이 268
119 리눅스 서버 FTP passive(), active() 바다아이 245
118 리눅스 서버 ftp passive .... filezilla ftp ... 바다아이 367
117 리눅스 서버 ssh sftp ... sftp ... 바다아이 263
116 리눅스 서버 rpm 바다아이 301
115 리눅스 서버 /tmp ... /tmp ... tmpfs 바다아이 352
114 리눅스 서버 archlinux ... mirror, 바다아이 323
113 리눅스 서버 centos7 pgadmin4 .... ... pgadmin4 server mode, postgresql admin .. 바다아이 333
112 리눅스 서버 centos 7, freebsd postfix dovecot , 바다아이 430
111 리눅스 서버 Centos 7 Postgresql 10, 11 바다아이 311
110 리눅스 서버 [Network] SSL / TLS 바다아이 432
109 리눅스 서버 TLS , ssl 바다아이 441
108 리눅스 서버 60 , 바다아이 473
107 리눅스 서버 [ ] echo - 바다아이 495
106 리눅스 서버 Bash (Shell Script), 바다아이 674
105 리눅스 서버 shutdown reboot , , 바다아이 606
104 리눅스 서버 manjaro iptables 바다아이 658
103 리눅스 서버 postfix , relay 바다아이 649
102 리눅스 서버 postgresql .... 바다아이 627
101 리눅스 서버 centos Let's Encrypt - SSL , certbot 바다아이 711
| |






Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ FreeBSD + GoLang + PostgreSQL ]
서버위치 : New Jersey  실행시간 : 0.03576
to webmaster... gogo sea. gogo sea.