전체 글

개발과 운영, 박찬우의 기술 블로그입니다.
DevOps/Cloud_클라우드

[AWS] 고정 IP를 제공하는 Elastic IP

Elastic IP는 고정된 공인 IP를 제공합니다. EC2 인스턴스를 생성하면 기본적으로 공인 IP가 부여됩니다. 하지만 이 IP 주소는 EC2 인스턴스가 실행되고 있는 동안에만 유효하며 EC2 인스턴스가 중단, 종료되면 IP 주소는 반납됩니다. 따라서 EC2 인스턴스를 다시 실행하면 바뀔 수 있는, 말하자면 유동 IP입니다. 💡 **프리 티어에서 사용 가능** Elatsic IP는 프리 티어에서 사용가능 합니다. IPv4 체계에서는 IP 주소가 매우 부족하기 때문에 사용하지 않는 EC2 인스턴스에는 IP 주소를 할당하지 않는 것입니다. DNS 서버를 통해 도메인에 IP 주소를 연결해놓았는데 IP 주소가 바뀌면 매우 곤란해집니다. 그래서 AWS에서는 Elastic IP라는 것을 제공해주고 있습니다. 특..

DevOps/Cloud_클라우드

[AWS] Security Group으로 방화벽 설정하기

Sercurity Group은 EC2 인스턴스에 적용할 수 있는 방화벽 설정입니다. 서버 보안의 기본은 방화벽 설정에서 출발합니다. 예로, Linux 서버의 SSH 접속 포트인 22번만 여는 것은 기본이고, 여기에 접속 가능한 IP 대역까지 설정하면 공격 위협이 상당수 줄어듭니다. 방화벽 설정의 기본요소는 다음과 같습니다. Inbound : 외부에서 EC2 인스턴스로 들어오는 트래픽입니다. 대표적인 것들로느 HTTS, HTTPS, SSH, RDP 등이 있습니다. Outbound : EC2 인스턴스에서 외부로 나가는 트래픽입니다. EC2 인스턴스 안에서 인터넷을 사용할 경우 Outbound라 할 수 있습니다. 파일을 다운로드하거나 외부 SSH로 접속 등이 있습니다. Type : 프로토콜 형태입니다.크게 T..

DevOps/Cloud_클라우드

[AWS] EBS 스냅샷 활용하기

EBS 볼륨의 전체 내용 중 특정 시점을 파일로 저장한 형태가 스냅샷입니다. 따라서 EBS 볼륨의 백업 파일 성격을 가지고 있습니다. 💡 **프리 티어에서 사용 가능** EBS 스냅샷은 프리 티어에서 무료로 사용할 수 있습니다. 2022년 5월 기준으로 EBS 스냅샷 스토리지 1GB를 무료로 사용할 수 있습니다. 본인은 Ubuntu Linux가 설치된 8GB EBS 볼륨의 스냅샷을 생성하지만, EBS 볼륨의 전체 크기가 8GB일 뿐 실제 용량은 1GB가 되지 않으므로 무료 용량 내에서 실습이 가능합니다. 또한 EBS스냅샷은 다양한 용도로 활용이 가능합니다. 스냅샷으로 EBS 볼륨 생성(다른 가용 영역에 생성 가능) 스냅샷으로 AMI 생성 스냡샛을 다른 리전으로 복사 EBS 스냅샷은 EBS 볼륨을 백업하고..

DevOps/Linux_리눅스

[Linux] root 권한 관리 (UID 탐색)

#! /bin/bash TMP1=`cat /etc/passwd | grep -v 'root' | awk -F: '{if ($3=="0") print $0}'` echo $TMP1 echo -e [ UID 탐색 중 ... ] sleep 1s if [ -z "$TMP1" ] ; then sleep 1s echo -e "\033[32m" [ 양호 ] "\033[0m" echo -e "\033[32m" root 제외 "0" 값의 UID가존재하지 않습니다."\033[0m" else echo -e "\033[31m" [ 취약 ] "\033[0m" echo -e "\033[31m" root 제외 "0" 값의 UID가존재합니다."\033[0m" sleep 1s echo -e "\033[31m "UID = 0 값인계정 ..

DevOps/Linux_리눅스

[Linux] default 계정 삭제 (default 계정 탐색)

서버 취약점 분석/평가 항목 중 불필요 계정 제거 작업을 진행하는 스크립트를 작성해 보았다. #! /bin/bash LIST_USER_NAME=" lp mail games ftp pipewire pulse gluster setroubleshoot saslauth qemu usbmuxd gogotest ec2-user " echo -e [ default 계정 탐색 중 ... ] sleep 1s for duser in $LIST_USER_NAME do REPEAT_ACCOUNT=`cat /etc/passwd | grep $duser` echo "[ "$duser" 검색]" sleep 1s if [ ! -z "$REPEAT_ACCOUNT" ] ; then echo -e "\033[32m" [ 양호 ] "\03..

DevOps/Linux_리눅스

[Linux] 시스템 재부팅시 자동실행되는 shell script

리눅스를 사용하다 보면 서버가 부팅할때 자동으로 실행되어야 할 명령이나 스크립트가 생기기 마련이다. (서버 운영중 정전 등의 이유로 재부팅된다거나 할때 서비스들을 자동으로 살려야하기 때문에..) 그리하여 이번에는 시스템이 재부팅될때 자동적으로 sh을 실행시켜주는 기능 2가지를 실습해보겠다. 각 ec2 2대를 준비하여 진행하였다. local.service 생성 방법 vi /etc/systemd/system/rc-local.service # 생성 [Unit] # 내용 추가 Description=Run rc.local #After=suspend.target #After=hibernate.target #After=hybrid-sleep.target [Service] ExecStart=/etc/rc.local s..

