Linux | 리눅스(Linux) 에서 핑(Ping) 차단 및 허용하기

리눅스 서버(Linux Server)를 구성한 경우 보통은 핑(Ping)을 차단하지 않고 사용하는 경우가 많은데, 해킹등의 목적으로 네트워크 침입이 발생한 경우 핑(Ping)을 통해 특정 서버가 살아있는지 확인하는 경우가 많기 때문에 중요하거나 특별히 노출시키지 않아야 하는 서버에는 핑(Ping)을 통해 운영상태(Live)를 확인할 수 없도록 차단하는 것이 좋다.

이 경우 다음과 같은 방법을 통해서 조치를 취할 수 있다.

# proc 파일시스템을 직접 수정하는 방법 (Root 사용자가 조치 가능)

# Ping 차단
root@localhost:/# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Ping 허용
root@localhost:/# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_allCode language: PHP (php)

# sysctl 커맨드를 사용하여 적용하는 방법 (Root 권한을 가진 사용자가 가능, sudo 이용가능)

# Ping 차단
root@localhost:/# sysctl -w net.ipv4.icmp_echo_ignore_all=1

# Ping 허용
root@localhost:/# sysctl -w net.ipv4.icmp_echo_ignore_all=0Code language: PHP (php)

Ubuntu에 Docker 설치 방법

우분투에서 docker 설치 방법
이번 글에서는 우분투(Ubuntu) 18.04 또는 우분투 16.04에서 도커(Docker)를 설치하는 방법에 대해서 설명드리도록 하겠습니다.
그리고 여러가지 버전의 CUDA Toolkit을 사용할 수 있도록 nvidia-docker를 추가적으로 설치하는 방법에 대해 설명드립니다.

도커는 크게 2가지 에디션 버전으로 나뉩니다.

  • Community Edition (CE) : 개발자나 작은 팀들에게 이상적인 버전이며 무료로 사용할 수 있습니다.
  • Enterprise Edition (EE) : 엔터프라이즈 개발이나 실제 확장 가능한 서비스를 개발하는 팀에서 사용하기 적합한 유료버전의 에디션입니다.

무료로 사용할 수 있는 도커 CE 버전으로 설치하는 방법을 우분투 환경에서 설치하는 방법을 설명 드리도록 하겠습니다.

설치 환경

도커 설치 환경은 우분투 18.04 입니다. 하지만 우분투 16.04 버전을 포함한 이후 버전에서 동일한 방법으로 설치 가능합니다. 만약 우분투 14.04 버전의 경우 아래의 페이지의 내용을 참고하셔서 설치를 진행해 주시면 될 듯합니다.

https://docs.docker.com/install/linux/docker-ce/ubuntu/

준비

먼저 오래된 버전의 도커가 설치되어 있다면, 아래의 명령어를 사용해서 삭제해 주시기 바랍니다.

$ sudo apt-get remove docker docker-engine docker.ioCode language: JavaScript (javascript)

그리고 아래의 명령어를 사용하여 설치에 필요한 패키지들을 설치해 주시기 바랍니다.

$ sudo apt-get update && sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-commonCode language: JavaScript (javascript)

패키지 저장소 추가

아래의 명령어를 사용하여 도커의 공식 GPG 키와 저장소를 추가해 주시기 바랍니다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"Code language: JavaScript (javascript)

그리고 아래의 명령어를 사용하여 docker 패키지가 검색되는지 확인해 주시기 바랍니다.

$ sudo apt-get update && sudo apt-cache search docker-ceCode language: JavaScript (javascript)

만약 현재 우분투 버전에서 설치 패키지가 검색된다면 아래와 같은 내용이 출력될 것입니다.

docker-ce - Docker: the open-source application container engine

도커 CE 설치

그 다음 아래의 명령어를 사용하여 도커 CE 에디션을 설치해 주시면 됩니다.

$ sudo apt-get update && sudo apt-get install docker-ceCode language: JavaScript (javascript)

그리고 일반 사용자계정으로 docker 명령어를 사용하기 위해서는 아래의 명령어로 그룹을 추가해 주시면 됩니다.
아래의 명령어는 ubuntu라는 사용자를 docker그룹에 추가하는 내용입니다.

$ sudo usermod -aG docker $USERCode language: PHP (php)

위의 명렁어를 사용하여 일반 사용자를 docker 그룹에 추가하지 않았을 경우, 일반 사용자로 docker 명령어 실행시 아래와 같은 오류가 발생 할 수 있습니다.

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission deniedCode language: JavaScript (javascript)

따라서, 일반 사용자에서 docker 명령어 실행 시 permission denied 오류가 발생하지 않도록 사용자 그룹을 추가해 주시기 바바랍니다.

nvidia-docker 설치

위의 단계까지 끝내면 일반적인 도커 기능들을 이용하실 수 있습니다. 하지만 NVIDIA의 GPU를 이용하시면서 여러 환경의 CUDA Tookit을 이용하실 경우 nvidia-docker라는 확장 기능을 추가하시면 보다 편리하게 사용하실 수 있습니다.

nvidia-docker를 설치하고자 하실 경우 호스트 운영체제에 먼저 NVIDIA 드라이버가 설치되어 있어야 합니다. NVIDIA의 그래픽카드 또는 GPU를 사용하지 않는 경우 이 과정을 진행하고 도커 설치과정을 끝내실 수 있습니다.

NVIDIA 그래픽 카드 또는 GPU를 사용하시는데, 아직 드라이버가 설치 되지 않았을 경우 아래의 글을 참고하여 먼저 드라이버를 설치한 후에 다음 과정을 진행해 주시면 됩니다.

