13일차

미션
도메인 세팅과 데이터베이스 세팅
word.st.kr 계정:word
dvwa.st.kr 계정:dvwa
web1.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
dvwa
web1
web2
word
추가
su word(다른것도 똑같이)
chmod 711 $HOME
chmod 755 ~/public_html
su word -> cd public_html에 zip넣기
ls 로 확인
unzip word
cd /etc/apache2
cd sites-available
ls
nano hosting.conf

DocumentRoot /home/word/public_html/wordpress
ServerName word.st.kr
ServerAdmin word@word.st.kr
ErrorLog /home/word/public_html/logs/error.log
CustomLog /home/word/public_html/logs/access.log combined

systemctl restart apache2


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만 추가)
CREATE USER 'word'@'192.168.0.2' 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;

cd wordpress
cp wp-config-sample.php wp-config.php
nano wp-config.php

st
admin
123456
word@word.st.kr


rsyslog 시스템 구축
hostname > log
3대 서버로부터 전송된 로그를 분석 및 저장함
nano /etc/rsyslog.conf
서버는 포트(514)를 열고 3대 서버로부터 데이터가 전송되는 것을 기다림
$AllowedSender TCP,10.0.2.0/24, *.st.kr
apt -y install net-tools
netstat -ant | grep 514
systemctl restart rsyslog
로그를 데이터베이스에 저장하기
apt -y install mariadb-server
apt -y install rsyslog-mysql
mysql
use Syslog;
desc SystemEvents;
select * from SystemEvents;

#Rsync 설정
apt -y install rsync
nano /etc/rsyncd.conf
# create new
# any name you like
[backup]
# target directory to copy
path = /backup
# hosts you allow to access
hosts allow = 10.0.2.15
host deny = *
list = true
uid = root
gid = root
read only = false

systemctl start rsync

#3대서버
rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup

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

RAID
2G 2G

nano /etc/php/8.3/fpm/php.ini
reboot



#3대서버
데이터 백업하기
cd /
mkdir /backup

public_html에 있는 php파일
데이터베이스 .sql 파일

프로그램이 필요함
cron은 주기적으로 반복되는 일을 하도록 하는 서비스

nano backup.sh
#!/bin/sh
set $(date)
fname="backup-$1$2$3tar.gz"
tar cvzf /backup/$fname /home/dvwa/public_html

chmod 755 backup.sh
./backup.sh

root에서 chmod 777 /backup
su dvwa에서 ./backup.sh

nano /etc/crontab
10 16 * * * root /home/dvwa/backup.sh

systemctl restart cron

3대서버
sync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup

[리눅스 시간 동기화]
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

칼리에 log 10.0.2.3추가
nano /etc/bind/st.kr.zone 에 log 10.0.2.3추가
nano /etc/hostname -> LOG.st.kr
nano /etc/hosts -> 10.0.2.3 st.kr 추가
nano /etc/netplan/50[tab]
dhcp4: no
addresses: [10.0.2.3/24]
gateway4: 10.0.2.2
nameservers:
addresses: [168.126.63.1]

netplan apply