리눅스 서버 관리 및 설정

MySQL 데이터베이스 및 사용자 생성

다음은 MySQL에서 데이터베이스와 사용자를 생성하는 명령어입니다:


CREATE DATABASE word;
CREATE USER 'word'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON word.* TO 'word'@'localhost';
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 web2.* TO 'web2'@'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.204' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON word.* TO 'word'@'192.168.0.204';
FLUSH PRIVILEGES;
    

rsyslog 시스템 구축

서버에서 로그를 수집하고 분석하기 위해 rsyslog를 설정하는 방법입니다.


# /etc/rsyslog.conf 파일 수정
nano /etc/rsyslog.conf

# rsyslog 설정을 통해 포트 514를 열고 로그 수신을 대기합니다
module(load="imtcp")
input(type="imtcp" port="514")
$AllowedSender TCp,10.0.2.0/24, *.st.kr

# rsyslog 서비스 재시작
systemctl restart rsyslog

# rsyslog 포트 확인
netstat -ant | grep 514
    

로그를 데이터베이스에 저장하기

MySQL을 사용하여 로그를 데이터베이스에 저장하는 방법입니다.


# MariaDB와 rsyslog-mysql 패키지 설치
apt -y install mariadb-server
apt -y install rsyslog-mysql

# MySQL 데이터베이스 확인
mysql
use Syslog;
describe SystemEvents;
select * from SystemEvents;
    

Rsync 설정

백업을 위해 Rsync를 설정하는 방법입니다.


# Rsync 설치
apt -y install rsync

# /etc/rsyncd.conf 파일 설정
nano /etc/rsyncd.conf

# Rsync 설정 예시
[backup]
path = /backup
hosts allow = 10.0.2.15
hosts deny = *
list = true
uid = root
gid = root
read only = false

# Rsync 서비스 시작
systemctl start rsync

# 3대 서버에서 데이터 전송
rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /backup log.st.kr::backup
    

저장 공간 관리

백업 데이터는 많은 저장 공간을 차지할 수 있으므로 LVM과 RAID 설정을 고려합니다.


# LVM 설정 예시
용량: 3G 1G

# RAID 설정 예시
RAID: 미러링 저장 기능으로 데이터베이스를 안전하게 저장
용량: 2G 2G
    

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

MySQL 데이터베이스 복제 기능을 활성화하는 방법입니다.


# awstats 패키지 설치
apt -y install awstats
    

데이터 백업 스크립트 작성

주기적으로 백업을 수행하는 스크립트를 작성하여 데이터를 보호할 수 있습니다.


# 백업 스크립트 작성
nano backup.sh
#!/bin/sh
set $(date)
fname="backup-$1$2$3.tar.xz"
tar cvzf /backup/$fname /home/word/public_html

# 스크립트 실행 권한 부여
chmod 755 backup.sh
./backup.sh

# 백업 디렉토리 설정
mkdir /backup
chmod 777 /backup
    

주기적인 백업 설정 (cron)

cron을 사용하여 주기적인 백업을 설정할 수 있습니다.


# /etc/crontab 파일 수정
nano /etc/crontab
10 16 * * * root /home/dvwa/backup.sh

# cron 서비스 재시작
systemctl restart cron
    

리눅스 시간 동기화

리눅스 서버의 시간을 동기화하는 방법입니다.


# 시간대 설정
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime