반응형

(Docker)도커 - 리눅스O/S(Rocky, ubuntu)  컨테이너 설치 및 SSH 접속하기

 

리눅스를 설치하고 SSH 접속하는 방법은 아래와 같습니다.

  1.  docker full 리눅스버전 명령어로 리룩스 가져오기 및 실행하기
  2.  실행된 리눅스 컨테이너에 접속하여 OpenSSH를 설정 하고 접속 가능토록 하기
  3.  외부에서 컨테이너까지 접속하는데 방화벽등이 있다면 접속 허용해주기

 

Rokcy Linux(록키 리눅스) 컨테이너 설치 및 SSH 접속하기

현재 다운 받은 이미지가 하나도 없는 상태부터 진행하겠습니다.

docker images

 

docker full 명령어로 최신 Rocky Linux를 도커허브에서 가져옵니다.

docker pull rockylinux/rockylinux:latest

docker pull

 

docker run 명령어로 도커 이미지를 컨테이너로 실행하여 줍니다.

  • -d 옵션은 백그라운드 옵션입니다.
  • --privileged 옵션을 넣어주어야 록키 리눅스 컨테이너의 주요 자원에 접근이 가능해 집니다.
  • /usr/sbin/init 실행은 록키 리눅스 컨테이너에서 systemctl을 사용하기 위해 실행합니다.
  • 서버 2222포트로 접속시 -> 컨테이너 22포트로 포트포워딩(보내져) 컨테이너에 접속됩니다.
docker run -d --privileged --name rocky_v1 -p 2222:22 rockylinux/rockylinux /usr/sbin/init

docker run

 

docker ps 명령어로 프로세스가 정상적으로 올라왔는지 확인합니다.

docker ps -all

 

docker exec 명령어로 Rocky Linux 컨테이너로 접속을 합니다.

  • -it 옵션은 bash에 접속시 필수로 들어가는 옵션입니다.
  • -u 0 옵션은 bash 접속시 권한을 루트(0)으로 접속시켜 줍니다.
docker exec -itu 0 rocky_v1 /bin/bash

docker exec -itu 0

 

이제는 rockylinux 컨테이너에 접속이 되었습니다. 아래 명령어를 입력하여 필요한 패키지를 설치합니다.

(원하는 패키지가 더 있을 경우 추가로 설치하시기 바랍니다)

  • 패키지 관리지가 yum에서 dnf로 변경되었습니다. (yum도 사용은 가능합니다)
dnf upgrade -y

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

 

먼저 루트의 패스워드부터 변경을 해줍니다. 너무 쉬운단어가 아닌 문자로 만드시기 바랍니다.

passwd

 

다음은 systemctl status sshd 명령로 ssh의 상태를 확인해 봅니다. 현재 상태는 inactive 상태입니다.

systemctl

 

systemctl start sshd 명령어로 sshd를 시작해 줍니다. 그리고 다시 상태를 확인해보면 active 상태인 것이 확인 됩니다.

systemctl

 

이제 ssh로 접속이 되는지 확인하겠습니다. 서버에서 도커로의 ssh접속부터 확인하겠습니다.

  1. exit 명령어로 록키 리눅스 컨테이너에서 빠져나와 서버로 돌아오기
  2. ssh root@localhost -p2222 명령어로 록키 리눅스 컨테이너에 ssh 접속해보기 (연결 문의시 yes)
  3. 록키 리눅스 컨테이너의 root 비밀번호를 입력하여 컨테이너 쉘 접속하기 

exit -> ssh접속 -> root의 passwd 입력

 

이제 외부에서 putty로 접속을 해보겠습니다.

만약 도커까지 도달하는 경로에 공유기, 서버등에 방화벽과 포트포워딩이 필요하다면 설정하시기 바랍니다.

putty 접속 성공

 

sftp 사용을 위해 파일질라로도 접속을 해봅니다.

파일질라 접속 성공

 

이제 록키 리눅스 컨테이너를 새로운 도커 이미지로 commit(저장)합니다. 이미지 목록도 확인합니다.

# docker commit 컨테이너명 저장할이미지명
docker commit rocky_v1 rocky_ssh

docker images

docker commit
docker images

 

 

Ubuntu Linux(우분투 리눅스) 컨테이너 설치 및 SSH 접속하기

