AWS – IAM ( Identity & Access Management )

AWS – IAM 은 AWS 에서 각 사용자의 계정을 생성 하는 기능 이다.

개인 계정의 경우 딱히 필요로 한 부분은 아니지만

아마존에서 권고 하기로는 주계약 계정의 경우 최초 계정을 생성할때 사용을 하고 이후의 모든 작업은 IAM 에서 계정을 추가 하여 진행할 것을 권고 하고 있다.

아울러 MFA 인증을 사용하여 계정 보호를 할것을 권고 하고 있다.


AWS IAM ( https://console.aws.amazon.com/iam/home )

  • 접속 URL변경

접속을 하고 주 계약 계정으로 로그인을 하면 아래와 같이 IAM 대시보드를 확인할 수 있다.

빨간색 네모칸 부분이 추후에 자신이 생성한 ID들의 로그인 URL 이다. (계약번호가 노출되기 때문에 모자이크 하였음)

2018-05-23_150955

계약번호는 외우기도 어렵고 노출하는것보다는 다음 그림과 같이 변경하여 운영하는것이 좋다.

2018-05-23_151424

2018-05-23_151441

 

  • 계정 생성

사용자 추가는 아래와 같이 진행한다.

2018-05-23_151025

AWS Management Console 액세스 는 웹 브라우져로 접근하는것을 의미 한다.

즉 일반 사용자를 위한 계정은 이것을 선택 하며, 서버에서 자동화 구현을 위한 프로그램 구동방식을 생성할때 프로그래밍 방식 엑세스를 선택한다.

2018-05-23_151226

AdministratorAccess 권한을 주어 주계약 계정과 동등한 권한을 할당 한다.

2018-05-23_151254

2018-05-23_151310

마지막 화면에서 자동 생성된 비밀번호를 확인할 수 있다.

자동 생성된 패스워드는 최초에 웹 접근시에 변경하여 사용하도록 되어 있다.

2018-05-23_151324


  • IAM 생성 계정으로 로그인 ( https://enteroa.signin.aws.amazon.com/console )

2018-05-23_153947


  • 최고 관리자 권한이 있는 아이디는 MFA (멀티 팩터) 인증을 걸어 사용한다.

주계약 계정 MFA 인증을 설정하는 방법은 아래와 같다.

2018-05-23_154317

2018-05-23_154336

2018-05-23_154448

위와 같이 나온 화면을 스마트폰에서 authenticator 를 검색하여 설치 하여 추가 진행을 한다.
여기서는 Microsoft Authenticator 를 사용하였다. ( 이름을 수정할 수 있는 기능이 있어 google 보다 관리 하기 쉽다. )
인증코드 1 -> 인증코드 2 는 화면에 MFA 인증번호 6자리를 나오는 순서대로 순차 입력을 하면 다음으로 넘어갈 수 있다.

20180523_IMG_1257 20180523_IMG_1255 20180523_IMG_1258 20180523_IMG_1259 20180523_IMG_1256

2018-05-23_154611 2018-05-23_154619

 

MFA 가 등록된 뒤에 스마트폰을 잊어버리면 난감한 상황이 나오기 때문에 QR코드는 이미지 파일등으로 저장 하여 메일로 발송하여 보관 하는것이 좋다.


  • IAM 에서 생성한 계정의 MFA 등록

생성한 유져의 MFA 등록은 IAM 에서 아래와 같이 이루어 진다.

2018-05-23_160253 2018-05-23_160312

 

graylog 를 통한 syslog 통합 감사(audit)

graylog 는 syslog 처리를 위한 빅데이터 분석 솔루션이다. 기본적으로야 syslog 를 한곳에 적재하여 로그 감사를 하는 목적으로 사용한다.

물론 syslog 뿐만 아니라 웹로그등을 수집하여 분석하는것 역시 가능하다.

Mongodb + elasticsearch + java 를 사용하여 운영 되며 노드를 추가하여 다중 노드에서의 분석 처리가 가능하다.

2018-05-18_111423 위와 같이 대쉬보드를 만들어 한눈에 볼수 있으며 alert 설정을 통해 중요 특정한 이벤트 발생시 손쉬운 확인이 가능 하다.

graylog 의 권장 사항은 4GB의 램을 필요로 하나 구축테스트를 해본 결과 1GB 에 2GB 수준의 swap 으로 정상적인 운영이 가능했다.

오픈소스이기 때문에 유료 프로그램인 kiwi syslog의 라이선스 비용 대비 40% 수준이면 클라우드에 구축하여 운영할 수 있다.
(t2.micro / 1 core – 1GB RAM) CentOS7 에서 graylog 를 설치 하는 방법을 설명한다.

 

1. 가상 서버를 준비하고 기본적인 업데이트 및 hostname 지정 등을 한 뒤에 리부팅 한다.

 

2. 시스템 메모리 및 네트워크 튜닝값을 적용 한다.

 

3.  swap 을 생성한다.(aws-centos7 의경우 swap 설정되어 있지 않다.)

  • 프로그램 초기 설치시 selinux 충돌을 방지 하기 위해 임의 setenforce 0 명령어로 selinux 를 permissive 모드로 변경 후 진행 한다.

  • 재부팅 후에 swap 이 자동 적용 될수 있게 fstab 을 수정한다. ~]# vi /etc/fstab

 

4. elasticsearch 설치

 

5. mongodb 설치

 

6. mongodb 설정

  • mongdb 의 data 파일을 /free/mongo_data 에 적재할 예정 이기 때문에 conf 파일을 수정 하고 selinux 설정을 추가 한다.

 

7. graylog 설치

 

8. graylog 설정

  • conf 파일을 수정하기 전에 pwgen 을 이용하여 secret 값을 생성 하고 shasum 을 이용하여 관리자 패스워드 값을 생성한다.

~]# vi /etc/graylog/server/server.conf     ## 각 값을 찾아서 수정한다.

 

