* docker
start - pause - stop 3가지가 가능!
어제는 start만 했다!
* stop
$ sudo docker stop webapp( 프로세스 이름 )
= 이렇게하면 프로세스가 중지된다.
= 그러면 갖고있는 포트를 이용 할 수 있다.
* rm
$ sudo docker rm [CONTAINER ID]
= 이렇게하면 중지된 컨테이너를 아예 삭제시켜 버릴 수 있다 ( 다시 실행 못함 )
= 컨테이너 이름을 다 쓸필요도 없고 앞에 2글자만 써도 삭제된다!
= ps 할때 -a 태그를 붙여주면 꺼져있는 컨테이너도 볼 수 있다.
* images
$ sudo docker images
= 다운로드 받았던 이미지를 볼 수 있다.
= rmi를 쓰면 이미지를 삭제할수있다.
* run
$ sudo docker run -itd -p 8889:80 --name=webapp nginx
= 다시 실행 할 수 있다.
* 이건 뭐한건지 모르겠음
= 대충 여기서도 컨테이너 아이디같은걸 볼 수 있다 등등인듯
* ifconfig
= 도커를 깔면 2개의 네트워크 대역이 더 생긴다.
= 맨 위에꺼와 맨 밑에꺼가 연결이 된다고함.
* 포트포워딩, NAT 게이트웨이, 브릿지... [ 외부에서 내 docker 까지 들어오게 하기 위한 작업들... ]
= 전혀 이해할 수 없었다.
* nikto
$ sudo nikto -h http://192.168.5.129:8889
= 취약점 자동화 분석 도구라고함
= 지금은 페이지가 1개라서 별거 안나온다.
* 로그파일
= /var/log/apache2
= /var/log/ngnix
= 저런곳에 로그가 있당.
* 컨테이너 로그 분석
┌──(root㉿kali)-[/var/lib/docker/containers/580feae1796d8d4cad0665bde4cc72827a5379d451a47d20910fe769af2afcff]
└─# cat 580feae1796d8d4cad0665bde4cc72827a5379d451a47d20910fe769af2afcff-json.log
* nginx 의 index 주소
= /usr/share/nginx/html/index.html
= 도커 컨테이너 안에있는 리눅스는 vi등 아주 기초적인 도구도 없다. ( 경량화 때문 )
= 그래서 안에서 작업하기보단, 밖에서 개발해서 넣는 개념으로 많이 한다고 한다.
* 도커에 index.html 넣기
$ sudo docker cp index.html webapp:/usr/share/nginx/html/index.html
= 사실 cp명령어니까 뒤에 경로 넣는법만 잘 알면 될거같다.
* 컨테이너의 변경 내역
$ sudo docker diff webapp
* 컨테이너 이미지로 만들기
$ sudo docker commit -a "mas615" webapp majunwebapp:1.0
= mas615는 내 아이디 ( 나중에 도커허브에 업로드 해야할지도 몰라서 제대로 쓰는게 좋다! )
= majunwebapp:1.0 는 만들려는 이름
* 이미지 사용하기
$ sudo docker run -itd -p 8887:80 --name=webapp3 majunwebapp:1.0
= 만든 이미지:태그 로 해주는게 중요! ( 태그 안하고 이름만 썼다가 계속 안됐었음; )
* 도커 로그인
$ sudo docker login
* 컨테이너 올리기
$ sudo docker tag majunwebapp:1.0 mas615/webapp:1.0
$ sudo docker push mas615/webapp:1.0
= 푸쉬까지 완료하면 도커 허브에서 확인할 수 있다.
* 도커 허브에 올린걸 다시 받아서 만들기
$ sudo docker run -itd -p 8886:80 --name=webapp4 mas615/webapp:1.0
* 컨테이너의 상태정보 보기
$ sudo docker stats ( 다보기 )
$ sudo docker stats webapp (특정 컨테이너 보기 )
= 리눅스의 top과 같은것 이라고 한다.
* 일단 지금은 뭔지 모르겠는 무언가 ( 대충 볼륨을 이쪽에 하고...뭐 어쩌구... )
$ sudo docker run -idt -p 8080:80 -v /home/kali/ngnix_log:/var/log/nginx nginx:1.19
= 참고로 디렉토리명ngnix 랑 이미지 nginx랑 스펠링 순서 다르다!! 주의!!( 왜 디렉토리를 저렇게 만든건지는 의문 )
$ cat access.log
= ngnix_log 디렉토리에 들어가서 access.log 를 열어보면 엑세스 로그를 볼 수 있다.
* inspect ( 컨테이너 정보보기 )
$ sudo docker inspect eb42176935ec ( CINREINER ID )
= 정보가 너무 많이 나와서.....뭘 봐야할지도 모르겠네.
* (오래된)이미지,컨테이너 한번에 청소해버리기
$ sudo docker system prune
= 하지만 매우 위험하오니 평소에는 쓸일이 거의 없다고 한다.
* 의문
= 저 두개는 무었인가?
= 그 이후에 한거
* 컨테이너 안에서 ifconfig나 vi등을 쓰려면 net-tool 등등 직접 설치해줘야한다.
= 컨테이너 들어가는 방법은 아래 캡쳐
$ sudo docker exec -it ac193e16639b /bin/sh
* 네트워크 만들기 ( 약간 aws로치면 서브넷 느낌 )
$ sudo docker network create web-net01
$ sudo docker network ls ( 네트워크 보기 )
* 만든 네트워크 사용하기
$ sudo docker run -idt -p 8081:80 --net=web-net01 --name=dev_web02 nginx:1.19
* 서브넷 커스터해서 만들기
$ sudo docker network create --driver bridge --subnet 172.100.1.0/24 --gateway 172.100.1.1 custom-net
= driver - 브릿지나 뭐 할수있다는데 안쓰면 기본 브릿지
= subnet - 서브넷
= gateway - 그냥 똑같이 쓰면될듯
= custom-net - 그냥 내가 만들고 싶은 이름
* 로드밸런싱
$ sudo docker run -idt -p 5003:80 --name=nginx_web03 -v /home/kali/web03:/usr/share/nginx/html nginx
= 디렉토리 3개만들기
= 컨테이너 3개 만들기
= 각각 디렉토리에 index.html을 만드는데 로드밸런싱이 잘 되었는지 확인하기위해 다 다르게 만들기
-------------------------------------------------------------------------
* 여기서부터는 귀찮아서 노션에 있는거 그대로 복사했다..
= 내용이 좀 복잡해보이는데 노션에서 확인하는게 더 이로울듯 싶다....
/etc/nginx/nginx.conf 에서 아래와 같이 수정한다. 나머지 설정은 #을 하여 주석처리 한다. (후에 하나씩 풀어주며 확인….)
```bash
upstream backend-lb {
server 127.0.0.1:5001;
server 127.0.0.1:5002;
server 127.0.0.1:5003;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass http://backend-lb;
}
}
```
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
```bash
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
upstream backend-lb {
server 127.0.0.1:5001;
server 127.0.0.1:5002;
server 127.0.0.1:5003;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass http://backend-lb;
}
}
##
# Basic Settings
##
#sendfile on;
#tcp_nopush on;
#types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
#include /etc/nginx/mime.types;
#default_type application/octet-stream;
##
# SSL Settings
##
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
#ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
#gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
```
위와 같이 입력이 완료된 후에 아래와 같이 nginx 서버를 다시 시작한 후에 80포트로 접속하여 새로고침을 하시면 로드밸런싱 진행
-------------------------------------------------------------------------------------------------------------------------------------
이렇게 3개 로드밸런싱 하였다.
성공~
* 뭔진 모르겠는데 강사님이 갑자기 채팅창에 올린 주소
[WebServer][nginx]nginx로 로드밸런싱 하기-(4)
참고: [WebServer][nginx]운영체제별 nginx 설치하기-(1) [WebServer][nginx]root디렉터리 변경하기-(2) [WebServer][nginx]로그 보고 수정하기-(3) [Docker][ShellScript]Nginx.LoadBalancer-Nodejs : 엔진엑스..
kamang-it.tistory.com
* 랜덤값
= 아래 사진처럼 랜덤을 넣으면 랜덤으로 밸런싱한다.
= 그런데 가중치를 줄 수 있다.
= 이런식으로 설정하고 리스타트시키면 1번이 유난히 많이 나오게 로드밸런싱 된다.
= 그리고 sudo docker stop으로 컨테이너 하나를 끄면 그 컨테이너는 빼고 로드밸런싱 된다.
= 다시 살리면 자동으로 다시 로드밸런싱 된다.
'공부 > 클라우드기반 취약점 진단 및 대응 실무' 카테고리의 다른 글
10/21 클라우드기반 취약점 진단 및 대응 실무 (0) | 2022.10.21 |
---|---|
10/20 클라우드기반 취약점 진단 및 대응 실무 (0) | 2022.10.20 |
10/18 클라우드기반 취약점 진단 및 대응 실무 (0) | 2022.10.18 |
10/17 클라우드기반 취약점 진단 및 대응 실무 (0) | 2022.10.17 |