본문 바로가기
정보보안

정보보안5 6차시

by IT매니절 2024. 8. 18.

# docker pull rockylinux/rockylinux

도커에 로키 리눅스 설치

 

# docker run -d --privileged --hostname docker-rocky8 --name rocky8 -p 2222:22 rockylinux/rockylinux /usr/sbin/init

        호스트 시스템과 비슷한 권한 부여

-p 2222:22

외부(호스트)의 2222포트를 도커의 22포트에 매핑

/usr/sbin/init

init 시스템을 실행하여 시스템 초기화

 

# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED         STATUS         PORTS                                   NAMES
a852b2e71c46   rockylinux/rockylinux   "/usr/sbin/init"   7 minutes ago   Up 7 minutes   0.0.0.0:2222->22/tcp, :::2222->22/tcp   rocky8

활성화 확인

 

[root@rocky8 ~]# docker exec -it rocky8 /bin/bash
[root@docker-rocky8 /]#

 

접속

 

dnf -y
upgrade : 더 공격적이고 광범위한 업데이트, 모든 패키지를 최신상태로.
update : 비교적 보수적인 업데이트. 기존 패키지의 업데이트 위주

 

도커에 설치된 로키리눅스는 경량화되어 있으므로 vim이나 netstat, ssh 등을 따로 설치해주어야 한다

# dnf -y install iproute net-tools openssh-server passwd

ip, netstat, ssh, passwd 등.

 

# grep root /etc/shadow
root:!locked::0:99999:7:::

도커에서 처음엔 root 계정에 락이 걸려있으므로 passwd로 비밀번호를 재설정해준다.

 

윈도우에서 도커 2222 port로 원격접속

 

# w
 04:59:06 up  4:49,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    192.168.100.1    04:57    0.00s  0.00s  0.00s w

w에서 FROM 접속 ip를 확인 가능

 

 

도커 커밋하기

현재 실행중인 도커 컨테이너를 새로운 이미지로 생성한다 (백업)

해당 이미지를 기반으로 새로운 컨테이너를 생성할 수 있다

 

# docker commit rocky8 rockylinux8_1
sha256:a8f89312efc7f69a2c3d02b9fefbf337cfd815e89aa0f2ba34ea0f5f15c89921
# docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
rockylinux8_1           latest    a8f89312efc7   8 seconds ago   510MB
rockylinux/rockylinux   latest    523ffac7fb2e   2 years ago     196MB

 

도커 이미지로 생성된 것을 확인할 수 있다 태그는 지정하지 않으면 latest로 됨

 

docker save -o rockylinux8_1.tar rockylinux8_1
# ls
a.txt  rockylinux8_1.tar

 

docker save로 rockylinux8_1.tar로 빼냈음

gzip -N rockylinux8_1.tar 등으로 압축해서 백업해두면 된다

특정 이미지를 백업하거나 다른 시스템으로 이전할때 사용하면 유용

(인터넷 연결이 제한된 환경 등)

 

scp rockylinux8_1.tar.gz 192.168.100.31:
The authenticity of host '192.168.100.31 (192.168.100.31)' can't be established.
ECDSA key fingerprint is SHA256:TBszhxzk5aPhIWt8vwv9K+pDfSGP7iBXzKZNa0IHarg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.100.31' (ECDSA) to the list of known hosts.
root@192.168.100.31's password:
rockylinux8_1.tar.gz                          100%  184MB 199.8MB/s   00:00

=> 원격복사를 통해 다른 vm웨어로 백업한 도커 파일을 전송함

(사용자와 포트가 서로 다를경우는 명시해야한다)

 

현재 .tar.gz 파일로 되어 있는데,

zcat rockylinux8_1.tar.gz | docker load

이렇게 하면 압축 풀고 바로 docker로 load시킬 수 있다

.tar 파일인 경우 docker -load -i zcat rockylinux8_1.tar 명령어로 load 한다

 

# docker images
REPOSITORY      TAG       IMAGE ID       CREATED             SIZE
rockylinux8_1   latest    a8f89312efc7   About an hour ago   510MB

로드된 도커 이미지

 

docker run 하여 띄운다음 ssh로 접속하면 접속된다

(이미 한 번 root 비밀번호 설정해놓은 것을 이미지로 로드했으므로)

 

 