9. graylog 시작 및 systemd 등록

 

10. nginx 설치

  • 여기서는 손쉬운 http/2 구축과 brotli 이미지 압축 등을 위해 codeit – nginx 을 설치 한다.

 

11. nginx 설정

  • DH 파라메터파일을 생성 한다.

  • /etc/nginx/nginx.conf 파일을 수정한다.

  • /etc/nginx/conf.d/default.conf 파일을 수정한다.

 

12. let’s encrypt 를 이용하여 인증서 발급을 진행하였음.  ( https://www.enteroa.com/2016/03/12/lets-encrypt-설치-및-운용centos )

  • nginx 에서 location 으로 let’s encrypt 설정을 /var/www 으로 했기 때문에 아래와 같은 명령어로 인증서 발급이 가능 하다.

 

13. selinux 설정

 

14. graylog 설정

  • graylog 서비스가 모두 정상적이라면 웹접근을 통해서 로그인을 할 수 있다. 2018-05-18_140231
  • 로그인 한 뒤에 먼저 대시보드를 생성한다.
    2018-05-18_142706
  • 이후 input 생성을 하기위해 아래와 같이 설정 진행을 한다. 2018-05-18_140445
  • 기본적으로 아래 다섯 항목을 설정 한다.
    2018-05-18_140416
  • 설정을 하게 되면 input 이 생성되고 곧 running 상태가 된다.2018-05-18_141255

 

15. linux – rsyslog 설정 (UDP 설정)

  • ~]# /etc/rsyslog.conf 파일의 맨밑에 삽입 한다. ( @=UDP / @@=TCP )

  • rsyslog 을 재시작 한다.

 

16.  생성된 input 의 show recived messages 버튼으로 이동하면 아래와 같은 화면을 볼 수 있다. (검색 화면과 같다.)

  • 검색 일자를 선택하고 대쉬보드 추가를 할 수 있다.
    2018-05-18_143141

 

17. L3 – syslog 설정 (cisco)

  • cisco 스위치의 경우 input 생성을 할때 RAW/Plaintest UDP 를 선택해서 진행해야 한다. ( RFC3414 표준이 아님 )
  • 아울러 스위치는 일반적으로 분배의 목적으로 한개의 gateway 밑에 존재하므로 각 스위치마다 별도의 input 을 만든다
  • input 을 만들때 override source 옵션을 통해 특정된 port 에 들어온 메세지의 소스 호스트 네임을 알기 쉽도록 Office-L3 와 같이 설정한다.
  • 일반적인 switch 장비의 log 설정 방법은 아래와 같다.

 

