Amazone EC2 Software update

인스턴스 소프트웨어 업데이트

소프트웨어를 최신 상태로 유지하는 것이 중요합니다. Linux 배포의 다양한 패키지가 버그 수정, 기능 추가 및 보안 취약점 해결을 위해 자주 업데이트됩니다. 처음으로 Amazon Linux 인스턴스를 시작하여 연결하면 보안을 위해 소프트웨어 패키지를 업데이트하라는 메시지가 표시될 수 있습니다. 이 섹션에서는 전체 시스템 또는 단일 패키지를 업데이트하는 방법을 보여 줍니다.

중요

이 절차는 Amazon Linux에서 사용하기 위한 것입니다. 기타 배포에 대한 자세한 내용은 해당 설명서를 참조하십시오.

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/
There are 12 security update(s) out of 25 total update(s) available
Run "sudo yum update" to apply all updates.
[ec2-user ~]$

Amazon Linux 인스턴스의 모든 패키지를 업데이트하려면 다음을 수행합니다.

  1. (선택 사항) shell 창에서 screen 세션을 시작합니다. 경우에 따라 네트워크 장애로 인해 인스턴스에 대한 SSH 연결이 끊어질 수 있습니다. 오래 걸리는 소프트웨어 업데이트 중에 연결이 끊어진 경우 인스턴스가 복구 가능한 혼동 상태로 유지될 수 있습니다. 연결이 끊어진 경우에도 screen 세션을 통해 업데이트가 계속 실행되며, 이후에 아무런 문제 없이 세션에 다시 연결할 수 있습니다.
    1. screen 명령을 실행하여 세션을 시작합니다.
      [ec2-user ~]$ screen
    2. 세션의 연결이 끊어진 경우 인스턴스에 다시 로그인하고 사용 가능한 화면을 나열합니다.
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78 (Detached) 1 Socket in /var/run/screen/S-ec2-user.
    3. 이전 명령에서 확인한 프로세스 ID와 screen -r 명령을 사용하여 화면에 다시 연결합니다.
      [ec2-user ~]$ screen -r 17793
    4. screen 사용을 마쳤으면 exit 명령을 사용하여 세션을 닫습니다.
      [ec2-user ~]$ exit
      [screen is terminating]
  2. yum update 명령을 실행합니다. --security 플래그를 추가하여 보안 업데이트만 적용할 수도 있습니다.
    [ec2-user ~]$ sudo yum update
    Loaded plugins: priorities, security, update-motd, upgrade-helper
    amzn-main                                                | 2.1 kB     00:00
    amzn-updates                                             | 2.3 kB     00:00
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package aws-apitools-ec2.noarch 0:1.6.8.1-1.0.amzn1 will be updated
    ---> Package aws-apitools-ec2.noarch 0:1.6.10.0-1.0.amzn1 will be an update
    ---> Package gnupg2.x86_64 0:2.0.18-1.16.amzn1 will be updated
    ---> Package gnupg2.x86_64 0:2.0.19-8.21.amzn1 will be an update
    ---> Package libgcrypt.i686 0:1.4.5-9.10.amzn1 will be updated
    ---> Package libgcrypt.x86_64 0:1.4.5-9.10.amzn1 will be updated
    ---> Package libgcrypt.i686 0:1.4.5-9.12.amzn1 will be an update
    ---> Package libgcrypt.x86_64 0:1.4.5-9.12.amzn1 will be an update
    ---> Package openssl.x86_64 1:1.0.1e-4.53.amzn1 will be updated
    ---> Package openssl.x86_64 1:1.0.1e-4.54.amzn1 will be an update
    ---> Package python-boto.noarch 0:2.9.9-1.0.amzn1 will be updated
    ---> Package python-boto.noarch 0:2.13.3-1.0.amzn1 will be an update
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package              Arch       Version                 Repository        Size
    ================================================================================
    Updating:
     aws-apitools-ec2     noarch     1.6.10.0-1.0.amzn1      amzn-updates      14 M
     gnupg2               x86_64     2.0.19-8.21.amzn1       amzn-updates     2.4 M
     libgcrypt            i686       1.4.5-9.12.amzn1        amzn-updates     248 k
     libgcrypt            x86_64     1.4.5-9.12.amzn1        amzn-updates     262 k
     openssl              x86_64     1:1.0.1e-4.54.amzn1     amzn-updates     1.7 M
     python-boto          noarch     2.13.3-1.0.amzn1        amzn-updates     1.6 M
    
    Transaction Summary
    ================================================================================
    Upgrade       6 Package(s)
    
    Total download size: 20 M
    Is this ok [y/N]:
  3. 나열된 패키지를 검토하고 y를 입력한 후 Enter 키를 눌러 업데이트를 수락합니다. 시스템의 모든 패키지를 업데이트하는 데 몇 분이 걸릴 수 있습니다. yum 출력은 실행 중인 업데이트의 상태를 보여 줍니다.
    Downloading Packages:
    (1/6): aws-apitools-ec2-1.6.10.0-1.0.amzn1.noarch.rpm    |  14 MB     00:00
    (2/6): gnupg2-2.0.19-8.21.amzn1.x86_64.rpm               | 2.4 MB     00:00
    (3/6): libgcrypt-1.4.5-9.12.amzn1.i686.rpm               | 248 kB     00:00
    (4/6): libgcrypt-1.4.5-9.12.amzn1.x86_64.rpm             | 262 kB     00:00
    (5/6): openssl-1.0.1e-4.54.amzn1.x86_64.rpm              | 1.7 MB     00:00
    (6/6): python-boto-2.13.3-1.0.amzn1.noarch.rpm           | 1.6 MB     00:00
    --------------------------------------------------------------------------------
    Total                                            28 MB/s |  20 MB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Updating   : libgcrypt-1.4.5-9.12.amzn1.x86_64                           1/12
      Updating   : gnupg2-2.0.19-8.21.amzn1.x86_64                             2/12
      Updating   : aws-apitools-ec2-1.6.10.0-1.0.amzn1.noarch                  3/12
      Updating   : 1:openssl-1.0.1e-4.54.amzn1.x86_64                          4/12
      ...
    
    Complete!
  4. (선택 사항) 인스턴스를 재부팅하여 업데이트에서 최신 패키지 및 라이브러리를 사용 중인지를 확인합니다. 커널 업데이트를 로드하려면 재부팅해야 합니다. glibc 라이브러리를 업데이트한 이후에도 항상 재부팅해야 합니다. 서비스를 제어하는 패키지를 업데이트할 경우 서비스를 다시 시작하여 업데이트를 선택하면 되지만, 시스템을 재부팅하면 이전의 모든 패키지 및 라이브러리 업데이트가 완료됩니다.

