[TIL] 웹서버 구조 & 우분투 셋팅

Captainjack·2022년 10월 14일
0

TIL

목록 보기
159/260

APM

-> Apache(webserver), php(was), mysql(db)

APM으로 개발하는게 익숙하지 않지만 vi로 개발을 하는게 불편해서
일단 ssh로 파일을 전달하는 방법을 찾을지 다른 좋은 방법이있는지 고민해봐야할듯


설치

sudo yum install -y httpd php mariadb-server php-mysql

CentOS -> httpd
Ubuntu -> apache2

mariadb자동 실행

sudo systemctl enable mariadb

apache 서비스 시작

sudo service httpd start
sudo systemctl start httpd

mariaDB 서비스 시작

sudo service mariadb start 
sudo systemctl start mariadb

network 설정

vm으로 설정할때는 나가는 라우터 설정을 192.168.0.x로 설정했는데 이 부분이 애매하넴.

sudo vi /etc/netplan/00-installer-config.yaml

network:
  ethernets:
        ens33:
                dhcp4: no
                addresses: [ip/24] // /24는 빼도 되는 듯
                gateway4: ip
                nameservers:
                        addresses: [8.8.8.8] // [8.8.8.8, 8.8.4.4] 로도 된다

  version: 2

sudo netplan apply // 설정 적용

ifconfig // 확인

Apache로 페이지 출력

sudo vi /etc/www/html

여기에 페이지 넣으면 위 ip 주소로 로컬에서도 접근할 수 있다.
ex) 122.122.0.111/index.html

페이지 오류에 대한 로그 분석


tail -f /var/log/apache2/error.log

Netstat -nalp

DB설정

sudo apt-get -y install mariadb-server
sudo mysql_secure_installation

Enter current password for root (enter for none): 엔터 # 현재 MariaDB의 root 패스워드가 없으므로 엔터
OK, successfully used password, moving on...

Set root password? [Y/n] y 	# MariaDB root 패스워드 설정 질의
New password: kisec123 	# 설정할 root 패스워드 입력
Re-enter new password: 	# 설정한 root 패스워드 확인 재입력

Remove anonymous users? [Y/n] 		y # 익명의 접근에 대한 질의이며, 보안을 위해 차단

Disallow root login remotely? [Y/n] 		n # 외부로의 연결 허용

Remove test database and access to it? [Y/n] 	y # 테스트용으로 생성된 데이터베이스 삭제 여부 질의

Reload privilege tables now? [Y/n] 		y # 현재 설정된 값에 대한 적용 여부 질의


sudo mysql -u root -p

show databases;
use 'databases';
show tables;

select * from 'tables name';

자동 실행 설정

sudo systemctl enable apache2 // CentOS => httpd
sudo systemctl enable mariadb // 

실행

sudo systemctl start httpd // Apache 시작
sudo systemctl start mariadb // Mariadb 시작

DB - PHP 연결

GET 방식 : 주소에 데이터를 추가해서 전달

$pw = $_GET['pw'];

POST 방식 : 데이터를 별도로 첨부하여 전달하는 방식

$id = $_POST['id'];

ex) http//111.111.111.111/test.php

//mysql이 아니라 mysqli 임. 

진심연결
$conn = mysqli_connect($server_name, $user_name, $password, $database_name);
like $conn = mysqli_connect('localhost', 'root', '1234', 'LOGIN');

연결 해제 함수
mysqli_close($conn);

질의문 실행 함수
$result = mysqli_query($conn, $query); // 실질적인 코드 삽입

질의문 결과 행 개수 반환 함수
mysqli_num_rows($result);

질의문 결과, 칼럼명을 배열의 인덱스로 하여 배열에 저장
$row = mysqli_fetch_array($result);
* $row 변수는 $row['칼럼명']으로 해당 값 사용 가능

질의문 결과와 관련된 메모리 해제 함수, mysqli_close 함수 앞에 주로 사용
mysqli_free_result($result);

DB 외부에서 접근하려면 설정

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 127.0.0.1 => 0.0.0.0 // 이 부분 수정 외부로 나가기 가능

service mysqld restart // 시스템 재시작

DUST

./(실행파일) &  

& 추가시 프로그램이 백그라운드로로 동작

Web Proxy Tool

  • Burp Suite // main
  • Fiddler // for 매니아들
profile
til' CTF WIN

0개의 댓글