13일차

●13일차(20250107)
#미션
도메인 세팅과 데이터베이스 세팅
word.st.kr 계정: word
dvwa.st.kr 계정: dvwa
web.st.kr 계정: web1
web2.st.kr 계정: web2
> 백업, 이중화 작업

계정추가
adduser word
adduser dvwa
adduser web1
adduser web2
확인

http://10.0.2.15/~word
http://10.0.2.15/~dvwa
http://10.0.2.15/~web1
http://10.0.2.15/~web2
도메인 수정
nano /etc/bind/st.kr.zone
다 만들고

각각의 public_html 아래에 파일 넣어줬다
unzip word.zip
unzip dvwa.zip
unzip web1.zip
unzip web2.zip

우분투를 껐다가 키고 일반드라이브로 바꾸자
> gns 안으로 들어가짐
> 밖에 윈도우10에서도 들어가졌는데 안으로 들어가서 firefox로도 들어가진다
> fpm, 한글깨지는거 설치 됐나 확인

kali firefox에
word.st.kr/wordpress로 들어가야함
> 좀 번거러움
> kali에서 10.0.2.15서버로 들어가서 root로 들어가서 nano /etc/apache2/sites-available/hosting.conf에 들어가자
DocumentRoot /home/word/public_html/wordpress
> 경로를 바꿔주면 word.st.kr만 쳐도 들어가진다

kali에서 서버관련 내용을 바꾸고 싶을때
> ssh master@10.0.2.15
> servername 안바꿔줘도 된다

kali -> web application analysis

cms, 프레임워크
> 우리가 쓰는건 cms
> cms > 다 만들어진 사용자

#데이터베이스
서버 루트로 들어가자 (kali)

mysql

CREATE DATABASE word;
CREATE USER 'word'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON word.* TO 'word'@'localhost';
FLUSH PRIVILEGES;

#외부접속허용(엄청 위험한 행위)
CREATE USER 'word'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON word.* TO 'word'@'%';
FLUSH PRIVILEGES;
-> 모든 ip대역대를 푼다

#외부접속허용(본인의 IP만 추가)
CREATE USER 'word'@'192.168.0.201' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON word.* TO 'word'@'192.168.0.2';
FLUSH PRIVILEGES;

CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;

CREATE DATABASE web1;
CREATE USER 'web1'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON web1.* TO 'web1'@'localhost';
FLUSH PRIVILEGES;

CREATE DATABASE web2;
CREATE USER 'web2'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON web1.* TO 'web2'@'localhost';
FLUSH PRIVILEGES;

mysql
show databases;
use st
show tables;
desc users;

wordpress : cms
dvwa : 웹취약점분석

#wordpress
일단 mysql에서
CREATE DATABASE word;
CREATE USER 'word'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON word.* TO 'word'@'localhost';
FLUSH PRIVILEGES;
>
워드 데이터베이스를 넣어주고
kali
ssh master@10.0.2.15
su word
cd ~
cd /public_html/wordpress
cp wp-config-sample.php wp-config.php
nano wp-config.php
--------------------------------------------------------
/** The name of the database for WordPress */
define( 'DB_NAME', 'word' );

/** Database username */
define( 'DB_USER', 'word' );

/** Database password */
define( 'DB_PASSWORD', '123456' );
--------------------------------------------------------

word.st.kr 웹으로
사이트제목 st
admin
123456
word@word.st.kr
검색엔진 차단 허용
> 설치 데이터베이스에 저장된다

로그인해서 들어가면
admin
123456

#dvwa
일단 mysql에서
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
>dvwa 데이터베이스를 넣어주고

웹으로 가면 config.inc.php를 만들라고 되어있다
cd ~
cd /public_html/config
cp config.inc.php.dist config.inc.php
nano config.inc.php
---------------------------------------------------------------------
$_DVWA[ 'db_database' ] = getenv('DB_DATABASE') ?: 'dvwa';
$_DVWA[ 'db_user' ] = getenv('DB_USER') ?: 'dvwa';
$_DVWA[ 'db_password' ] = getenv('DB_PASSWORD') ?: '123456';
----------------------------------------------------------------------

dvwa.st.kr 웹으로
admin password

빨간색이 나옴 이걸 고쳐야한다
Writable folder /home/dvwa/public_html/hackable/uploads/: No
Writable folder /home/dvwa/public_html/config: No

#selk (우분투)
: 모니터용 관제용 시스템
포트 22, 5601, 9200, 514 추가
백업도 되고 데이터 분석할 때 쓰인다

1. rsyslog 구축
hostname > log
3대서버로부터 전송된 모든 로그를 분석 및 저장함
3대서버로부터 발생하는 모든 로그가 포트 514로 들어옴
원격으로 데어터를 가져오게 할것이다

