EC2 Rescue for Linux 사용법

ec2rl 이란?, Amazon Linux 의 sosreport 와 같은 인스턴스 정보 수집 및 문제 해결 도구입니다.

설치

해당 문서(AWS Docs) 에서 설치 방법을 확인하거나 아래 Git Repository 에서 Download 합니다.

$ sudo curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 7497k  100 7497k    0     0  2300k      0  0:00:03  0:00:03 --:--:-- 2299k

수집

사용법은 RHEL 의 sosreport 와 비슷합니다.
인스턴스 정보 수집을 목적으로 한다면 아래와 같은 방법으로 정보 수집 및 간단한 인스턴스 설정 점검을 수행 할 수 있습니다.

$ cd ec2rl-*
$ sudo ./ec2rl run

-----------[Backup  Creation]-----------

No backup option selected. Please consider backing up your volumes or instance

----------[Configuration File]----------

Configuration file saved:
/var/tmp/ec2rl/2023-03-22T05_07_56.728005/configuration.cfg

-------------[Output  Logs]-------------

The output logs are located in:
/var/tmp/ec2rl/2023-03-22T05_07_56.728005

--------------[Module Run]--------------

Running Modules:
amazonlinuxextras, arptable, blkid, cgroups, clocksource, cpuinfo, date, dmesg, ethtool, ethtoolg, ethtooli, ethtoolk, ethtools, ifconfig, iomem, iproute, ipslink, iptablesrules, kernelcmdline, kernelversion, kpatch, kpti, last, localtime, lsblk, lsmod, lspci, mdstat, meminfo, mounts, osrelease, pagetypeinfo, partitions, procstat, retpoline, rpmpackages, scheddebug, slabinfo, sysctl, vmallocinfo, xenfeatures, yumconfiguration, zoneinfo, arpcache, arpignore, asymmetricroute, conntrackfull, consoleoverload, duplicatefslabels, duplicatefsuuid, duplicatepartuuid, enadiag, hungtasks, ixgbevfversion, kernelbug, kerneldereference, kernelpanic, oomkiller, openssh, softlockup, tcprecycle, xennetrocket, xennetsgmtu, cloudinitlog, cron, dhclientleases, dmesgfiles, environment, fstab, hosts, httpdlogs, inittab, kerberosconfig, kernelconfig, libtirpcnetconfig, lvmarchives, lvmconf, messages, mysqldlog, nginxlogs, nsswitch, ntpconf, profile, resolvconf, sarhistory, sysctlconf, systemsmanager, udev, workspacelogs, yumlog

----------[Diagnostic Results]----------

module run/openssh               [FAILURE] Improper configuration of one or more OpenSSH components.
                                 -- SSH may deny access to users when improperly configured.
                                 -- FAILURE     Permission mode includes permissions for groups and/or other users: /etc/ssh/ssh_host_rsa_key
                                 --             Adjust permissions:   sudo chmod 600 /etc/ssh/ssh_host_rsa_key
                                 -- FAILURE     Permission mode includes permissions for groups and/or other users: /etc/ssh/ssh_host_ecdsa_key
                                 --             Adjust permissions:   sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key
                                 -- FAILURE     Permission mode includes permissions for groups and/or other users: /etc/ssh/ssh_host_ed25519_key
                                 --             Adjust permissions:   sudo chmod 600 /etc/ssh/ssh_host_ed25519_key
module run/arpcache              [SUCCESS] Aggressive arp caching is disabled.
module run/arpignore             [SUCCESS] arp ignore is disabled for all interfaces.
module run/asymmetricroute       [SUCCESS] No duplicate subnets found.
module run/conntrackfull         [SUCCESS] No conntrack table full errors found.
module run/consoleoverload       [SUCCESS] No serial console overload found
module run/duplicatefslabels     [SUCCESS] No duplicate filesystem labels found.
module run/duplicatefsuuid       [SUCCESS] No duplicate filesystem UUIDs found.
module run/duplicatepartuuid     [SUCCESS] No duplicate partition UUIDs found.
module run/hungtasks             [SUCCESS] No hung tasks found
module run/ixgbevfversion        [SUCCESS] Not using ixgbevf driver.
module run/kernelbug             [SUCCESS] No kernel bug occurrences found
module run/kerneldereference     [SUCCESS] No kernel null pointer dereference ocurrences found
module run/kernelpanic           [SUCCESS] No kernel panic ocurrences found
module run/oomkiller             [SUCCESS] No oom-killer invocations found
module run/softlockup            [SUCCESS] No CPU soft lockup ocurrences found
module run/tcprecycle            [SUCCESS] Aggressive TCP recycling is disabled.
module run/xennetrocket          [SUCCESS] No SKB overflow bug found
module run/xennetsgmtu           [SUCCESS] Scatter-Gather is enabled on eth0. This mitigates the bug.
module run/enadiag               [WARN] Unable to run ENA stats module.

