본문 바로가기
카테고리 없음

Rocky Linux Apache 인증 설정 + ARP Spoofing 패킷 분석 실습

by Lsung 2026. 9. 14.

1. 실습 목적

이번 실습은 크게 두 부분으로 진행한다.

첫 번째는 Rocky Linux의 Apache 웹서버에 /admin 페이지를 만들고 Basic Authentication(기본 인증)을 적용하는 것이다.

두 번째는 만들어진 웹서버를 대상으로 ARP Spoofing 실습을 수행한 뒤 Wireshark 등으로 ARP 패킷 2개를 캡처하여 분석하는 것이다.

실습 환경 예시는 다음과 같다.

Rocky Linux(Web Server)
IP : 192.168.11.17
Interface : ens160

Kali Linux(실습 공격 장비)
IP : 192.168.11.36
Interface : eth0

Gateway
IP : 192.168.11.1
 

2. Apache 설치 위치 확인

이번 Rocky Linux에는 일반적인 /var/www/html 구조의 Apache가 설치된 것이 아니다.

실제 Apache 위치는:

/app/apache
 

이다.

따라서 웹페이지 위치 역시:

/app/apache/htdocs
 

를 사용한다.

Apache 실행 파일은:

/app/apache/bin/apachectl
 

이며 Apache 설정 파일은:

/app/apache/conf/httpd.conf
 

이다.

이 때문에 다음 명령으로는:

 
rpm -q httpd
 
httpd 패키지가 설치되어 있지 않습니다
 

라고 나올 수 있다.

하지만 다음 명령으로 확인하면:

 
ss -ltnp | grep ':80'
 
LISTEN ... *:80 ... users:(("httpd"...))
 

처럼 실제 Apache가 실행 중인 것을 확인할 수 있다.

RPM 패키지 방식이 아니라 /app/apache에 별도로 설치된 Apache라고 이해하면 된다.


3. Apache 인증 계정 생성

Apache Basic Authentication에서 사용할 계정을 만든다.

root 계정으로 작업한다.

 
su -
 

처음 인증 파일을 생성하면서 계정을 추가할 때:

 
/app/apache/bin/htpasswd -c /app/apache/.htpasswd sb5
 

비밀번호를 입력하면 된다.

여기서 중요한 옵션은:

-c
 

이다.

-c는 새로운 인증 파일을 만드는 옵션이기 때문에 처음 딱 한 번만 사용한다.

이미 .htpasswd가 존재하는 상황에서 -c를 다시 사용하면 기존 사용자 정보가 덮어써질 수 있다.


4. 두 번째 사용자부터는 -c 사용 금지

추가 계정을 생성하려면:

 
/app/apache/bin/htpasswd /app/apache/.htpasswd sa2
 

처럼 사용한다.

즉:

첫 번째 계정
htpasswd -c 인증파일 계정명

두 번째 이후
htpasswd 인증파일 계정명
 

으로 기억하면 된다.


5. .htpasswd 권한 설정

계정을 생성한 다음 인증 파일의 권한을 설정한다.

 
chmod 644 /app/apache/.htpasswd
 

확인:

 
ls -l /app/apache/.htpasswd
 

대략:

-rw-r--r--
 

형태가 나오면 된다.

인증 파일 내용을 확인하려면:

 
cat /app/apache/.htpasswd
 

예를 들면:

sb5:$apr1$....
sa2:$apr1$....
 

처럼 나오는데, 뒤에 있는 문자열은 비밀번호 자체가 아니라 암호화된 해시값이다.


6. 관리자 페이지 디렉터리 생성

인증을 적용할 /admin 디렉터리를 만든다.

 
mkdir -p /app/apache/htdocs/admin
 

테스트용 페이지도 만든다.

 
echo "Admin Page" > /app/apache/htdocs/admin/index.html
 

확인:

 
cat /app/apache/htdocs/admin/index.html
 

결과:

Admin Page
 

7. 웹 디렉터리 권한 설정

admin 디렉터리에 접근할 수 있도록 권한을 설정한다.

 
chmod 755 /app/apache/htdocs/admin
 

파일 권한:

 
chmod 644 /app/apache/htdocs/admin/index.html
 

인증 파일:

 
chmod 644 /app/apache/.htpasswd
 

확인:

 
ls -ld /app/apache/htdocs/admin
 
 
ls -l /app/apache/htdocs/admin/index.html
 
 
ls -l /app/apache/.htpasswd
 

8. Apache 설정 파일 수정

설정 파일을 연다.

 
vi /app/apache/conf/httpd.conf
 