DevOps/Linux_리눅스

[Linux] Shell Prompt 정보 변경

쉘 프롬프트 정보 변경 현재 사용자가 개별적으로 사용할 수 있도록 지원하는 사용자별 시스템 환경변수를 쉘 변수라고 한다. 쉘 변수들 가운데 PS1이라는 변수가 프롬프트의 정보를 포함하고 있다. Prompt 기본 설정 확인 bash shell에서 PS1의 값을 확인하면 다음과 같이 나타난다. \h 현재 호스트의 이름을 나타낸다. \W 현재 위치의 디렉터리를 나타낸다. \u 현재 로그인된 사용자를 나타낸다. 본인 PS1의 경우 예전에 커스텀을 하여 보통과 다르게 나타났다. 기본 설정은 \h:\W \u\$ 로, 기본 설정으로 분석한다면 현재 호스트는 172-31-7-241, 디렉터리 위치는 ~(home)이며, 로그인된 사용자는 root 이다. Prompt에 나타낼 수 있는 정보 쉘 변수 기호 의미 \t 24시..

DevOps/Linux_리눅스

[Linux] OS config 정보 백업 (+ 네트워크 인터페이스 정보)

Linux 네트워크 인터페이스 정보 백업 지난 OS config의 정보를 백업하는 스크립트에 네트워크 인터페이스 정보를 백업하는 기능을 추가하였다. Shell Scirpt (backup 파일 생성) #! /bin/bash # date로 오늘 날짜를 불러온다. today=`date +%m-%d-%y` echo $today Perform a backup of server configuration information sleep 1.0 mkdir /home/test/$today-monitoringTEST # 저장될 백업데이터 df=`df -k > /home/test/$today-monitoringTEST/$today/df-$today.bak` mount=`mount > /home/test/$today-moni..

DevOps/Linux_리눅스

[Linux] OS config 정보 백업 (shell 백업 및 ansible 배포)

기능 구현 목적 다수의 서버들의 재기동(재부팅) 등 작업 전 OS 정보들을 미리 백업하려 한다. config 정보 백업 파일을 생성하는 스크립트를 구성하고, 이를 서버들에 배포하여야 한다. (각 서버에 스크립트가 배치되어야 한다.) 백업 파일은 실행 날짜를 기재하여 구별이 어렵지 않게 구성하였다. Shell Scirpt (backup 파일 생성) #! /bin/bash ###################### # 0926 os config data backup ###################### # date로 날짜 얻기, "MM-DD-YY" 형식으로 날짜 출력 today=`date +%m-%d-%y` echo $today Perform a backup of server configuration in..

DevOps/Linux_리눅스

[Linux] top 명령어 (서버 상태 파악)

TOP 명령어 top 명령어는 현재 OS의 상태를 나타내는 CLI 어플리케이션이다. 메모리 사용량, CPU 사용량 등을 나타내주며 top을 실행하는 동안에는 실시간에 근접한 내용을 보여준다. 요약 영역 System time(시스템 현재 시간) = GMT 기준 현재 시간을 나타낸다. (한국시간으로 +9) uptime(OS가 살아있는 시간) = days와 시간으로 나타낸다. user sessions(유저 세션수) = 접속중인 유저 세션 수이다. 좀 더 자세한 내용은 who 명령어를 통해 확인 가능하다 Load Average = CPU Load의 이동 평균을 표시한다. (100%를 넘긴다면, 처리못하고 대기중인 ps가 있다는것) Tasks = 현재 프로세스들의 상태를 나태나는 영역이다. CPU 사용량 = Ta..

DevOps/Linux_리눅스

[Linux] df 명령어 미동작 해결(df hang)

disk 용량 확인 하려고 df -h 명령어를 실행했는데 실행이 안되는 이슈가 있었다. 서버에 hang이 걸린줄 알고 시간을 두고 기다려도 계속 반응이 없다.. 해결 방안 1. log 분석 이럴 경우 server(nas) 네트워크 문제가 있다고 판단된다. client에서는 nfs로 mount 된 것을 물고 있지만 접근이 어려울 것이다. 2. client 조치 위 사진과 같이 공유 directory를 umount를 진행하였는데 강제로 -f 옵션까지 줘 봤는데도 device is busy 라는 문구가 나타난다. -f 옵션까지 되지 않을 경우 -l 옵션을 줘서 umount를 진행하여야 한다. (본인은 -l 옵션으로 해결했다.) ※ -l : 지연된 언마운트(lazy umount) lazy umount는 디바이스..

DevOps/Linux_리눅스

[Linux] Logrotate (로그 분산 관리)

Logrotate Logrotate는 Linux에서 로그를 저장하며 관리할 때, 로그 파일이 하나의 파일로 크기가 커지며 저장되는것을 분산시켜줄 때 사용한다. 한 파일에 로그가 지속적으로 쌓이게 도면 로그 확인이 필요한 경우 파일이 너무 방대해 확인이 어려워지고 디스크 용량 또한 낭비된다. Logrotate 실행 순서 & 구조 Logrotate은 위와 같은 순서로 실행하며, 구성하는 파일들은 아래와 같은 구조를 가진다. /usr/sbin/logrotate : Logrotate 데몬 프로그램 /etc/logrotate.conf : Logrotate 데몬 설정 파일 /etc/logrotate.d/ : Logrotate 프로세스 설정 파일 /etc/cron.daily/logrotate : Logrotate 작..

cwpack0730
Woo DEV