--------------[Run  Stats]--------------

Total modules run:               90
'diagnose' modules run:          20
    successes:                   18
    failures:                    1
    warnings:                    1
    unknown:                     0
'collect' modules run:           43
'gather' modules run:            27

Modules not run due to missing:  sudo | software | parameters | perf-impact
                                    0 |        8 |         64 |           7

...

위와 같이 수집이 되며, 로그 파일은 /var/tmp/ec2rl/2023-03-22T05_07_56.728005 와 같은 경로로 생성이 됩니다.
ec2rl 은 sosreport 와 다르게 Diagnostic Results 를 보여주며 일반적으로 발생하는 이슈에 진단을 하는 기능도 포함이 되어 있습니다.

진단

아래는 인스턴스 SSH 설정에 문제가 없는지 진단하는 예제입니다.

$ sudo ./ec2rl run --only-modules=openssh
...

--------------[Module Run]--------------

Running Modules:
openssh

----------[Diagnostic Results]----------

module run/openssh               [FAILURE] Improper configuration of one or more OpenSSH components.
                                 -- SSH may deny access to users when improperly configured.
                                 -- FAILURE     Bad lines in configuration file: /etc/ssh/sshd_config
                                 --             Remove/fix lines:     142 in /etc/ssh/sshd_config
                                 -- Unable to check 18 items due to dependent check failures:
...

위와 같이 /etc/ssh/sshd_config 의 142 line 설정이 문제가 있는 것으로 진단 되었습니다.

수정

위 진단 예제에서 나온 문제는 아래와 같습니다.

$ sudo head -n142 /etc/ssh/sshd_config | tail -n1
testtest << error

해당 설정은 SSH daemon 이 재시작 할 때 문제를 유발 할 수 있으니 사용자가 직접 수정하거나 제거가 가능합니다.
또한 아래와 같은 방법으로 자동으로 ec2rl 을 이용하여 수정 할 수 있습니다.

$ sudo ./ec2rl run --only-modules=openssh --remediate
...

----------[Diagnostic Results]----------

module run/openssh               [SUCCESS] All configuration checks passed or all detected problems fixed.
                                 -- FIXED       Bad lines in configuration file: /etc/ssh/sshd_config

...

$ sudo head -n142 /etc/ssh/sshd_config | tail -n1
# testtest << error # commented out by ec2rl

문제가 되는 라인을 주석 처리한 것을 확인 할 수 있습니다.
이슈에 따라 다른 수정 방법이 필요하지만 간단하게 위와 같은 수정을 통해 문제 해결을 시도 할 수 있습니다.

----------[Diagnostic Results]----------

module run/openssh               [FAILURE] Improper configuration of one or more OpenSSH components.
                                 -- SSH may deny access to users when improperly configured.
                                 -- FAILURE     Bad lines in configuration file: /etc/ssh/sshd_config
                                 --             Remove/fix lines:     17 in /etc/ssh/sshd_config
                                 -- Unable to check 18 items due to dependent check failures:
$ sudo head -n17 /etc/ssh/sshd_config | tail -n1
Port22

$ sudo ./ec2rl run --only-modules=openssh --remediate
...
----------[Diagnostic Results]----------

module run/openssh               [SUCCESS] All configuration checks passed or all detected problems fixed.
                                 -- FIXED       Bad lines in configuration file: /etc/ssh/sshd_config

$ sudo head -n17 /etc/ssh/sshd_config | tail -n1
# Port22 # commented out by ec2rl

또한 위와 같이 사용자가 직접 확인하기 힘든 오탈자에 대하여도 기본 진단이 가능하니 유용하게 이용이 가능 할 것 같습니다.

참고 자료

chhanz's profile image

chhanz

2023-03-22

Read more posts by this author