Fascination
article thumbnail

01. APM 설치

- 수업 시간에서 사용할 환경: CentOS7(Server, Client)

1) Apache(httpd)

# yum -y install httpd*

2) PHP

# yum -y install php
# yum -y install php-mysql
# yum -y install php* --skip-broken

3) Mariadb(MySQL)

# yum -y install mariadb-server*

4) 실습을 위해 방화벽 중지

# systemctl stop firewalld

5) 웹서버 재시작하기

- 패키지와 데몬명이 다른 경우가 많음 +  프로토콜 같은 경우도 하지만 동일하게 일치되는 서비스들도 있음

# systemctl restart httpd

6) 데이터베이스 서버 재시작

# systemctl restart mariadb

- 1 ~ 6 과정을 통해 웹 아키텍처 구성을 완료함 (client와 server(web server와 db를 포함))

7) 외부에서 접근해보기

- client의 firefox에 server측 ip주소 입력해보기

- testing 123...페이지가 뜨면 접속이 된 것

 

 

02. 환경 설정 파일

- 주 환경 설정 경로/파일: /etc/httpd/conf/httpd.conf

  > CentOS7 아래 버전 경로: /usr/local/apache/conf

  > 31번째 줄: SeverRoot 웹서버가 읽는 환경설정 파일의 경로. 즉, 서버의 홈 디렉토리

  > 42번째 줄: Listen 열어두는 포트 지정 → Kali_Linux에서 nmap ip주소 명령어를 사용하여 확인 가능

Kali_Linux에서 확인

  > 119번째 줄: /var/www/html

  → 해당 디렉토리에 index.html를 올리면 됨 + 웹프로그래머들이 프로그래밍한 웹문서들

  → index.html을 찾아가는 이유는 웹서버에서 index.html을 찾아가라고 설정해 주었기 때문임

  → 디렉토리 리스팅 취약점을 보완하기 위해 해당 경로에 문서가 없을 경우 testing 123..으로 리다이렉션을 해둠

  > 164번째 줄: DirectoryIndex 웹서버가 index.html을 찾도록 지정해둠

여러 개 지정 가능 앞에서부터 순차적으로 해당 파일이 있는지 검사 후 있으면 보여줌

  > 305번째 줄: 확장자 타입 (html이외의 확장자는 여기에 추가해주어야 인식 가능)