Amazon Linux 인스턴스의 단일 패키지를 업데이트하려면 다음을 수행합니다.

이 절차를 사용하여 전체 시스템이 아닌 단일 패키지와 해당 종속 패키지를 업데이트할 수 있습니다.

  1. 업데이트할 패키지의 이름과 함께 yum update 명령을 실행합니다.
    [ec2-user ~]$ sudo yum update openssl
    Loaded plugins: priorities, security, update-motd, upgrade-helper
    amzn-main                                                | 2.1 kB     00:00
    amzn-updates                                             | 2.3 kB     00:00
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package openssl.x86_64 1:1.0.1e-4.53.amzn1 will be updated
    ---> Package openssl.x86_64 1:1.0.1e-4.54.amzn1 will be an update
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package       Arch         Version                    Repository          Size
    ================================================================================
    Updating:
     openssl       x86_64       1:1.0.1e-4.54.amzn1        amzn-updates       1.7 M
    
    Transaction Summary
    ================================================================================
    Upgrade       1 Package(s)
    
    Total download size: 1.7 M
    Is this ok [y/N]:
  2. 나열된 패키지 정보를 검토하고 y를 입력한 후 Enter 키를 눌러 업데이트를 수락합니다. 해결되어야 하는 패키지 종속성이 있는 경우 둘 이상의 패키지가 나열될 수 있습니다. yum 출력은 실행 중인 업데이트의 상태를 보여 줍니다.
    Downloading Packages:
    openssl-1.0.1e-4.54.amzn1.x86_64.rpm                     | 1.7 MB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Updating   : 1:openssl-1.0.1e-4.54.amzn1.x86_64                           1/2
      Cleanup    : 1:openssl-1.0.1e-4.53.amzn1.x86_64                           2/2
      Verifying  : 1:openssl-1.0.1e-4.54.amzn1.x86_64                           1/2
      Verifying  : 1:openssl-1.0.1e-4.53.amzn1.x86_64                           2/2
    
    Updated:
      openssl.x86_64 1:1.0.1e-4.54.amzn1
    
    Complete!
  3. (선택 사항) 인스턴스를 재부팅하여 업데이트에서 최신 패키지 및 라이브러리를 사용 중인지를 확인합니다. 커널 업데이트를 로드하려면 재부팅해야 합니다. glibc 라이브러리를 업데이트한 이후에도 항상 재부팅해야 합니다. 서비스를 제어하는 패키지를 업데이트할 경우 서비스를 다시 시작하여 업데이트를 선택하면 되지만, 시스템을 재부팅하면 이전의 모든 패키지 및 라이브러리 업데이트가 완료됩니다.