파일 아래쪽 등에 다음 내용을 추가한다.

 
<Directory "/app/apache/htdocs/admin">
    Options Indexes FollowSymLinks
    AllowOverride None

    Order allow,deny
    Allow from all

    AuthType Basic
    AuthName "Private Area"
    AuthUserFile /app/apache/.htpasswd
    Require valid-user

    Satisfy All
</Directory>
 

각 설정의 의미는 다음과 같다.

<Directory>
→ 어느 디렉터리에 설정을 적용할 것인지 지정

AuthType Basic
→ HTTP Basic 인증 사용

AuthName "Private Area"
→ 로그인 창에 표시될 인증 영역 이름

AuthUserFile
→ ID와 비밀번호 정보가 저장되어 있는 파일

Require valid-user
→ .htpasswd에 등록된 정상 계정만 접근 가능
 

9. Apache 설정 문법 검사

수정했다고 바로 재시작하지 않는다.

먼저:

 
/app/apache/bin/apachectl configtest
 

를 실행한다.

정상이라면:

Syntax OK
 

가 나온다.

이게 매우 중요하다.

설정 파일에 오타가 있는데 바로 Apache를 재시작하면 웹서버가 올라오지 않을 수 있다.

따라서 항상:

설정 수정
↓
configtest
↓
Syntax OK 확인
↓
restart
 

순서로 진행한다.


10. Apache 재시작

설정이 정상이라면:

 
/app/apache/bin/apachectl restart
 

실행 상태 확인:

 
ps -ef | grep httpd
 

또는:

 
ss -ltnp | grep ':80'
 

httpd 프로세스가 여러 개 나타나는 것은 Apache 구조상 정상이다.


11. 브라우저에서 인증 테스트

브라우저에서:

http://192.168.11.17/admin/
 

에 접속한다.

정상적으로 설정되었다면 바로 Admin Page가 표시되는 것이 아니라 먼저 사용자 이름 / 비밀번호 로그인 창이 나타난다.

앞에서 만든:

ID : sb5
Password : 설정한 비밀번호
 

를 입력한다.

인증 성공 후:

Admin Page
 

가 보이면 Apache 인증 설정 성공이다.


12. 여기까지의 전체 흐름

Apache Web Server
192.168.11.17

        ↓

/app/apache/htdocs/admin

        ↓

HTTP Basic Authentication

        ↓

.htpasswd 확인

        ↓

로그인 성공

        ↓

Admin Page 접근
 

13. 이후 ARP Spoofing 실습

이제 위에서 만든:

192.168.11.17
 

웹서버를 대상으로 실습망에서 ARP Spoofing을 수행한다.

ARP Spoofing의 핵심은 공격 장비가 자신의 MAC 주소를 다른 IP의 MAC 주소인 것처럼 속이는 것이다.

정상적인 ARP 정보가 예를 들어:

192.168.11.1  → AA:AA:AA:AA:AA:AA
192.168.11.17 → BB:BB:BB:BB:BB:BB
 

였다면 공격 과정에서:

192.168.11.1  → CC:CC:CC:CC:CC:CC
192.168.11.17 → CC:CC:CC:CC:CC:CC
 

처럼 서로 다른 IP에 대해 같은 공격자의 MAC 주소가 전달되는 현상을 관찰할 수 있다.


14. 왜 ARP 패킷을 2개 캡처하는가?

이번 평가에서 중요한 부분이다.

ARP Spoofing 패킷 하나만 보면:

IP = ????
MAC = 공격자 MAC
 

이라는 사실만 확인할 수 있다.

하지만 이것만으로는 그 MAC 주소가 정말 잘못된 것인지 비교하기 어렵다.

두 개의 ARP 패킷을 비교하면:

Packet 1
Source IP = A
Source MAC = CC:CC:CC:CC:CC:CC

Packet 2
Source IP = B
Source MAC = CC:CC:CC:CC:CC:CC
 

처럼 서로 다른 IP 주소가 동일한 MAC 주소를 자신의 MAC이라고 알리고 있는 현상을 확인할 수 있다.

그래서 과제에서 패킷 두 개를 제출하라고 하는 것이다.


15. ARP 패킷 분석 양식

패킷 1은 다음처럼 정리한다.

[ARP Packet - 1]

Ethernet
============================

Destination MAC Address :
Source MAC Address :
Type :

ARP
============================

Hardware Type :
Protocol Type :
Hardware Length :
Protocol Length :
Operation :
Source MAC Address :
Source IP Address :
Destination MAC Address :
Destination IP Address :
 