- 보조 환경 설정 경로/파일: /etc/httpd/con.f/*

 

 

03. 데이터베이스 생성

1) 데이터 베이스 생성

# systemctl restart mariadb // 데이터베이스 실행
# mysql -p mysql

 

2) 데이터베이스 접속

초기 패스워드는 널이므로 엔터를 쳐서 접속하면 됨

3) 데이터베이스 생성

create database xe;
show databases;

 

4) 데이터베이스 사용자 추가 및 권한 설정

insert into user(host,user,password) values('localhost','xe',password('123456'));
flush privileges;
grant all  privileges on xe.* to xe@localhost identified by '123456'
flush privileges;
quit

 

5) 데이터 베이스 종료 후 db 재시작

# systemctl restart mariadb

 

 

04. 개별 사용자별 웹사이트 구축

1) user 생성

- 우선 이미 test 계정이 있기 때문에 test계정을 사용해 볼 것임

test계정의 권한을 775로 변경: 웹사이트 개설을 위해 권한을 주는 것

추가적으로 웹서버에서는 사용자와 그룹을 apache(일반 사용자)로 설정

(root로 설정시 계정탈취가 이루어지면 심각한 사태가 발생할 수 있기 때문)

따라서 일반 사용자에게도 권한을 주기 위해 755로 설정하는 것

/etc/httpd/conf/httpd.conf 확인

2) 일반 사용자에 디렉토리 추가

# cd /home
# cd 만든계정명(여기서는 test)
# mkdir public_html (디렉토리 생성)

 

public_html: test 계정 사용자의 웹사이트 홈디렉토리가 됨

# cd public_html // 디렉토리 이동
# vi index.html // index.html 생성

 

vi 편집기로 파일 생성

* ~: 나 자신 = 내 홈 디렉토리

client에서 접속이 차단되어 있음을 확인 가능

3) 보조 환경설정 파일 수정

# systemctl stop firewalld
# setenforce 0
# systemctl restart httpd
# cd /etc/httpd/conf.d
# vi userdir.conf // 일반 사용자들이 웹사이트를 구축했을 때 접근 통제 혹은 해당 디렉토리를 어떻게 지정할 것인가를 쪼개둔 설정파일
# systemctl restart httpd // 환경설정을 수정하면 서버를 다시 시작

 

user directory의 웹사이트 구축을 disable했기 때문에 위에서 접속이 차단된 것

 

사용하기 위해서 17번째 줄을 주석처리하고 24번째 줄의 주석을 해제시켜야 함

이렇게 하면 일반 사용자가 웹사이트를 열 수 있음

 

4) Directory listing 취약점 확인

- public_html에 만들었던 index.html 파일을 지우고 korea1, korea2, korea3 폴더 및 test.txt, test2.txt 파일을 만든 후 다시 웹페이지에서 접속

 

userdir.conf

Indexes: 디렉토리 목록을 출력해주겠다고 설정되어 있음

 → 그래서 디렉토리 리스팅 취약점이 발생한 것

해당 옵션을 제거하면 listing이 안됨

5) xe를 통한 웹 사이트 구축

- 다운로드

다운로드

- 다운로드 파일 경로 옮기기: 설치된 경로는 다운로드 일 것임

# mv xe.zip /home/사용하는계정이름(test)/public_html/
# cd /home/test/public_html/
# unzip xe.zip // 압축해제
# chmod 707 xe -R // 하위 디렉토리를 포함한 권한 변경

 

홈페이지 접속

계정명 뒤에 /xe 디렉토리 경로를 주어야 함

defalut 값으로 DB 선택 전까지 Next를 누름

 

db 선택에서 mysql 선택

 

db 연동 부분: 위에서 생성했던 데이터베이스를 연동해줌

 

관리자 생성

 

사이트 접속

 

6) DNS 서버 연결

- DNS 설치

# yum -y install bind*
# cd /var/named // 홈 디렉토리

- 환경설정 파일 수정

# cd /etc
# vi named.conf

 

14번째 줄 주석처리(사용하지 않기 때문에) 및 13번째 줄에서 127.0.0.1을 localhost로 변경

7) 도메인 등록

# vi named.rfc1912.zones

 

위에서 listen-on-v6와 관련된 줄을 주석처리 했었으므로 해당 파일에서 25~29까지는 지워야 함

 

다음과 같이(37~41) 도메인 등록

8) 레코드 파일 생성 (test.co.kr.zone)

# cd /var/named
# vi test.co.kr.zone
# systemctl restart named // named 서버 재실행

 

다음과 같은 내용으로 파일 생성

9) 네임서버 지정

# cd /etc
# vi resolv.conf

 

다음과 같이 변경

10) 가상호스팅 생성

test.co.kr/~test/xe로 접속해서 설정 → 일반 들어가기

 

기본 URL을 위와 같이 변경

 

# cd /etc/httpd/conf.d
# vi vhosts.conf
# systemctl restart httpd

내용은 다음과 같이 설정

 

test.co.kr로 접속이 잘 되면 성공!

 

 

* 재부팅 시 설치는 다시 안해도 되지만 systemctl이나

도메인 네임서버 지정은 재부팅시 매번 해줘야하는 것 같다 :(....

# cd /etc
# vi resolv.conf // dns 수정
# systemctl stop firewalld
# setenforce 0
# systemctl restart httpd
# systemctl restart named
# systemctl restart mariadb

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!