Advertisements

Amazon EC2 Linux AMI에 FTP(vsftpd) 서버 설정

AWS EC2에 무료로 제공되는 아마존 리눅스 AMI(Amazon Machine Image)에 FTP 서버를 설정하는 방법을 간결하게 설명하고, 스택오버플로우에서도 많은 호응을 얻은 이 있어 번역한다.

원문 : Setting up an FTP server on your Amazon Linux AMI

1단계: vsftpd 설치

EC2 서버에 SSH 접속한 후 vsftpd를 설치한다.

sudo yum install vsftpd

2단계: EC2 인스턴스의 FTP 포트를 연다.

EC2 서버의 FTP 포트를 연다. AWS EC2 관리 콘솔에 로그인하고 왼쪽의 내비게이션 메뉴에서 보안 그룹(Security Groups)을 선택한다. EC2 인스턴스에 할당된 보안 그룹을 선택하고 Inbound 탭에서 20-21 범위의 포트를 추가한다.

security groups1.png

1024-1048 포트 범위도 추가한다:

security groups2

3단계: vsftpd.conf 파일 업데이트

vsftpd 환경 설정 파일을 편집한다.

sudo nano /etc/vsftpd/vsftpd.conf

익명으로 FTP를 접속하는 것을 막는다:

anonymous_enable=YES

anonymous_enable=NO

로 고친다.

vsftpd.conf 파일의 마지막에 다음을 추가한다:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=자신의 인스턴스 공인 IP

vsftpd.conf 파일이 다음과 비슷해 보여야 한다. – 단, pasv_address 값은 자신의 공인(Public) IP 주소여야 한다.

vsftpd1

4단계: vsftpd 재시작

sudo /etc/init.d/vsftpd restart

다음과 같은 메시지가 보여야 한다.

vsftpd2

5단계: FTP 사용자 만들기

/etc/vsftpd/user_list를 보면 다음과 같을 것이다:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

이건 기본적으로 “이 사용자들은 FTP 접근을 허락하지 않는다”라고 말하는 것이다. vsftpd는 이 목록에 없는 사용자가 FTP에 접근할 수 있게 한다.

그러므로 새 FTP 계정을 만들기 위해서, 서버에 사용자를 새로 만들어야 한다.(만약 /etc/vsftpd/user_list에 열거되지 않은 사용자 계정(예를 들어 ec2-user: 역자주)을 이미 가지고 있다면 다음 단계로 넘어간다.)

EC2 인스턴스에 사용자를 새로 만드는 것은 매우 간단하다. 예를 들어 사용자 bret을 만들려면:

sudo adduser bret
sudo passwd bret

다음과 같이 보일 것이다.

vsftpd3.jpg

6단계: 사용자의 홈 디렉토리를 제한한다.

이 시점에서의 FTP 사용자는 홈 디렉토리에 제한이 없다. 이것은 보안상 좋지 않으나, 매우 쉽게 고칠 수 있다.

vsftpd.conf 파일을 편집한다:

sudo nano /etc/vsftpd/vsftpd.conf

다음 라인을 주석해제한다:

chroot_local_user=YES

다음과 같이 보일 것이다:

vsftpd4

vsftpd 서버를 재시작한다:

sudo /etc/init.d/vsftpd restart

부록 A: Reboot 후 vsftpd 실행

vsftpd는 서버가 boot할 때 자동으로 시작되지 않는다. 다음과 같이 한다:

sudo chkconfig --level 345 vsftpd on

부록 A: vsftpd 제거

sudo yum remove vsftpd