Let’s encrypt 에서 생성된 pem 인증서를 tomcat에서 사용 하기

Let’s encrypt 의 경우 일반적인 apache / nginx 에서 사용이 가능한 pem 파일을 생성 한다.

 

때문에 tomcat 에서 사용을 하기 위해서는 jks 로의 변환을 해서 org.apache.coyote.http11.Http11NioProtocol 프로토콜로 사용을 하거나

apr 및 tomcat-native 설치 하여 org.apache.coyote.http11.Http11AprProtocol 을 사용할 수 있다.

 

먼저 pem 파일을 jks 로 만드는 스크립트 이다. 중요한 부분은 18~22 줄이다.

이후 server.xml 설정에서 아래와 같이 설정하여 https 를 활성화 할 수 있다.


다른 방법으로 Http11AprProtocol 프로토콜을 사용하여 pem 파일을 jks 로 변환 없이 사용할 수 있다.

또한 apr 프로토콜을 사용할하고 tomcat 8.5 혹은 tomcat 9 의 경우 http/2 를 지원 한다.

활성화 하기 위해서는 tomcat-native 을 설치해야 한다.

server.xml 에서는 아래와 같이 설정 한다.

 

취약점 패치 CVE-2017-5715, CVE-2017-5753, CVE-2017-5754

Intel cpu 의 Meltdown,

Intel, AMD, ARM 등 대부분의 cpu 취약점인 Specter 가 발견 되어 운영 중인 모든 컴퓨터 ( PC, 서버, 핸드폰 등등 ) 의 업데이트가 필요 하다.

시스템의 느려짐 ( 특히 I/O 속도 ) 이 발생한다고 하나..

간단한 자바스크립트 정도로 cpu의 시스템 에서 생성한 정보확인이 가능하다고 하니 꼭 진행하는 편이 좋다.

 

  • 서버 ( centos, ubuntu )

리눅스의 경우 커널 업데이트 이기 때문에 커널 업데이트 후에 시스템 재시작이 필요하다.

1.CentOS

2. Ubuntu

2018-01-10_14-35-57

위 스크린샷 화면은 ubuntu 설치할때 업데이트 설정에 따라 나오지 않을수도 있습니다.

 

  • 윈도우

1. 윈도우 10 사용자는 자동 패치 (KB4056892) 가 된다.

2018-01-10_15-48-59

2. 윈도우7 :  http://www.catalog.update.microsoft.com/Search.aspx?q=KB4056897

3. 윈도우8 :  http://www.catalog.update.microsoft.com/Search.aspx?q=KB4056898

 

PS. 아이폰의 경우 IOS 11.2.2 버전이 관련 패치 이며 가급적 패치 진행을 하는것이 좋을듯 ‘ㅅ’a

kernel 의 change log 를 확인하여 패치가 되었는지 확인한다.

Let’s enctypt 를 의 발급/갱신을 단순화 하기 위한 방법

Let’s encrypt 는 발급/갱신을 할때 http://도메인/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxx 를 호출 한뒤 호출에 성공한경우 도메인 소유권이 있는것으로 판단하여 발급/갱신이 이루어 진다.

다만 이경우 .htaccess 를 쓰는 워드프레스 라던가 XE 라던가 혹은 개인 설정에 의해 .htaccess 에서 리다이렉트 운용을 할 경우 발급/갱신이 어려워 질 수 있다.

 

때문에 아래와 같이 apache 의 Alias 설정 해서 좀더 효율적인 인증을 할 수 있다.

 

위 설정을 하고 난뒤에 발급 명령어는 아래와 같다.

webroot를 /var/www/html 에 고정을 하고  6번째 줄만 맞게 수정을 해서 사용하면 됩니다 ‘ㅅ’b

 

/var/www 폴더는 selinux 에서 파일컨텍스트가 허용된 폴더로 selinux 를 사용하더라도 별도의 허용처리를 할 필요가 없어서 좋음 🙂