오프라인 1, 2일차 (서버 환경 구축)
2022. 7. 1. 12:26ㆍ보안/케이쉴드
반응형
가상 인프라 구성
온프레미스
장비를 물리적으로 직접 운영하는 형태
클라우드
인터넷으로 인프라를 새롭게 구축. 논리적 저장소 할당
시나리오 설정
웹서버: 아파치2.4.29, 톰캣9.0.16
db: mariadb10.1.48
rsyslog데몬으로 축적
5대의 가상 서버
를 다음과 가치 구축
작업순서 (devserver(.153)> web(.151) > db(.152)> backup(.155)> log(.154))
고정 Ip 설정
sudo vi /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens33: dhcp4: no addresses: [192.168.???.XXX/24] gateway4: 192.168.???.2 nameservers: addresses: [8.8.8.8] version: 2 sudo netplan apply |
개발자 서버
apache2 설정
sudo apt-get install -y apache2 libapache2-mod-jk sudo vi /etc/apache2/sites-available/000-default.conf ( 기존 파일 수정 ) = DocumentRoot /var/www/html JkMount /* tomcat ( 추가 문구 ) sudo vi /etc/apache2/workers.properties ( 파일 생성 ) = 아래 문구 작성 worker.list=tomcat workers.tomcat_home=/usr/share/tomcat9 workers.java_home=/usr/lib/jvm/java-11-openjdk-amd64 worker.tomcat.port=8009 worker.tomcat.host=localhost worker.tomcat.type=ajp13 worker.tomcat.lbfactor=1 sudo vi /etc/apache2/mods-available/jk.conf = 아래와 같이 수정 (기존 문구) JkWorkersFile /etc/libapache2-mod-jk/workers.properties (수정 문구) JkWorkersFile /etc/apache2/workers.properties sudo systemctl restart apache2 |
was
sudo apt-get install -y default-jdk tomcat9 libmysql-java java -version = 자바 설치 완료 확인을 위한 버전 출력 확인 sudo vi /etc/tomcat9/server.xml = 아래와 같이 파일 수정 <!-- Define an AJP 1.3 Connector on port 8009 --> (아래 내용 주석 해제) <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> sudo cp /usr/share/java/mysql-connector-java-5.1.45.jar /usr/share/tomcat9/lib/ sudo systemctl restart tomcat9 호스트 PC 에서 Dev Server IP 입력 후 It Works 페이지 출력 확인 |
vsftp
sudo apt-get install -y vsftpd sudo vi /etc/vsftpd.conf 아래 설정 추가(주석 제거하면됨) write_enable=YES local_umask=022 chroot_local_user=NO ##YES인지 확인 sudo systemctl restart vsftpd sudo chmod o+w /var/lib/tomcat9/webapps/ |
mariaDB
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 root / kisec123 create database KISEC; use KISEC; create table login (id varchar(20) primary key, pw varchar(20)); show tables; desc login; use mysql; select host, user, password from user; GRANT ALL PRIVILEGES ON KISEC.* TO root@'192.168.???.153' identified by 'kisec123'; select host, user, password from user; -> localhost 랑 비밀번호 같은지 확인 flush privileges; exit |
50-server
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf (수정) bind-address = 127.0.0.1 => 0.0.0.0 service mysqld restart |
소스코드
[ 소스코드 옮기기 ] - 호스트 PC 에서 제공된 ROOT.war 파일이 있는 파일탐색기 위치에서 Shift + 우클릭 -> 여기에서 PowerShell 창 열기 클릭 -> scp ROOT.war kisec@192.168.???.153:~/ -> yes/no 선택 나올 시 yes 그대로 입력(입력되는거 안뜸) -> 비밀번호 요구창 뜨면 kisec123 입력 - 다시 Dev 서버로 돌아와서 ls -al ~/ 으로 ROOT.war 파일 정상적으로 옮겨졌는지 확인 - sudo cp ~/ROOT.war /var/lib/tomcat9/webapps/ - cd /var/lib/tomcat9/webapps - sudo mv ROOT/ ROOT_BAK/ - sudo systemctl restart tomcat9 하거나 일정 시간 지나면 알아서 tomcat 이 ROOT.war 파일을 풀어 ROOT 디렉터리 생성 - 여기서부터는 tomcat 계정으로 풀어지기 때문에 sudo -s 해서 root 로 올라가야 됨 - cd ROOT - grep -rn "192.168." joinAction.jsp:10: String jdbcurl = "jdbc:mysql://192.168.???.151:3306/KISEC"; success.jsp:8: String jdbcurl = "jdbc:mysql://192.168.???.151:3306/KISEC"; loginAction.jsp:12: String jdbcurl = "jdbc:mysql://192.168.???.151:3306/KISEC"; = 해당 파일안의 IP를 'Dev Server IP'로 변경 - sudo systemctl restart tomcat9 - 호스트 PC 웹 브라우저에서 Dev Server IP 입력 후 로그인 창 확인 및 회원가입 시도 후 로그인 시도 = admin 으로 회원가입 후 로그인 하면 관리자 페이지 = 그 외 계정은 그냥 로그인 [ ROOT.war 파일 만들기 ] - cd /var/lib/tomcat9/webapps/ROOT/ - jar xvf ROOT.war * |
was로 전송
[ Dev 서버에서 WAS 서버로 ROOT.war 파일 전송 ] ====== 여기서부터는 Dev 서버 터미널에서 작업 - sudo -s - cd /var/lib/tomcat9/webapps/ - ftp [ WAS 서버 IP ] - ftp> cd /var/lib/tomcat9/webapps/ - ftp> mput ROOT.war - ftp> exit ====== 여기서부터는 WAS 서버 터미널에서 작업 - cd ROOT/ - Dev 서버에서 진행했듯 DB 서버로 아이피 변경 필요 = success.jsp, loginAction.jsp, joinAction.jsp - systemctl restart tomcat9 |
web Server
ip 고정
sudo vi /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens33: dhcp4: no addresses: [192.168.???.151/24] gateway4: 192.168.???.2 nameservers: addresses: [8.8.8.8] version: 2 sudo netplan apply |
아파치 설치
sudo apt-get install -y apache2 libapache2-mod-jk sudo vi /etc/apache2/sites-available/000-default.conf ( 기존 파일 수정 ) = DocumentRoot /var/www/html JkMount /* tomcat ( 추가 문구 ) sudo vi /etc/apache2/workers.properties ( 파일 생성 ) = 아래 문구 작성 worker.list=tomcat workers.tomcat_home=/usr/share/tomcat9 workers.java_home=/usr/lib/jvm/java-11-openjdk-amd64 worker.tomcat.port=8009 worker.tomcat.host=localhost worker.tomcat.type=ajp13 worker.tomcat.lbfactor=1 sudo vi /etc/apache2/mods-available/jk.conf = 아래와 같이 수정 (기존 문구) JkWorkersFile /etc/libapache2-mod-jk/workers.properties (수정 문구) JkWorkersFile /etc/apache2/workers.properties sudo systemctl restart apache2 |
was
sudo apt-get install -y default-jdk tomcat9 libmysql-java java -version = 자바 설치 완료 확인을 위한 버전 출력 확인 sudo vi /etc/tomcat9/server.xml = 아래와 같이 파일 수정 <!-- Define an AJP 1.3 Connector on port 8009 --> (아래 내용 주석 해제) <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> sudo cp /usr/share/java/mysql-connector-java-5.1.45.jar /usr/share/tomcat9/lib/ sudo systemctl restart tomcat9 호스트 PC 에서 Dev Server IP 입력 후 It Works 페이지 출력 확인 |
vsftp
sudo apt-get install -y vsftpd sudo vi /etc/vsftpd.conf 아래 설정 추가(주석 제거하면됨) write_enable=YES local_umask=022 chroot_local_user=NO ##YES인지 확인 sudo systemctl restart vsftpd sudo chmod o+w /var/lib/tomcat9/webapps/ [개발 서버 동일] |
rsyslog
3) rsyslog 설정 sudo vi /etc/rsyslog.conf // 파일 맨 하단에 아래 내용 추가 *.* @@192.168.???.154:514 sudo systemctl restart rsyslog |
dbServer
ip 설정
sudo vi /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens33: dhcp4: no addresses: [192.168.???.152/24] gateway4: 192.168.???.2 nameservers: addresses: [8.8.8.8] version: 2 sudo netplan apply |
마리아 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 root / kisec123 create database KISEC; use KISEC; create table login (id varchar(20) primary key, pw varchar(20)); show tables; desc login; use mysql; select host, user, password from user; GRANT ALL PRIVILEGES ON KISEC.* TO root@'192.168.???.151' identified by 'kisec123'; select host, user, password from user; -> localhost 랑 비밀번호 같은지 확인 flush privileges; exit |
50-server
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf (수정) bind-address = 127.0.0.1 => 0.0.0.0 service mysqld restart |
rsyslog
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf (수정) bind-address = 127.0.0.1 => 0.0.0.0 service mysqld restart |
backup db
db 서버에서
===== DB Server 터미널에서 작업!! 백업 서버 X sudo apt-get install xinetd rsync sudo vi /etc/rsyncd.conf (파일 새로 생성 후 아래와 같이 작성) [DBS] path = /backup comment = DB server uid = 65534 gid = 65534 use chroot = yes read only = yes hosts allow = [백업서버 IP] max connections = 3 timeout 600 sudo vi /etc/xinetd.d/rsync (파일 새로 생성 후 아래와 같이 작성) service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } sudo systemctl restart xinetd [DB 덤프 및 Cron 등록] sudo mkdir /backup sudo -s mysqldump -uroot -pkisec123 KISEC > /backup/mysql_dump_$(date +%Y%m%d).sql (덤프 잘되는지 확인) vi /backup/backup.sh (cron 등록을 위한 쉘 스크립트 파일 작성) #!/bin/bash mysqldump -uroot -pkisec123 KISEC > /backup/mysql_dump_$(date +%Y%m%d).sql chmod u+x /backup/backup.sh crontab -e (에디터 선택 시 2번 선택) (일단 테스트를 위해 매분으로 아래와 같이 작성) * * * * * /backup/backup.sh > /backup/backup.log 2>&1 ls -al /backup/ (매 분 마다 파일 변경되는 것 확인) |
백업서버에서
===== DB Backup 서버 터미널에서 작업!!! sudo apt-get install -y xinetd rsync sudo vi /etc/xinetd.d/rsync (파일 새로 생성 후 아래와 같이 작성) service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } sudo systemctl restart xinetd sudo -s rsync -avz [DB 서버 IP]::DBS/mysql_dump_$(date +%Y%m%d).sql /backup/ rsync 로 백업 파일 잘 가져오는지 확인 sudo vi /backup/backup.sh (cron 등록을 위한 쉘 스크립트 파일 작성) #!/bin/bash rsync -avz [가져올 IP]::DBS/mysql_dump_$(date +%Y%m%d).sql /backup/ chmod u+x /backup/backup.sh crontab -e * * * * * /backup/backup.sh > /backup/backup.log 2>&1 ls -al /backup/ 으로 매 분 마다 파일 변경되는 것 확인 (테스트로 1분 간격 적용) |
logserver
- sudo vi /etc/rsyslog.conf = 아래 내용 주석 제거 module(load="imtcp") input(type="imtcp" port="514") = 바로 아래에 파일명 관련 부분 추가 $template LogName, "/var/log/rsyslog/%fromhost-ip%/%PROGRAMNAME%.log" *.* ?LogName - sudo systemctl restart rsyslog - sudo ls -al /var/log/rsyslog/ = 하위에 각 서버 아이피 별 디렉터리 생성 확인 |
결과물: 다음과 같이 실행됨을 확인
반응형
'보안 > 케이쉴드' 카테고리의 다른 글
오프라인 4일차 (ARP 스푸핑 실습, DoS) (0) | 2022.07.07 |
---|---|
오프라인 3일차 (네트워크 기반 위협) (0) | 2022.07.04 |
4일차 공통 교육 과정(리눅스 서버 기본 활용 방안) (0) | 2022.06.26 |
3일차 공통 교육 과정(사용자 및 권한 관리) (0) | 2022.06.24 |
3일차 공통 교육 과정(리눅스 네트워크 설정방법 + 파일시스템 구조 이해) (0) | 2022.06.23 |