본문 바로가기

IT 엔지니어/Linux server

Web security 취약점

[IP 별 접근통제]

welcome.conf 
주석 처리

/etc/httpd/conf/httpd.conf

<Directory> var/www/html
indexes
all denied
</Directory>

Require ip 192.168.10.200 192.168.10.150 
192.168.10.0/24

환경 설정 파일에 index 설정이므로 
index.html 파일 없을 시 in.html 존재 시
디렉터리 리스팅 확인 

index 설정 삭제 시 거부됨
<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    
    <RequireAll>
		    Require all granted
        Require ***not*** ip 192.168.10.200
        Require method GET POST OPTIONS
    </RequireAll>
    
</Directory
Require method GET POST OPTIONS 
order deny,allow
deny from all 192.192.

 

 

 

[디렉터리별 접근 통제]

 

vi /etc/http/conf.d/auth.conf 파일 생성

<Directory /var/www/html/[디렉터리 이름]>
    AuthType Basic
    AuthName "Test"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user

    <RequireAll>
        Require ip 192.168.10.200 // 200에서만 접근 가능
        Require valid-user
	      Require test test1
    </RequireAll>
</Directory>

Require valid-user = Require [사용자명]

 

 

<Directory /var/www/html/pse>
AuthType Basic
AuthName "Test"
AuthUserfile /etc/httpd/.htpasswd
require valid-user
require user test
    <RequireAll>
        Require all granted
        Require not ip 192.168.10.150 ///
        150에서만 인증창 팝업
    </RequireAll>

</Directory>

<Directory /var/www/html/pse>
    AuthType Basic
    AuthName "Test"
    AuthUserFile /etc/httpd/.htpasswd
    <RequireAll>
        Require ip 192.168.10.200
        Require valid-user
    </RequireAll>
</Directory>

200에서만 접근 및 인증 가능
다른 IP 에서 forbidden 표시되어야 함

하지만 다른 IP에서 접근 가능 확인함

[원인]

설정 파일이 여러 개라 
다른 곳에서 Require all granted가 적용되고 있을 가능성

/etc/httpd/conf/httpd.conf 또는 /etc/httpd/conf.d/*.conf 파일에서 다른 설정이 IP 제한을 무효화할 수 있음

특히, Require all granted가 설정되어 있다면 모든 IP에서 접근 가능

[결과]

[root@localhost basic]# grep -r "Require all granted" /etc/httpd/conf*
/etc/httpd/conf/httpd.conf:    Require all granted
/etc/httpd/conf/httpd.conf:    Require all granted
/etc/httpd/conf/httpd.conf:    Require all granted
/etc/httpd/conf.d/autoindex.conf:    Require all granted
/etc/httpd/conf.d/manual.conf:    Require all granted
/etc/httpd/conf.d/userdir.conf:	 Require all granted
/etc/httpd/conf.d/welcome.conf:#    Require all granted

 

 

 

다른 설정 파일에서 all granted 되어있기에 접근 가능

[기본 인증 (Basic Authentication) 활성화]

AuthType ***Basic*** → 기본 인증 방식 사용
AuthName "Test" → 인증 프롬프트에서 보이는 메시지
AuthUserFile /etc/httpd/.htpasswd → 사용자 인증 정보 저장 경로

[인증 요구 사항]

require user test test1 → test 또는 test1 사용자만 허용
require valid-user → 모든 유효한 사용자 허용 (즉, .htpasswd에 있는 모든 계정 허용)

 

 

[사용자 정보 인증]

 

 

# htpasswd -c /etc/httpd/.htpasswd test
# htpasswd -c /etc/httpd/.htpasswd test1

 

디렉터리 생성

cd /var/www/html

mkdir basic

vi index.html

 

 

로그인 안 될 시 

1.재시도 
2.사용자 패스워드 재변경
3.htpasswd 재변경

 

 

[DIGEST]

<Directory /var/www/html/digest>
AuthType Digest
AuthName "Digest Test"
AuthUserfile /etc/httpd/.htdigest
require valid-user

</Directory>

mkdir digest

vi index.html

index.html 파일 미생성 시 디렉터리 리스팅 출력

 

 

 

# htdigest -c /etc/httpd/.htdigest ***'Digest Test'*** test
# htdigest  /etc/httpd/.htdigest **'Digest Test'** test1

"Digest Test"는 **AuthName**에 지정된 값과 동일해야 함
<Directory /var/www/html/basic>
AuthType Basic
AuthName "Test"
AuthUserfile /etc/httpd/.htpasswd
        <RequireAll>
        Require ip 192.168.10.200
        Require valid-user /// 유효 이용자 인증 가능
        </RequireAll>
</Directory>

<Directory /var/www/html/basic>
AuthType Basic
AuthName "Test"
AuthUserfile /etc/httpd/.htpasswd
        <RequireAll>
        Require ip 192.168.10.200
        Require valid-user
        Require user test //// test 인증 가능 //  test1 인증 불가
        </RequireAll>
</Directory>

# cat /etc/httpd/.htdigest

test:Digest Test:2cabc62a225fce0ecf0e2fb50af0f24e
test1:Digest Test:7a1658fb4c1aea0e3436124fcc1fff95

'IT 엔지니어 > Linux server' 카테고리의 다른 글

Web Security  (0) 2025.04.25
SSL/TLS  (0) 2025.04.24
TOMCAT  (0) 2025.04.23
Web Security  (0) 2025.04.23
KAIL linux & UTM  (0) 2025.04.22