/ rhce-new

RHCE : HTTP/HTTPS – Configure private directories.

rhce-new redhat-new restorecon command semanage command apache httpd /etc/httpd/conf.d/ elinks private directory https http htpasswd command
https://4am.kr/rhce-http-https-configure-private-directories/

RHCE : HTTP/HTTPS – 프라이빗 디렉터리 구성

RHCE 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

사전 준비사항

실습을 시작하기 전에

프라이빗 디렉토리(여기서는 private라고 가정)를 만든다.
[root@server2 ~]# cd /var/www/html
[root@server2 html]# mkdir private
[root@server2 html]# echo "This is a Private Dir Test for server2.4am.kr." > private/index.html
[root@server2 html]# semanage fcontext -a -t httpd_sys_script_exec_t "/private(/.*)?"
[root@server2 html]# semanage fcontext -a -t httpd_sys_content_t "/private(/.*)?"
[root@server2 html]# restorecon -R -v ./private
[root@server2 html]# 
  • 노트: 이 디렉토리에 접근하는 것을 제한하는 방법은 여러가지가 있다. 아래에서 자세히 설명할 것이다.

1) 호스트 기반의 프라이빗 디렉토리

1. server2.4am.kr호스트(필요하다면 /etc/hosts파일에 이름과 ip를 추가할 것)에서 특정 디렉토리(여기서는 private)의 접근만을 허용하려면, /etc/httpd/conf/httpd.conf파일을 수정하여 다음 줄들을 마지막에 추가한다.
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
# filesystems or if support for these functions is otherwise
# broken on your system.
# Defaults if commented: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
EnableSendfile on

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

<Directory "/var/www/html/private">
AllowOverride None
Options None
Require host server2test.4am.kr
</Directory>
-- 끼워넣기 --                                                359,13       바닥
[root@server2 ~]# 
2. 설정 파일을 점검한다.
[root@server2 ~]# apachectl configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using server2.example.com. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@server2 ~]# 

2) 사용자 기반의 프라이빗 디렉토리

1. 오직 me 사용자만 특정 디렉토리(여기서는 private라 가정)접근을 허용하려면, /etc/httpd/conf/httpd.conf파일을 수정하여 다음 줄들을 마지막에 추가한다.
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
# Defaults if commented: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
EnableSendfile on

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

<Directory "/var/www/html/private">
AuthType Basic
AuthName "Password PROTECTED Area"
AuthUserFile /etc/httpd/conf/passwd
Require user me
</Directory>
~                                                                               
-- 끼워넣기 --                                                360,13       바닥
[root@server2 ~]# 
2. 설정 파일을 점검한다.
[root@server2 ~]# apachectl configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using server2.example.com. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@server2 ~]# 
3. passwd파일을 생성하고, me사용자의 비밀번호를 저장한다.
[root@server2 ~]# htpasswd -c /etc/httpd/conf/passwd me
New password: 
Re-type new password: 
Adding password for user me
[root@server2 ~]# chmod 600 /etc/httpd/conf/passwd 
[root@server2 ~]# chown apache:apache /etc/httpd/conf/passwd 
[root@server2 ~]# 

노트: 1)과 2)를 위해서 .htpasswd파일이 httpd.conf파일 대신 내부적으로 사용될 수도 있다.

4. 1)과 2)선택에 관계 없이, httpd서비스를 재시작한다.
[root@server2 ~]# systemctl restart httpd
[root@server2 ~]# 

설정 확인하기

[root@server2 ~]# yum install -y elinks
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package elinks-0.12-0.36.pre6.el7.x86_64 already installed and latest version
Nothing to do
[root@server2 ~]# elinks http://server2.4am.kr/private

private-dir-elinks-test-1

2. 접근이 가능함을 알 수 있다.

private-dir-elinks-test-2