docker full 명령어로 우분투를 가져오고 docker images로 목록을 확인합니다.

docker pull ubuntu
docker images

docker pull

 

docker run 명령어로 우분투 이미지를 컨테이너로 실행시키고 프로세스(PS) 상태를 확인합니다.

  • -it 옵션은 bash 실행을 위해서 들어가는 옵션입니다.
  • 1222 포트로 접속시 -> 22 포트로 포워딩
docker run -d -it --name ubuntu_v1 -p 1222:22 ubuntu
docker ps -all

docker run

 

docker exec 명령어로 우분트 리눅스 컨테이너 bash에 접속을 합니다.

docker exec -it ubuntu_v1 /bin/bash

docker exec

 

다음 명령어를 순차적으로 실행하여 필요한 패키지들을 설치합니다.

apt update && apt upgrade -y

apt install vim -y
apt install net-tools -y
apt install openssh-server -y
# 설치중 나라를 고르는 항목이 나올 수 있습니다.

 

먼저 passwd 명령어로 root의 패스워드를 변경해줍니다.

password

 

다음은 sshd_config 파일에 있는 내용중 PermitRootLogin 부분을 주석을 제거하고 yes로 변경합니다.

sshd_config의 PermitRootLogin yes로 설정

 

다음은 ssh 서비스를 시작합니다. 상태도 확인합니다.

service ssh start
service ssh status

service ssh start

 

이제 우분투 리눅스 컨테이너에서 exit 명령어로 빠져나옵니다. 서버에서 ssh 명령어로 우분투 리눅스 컨테이너로 접속을 해봅니다. 정상적으로 접속이 됩니다.

ssh 접속 성공

 

이제 외부에서 putty로 접속을 해보겠습니다.

만약 도커까지 도달하는 경로에 공유기, 서버등에 방화벽과 포트포워딩이 필요하다면 설정하시기 바랍니다.

putty로 접속 성공

 

만약 파일질라에서 알고리즘 어쩌구 하면서 접속이 안되는 경우가 있으신 분들은 최신버전의 파일질라를 재설치 후 접속하시기 바랍니다.

 

(Docker)도커 전체보기

 

'(Docker)도커' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형
반응형

라즈베리파이4 해킹공격 대비 ssh 기본포트 변경

 

라즈베리파이 O/S를 설치하고 기본 비밀번호를 쓰시는 분은 없을 것으로 생각됩니다.
만약 외부에서 ssh로 라즈베리파이를 접속할 수 있는 상태를 만드셨다면 이번 포스팅을 통해 반드시 ssh의 기본포트 변경하시어 해킹공격에 대비하시기 바랍니다.

라즈베리파이를 외부에서 22번 포트로 ssh 접속에 이용하고 계시다면 아래 명령어를 통해 해킹 이력을 살펴보시기 바랍니다.

먼저 netstat | more 를 입력하여 현재 라즈베리파이의 네트워크 접속 상태를 확인합니다.


위 사진을 보시면 제 라즈베리파이(IP:192.168.0.251:ssh)에 abts-north-static:48774가 접속한 것을 확인 할 수 있습니다.
접속은 했지만 비밀번호 로그인까지 해서 쉘까지 들어왔는지, 아니면 비밀번호를 틀렸는지는 아래 명령어로 확인을 해야 합니다.

먼저 로그인을 못하고 실패한 이력을 살펴 보겠습니다. 아래 명령어를 쉘에 입력합니다.
($ sudo last -f /var/log/btmp)


제가 알지도 못하는 아이피에서 정말 여러번의 로그인 실패가 이뤄진 것이 확인됩니다.
IP 하나를 https://whois.kisa.or.kr 사이트에서 확인해보겠습니다. 어느나라 놈인지...


이제는 로그인까지 성공해서 쉘까지 접속한 이력을 확인해보겠습니다. 아래 명령어를 입력합니다.
($ last)


다행이 쉘까지 로그인한 이력에는 같은 공유기에 붙어 있는 192.168.0.XXX 대역과, SKT텔레콤 아이피인것으로 보아 제가 외부에서 스마트폰으로 쉘에 접속한 기록인것 같습니다. (비밀번호 꼭 복잡하게 만드세요.)