APM 패키지 설치

dnf -y install mariadb mariadb-server php-{cli,fpm,zip,gd,mbstring,curl,xml,pear,bcmath,json,pdo} httpd php php-mysqlnd git

systemctl enable --now php-fpm
systemctl enable --now httpd

sed -i '21icollation-server=utf8_general_ci'  /etc/my.cnf.d/mariadb-server.cnf
sed -i '22icharacter-set-server=utf8'  /etc/my.cnf.d/mariadb-server.cnf

systemctl enable --now mariadb
mysqladmin -p'' password 'P@ssw0rd'
cat << EOF > ~/.my.cnf
[client]
# host = localhost
# user = root
password = P@ssw0rd
EOF

cd /var/www/html
git clone https://github.com/gnuboard/gnuboard5.git
mkdir -m 777 gnuboard5/data
chcon -t httpd_sys_rw_content_t gnuboard5/data/

mysql -e "CREATE DATABASE gnuboard"
mysql -e "CREATE USER gnuboard@localhost IDENTIFIED BY 'gnuboard';"
mysql -e "GRANT ALL PRIVILEGES ON gnuboard.* TO gnuboard@localhost; "


이후 http://로컬호스트:포트/gnuboard5/ 에서 그누보드 설치진행

 

 

# docker ps
CONTAINER ID   IMAGE        COMMAND            CREATED          STATUS          PORTS                                                                                                                     NAMES
e941a633d434   rocky8_apm   "/usr/sbin/init"   48 seconds ago   Up 47 seconds   0.0.0.0:2222->22/tcp, :::2222->22/tcp, 0.0.0.0:8000->80/tcp, :::8000->80/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   rocky8

=> 그누보드를 위해 8000번 포트와 3307포트도 매핑해주었음

 

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
dnf module reset php -y
yum install yum-utils -y
yum upgrade

=> 최신버전으로 업데이트하는 법... 대충 upgrade 했다

 

 

도커 허브에 업데이트하기

https://hub.docker.com/

먼저 회원가입한다

 

# docker login

도커 허브 또는 다른 도커 레지스트리 서버에 인증을 위해 사용하는 명령어

업로드나 다운로드 가능

 

 

로그인시 Username에는 이메일주소 또는 Docker ID를 넣는다

 

docker push boritea/test_docker

기본 태그는 latest이다

latest가 붙은 이미지들이 전부 업로드된다

근데 뭐가 어떤식으로 올라간건지 모르겠어서 좀 더 알아봐야할 것 같다 ...

 

 

WebGot

웹 어플리케이션 보안 교육 목적으로 개발된 오픈소스 프로젝트

의도적으로 보안 취약점을 포함한 웹 어플리케이션을 제공행 해킹기법을 학습하고 실습할 수 있음

 

# docker run -it --name webgoat --hostname webgoat -p 8080:8080 -p 9090:9090 ubuntu

# docker exec -it webgoat /bin/bash

# apt update
# apt -y install git vim
# apt install -y openjdk-17-jdk
# cd
# git clone -b v2023.3 https://github.com/WebGoat/WebGoat.git

 

-b는 브랜치를 의미함

 

호스트에서 접근할 수 있도록 설정파일 수정
# cd WebGoat/

# vi src/main/resources/application-webgoat.properties

webgoat.host=0.0.0.0
# vi src/main/resources/application-webwolf.properties

webwolf.host=0.0.0.0

 

접근가능하게 ip 수정

 

WebGoat/ 경로에서
# ./mvnw clean install 명령어로 Maven 빌드 명령을 실행
BUILD SUCCESS 나오면 성공

 

완료되면

# ./mvnw spring-boot:run

 

2024-08-18 17:46:01.752  INFO 454 --- [           main] org.owasp.webgoat.server.StartupMessage  : Please browse to http://0.0.0.0:8080/WebGoat to get started..

대충 이런 내용이 나오면

http://지정된 주소:8080/WebGoat/ 로 접속한다

가입하면 나오는 페이지

'정보보안' 카테고리의 다른 글

정보보안5 8차시  (0) 2024.08.25
정보보안5 7차시  (0) 2024.08.24
정보보안5 5차시  (0) 2024.08.17
정보보안5 4차시  (0) 2024.08.11
정보보안5 3차시  (0) 2024.08.10