nano /etc/rsyslog.conf
서버는 포트(514)를 열고 3대 서버로부터 데이터가 전송되는 것을 기다림
#module(load="imtcp")
#input(type="imtcp" port="514")
> 주석해제
$AllowedSender TCP,10.0.2.0/24, *.st.kr
> 추가

apt -y install net-tools
systemctl restart rsyslog
netstat -ant | grep 514
> 포트 확인

2. 로그를 데이터베이스에 저장하기
apt -y install mariadb-server
apt -y install rsyslog-mysql
> 데이터베이스 설치
> 설정 허용
> 123456

mysql
use Syslog;
desc SystemEvents
select * from SystemEvents;
> 비어있음

3. Rsync 설정
apt -y install rsync
nano /etc/rsyncd.conf
-------------------------------
[backup]
path = /backup

hosts allow = 10.0.2.15
hosts deny = *
list = true
uid = root
gid = root
read only = false
------------------------------
systemctl start rsync

#데이터가 전송되기 때문에
/backup 디렉토리 저장 공간이 많이 필요함

LVM
3G 1G
: 용량이 각각 다르다 합쳐서 하나로 묶은 다음 4G로 쓰자(그렇게 중요하지 않는 데이터 관리)
> 로그(하나 없어도 상관없움)

RAID
2G 2G
: 2G를 하나(미러링)로 쓸수도 나눠서 쓸수도 있다(안전하게 관리)
> 중요한 웹페이지 같은거

설정 저장소에 가서
하드디스크 추가
만들기
SELK_HDD1 3G(가상머신디스크)
SELK_HDD2 1G(가상머신디스크)
SELK_HDD3 2G(가상머신디스크)
SELK_HDD4 2G(가상머신디스크)
추가해주기

kali 서버
su
find / -name php.ini
nano /etc/php/8.3/fpm/php.ini
--------------------------------
allow_url_fopen = On
allow_url_include = On
display_errors = On
display_startup_errors = On
--------------------------------
reboot

dvwa.st.kr (http로 가게)
> 위에 빨갛게 표시가 됐던게 초록색 installed가 되어있다

>create database 를 누르면 로그아웃이 되고 비밀번호가 바뀌어서 로그인이 안됨
>admin / password

4. 데이터 백업하기
cd /
mkdir /backup
------------------------------
public_html에 있는 php파일
데이터베이스 .sql 파일
-----------------------------
프로그램이 필요함
su word
cd ~
nano backup.sh
-----------------------------------------------------
#!/bin/sh
set $(date)
fname="backup-word$1$2$3.tar.gz"
tar cvzf /backup/$fname /home/word/public_html
-----------------------------------------------------
su dvwa
cd ~
nano backup.sh
-----------------------------------------------------
#!/bin/sh
set $(date)
fname="backup-dvwa$1$2$3.tar.gz"
tar cvzf /backup/$fname /home/dvwa/public_html
-----------------------------------------------------
chmod 777 /backup
chmod 755 backup.sh

nano /etc/crontab
10 16 * * * root /home/dvwa/backup.sh
> 4시 10분에 백업하라는 뜻

systemctl restart cron

web1과 web2또한 해줬다

./backup.sh
백업파일 실행

rm -rf (파일삭제)

4-1. 3대서버
rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup
> 이걸 해주려면 서버에 etc/rsync_exclude.lst이 있어야한다(touch rsync_exclude.lst)
> LOG 서버를 활성화시켜줘야한다

4-2. LOG 서버 활성화
selk 우분투 서버에 들어가
nano /etc/netplan/50[tab]
-----------------------------------
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses: [10.0.2.5/24]
gateway4: 10.0.2.2
nameservers:
addresses: [10.0.2.15]
-------------------------------------
> 로그에 직접 ip를 넣어준다.

cd /
mkdir backup
> backup 디렉토리를 만들어준다

4-3. 서버 설정
kali에서
ping 10.0.2.5
st.kr.zone에 log를 추가해준다

rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup
해주면 업로드된다
> 안될때는 리눅스 시간과 컴퓨터 시간이 맞지 않아서 일것이다
> or backup.sh 오타
> ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
> 리눅스 시간 동기화

nano /etc/crontab (최종)
30 09 * * * root /home/dvwa/backup.sh
31 09 * * * root /home/word/backup.sh
37 09 * * * root rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup
00 04 * * * root rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup
> 4시 취약시간
> 백업 디렉토리에 가보면 백업되어있는것을 볼 수 있다.
> 로그 서버에도 백업디렉토리 아래에 백업 디렉토리가 생기면서 그 아래에 백업파일이 만들어질 것이다(3번째 코드때문)

#데이터베이스 복제 기능 활성화시키기

#TCP/IP를 이용해 저장 공간을 원격지의 클라이언트에게 제공하는 iSCSI서버 활성화
cron을 주기적으로 반복되는 일을 하도록 하는 서비스