엔지니어가 알아야 할 기본 내용


  1. 인증
  • password
  • key(Cloud VM에서는 Key 인증 방식을 기본적으로 취하는데 Private Key를 다운로드하여 접속하게 한다)
    ssh -i linuxvm_key.pem azureuser@20.20.20.20
  • Private key와 Public key를 만들어서 Public Key를 복사하는 방법
    ssh-keygen
    ssh-copy-id root@vm1 (또는 ssh-copy-id -i ~/.ssh/id_rsa.pub root@vm2)
    반드시 암호대신 Private key 파일 이름을 지정해야 한다.
  1. sftp
  • 21번 포트가 아닌 22번 포트
  • vsftpd 서비스 제공 여부 확인하기: netstat -nltu
  • vsftpd에 접속한(연결함) 컴퓨터 확인하기: netstat -an | grep ESTABLISHED
  1. ansible
  • 여러 linux 컴퓨터들을 동시에 관리하는 방식
  • 이 때 ssh로 접속하여 관리
  1. mysql
  2. scp, ssh vm1 “ls -l ~root”


텍스트 웹 브라우저

  1. 원격 서버에 웹서비스가 실행중인지 확인하기
    curl https://google.com
    curl ifconfig.me (##내 컴퓨터의 공인 IP(공유기, 프록시 서버 IP) 확인)
  2. 원격 웹서버의 상세 정보 확인하기
    curl -v https://google.com
    curl -v https://google.com | grep Server
    curl -v https://www.webtime.co.kr | grep Server (Microsoft-IIS/10.0 웹서버)

웹서버 종류(nginx, apache, IIS 등등)와 인증서 정보(유효 기간)도 보인다

  1. 원격 컴퓨터의 index.html 파일 다운로드하기
    curl -o index.html http://www.nginx.com
  2. 원격 웹서버에 저장된 script 파일 실행하기
    curl -sSL http://down.cloudshell.kr/down/k8slab.sh | sh
    curl -sSL http://get.docker.com | sh

ansible을 이용하여 수십 대의 컴퓨터에 docker 설치하기

ansible servers -m shell -a ‘curl -sSL http://get.docker.com | sh’
ansible servers -m shell -a ‘systemctl enable docker –now’
ansible servers -m shell -a ‘docker version’
ansible servers -m shell -a ‘docker run –name myweb -d -p 8080:80 httpd’
curl vm1:8080


yum install net-tools -y

  1. 로컬 컴퓨터(내가 사용중인 컴퓨터)가 서비스 하고 있는 것 확인
    netstat -nltu (##LISTEN만 확인)
  2. 원격에서 내 컴퓨터에 접속한 컴퓨터 확인
    netstat -an | grep ESTABLISHED


yum install telnet -y

  1. 원격 컴퓨터에서 실행 중인 서비스 확인하기
    telnet 8.8.8.8 53
    telnet https://www.webtime.co.kr 443
    telnet vm1 22


yum install bind-utils -y

  1. 원격 컴퓨터 IP address 확인하기
    nslookup http://www.webtime.co.kr
    nslookup datasolution.kr
  2. local computer의 IP address 확인하기
    hostname -I
    ip addr show
    ifconfig


yum install nc -y
apt install netcat -y

  1. 원격 서버에 특정한 서비스가 실행중인지 확인하기
    nc -zv vm1 80
    nc -zv vm1 22
    nc -zv http://www.webtime.co.kr 443
    nc -zv onlinevision.center 80
    nc -zv down.cloudshell.kr 80
    nc -zv down.cloudshell.kr 443
  2. 우리 회사에서 3306(mysql) 포트를 우리 회사 방화벽에서 막고 있는지를 확인하기
    내 컴퓨터에 인위적으로 3306 포트를 Listen하도록 설정하여 원격 컴퓨터에서 접속이 되는지 확인한다
    nc -l -p 3306
    (##-l: listen, -p: port)

다른 컴퓨터에서 이 컴퓨터에 다른 세션으로 접속하여 3306 포트가 열려있는지(LISTEN) 확인해 보다
netstat -nltu
netstat -nltup (p:pid/program name으로서 어떤 프로그램으로 포트가 열렸는지도 확인 가능)

  1. 원격 컴퓨터에서 telnet으로 3306 포트가 열려 있는지 확인한다
    telnet 192.168.1.42 3306
    메시지가 connected to 192.168.1.42가 나오면 mysql 포트 번호로 접속이 되는 것을 알 수 있다
    그런데 다른 네트워크에서 3306으로 접속을 시도할 때 연결이 되지 않으면 회사 방화벽에서 차단하고 있다는 것을 알 수 있다
  2. 원격 컴퓨터에서 파일을 다운로드하기
    로컬 컴퓨터에서 사용되지 않는 포트(9025)를 사용하여 포트를 열어서 파일을 대기시킨다
    로컬 컴퓨터(192.168.1.42)에서 작업하기
    nc -l -p 9025 > big.file

원격 컴퓨터(192.168.1.2)에서 다운로드하기
nc 192.168.1.42 9025 > big.file

이런 작업을 할 때 로컬 컴퓨터나 회사 네트워크에서 방화벽을 사용하고 있다면 파일을 다운로드할 수 없다.

왜냐하면 방화벽은 기본적으로 모든 포트를 차단하고 있기 때문이다

  1. 포트를 열고 서로 메시지 전송하기
    로컬 컴퓨터(192.168.1.42)에서 작업
    nc -l -p 9025

원격 컴퓨터(192.168.1.3)에서 작업
nc 192.168.1.42 9025
이제부터 메시지를 입력한다
hi
nice to meet you

그 결과 로컬 컴퓨터에서 메시지가 나타난다. 그래서 그 메시지를 읽고 응답한다
me too
how is it going?

  1. 포트를 udp로 열고자 하면
    nc -l -u 9191

다른 컴퓨터에서 여기에 다른 세션으로 접속하여 다음과 같이 하면 udp로 열린 것을 알 수 있다
netstat -nltup

  1. 원격 컴퓨터에서 열린 Port scan 하기
    for i in $(seq 1 65535); do nc -nvz -w 1 192.168.1.3 $i 2>&1; done | grep -i connected

참고: https://tar-cvzf-studybackup-tar-gz.tistory.com/65

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s