아래의 명령어를 사용하여 저장소를 추가해 주시기 바랍니다.

$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list

$ sudo apt-get updateCode language: PHP (php)

그리고 아래의 명령어를 사용하여 nvidia-docker를 설치해 주시고, 시스템을 재부팅 하여 도커 데몬이 재실행 되도록합니다.

$ sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart dockerCode language: JavaScript (javascript)

NVIDIA의 CUDA 도커 컨테이너 이미지 버전들은 아래의 페이지에 방문하시면 확인 하실 수 있습니다.

https://hub.docker.com/r/nvidia/cuda/tags/

원하시는 CUDA 및 cuDNN 버전의 컨테이너를 다운받으신 뒤에 아래와 같이 사용하실 수 있습니다.
아래의 명령어는 CUDA Toolkit 9.0 버전의 컨테이너 이미지를 다운 받고, nvidia-smi 명령어를 실행한 예제입니다.

$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

ubuntu 서비스 관리 명령어

For Ubuntu versions that use systemd (15.04 and later) use:

systemctl disable service

This will do the job. It will disable the service and won’t restart after a reboot. To temporarily enable simply start the service. Not enable.

To find the service name use

service --status-all

Other commands are:

Use it to start a service. Does not persist after reboot

systemctl start service

Use it to stop a service. Does not persist after reboot

systemctl stop service

Use it to restart a service

systemctl restart service

Shows the status of a service. Tells whether a service is currently running.

systemctl status service

Turns the service on, on the next reboot or on the next start event. It persists after reboot.

systemctl enable service

Turns the service off on the next reboot or on the next stop event. It persists after reboot.

systemctl disable service

리눅스 성능 측정 sysbench 사용법

리눅스 성능 측정 sysbench 사용법 리눅스 성능 측정에 사용되는 sysbench 명령어 사용법에 대해 설명드립니다. 리눅스 디스크 속도 측정, 리눅스 cpu 속도 확인, 리눅스 메모리 속도 측정에 사용될 수 있는 명령어입니다.

sysbench 설치

우분투 환경일 경우 아래의 명령어를 이용하여 sysbench를 설치 할 수 있습니다.

 $ sudo apt install sysbench

리눅스 CPU 속도 측정

CPU 속도의 성능을 측정하기 위해서는 cpu 옵션을 사용하면 됩니다. CPU 성능 측정에 사용되는 옵션을 확인하기 위해서는 아래의 명령어를 입력합니다.

 $ sysbench cpu help

다음 명령어로 cpu 성능을 측정합니다.

 $ sysbench cpu --cpu-max-prime=10000 run

리눅스 메모리 성능 측정

메모리 성능을 측정하기 위해서는 memory 옵션을 사용합니다. 다음 명령어를 사용하여 메모리 성능 측정시 사용할 수 있는 옵션을 확인 할 수 있습니다.

 $ sysbench memory help

현재 설정된 기본 값으로 검사를 하기 위해서는 아래의 명령어로 검사를 실행합니다.

 $ sysbench memory run

리눅스 디스크 속도 측정

리눅스 성능 측정 sysbench 사용법 sysbench를 이용하여 먼저 리눅스 디스크 속도를 측정하기 위해서는 테스트 파일을 준비해야 합니다. 아래의 명령어는 테스트 파일을 준비하는 것으로 전체 용량이 1G 파일을 준비합니다.

 $ sysbench fileio --file-total-size=1G prepare

테스트 파일을 준비 한 후에는 실제 테스트를 수행합니다. 아래의 명령어로 현재 지원되는 옵션등을 확인 할 수 있습니다.

 $ sysbench fileio help

여러가지 옵션이 제공되는데 필수 옵션인 –file-test-mode 에 대해서 설명드리도록 하겠습니다.

  • seqwr : 순차 쓰기 테스트
  • seqrewr : 순차 다시쓰기 테스트
  • seqrd : 순차 읽기 테스트
  • rndrd : 임의 읽기 테스트
  • rndwr : 임의 쓰기 테스트
  • rndrw : 임의 읽기,쓰기 테스트

순차 읽기 테스트는 아래의 명령어로 수행 할 수 있습니다.

 $ sysbench fileio --file-total-size=1G --file-test-mode=seqrd run

램디스크 vs SSD 디스크 속도 비교

램디스크와 SSD 디스크를 속도를 임의 읽기,쓰기 (rndrw) 옵션으로 성능을 비교해 봤습니다.

램디스크는 tmpfs 라는 파일시스템으로 마운트 된 /dev/shm 위치에서 성능 측정을 하였습니다. 리눅스에서 램 디스크 사용방법에 대한 자세한 내용은 아래의 글을 참고해 주시기 바랍니다.

먼저 아래의 내용은 디스크 읽기 속도를 비교해본 결과 입니다. tmpfs 으로 마운트된 램 디스크가 2,887.39 MiB/Sec 속도로 월등히 빠른 것을 알 수 있습니다.

그리고 아래의 내용은 임의쓰기 속도를 측정한 결과입니다. 램디스크의 쓰기 속도가 1,924.93 MiB/Sec 으로 SSD의 쓰기 속도인 77.04 MiB/sec 보다 월등히 빠르다는 것을 알 수 있습니다.

Private Key를 설정하고 SSH 접속시 오류 발생

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).Code language: CSS (css)

위와같은 문제는 key file의 권한이 설정이 안된경우에 발생한다.

key file권한을 설정해주고 다시 시도하면 해결.

chmod 400 ~/.ssh/id_rsaCode language: JavaScript (javascript)