이제 저는 해킹을 피하기 위해서 먼저 ssh의 기본포트를 변경하겠습니다. 해야할 작업은 3가지 입니다.

  1. /etc/ssh/sshd_config 파일에 Port (원하는 포트숫자) 입력. 저는 1922포트로 변경 하겠습니다.
  2. sshd 재시작
  3. (공유기 사용시) 공유기 포트포워딩 ssh포트 변경

먼저 sudo vi /etc/ssh/sshd_config 명령어를 입력하고 내용에 Port 1922를 입력합니다. (주석처리된 Port 부분을 수정 또는 빈공간에 추가)

vi로 수정후, cat으로 확인


다음은 sudo systemctl restart sshd 명령어로 ssh를 재시작합니다.


마지막으로 공유기를 사용하시는 분들은 공유기의 포트포워딩 주소를 변경해줍니다.
저는 외부에서 공유기 1922포트로 접속하면 -> 라즈베리파이 1922포트로 포워딩 하도록 하겠습니다.


포트포워딩에 자세한 방법은 이전 포스팅을 참조하시기 바랍니다.
reddb.tistory.com/13

 

라즈베리파이4 스마트폰으로 외부에서 원격 접속하기 2편

라즈베리파이4 스마트폰 앱으로 외부에서 원격 접속하기 1편에서는 같은 공유기에 접속된 스마트폰에서 라즈베리파이를 원격 접속하는 방법을 배우봤습니다. 2편에서는 같은 공유기가 아닌 다

reddb.tistory.com


(만약 centos 사용자가 ssh 포트를 변경하기 위해 이글을 보고 있다면, centos의 경우는 centos방화벽에서 1922포트를 열어줘야 접속이 가능합니다.)

### selinux 사용을 위한 policycoreutils-python 설치 ### 
$ yum install -y policycoreutils-python 

### selinux 포트허용 ### 
$ semanage port -a -t ssh_port_t -p tcp 1922 

### selinux 포트허용 목록확인 ### 
$ semanage port -l

### 방화벽 포트허용 및 리로드 ### 
$ firewall-cmd --permanent --zone=public --add-port=1922/tcp $ firewall-cmd --reload 

### 방화벽 포트허용 목록확인 ### 
$ firewall-cmd --list-all


한가지 팁을 더 말씀드리면 ssh 기본포트 변경없이 공유기에서 포트포워딩 포트를 변경하는 것 만으로도 위의 효과를 낼 수 있습니다. (해킹은 외부에서 들어오고 외부에서 들어오는건 공유기 포트포워딩을 반드시 거칩니다.)

외부에서 내 공유기 1922포트로 들어오는 접속을 -> 라즈베리파이 22포트로 포워딩 시켜주는 방법입니다.

이 방법을 이용하시면 같은 공유기에 접속되어 있는 PC, 스마트폰에서 라즈베리파이 ssh 접속은 22포트를 통해서 하고, 외부에서 공유기(IP)를 통해서 포트포워딩을 통해 ssh에 접속할때는 1922포트로 접속하게 됩니다.

라즈베리파이 전체보기

 

'라즈베리파이' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형
반응형

리눅스 서버 취약점 보안

 

취약점 점검항목: 20. 최신 SSH 버전 사용

 

 

취약점 점검기준

  - 양호기준: SSH 서비스를 사용하지 않거나 주기적으로 패치를 관리하고 있을 경우 양호합니다.

  - 취약기준: SSH 서비스를 사용하며 주기적으로 패치를 관리하고 있지 않을 경우 취약합니다.

 

취약점 점검방법

  - sudo 권한이 있는 아이디 쉘 접속 후 루트 권한을 얻어서 작업하시길 바랍니다.
    $sudo su - 

 

  - SSH 버전을 확인합니다.

    #ssh -V

ssh -V 확인




취약점 조치방법

  - 최신 ssh를 설치합니다.

  - apt-get update로 최신 업데이트를 합니다.

    #apt-get update

apt-get update

 

  - apt-get install openssh-server 명령어로 서버용 sshd를 설치합니다.

    #apt-get install openssh-server

openssh-server 설치

※ 이미 최신버전이 설치된 경우 0개 업그레이드로 나옵니다.

 

 

리눅스(유닉스) 취약점 점검 전체보기

 

'리눅스(유닉스) 취약점 점검' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

 

반응형