패킷 2 역시 동일하게 작성한다.

[ARP Packet - 2]

Ethernet
============================

Destination MAC Address :
Source MAC Address :
Type :

ARP
============================

Hardware Type :
Protocol Type :
Hardware Length :
Protocol Length :
Operation :
Source MAC Address :
Source IP Address :
Destination MAC Address :
Destination IP Address :
 

16. 여기서 자료에 하나 주의할 점

네가 받은 양식에:

Ethernet Type (2 byte) : 08 00
 

이라고 되어 있는데 ARP 패킷을 분석하는 것이라면 이 부분은 확인이 필요하다.

Ethernet II에서:

IPv4 = 0x0800
ARP  = 0x0806
 

이다.

즉 ARP 패킷이라면 일반적으로 Ethernet Type은:

08 06
 

이 되어야 한다.

반면 ARP 내부의:

Protocol Type
 

은 IPv4를 의미하므로:

08 00
 

이 된다.

정리하면:

Ethernet Type      = 08 06  → ARP
ARP Protocol Type  = 08 00  → IPv4
 

이 부분은 평가 작성할 때 실제 Wireshark 패킷 원본을 보고 적는 게 가장 정확하다.


17. 일반적인 ARP 필드 값

일반 Ethernet + IPv4 ARP 패킷이라면 대부분:

Hardware Type
00 01
= Ethernet

Protocol Type
08 00
= IPv4

Hardware Length
06
= MAC 주소 6 byte

Protocol Length
04
= IPv4 주소 4 byte
 

가 된다.

Operation은 패킷에 따라:

00 01 = ARP Request
00 02 = ARP Reply
 

이다.


18. 패킷 분석 결론 작성 예시

과제 마지막에는 이런 식으로 정리하면 깔끔하다.

두 ARP 패킷을 분석한 결과 서로 다른 Source IP Address를 가지고 있음에도 동일한 Source MAC Address가 사용되고 있음을 확인하였다. 정상적인 환경에서는 각 장비의 IP 주소에 대응하는 고유 MAC 주소가 존재해야 하지만, 공격 과정에서는 공격자의 MAC 주소가 다른 장비의 IP 주소에 대응하는 것처럼 전달되었다. 따라서 해당 패킷을 통해 ARP Spoofing이 수행되고 있음을 확인할 수 있다.

실제 제출할 때는 Source IP, Source MAC 등을 네가 캡처한 값으로 넣어주는 게 더 좋다.


19. 같이 전달받은 firewalld rule은 무엇인가?

네가 받은:

rule family="ipv4" source address="61.255.192.116" ...
rule family="ipv4" source address="220.117.108.166" ...
...
rule family="ipv4" source address="210.221.44.107"
log prefix="ast16_임성민_210.221.44.107"
accept
 

이 부분은 ARP Spoofing 패킷 분석용 데이터는 아니다.

형태를 보면 Rocky Linux firewalld의 Rich Rule(방화벽 허용 규칙)에 가깝다.

예를 들어:

source address="210.221.44.107"
 

은:

210.221.44.107에서 들어오는 IPv4 통신을 대상으로 한다.

는 의미이고,

accept
 

은:

해당 통신을 허용한다.

는 의미다.

그리고:

log prefix="ast16_임성민_210.221.44.107"
 

는 방화벽 로그가 남을 때 식별하기 쉽게 앞에 붙이는 문자다.

따라서 이 내용은 아마 각 교육생 외부 IP를 서버 방화벽에서 허용하기 위한 규칙을 공유받은 것으로 보인다.

이번 Apache Basic 인증이나 ARP 패킷 분석의 핵심 명령은 아니므로, 강사가 별도로 방화벽 설정을 요구하지 않았다면 블로그에서는 참고: 원격 접속 허용용 firewalld Rich Rule 정도로 분리해 두는 게 좋다.


평가 제출용 핵심 체크리스트

  1. /app/apache/.htpasswd 생성
  2. Apache 인증 계정 등록
  3. /app/apache/htdocs/admin 생성
  4. admin/index.html 생성
  5. httpd.conf에 Basic Authentication 설정
  6. apachectl configtest → Syntax OK
  7. Apache restart
  8. http://192.168.11.17/admin/ 접속
  9. 로그인 창 확인
  10. ARP Spoofing 실습
  11. ARP 관련 패킷 2개 캡처
  12. Ethernet + ARP Header 각각 분석
  13. 서로 다른 IP가 동일한 MAC을 가리키는지 비교
  14. 분석 결과 및 ARP Spoofing 판단 작성