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