728x90

htop은 실행 중인 프로세스와 사용된 시스템 리소스에 대한 동적 개요를 표시하기 위해 Linux 시스템에서 사용할 수 있는 경량입니다. 클래식 탑과 비교하여 이 프로세스 관리자는 몇 가지 편리한 기능을 제공합니다. 여기에서 AlmaLinux, CentOS, 8, Rocky, Oracle 또는 RHEL에 설치하는 단계를 볼 수 있습니다.

이 프로그램에는 ncurses 인터페이스가 있으며, ncurses는 새로운 curses를 나타내며, 설명 텍스트 터미널 또는 터미널 에뮬레이터 디스플레이와 독립적으로 문자 기반 사용자 인터페이스(텍스트 사용자 인터페이스 - TUI)에 대한 무료 C 프로그램 라이브러리입니다. Htop은 긴 명령을 입력하지 않고도 키보드로 쉽게 조작할 수 있습니다. htop이 데스크탑 환경의 터미널에서 시작되면 마우스도 사용할 수 있습니다. 가상 터미널에서 마우스를 사용하려면 gpm이 설치되어 있어야 합니다.

또한 프로그램은 디스플레이 상단에 자유롭게 구성 가능한 막대를 제공합니다. 시스템 리소스 및 기타 다양한 정보에 대한 그래프를 출력할 수 있습니다.

htop의 개발자에 따라 비교 가능한 프로세스 관리자와 달리 프로세스의 모든 개별 스레드가 표시됩니다. 이것은 트리 뷰에서 쉽게 볼 수 있습니다. 그러나 부모 프로세스의 총 메모리 소비는 각 스레드가 아니라 각 스레드에 대해 지정됩니다. F2 키를 사용하여 "설정" 에서 모든 스레드 목록을 완전히 비활성화하거나 색상으로 그룹화하도록 구성할 수 있습니다.

AlmaLinux 또는 Rocky Linux 8에 Htop을 설치하는 단계

1. 시스템 업데이트 실행

먼저 시스템 저장소 새로 고침과 함께 모든 시스템 설치 패키지를 업데이트하겠습니다.

나를 복사
sudo dnf update

2. Epel 저장소 추가

AlmaLinux, CentOS, RHEL 또는 Rocky Linux에 htop을 설치하는 패키지는 EPEL 리포지토리에서 사용할 수 있으므로 아직 활성화하지 않은 경우 먼저 시스템에서 활성화했습니다.

나를 복사
sudo dnf install epel-release

2. AlmaLinux 또는 Rocky에 htop을 설치하는 명령

따라서 htop에 필요한 것이 설정되었으므로 이제 아래 주어진 명령을 사용하여 설치할 차례입니다.

나를 복사
sudo dnf install htop

3. Almalinux/Rocky/CentOS/RHEL 8에서 htop을 실행합니다.

설치가 완료되면 터미널에서 실행하여 다양한 프로세스 모니터링을 시작할 수 있습니다. 이 도구의 인터페이스 상단에서 Linux 운영 체제의 시스템 하드웨어 사용량을 빠르게 볼 수도 있습니다.

나를 복사
sudo htop

4. htop 옵션 또는 매개변수 사용

htop 명령을 사용하면 몇 가지 옵션을 사용하여 사용자 지정 결과를 얻거나 설정을 변경할 수 있습니다. 업데이트 속도를 지연시키는 것과 같이 -d매개변수를 사용할 수 있습니다.

나를 복사
htop -d 10

10 은 초 단위의 시간입니다.

매개변수 함수
-d
--delay= 10
1/10초 단위로 업데이트 속도 지정
-C
--no-color
--no-colour
색상 없이 시작
-h
--help
빠른 도움말 표시
-u
--user=username
지정된 사용자의 프로세스만 표시
-s
--sort-key
특정 열을 기준으로 정렬합니다. 허용된 열 이름 목록은 " "가 있는 htop -s 도움말 출력일 수 있습니다.
-v
--version
버전 표시

htop 키보드 단축키

우리는 마우스를 사용하여 htop 하단에 있는 옵션을 선택하고 다른 옵션과 함께 사용할 수 있지만 빠르고 효율적으로 액세스하려면 키보드 단축키를 htop과 함께 사용하는 것이 가장 좋습니다. 다음은 사용할 수 있는 몇 가지 주요 단축키입니다.

열쇠 함수
  ,    ,    ,   프로세스 목록 스크롤
  +   모든 태그 제거
. 또는 , PID에 대한 증분 검색
   
F1  ,  ?  ,  H 도움말 보기
사용자의 프로세스 표시
F2  ,    +  S 설정 열기 및 설정 변경
  +  H 사용자 스레드 표시/숨기기
F3    +  / 증분 프로세스 이름 검색
  +  K 커널 스레드 표시/숨기기
F4  \ 이름으로 필터링
  +  F. 커서를 프로세스에 고정
F5  ,  T 트리 보기 활성화/비활성화
+  ,  - 트리 확장/축소
F6  > 정렬할 열 선택
  +  P CPU 사용량에 따라 프로세스 정렬
F7 나이스 값 감소
  +  M 메모리 사용량에 따라 프로세스 정렬
F8 나이스 값 증가
  +  T 시간순으로 프로세스 정렬
F9  K 하루의 프로세스 또는 프로세스 종료
L lsof open으로 파일 열기
F10  ,  Q  ,  Ctrl  +  C    헤어지다
S strace추적 을 위한 시스템 호출 
스페이스 바 태그 프로세스
  +  L 라이브러리  ltrace호출 추적
I 입출력 제어

 

728x90

VPN을 통해 ssh를 접속하지 않는 이상 서버를 공개망에서 사용하게 될 경우 ssh 접속은 외부에 노출될 수 밖에 없습니다.

대부분 해외에서 지속적으로 ssh 로그인을 시도하면서 무작위 비밀번호를 대입합니다.

특히, 지난 Brute-force 해킹으로 인한 서버 탈취 사건을 경험한 이후로 SSH 보안의 중요성을 실감했습니다.

0. 보안? 내가 필요할까?

우분투 서버에서 아래 명령어를 실행시키면, 실시간 ssh 로그인 실패기록을 볼 수 있습니다.

journalctl -f

깜짝 놀랄 수도 있습니다.
실시간으로 계속해서 로그인시도 (공격) 이 발생하고 있습니다.

via GIPHY

먼지와 같은 우리 보안

1. 당장 설치하기.

Fail2ban은 ssh log파일을 스캔해 수상한 ip를 ban해주는 소프트웨어입니다.

1-1. 설치하기

우분투에서 다음을 실행시킵니다.

apt-get install fail2ban

방화벽을 확인해봅니다.

iptables -L
...
Chain f2b-sshd (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
...

성공적으로 fail2ban이 추가된 것을 볼 수 있습니다.


1-2. 사용자 설정하기

sudo vim /etc/fail2ban/jail.local

아래 내용을 입력해 입맛에 맞도록 설정해줍니다.

[DEFAULT]

## 차단하지 않을 IP
ignoreip = 127.0.0.1/8 192.168.10.0/24

# 접속을 차단할 시간. 600 = 10분
bantime  = 10800

# 최대 허용 횟수
maxretry = 10

#아래 시간동안 maxretry횟수만큼 실패시 차단
findtime  = 86400

# (선택) 메일 알림기능
destemail = sysadmin@example.com
sender = fail2ban@my-server.com
mta = sendmail
action = %(action_mwl)s

[sshd]
enabled = true

#여러 포트를 사용할 경우 port = ssh,10022
port = 22
filter = sshd
logpath = /var/log/auth.log

위와 같이 저장하면, 아래 규칙으로 동작합니다.

  • 최근 86400분 (60일) 동안
  • 10회의 로그인을 실패하면
  • 10800분 (180시간) 차단

1-3. 서비스 시작하기

service fail2ban restart

주의할 점은, restart할 때마다 벤 목록이 초기화 된다는 점입니다.

2. 기본 사용법

이제 서버에 접속하는 ip를 차단하고 관리할 수 있는 권한이 생겼습니다.

하지만 사용하다가 caps lock이 켜져있을 수도 있고, 비밀번호를 잘못 알려주어 공동작업자가 차단당할 수도 있습니다.

만약, 실수로 차단당했을 때, 푸는 방법을 알아보겠습니다.

2-1. 현재 차단 현황 보기

sudo fail2ban-client status sshd

2-2. 차단 풀어주기

sudo fail2ban-client set sshd unbanip 000.000.000.000
Status for the jail: sshd
|- Filter
|  |- Currently failed:	5
|  |- Total failed:	58
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	25
   |- Total banned:	25
   `- Banned IP list:	106.12.159.235 106.75.141.202 112.30.185.8 112.85.42.195 119.203.240.76 119.207.126.21 124.74.154.66 138.197.183.21 157.7.52.245 165.22.160.32 178.116.159.202 191.191.35.159 191.243.143.170 192.243.215.42 200.70.56.204 223.171.32.56 51.68.143.224 51.77.140.111 68.183.50.149 81.12.159.146 187.32.178.33 150.95.199.179 197.248.16.118 41.78.201.48 101.91.242.119

잠깐사이에 무려 25개의 ip가 밴되어있네요.
fail2ban이 잘 작동하고 있습니다.

결론

간단한 설정만으로 brute-force 공격시도를 방어해보았습니다.
이 외에도 다양한 설정이 가능하니, 공식 메뉴얼을 참고해주세요.

감사합니다!

728x90

Virtualbox에 Rocky Linux를 설치하면 화면 크기가 자동으로 조정되지 않습니다. 또한 호스트에서 게스트로의 클립보드 및 파일 끌어서 놓기와 같은 일부 다른 기능에 액세스할 수 없습니다. 이를 위해 Rocky Linux 8에 VirtualBox 게스트 추가 ISO를 설치해야 합니다.

또한 VirtualBox Guest Additions 설치는 가상 머신의 성능을 향상시키는 데도 도움이 됩니다.

내용 [ 보기 ]

Rocky Linux 8에 VirtualBox 게스트 추가 설치

글쎄, Rocky Linux에서 게스트 추가를 설정하려면 EPEL repo 및 DNF 관리자, 순전히 명령줄이 필요합니다.

1단계: Epel 저장소 추가

명령 터미널을 열고 다음과 같은 시스템 업데이트 명령을 처음 실행합니다.

sudo dnf update

그런 다음 간단한 명령을 사용하여 EPEL이라고 하는 Enterprise Linux용 추가 패키지를 추가합니다.

sudo dnf install epel-release

 

2단계: 커널 헤더 및 DKMS 설치

다음은 EPEL 저장소의 도움으로 여러 도구를 설치하는 것입니다. 커널 및 DKMS(동적 커널 모듈 지원)를 사용하여 AlmaLinux 8 배포판에 게스트 추가 기능 VirtualBox를 설치하는 데 필요한 커널 모듈을 빌드 및 설치합니다.

sudo dnf install gcc make perl kernel-devel kernel-headers bzip2 dkms

Y 를 입력 하고 Enter 키 를 눌러 설치 권한을 부여합니다 .

 

3단계: Rocky Linux 커널 업데이트

시스템은 커널 업데이트를 자동으로 수행하여 변경을 수행하지만 때로는 그렇지 않을 수도 있습니다. 따라서 시스템을 다시 시작하기 전에 커널 업데이트 명령을 실행하는 것이 좋습니다.

sudo dnf update kernel-*

 

4단계: 게스트 추가 설치 CD 이미지 삽입

Virtualbox 메뉴 >> 장치로 이동한 다음 "게스트 추가 CD 이미지 설치..." 옵션을 선택합니다.

 

5단계: VBoxLinuxAdditions.run 설치

이제 터미널에서 Rocky Linux에 Virtual Guest Additions를 설치하기 위한 스크립트가 포함된 CDROM을 마운트합니다.

sudo mkdir -p /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
sudo sh ./VBoxLinuxAdditions.run --nox11

 

6단계: 클립 공유 및 끌어서 놓기 기능 활성화

온 클릭 장치 오라클 버추얼 메뉴에서 주어진 다음을 클릭 공유 클립 보드 와 "양방향"을 선택합니다. 같은 방법으로 드래그 앤 드롭 을 선택하고 양방향 옵션을 선택합니다.

 

7단계: Rocky VM 다시 시작

마지막으로 Virtualbox Guest Additions의 변경 사항을 적용하고 해당 기능을 Guest에 적용하려면 시스템을 다시 시작하기만 하면 됩니다. 이를 위해 아래 명령을 사용할 수 있습니다.

sudo reboot

 

7단계: 게스트 추가 확인

Rocky Linux 가상 머신을 다시 시작한 후 VBox 게스트 추가가 성공적으로 설치되었는지 확인하십시오.

lsmod | grep vboxguest
728x90

Virtualbox는 Linux, Windows, OS/2, Solaris, MacOS 등과 같은 다양한 운영 체제에서 가상 머신을 생성 및 실행하는 데 사용되는 오픈 소스 유형 2 하이퍼바이저 소프트웨어입니다. VirtualBox는 2007년에 처음 출시되었습니다. 상업적 사용을 제한하는 PUEL에 따라 릴리스된 드라이버가 포함된 확장 팩이 있는 GPL v2.

Virtualbox 6.1은 2019년 12월에 출시되었습니다. 다음과 같은 놀라운 기능이 많이 있습니다.

  1. OCI에서 VM 가져오기 및 내보내기 기능
  2. 업데이트된 확장 가능한 펌웨어 인터페이스 및 사용
  3. Intel CPU에서 중첩 가상화 지원
  4. 가져온 VM 그룹 및 스토리지 설정이 있습니다.
  5. 여러 VM 인스턴스를 생성하는 기능 제공

시작하기

이 기사에서는 Rocky Linux 8에 VirtualBox 6.1을 설치할 것입니다. 시스템에서 Virtualbox를 실행하려면 프로세서에서 가상화가 활성화되어 있는지 확인하십시오. BIOS/EFI에서 가상화가 활성화되어 있는지 확인하십시오.

egrep -c '(vmx|svm)' /proc/cpuinfo

샘플 출력: (0이 아니 어야 함) 0이면 가상화가 활성화 되지 않습니다.

$ egrep -c '(vmx|svm)' /proc/cpuinfo
4

또한 다음을 실행하여 호스트 운영 체제가 64비트인지 확인하십시오.

$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              1
On-line CPU(s) list: 0
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               69

Rocky Linux 8에 Virtualbox 6.1 설치

Rocky Linux 8에서 Virtualbox를 다운로드하고 설치하는 것은 쉽습니다. 다음 단계를 사용합니다.

1단계. VirtualBox 저장소를 추가합니다.

Rocky 시스템에 EPEL 저장소를 설치합니다.

sudo dnf install epel-release

설치된 버전 확인

 rpm -q epel-release

그런 다음 계속 진행하여 커널 헤더를 설치합니다.

sudo dnf install gcc make perl kernel-devel kernel-headers bzip2 dkms

커널 업데이트

sudo dnf update kernel-*

Virtualbox를 설치할 수 있도록 Rocky Linux 8 시스템에 Virtualbox 저장소를 추가하십시오.

sudo dnf config-manager --add-repo=https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo

리포지토리를 추가한 후 변경 사항을 적용하려면 시스템 업데이트를 실행하세요.

sudo dnf update

2단계. Rocky Linux 8에 Virtualbox 6.1 설치

추가된 저장소에는 여러 버전의 Virtualbox가 있습니다. 먼저 사용 가능한 버전을 검색합니다.

dnf search virtualbox

샘플 출력

Last metadata expiration check: 0:00:10 ago on Sat 17 Jul 2021 12:28:27 AM EAT.
====================== Name & Summary Matched: virtualbox ======================
VirtualBox-5.2.x86_64 : Oracle VM VirtualBox
VirtualBox-6.0.x86_64 : Oracle VM VirtualBox
VirtualBox-6.1.x86_64 : Oracle VM VirtualBox

이 기사를 작성할 당시 Virtualbox에는 3가지 버전이 있었습니다. 다음 명령을 사용하여 Virtualbox 6.1을 설치합니다.

sudo dnf install VirtualBox-6.1

종속성 트리:

Dependencies resolved.
================================================================================
 Package                Arch      Version                   Repository     Size
================================================================================
Installing:
 VirtualBox-6.1         x86_64    6.1.22_144080_el8-1       virtualbox     90 M
Installing dependencies:
 SDL                    x86_64    1.2.15-39.el8             appstream     217 k
 qt5-qtbase             x86_64    5.12.5-8.el8.2            appstream     3.4 M
 qt5-qtbase-common      noarch    5.12.5-8.el8.2            appstream      39 k
 qt5-qtbase-gui         x86_64    5.12.5-8.el8.2            appstream     5.8 M
 qt5-qtx11extras        x86_64    5.12.5-1.el8              appstream      39 k
 xcb-util-image         x86_64    0.4.0-9.el8               appstream      20 k
 xcb-util-keysyms       x86_64    0.4.0-7.el8               appstream      15 k
 xcb-util-renderutil    x86_64    0.3.9-10.el8              appstream      18 k
 xcb-util-wm            x86_64    0.4.1-12.el8              appstream      31 k

Transaction Summary
================================================================================
Install  10 Packages

Total download size: 99 M
Installed size: 227 M
Is this ok [y/N]: y

아래와 같이 키 가져오기를 수락합니다.

Importing GPG key 0x98AB5139:
 Userid     : "Oracle Corporation (VirtualBox archive signing key) <info@virtualbox.org>"
 Fingerprint: 7B0F AB3A 13B9 0743 5925 D9C9 5442 2A4B 98AB 5139
 From       : https://www.virtualbox.org/download/oracle_vbox.asc
Is this ok [y/N]: y

Rocky Linux 8에 Virtualbox 확장 팩 설치

이제 USB 2.0, USB 3.0 장치 사용, virtualbox RDP, 디스크 암호화, 인텔 카드용 NVMe 및 PXE 부팅과 같은 다양한 기능을 지원하는 확장을 다운로드해야 합니다. 이 확장팩은 공식 웹사이트 에서 다운로드됩니다.

사이트에서 아래와 같이 VirtualBox Extension pack 지원되는 모든 플랫폼 으로 이동 합니다.

다운로드한 후 다운로드 디렉토리로 이동하여 다운로드한 파일을 찾습니다.

$ cd Downloads

사용 가능한 파일을 보려면 이 파일이 표시되어야 합니다.

$ ls
Oracle_VM_VirtualBox_Extension_Pack-*.vbox-extpack

그런 다음 설치

sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-*.vbox-extpack

라이선스 조건에 동의하고 설치를 진행합니다.

그런 다음 커널 모듈을 빌드합니다.

$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.

버추얼박스 6.1 사용

virtualbox가 설치되었으므로 이제 사용하려고 합니다. ISO 파일에서 Ubuntu 서버 20.04 LTS를 설치하려고 합니다.

아래와 같이 활동 / 앱 메뉴 에서 Virtualbox를 시작 합니다.

VirtualBox에서 가상 머신 만들기

virtualbox가 시작되면 새로 만들기를 클릭 하여 새 가상 머신을 만듭니다. 여기에서 다음 단계에 따라 가상 머신(Ubuntu 20.04LTS)을 만들 수 있습니다.

1단계. 머신 이름 및 유형 설정

이름, 파일을 저장할 경로 및 운영 체제 유형 설정

2단계. 메모리 및 스토리지 설정

그런 다음 가상 머신의 메모리를 설정합니다.

가상 머신을 위한 하드 디스크를 생성하고 스토리지 유형과 크기를 설정합니다.

4단계. 설치 미디어 추가

위의 설정을 완료했으면 이제 설치 미디어를 추가하려고 합니다. 이 경우 ISO 파일을 사용합니다. 설치 미디어를 추가하려면 설정 -> 저장소로 이동하여 컨트롤러 IDE 에서 ISO를 추가 하고 아래와 같이 광 드라이브 추가를 클릭 합니다.

위 페이지에서 생성하려는 가상 머신의 ISO 파일을 찾습니다. +추가  클릭 하여 파일로 이동합니다. ISO를 성공적으로 추가한 후 확인  클릭 하여 변경 사항을 적용합니다.

4단계. 설치를 시작합니다.

이제 " 시작 "을 클릭 하여 컴퓨터를 시작하십시오. 기계가 시작되면 아래와 같이 설치가 시작됩니다.

Ubuntu 또는 설치하려는 운영 체제의 일반 설치 프로세스를 진행합니다.

설치가 완료되면 시스템을 종료하고 설정 탭으로 이동한 다음 ISO 파일을 마우스 오른쪽 버튼으로 클릭하여 마운트 해제하고 "첨부 파일 제거"를 선택 합니다.

이제 "시작" 을 클릭하여 설치된 가상 머신을 실행할 수 있습니다.

Virtualbox에는 다른 많은 기능이 있습니다. 하나는 시스템에 대한 OVA/OVF 파일과 같은 파일을 가져와서 가상 시스템을 실행할 수 있습니다. 또한 기기에 대한 네트워크, 디스플레이, 오디오 및 기타 여러 설정을 지정할 수 있습니다. 또한 스냅샷을 저장하고 가상 머신 OVA 및 OVF 파일을 내보낼 수 있습니다. 이 파일 (템플릿)을 사용하면 유사한 가상 머신을 쉽게 배포할 수 있습니다.

결론

이 기사에서는 Rocky Linux 8에 VirtualBox 6.1을 설치하는 방법에 대한 단계별 데모를 살펴보았습니다. 또한 Virtualbox로 간단한 가상 머신을 설정하는 방법도 보여주었습니다. 이 기사가 도움이 되었기를 바랍니다.

웹사이트에서 더 많은 기사를 찾아보세요.

Linux Mint에 VirtualBox 6.x를 설치하는 방법

VirtualBox에서 KVM으로 가상 머신 가져오기

Manjaro Linux에 VirtualBox 게스트 추가 설치

728x90

- 참고로 해당 내용은 CentOS 7 을 기준으로 작성하였습니다.

특정 사용자(wheel 그룹)만 su 명령어 사용

아래 빨간색으로 강조된 부분 "auth required pam_wheel.so use_uid" 의 주석을 제거 하시면 됩니다.

[root@localhost ~]# vim /etc/pam.d/su

#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth        required    pam_wheel.so use_uid
auth        substack    system-auth
auth        include     postlogin
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     include     postlogin
session     optional    pam_xauth.so

 

wheel 그룹에 사용자 추가

위에서 su 명령어 사용을 wheel 그룹에 포함된 사용자로 제한하였습니다.
그러면 이제 su 명령어를 사용할 계정을 wheel 그룹에 추가하겠습니다.

[root@localhost ~]# vim /etc/group

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:root,hong,kim

...

위와 같이 "wheel:x:10:사용자계정" 이런식으로 계정을 추가해주세요(그룹에 추가하는 명령어도 있지만 그냥 직접 추가해도 됩니다).

 

su 파일의 권한 수정

일반 사용자는 사용하지 못하게 하고 wheel 그룹에 속한 사용자만 su 명령어를 사용할 수 있도록 권한을 수정합니다.

[root@localhost ~]# which su
/bin/su
[root@localhost ~]# ll /bin/su
-rwsr-xr-x. 1 root root 32096 Apr 13 05:43 /bin/su

먼저 su 위치를 which 명령어를 이용하여 확인하고 ll 명령어로 조회 합니다. 그러면 위처럼 "-rwsr-xr-x. 1 root root" 이런 권한을 가지고 있을 겁니다.

 

[root@localhost ~]# chgrp wheel /bin/su
[root@localhost ~]# ll /bin/su
-rwxr-xr-x. 1 root wheel 32096 Apr 13 05:43 /bin/su

su 사용 그룹 권한을 wheel로 변경 합니다. wheel 그룹으로 변경하면 위와 같이 su 파일의 Permission 이 rws 에서 rwx 로 변경 된 것을 알수 있습니다.

 

[root@localhost ~]# chmod 4750 /bin/su
[root@localhost ~]# ll /bin/su
-rwsr-x---. 1 root wheel 32096 Apr 13 05:43 /bin/su

Permission 정보를 4750 으로 변경하면 끝.

728x90

As we all know that Docker Container is the highly demanded technology in IT world.  With help of Docker containers, developers and infra admins can package their application and its dependencies and can run it in one computing setup to another.

In this guide, we will cover how to install Docker and Docker Compose on Rocky Linux 8 step by step.

Minimum requirements for Docker

  • 2 GB RAM or higher
  • 2 vCPU / CPU (64-bit Processor)
  • Minimal Rocky Linux 8
  • Sudo User with privileges
  • 20 GB Free Space on /var
  • 1 Nic Card
  • Stable Internet Connection

Let’s dive on Docker Installation steps,

Step 1) Install updates and reboot

Login to Rocky Linux and install all the available updates and then reboot the system once.

$ sudo dnf update -y
$ reboot

Step 2) Configure Docker Package Repository & Install Docker

To install latest and stable version of docker, configure its official package repository using the following command,

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Now run following dnf command to install docker,

$ sudo dnf install -y docker-ce

Output of commands would like below:

Note: In case you are getting container.io error while installing docker-ce package then run following command,

$ sudo dnf install docker-ce --allowerassing -y

 

혹 실행시 에러가 발생한다면 selinux를 꺼주시거나 별도로 셋팅해주셔야합니다.

$ sudo setenforce 0

Step 3) Start and enable docker Service

Once docker is installed then start and enable its service using following systemctl commands,

$ sudo systemctl start docker
$ sudo systemctl enable docker

To verify the status of docker run,

$ sudo systemctl status docker

Perfect, above output confirms that docker service is up and running.

If you wish local user to mange and run docker commands, then add the user to docker group using beneath command.

$ sudo usermod -aG docker $USER

After executing the above command, log out and log in once so that docker group is associated to user and user can run docker commands without sudo.

[sysadm@rocky-linux ~]$ docker --version
Docker version 20.10.7, build f0df350
[sysadm@rocky-linux ~]$

Let’s verify the docker installation in the next step.

Step 4) Test docker Installation

To test docker installation, run hello-world container using following docker command,

$ docker run hello-world

Output,

Above output confirms that container ‘hello-world’ has been launched successfully and it also confirms that docker is installed successfully.

Step 5) Install Docker-Compose

Docker Compose command allows to spin up multiple containers in one go. So, to install it run the following commands one after the another.

$ sudo dnf install -y curl
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 2.7.0
$

Above output shows that docker-compose of version 1.29.2 is installed successfully. That’s all from guide. I hope you have found it informative. Please do share your feedback and queries in below comments section.

'IT > 리눅스(Linux)' 카테고리의 다른 글

Rocky Linux 8에 VirtualBox 6.1을 설치하는 방법  (0) 2021.12.06
root 계정 su 제한하는 방법  (0) 2021.11.30
Shadow 파일 내용  (0) 2021.10.20
Kali Linux 설치 후 접속정보 및 초기설정  (0) 2021.10.20
lsof  (0) 2021.09.29
728x90

Shadow 파일 내용

 

(예)
Kisa : $6$oLSEKmBI$Ptj.RvqrzLwTcZTZp603.WqaizUxacg.D.IKc6jqlZUNnltw.rLiq502qIPT6jgybuuashjw7Lkoewrn11gguVx0:117653:0:9999:7:::

 

위의 (예)에서
첫번째 $필드값 - 암호화기법
두번째 $필드값 - Solt값
세번째 $필드값 - 암호화된 Password 해시값

서로 다른 계정이 같은 비밀번호를 사용하더라도 Salt값이 다르면 전혀 다른 해시값이 생성된다. 또 같은 해시값이라도 솔트값이 전혀 다르기 때문에 평문을 유추하기 힘들어 레인보우 테이블에 의한 암호 크랙 공격에 대응이 가능하다.
[참고] 솔트(Salt)는 비밀번호와 같이 해시값에 추가적으로 포함된 가입시간이나 난수를 말한다.

pwunconv 명령어는 Shadow 비밀번호 정책의 비밀번호 시스템에서 일반정책으로 변환하는 명령어, 즉 Shadow 파일 비활성화 명령어이다.

'IT > 리눅스(Linux)' 카테고리의 다른 글

root 계정 su 제한하는 방법  (0) 2021.11.30
Rocky Linux 9에 Docker 및 Docker-Compose를 설치하는 방법  (0) 2021.11.20
Kali Linux 설치 후 접속정보 및 초기설정  (0) 2021.10.20
lsof  (0) 2021.09.29
Syslog  (0) 2021.09.15
728x90

Kali Linux 설치 후 초기 접속정보
 root / toor 또는 kali / kali

한글 표기 및 입력 설정
apt-get update
apt-get install fcitx-hangul
apt-get install fcitx-lib*
apt-get install fonts-nanum*

재부팅

메뉴바 좌측 버튼을 눌러 Input method를 누른다.
팝업창이 뜨게 되는데 YES를 누른다.
중간에 configuration을 선택하는 창이 나오는데 fctitx를 누른 후 OK를 누른다.
설정이 완료된 후 Fcitx Configuration을 누른다.
여기서 한글을 추가할 수 있는데, Method configuration 창에서 하단의 +버튼을 누르고 Only Show Current Language 체크박스를 해제한 후 Hangul을 입력한 뒤 OK를 누른다.
마지막으로 한/영 변환을 위해 Global Config창으로 들어가 Trigger Input Method에서 Ctrl+Space를 누른 후 한/영 버튼을 눌러 설정을 완료한다. 만일 한/영 버튼을 눌러도 Hotkey 설정이 안된다면 한/영 키 옆의 Alt 버튼을 사용하거나 그 외 편한 버튼을 사용하도록 한다.

'IT > 리눅스(Linux)' 카테고리의 다른 글

Rocky Linux 9에 Docker 및 Docker-Compose를 설치하는 방법  (0) 2021.11.20
Shadow 파일 내용  (0) 2021.10.20
lsof  (0) 2021.09.29
Syslog  (0) 2021.09.15
유닉스 환경의 Log 종류  (0) 2021.09.14
728x90

lsof

lsof는 유닉스 시스템에서 동작하는 있는 프로세스에 의해서 열린 파일 정보를 보여주는 시스템 관리 명령이다.

옵션
① -u :  특정 사용자가 사용하는 프로세스 확인 - 예) lsof -u $UID
② -p : 지정한 프로세스가 오픈한 파일 리스트 확인 - 예) lsof -p $PID
③ -i : 모든 네트워크에 연결되어 있는 프로세스와 파일 정보를 조회 - 예) lsof -i
④ -c : 지정한 데몬과 연결되어 있는 프로세스와 파일 정보를 조회 - 예) lsof -c 데몬명

728x90

Syslog

개요 
Syslog 란 로깅 메세지 프로그램의 표준이다. Syslog는 다양한 프로그램들이 생성하는 메세지들을 저장하고, 이 들 메세지들을 이용해서 다양한 분석 등이 가능하도록 로그 메세지들을 제공한다. Syslog는 프로그램 뿐만 아니라 device와 같은 장비들도 Syslog를 사용할 수 있도록 제공한다. 관리자들은 device 장비에서의 로그 메세지들을 통해 문제사항이나, 성능 등을 확인할 수 있다.

Syslog는 컴퓨터 시스템의 관리, 보안 알림 뿐만 아니라 일반적인 정보, 분석, 디버깅 메세지 등을 제공해준다. 프린터나 라우터와 같은 다양한 장비 뿐만 아니라 다양한 플랫폼을 지원한다. 이런 이유로 syslog는 중앙 저장소에 다양한 타입의 시스템들의 로그 데이터의 저장소로 사용되기도 한다. 

Syslog에서는 메세지를 생성해내는 주체(facility)에 따라 다음과 같이 나눈다. (auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0.. local7) 그리고 메세지의 우선순위 / 메세지 중요도(level)에 따라 다음과 같이 나뉘어 진다. (Emergency, Alert, Critical, Error, Warning, Notice, Info or Debug). 

Syslog의 설정을 통해 로컬 디바이스 혹은 파일 및 심지어 다른 시스템의 Syslog Daemon에도 로그 메세지들을 전달할 수 있다. 이 때에 한 가지 주의해야 할 점은 설정 파일의 facility나 level을 잘못 설정 해서 중요한 메세지들을 제대로 써지지 않아 로그 메세지들을 모두 놓쳐 버릴 수도 있으니, 조심해야한다. 

logger라는 명령어를 통해 syslog에 특정 메세지를 보낼 수도 있다. 

syslog는 Syslog working 그룹인 IETF에서의 표준으로 지정되기도 하였다. 

역사 
Syslog는 1980년대 Eric Allman이라는 사람이 send mail 프로젝트의 한 부분으로 개발 되었다. Syslog가 개발된 이후로 Unix나 Unix 계열의 많은 시스템에서 로깅의 표준이 되었다. 다른 운영체제 시스템의 로그 체제를 위한 근간이 되기도 했으며, 라우터와 같은 네트워크 장비에도 사용되고 있는 것을 확인할 수 있다. 

Syslog 설정
Syslog에서는 크게 두 가지의 중요 개념이 있는데, 이들이 위에서 설명한 facility와 level 이다. 우선 설정 파일의 예를 통해 살펴 보도록 하자. 

Syslog의 설정 파일은 /etc/syslog.conf, 우분투 혹은 데비안 시스템의 경우 /etc/rsyslog.conf 파일에서 찾아 볼 수 있다.

< rsyslog는 데비안 리눅스가 etch에서 lenny로 변경되면서 syslog 대신에 더 개량이 된 rsyslog를 사용하기 시작했다. >

다시 설정 파일로 돌아가서 /etc/syslog.d 디렉토리 혹은 /etc/rsyslog.d 디렉토리를 살펴보면 세부 설정 파일들을 확인해볼 수 있다.

kern.*                          -/var/log/kern.log

위의 내용은 syslog 파일의 일부를 발췌한 것인데, 위 내용을 살펴보면 다음과 같다. kern은 facility로써, kernel 메세지들에 대한 설정을 말하는 것이고, 뒤의 '*' 표시는 level로써, 이 예에서는 모든 level에 대해 로그를 기록하겠다는 설정이 된다. 뒤의 (/var/log/kern.log)는 로그가 씌어지는 파일의 경로이다.

(facility).(level)   (로그가 씌어질 파일 경로)

예를 들어, kern.info 라고 설정이 되어 있으면 커널 메세지 중에서 메세지의 level이 info 이면 커널 메세지 들을 필터링해서 info 이상의 메세지만 로그파일에 기록을 하겠다는 이야기가 된다. 

728x90

유닉스 환경의 Log 종류

① utmp : 시스템에 현재 로그인한 사용자들에 대한 상태 정보를 수집한다. 상태 정보는 사용자 이름, 터미널 장치 이름, 원격 로그인 시 원격 호스트 이름, 사용자가 로그인한 시간 등을 기록한다. who, w, whodo, users, finger 등의 명령어를 사용하여 분석할 수 있다.

② wtmp : 사용자의 로그인, 로그아웃 시간과 시스템의 종료 시간, 시스템의 시작시간 등을 기록한다. last 명령어를 사용하여 분석할 수 있다.

③ pact : 사용자가 로그인한 후부터 로그아웃할 때까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보를 수집한다. lastcomm 명령어를 이용하여 분석할 수 있다.

④ History : 사용자 별로 실행한 명령을 기록하는 로그이다. bash, sh, tcsh, csh 등 사용자들이 사용하는 셸에 따라서 각각 .bash_history, .sh_history, .history 등의 파일로 기록을 남기며, 명령어뿐만 아니라 파일 위치 및 파일명까지 기록된다. vi 편집기, history 명령어를 이용하여 로그분석이 가능하다.

⑤ sulog : su 명령어를 사용한 결과를 저장하는 로그이다.

⑥ lastlog : 서버에 접속한 사용자의 IP별로 가장 최근에 로그인한 시간을 기록한다. lastlog 명령어를 이용하여 분석할 수 있다.

⑦ btmp : 5번 이상 로그인을 실패했을 경우에 로그인 실패 정보를 기록한다. lastb 명령어를 이용하여 분석할 수 있다.

⑧ message : syslog 계열의 로그로서 콘솔상의 화면에 출력되는 메시지들을 저장하고 시스템의 장애에 대한 기록뿐만 아니라 보안측면에서 취약점에 의한 공격흔적을 기록으로 남기게 된다. vi 명령어를 이용하여 로그분석이 가능하다.

'IT > 리눅스(Linux)' 카테고리의 다른 글

lsof  (0) 2021.09.29
Syslog  (0) 2021.09.15
유닉스에서 SetUID와 SetGID가 설정된 파일 검색 명령어  (0) 2021.09.01
리눅스 특수권한(SetUID, SetGID, Stickybit)  (0) 2021.08.25
Virtualbox Centos 7 게스트확장설치  (0) 2021.08.11
728x90

find / type f \(-perm -2000 -o -perm -4000\) -print

 

-o 옵션 : OR연산

-a 옵션 : AND연산

type f : 일반파일

728x90

리눅스 특수권한에 대해 살펴보겠습니다.

리눅스는 보통 사용자와 파일에 권한을 부여해 가장 기초적인 보안 체계를 이룹니다.

일반적으로 파일이나 디렉토리에는 user, group, other 권한이 존재하고

각각 읽기, 쓰기, 실행 권한을 부여할 수 있습니다.

이런 일반 권한 이외에도 리눅스에는 특수권한이란 것이 존재합니다.

 

  • SetUID

SetUID가 설정된 파일을 실행할 때 일시적으로 파일 소유자의 권한을 얻어 실행할 수 있도록 합니다. 

예를들어 root 권한으로 지정된 프로그램에 SetUID가 지정되어 있다면 실행할 때 root 권한으로 실행됩니다.

SetUID를 적용하기 위해서는 기존의 허가권 앞에 4를 붙이면 됩니다.

ex) # chmod 4644 파일이름

<기존 권한에 실행권한이 없으면 대문자 S, 있으면 소문자 s로 표시됩니다.>

 

SetUID가 적용되어 있는 파일 중 가장 대표적인 것은 /usr/bin/passwd 파일입니다.

해당 파일은 계정의 비밀번호를 변경할 수 있도록 하는 명령어 실행 파일로

/etc/passwd로 접근하여 비밀번호를 변경하도록 합니다.

실제 /etc/passwd의 권한은 소유주인 root만이 변경이 가능하도록 설정이 되어있습니다.

만약 /usr/bin/passwd에 SetUID가 적용되어있지 않다면 일반 사용자들은 

항상 관리자를 거쳐 자신의 비밀번호를 변경해야합니다.

이런 번거로움을 줄이기위해 일반 사용자들도 root의 권한으로 /etc/passwd 파일을 수정 가능하도록 설정한 것입니다.

 

  • SetGID

 SetUID와 마찬가지로 SetGID가 설정된 파일을 실행할 때 일시적으로 파일 소유그룹의 권한을 얻어 실행하도록 합니다.

SetGID를 적용하기 위해서는 기존의 허가권 앞에 2를 붙이면 됩니다.

ex) # chmod 2644 파일이름

<기존 권한에 실행권한이 없으면 대문자 S, 있으면 소문자 s로 표시됩니다.>

 

  • Sticky Bit

Sticky Bit가 설정된 디렉토리에 파일을 생성하면 해당 파일은 생성한 사람의 소유가 되며

소유자와 root만이 해당 파일에 대한 삭제 및 수정에 대한 권한을 가질 수 있습니다.

즉, Sticky Bit가 설정된 디렉토리안에 누구나 파일을 생성할 수는 있지만 삭제는 본인과 관리자만 가능하게 되는겁니다. 

Sticky Bit를 적용하기 위해서는 기존의 허가권 앞에 1를 붙이면 됩니다.

ex) # chmod 1644 디렉토리이름

<기존 권한에 실행권한이 없으면 대문자 T,  있으면 소문자 t로 표시됩니다.>

 

 

일반적으로 유닉스 운영체제는 파일이나 디렉토리의 소유자, 소유그룹만이 삭제, 수정을 할 수 있도록 권한을 지정하지만

모든 사용자들이 파일 생성, 수정, 삭제 할 수 있는 디렉토리가 있습니다. 

/tmp와 /var/tmp 디렉토리는 모든 사용자가 사용하는 공용 디렉토리입니다.

그렇다보니 파일의 소유자가 아닌 다른 사용자가 777권한인 파일을 삭제, 수정하는 부분에서 문제가 발생하게 됩니다.

이를 방지하기 위해 Sticky Bit를 설정하여 공용 디렉토리라 하더라도

그 파일의 소유자와 관리자만이 삭제, 수정 권한을 가질 수 있습니다.

 

  • 참고로 특수 권한은 해당 자리의 기존 권한에 실행 권한이 있어야 정상적으로 적용이 됩니다.
728x90

터미널에서

1. # yum update << 치고 930M 정도되는 업데이트를 20분간 실행한다.

2. # yum groupinstall "Development Tools" << 치고 설치.

3. # yum install kernel-devel << 치고 설치

4. 바탕화면에 있는 게스트확장CD 아이콘 실행

설치완료.

728x90

utmp : 현재 로그인한 사용자 상태 정보를 담보 있는 로그파일

위치 - /var/run/utmp

확인 명령어 w, who, finger

 

wtmp : 성공한 로그인/로그아웃 정보 및 시스템의 boot/shutdown의 히스토리를 담고있는 로그파일

위치 - /var/log/wtmp

확인 명령어 last

 

btmp : 실패한 로그인 정보를 담고 있는 로그파일

위치 - /var/log/btmp

확인 명령어 lastb

 

last log : 마지막으로 성공한 로그인 정보를 담고 있는 로그 파일

위치 - /var/log/lastlog

확인 명령어 - lastlog

 

sulog : su(switch user) 명령어와 관련된 로그 기록

 

 1) 시스템에 현재 로그인한 사용자들에 대한 상태를 기록하여 "who" 명령으로 내용을 볼 수 있다. - utmp

 2) 사용자가 로그인 또는 로그아웃 할 때마다 그 정보가 기록되며, "last" 명령으로 내용을 볼 수 있다. - wtmp

 3) 사용자들에 의해 실행된 모든 명령이 기록되며, "lastcomm" 명령으로 그 내용을 볼 수 있다 - pacct

 4) 가장 최근에 ID가 user01 라는 사용자가 로그인한 기록을 보고 싶을 때 - lastlog -u user01

 5) wtmp 파일에 저장된 ID가 user02 라는 사용자가 로그인한 기록을 보고 싶을 때 - last user02

 6) wtmp 파일에 저장된 정보 중 시스템 재부팅 기록을 보고 싶을 때 - last reboot

 7) btmp 파일에 저장된 로그인 실패기록을 보고 싶을 때 - lastb

 

acct/pacct 로그파일은 로그인부터 로그아웃까지 사용자가 입력한 명령어를 확인할 수 있다.

확인 명령어 - lastcomm 

728x90

먼저 조정해줘야 할 것은 게시판 자체의 파일 업로드 크기 제한이다.

아래 이미지는 그누보드5의 업로드 파일 크기 제한 설정 화면이다.

 

기본적으로 1M Byte로 되어 있었는데 10M 바이트로 늘린 화면이다. 하나의 게시물에 여러개의 파일이 올라가도 각각 개별적인 파일의 크기만 제한한다. 즉 위처럼 설정되어 있다면 10M 파일을 여러개 업로드 할 수 있다. 이 설정은 게시판~마다 설정해줘야 한다.

 

하지만 이 설정만 변경해서는 용량이 큰 파일을 업로드할 수는 없다.

다음은 php.ini 파일에서 업로드 파일 관련 설정을 변경해주어야 한다. php.ini는 /etc 디렉토리에 있다.

 

먼저 file_uploads가 On으로 되어 있어야 하며 upload_max_filesize를 원하는 용량으로 변경해주면 된다. 위의 설정은 한번의 파일 업로드 즉 하나의 php 스크립트가 실행되면서 해당 세션에서 업로드할 수 있는 용량을 의미한다.

 

만약 아파치서버의 임시디렉토리가 포함된 파일시스템의 용량이 작다면(일반적으로 /tmp) upload_tmp_dir을 설정할 필요도 있다.

 

다음은 php.ini에서 post 메소드 실행 시 사용할 수 있는 메모리 제한값을 설정해 주어야 한다.

 

그누보드의 경우(대부분 그럴 것으로 보임) 파일을 업로드 하면 POST 메소드로 전송이 되는데 이때 업로드하는 파일의 크기만큼 POST로 전송되는 메시지가 커진다. 이 설정도 보안과 관련이 있지만 게시판의 기능인 자료실 용도이니 만큼 제한을 작게 할 수는 없다. 아펭서 파일의 업로드크기 제한을 100M로 했으므로 POST 시 사용할 수 있는 메시지의 크기도 100M보다 커야한다. 

 

위에서는 128M로 설정했다. 왜 100이 아니고 128이냐고 묻는다면 8의 배수 그리고 16의 배수, 32의 배수, 64의 배수로 설정해주는게 습관이 돼서라고 이야기 해주겠다.

 

그리고 메모리 관련 설정이 또 하나가 있다. (제약이 참 많기도 하다.) 앞에서 POST 메소드에서 사용할 수 있는 메모리를 설정해 주어도 PHP 스크립트 하나에서 사용할 수 있는 메모리 제약이 걸려있기 때문에 post_max_size 보다 아래의 memory_limit 가 작다면 의미가 없다.

 

아래 처럼 post_max_size인 128M 보다 크거나 같게 설정한다.

 

이제 업로드 파일의 용량과 업로드 시 사용되는 웹서버 측의 메모리 제약에 대한 설정은 모두 변경하였다.

 

하지만 이것만 설정해선 또 오류가 발생할 수 있다. 파일을 업로드 하는 것은 하나의 PHP 스크립트 파일이 아파치 대몬에 의해 실행되는 것이다. PHP에선 하나의 스크립트가 실행될 수 있는 최대 시간도 제한이 걸려 있다. 만약 100M의 업로드에 제약이 걸린 시간보다 오랜 시간이 소요된다면 timeout 오류가 발생할 수 있다. 이 문제를 예방하기 위해 하나의 php 스크립트가 실행될 수 있는 최대 실행시간 즉, max_execution_time 을 변경해준다.

 

60초 이내에 100M 바이트의 파일 업로드가 완료되어야 한다. 만약 시간이 부족하다면 더 늘려주면 된다. 단위는 초다.

 

이제 아파치 데몬을 재구동하고 파일 업로드를 해보라..

728x90

CPU Governor 종류

 

* OnDemand : 현재 사용량에 따라 CPU frequnecy를 설정. CPU는 주파수를 빠르게 변경할 능력이 필요

* OnDemandX : 배터리 친화적인 OnDemand이며 I/O 스케줄러에 따라 성능이 크게 좌우.

* Conservative : 느린 OnDemand. 가능한 최저 속도에서 동작하도록 구현

  예) OnDemand는 min -> max로 바로 변경 / Conservative는 min -> lower -> mid -> hig -> max 변경

* Interactive : OnDemand처럼 CPU에 위치한 부하에 따라 주파수를 변경하나 훨씬 빠르게 반응

* Performance : CPU를 최고 주파수로 설정

* Powersave : CPU를 최저 주파수로 설정

* Userspace : 테스트를 위해 사용. CPU를 사용자가 지정한 주파수로 동작

 

현재 설정된 governors 확인

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

사용가능한 설정

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

 

governors 변경

# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

* /sys/devices/system/cpu/ -> cpu[n] n 수만큼 다 변경

 

예)

# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu8/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu9/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu10/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu11/cpufreq/scaling_governor

728x90

사이트 운영이든 프로그램이나 앱 사용 시 보안 업데이트는 반드시 적용해야합니다.

우분투 서버 운영 시 우분투 서버 보안 자동 업데이트 및 업그레이드 방법 및 이 결과 메일 통보 방법에 대해 살펴봅니다.

 

서버 및 프로그램 보안 업데이트의 필요성

인터넷이 발전하면서 인터넷 사용자가 증가하고, 인터넷을 이용한 비지니스가 크게 융성해지고 있기 때문에 이에 편승한 해킹 위험이 크게 증가하고 있습니다.

 

테스트 또는 교육용으로 해킹하는 경우도 있겠지만 대부분은 무엇인가 이득을 노리는경우가 많죠. 그리고 이는 사용자가 많아질수록, 관련된 비지니스가 커질수록 시도는 증가하기 마련입니다.

 

이렇게 해킹 위험이 증가하고 프로그램등이 빠르게 변하면서 그동안 생각하지 못했던 위약점들이 나타나고 예전에 몰랐던 취약점을 새롭게 발견하기도 합니다.

 

그렇기 때문에 이러한 취약점들은 보완하는 보안 업데이트는 굉장히 자주 이루어집니다. 서버나 사이트를 안전하게 지키려면 이런 보안 업데이트를 바로바로 실행해 주는 것이 필요합니다.

 

실제로 해킹등은 이러한 업데이트를 무시하고 방치된 서버나 사이트에서 주로 일어나고 있다는 것도 보안 업데이트 및 업그레이드의 중요성을 웅변해 준다고 할 수 있습니다.

 

그리고 이런 업데이트 및 업그레이드 시 반드시 사전 백업이 필수적이죠. 어떤 일이 일어날지 모르기 때문이죠.

 

그런데 전업으로 서버 운영을 하는 담당자가 있다면 매일 일정 시간에 안정적을 상황을 파악해 업데이트 및 업그레이드를 진행 후 문제가 없는지 확인할 수 있지만  대부분의 경우는 그렇지 않고 서버에 접속할 여유가 적습니다.

 

그렇기 때문에 최소한 보안 업데이트 및 업그레이드는 자동으로 이루어지고 이를 메일로 통보 받는 것이 필요합니다. 그리고 이러한 업데이트는 가능하면 사용하지 않는 새벽 시간에 이루어 지도록 설정하는 것이 필요할 것입니다.

 

보안 업데이트 전에 사전 백업

보안 업데이트는 자동 실행

보안 업데이트로 시스템 부팅이 필요한 경우, 시스템 부팅은 사용자가 적은 새벽 시간에 진행

보안 업데이트 내용은 메일로 송부

 

우분투(Ubuntu) 서버 보안 자동 업데이트 방법

여기서는 우분투(Ubuntu) 서버 운영 시 보안 자동 업데이트 방법에 대해서 살펴봅니다.

 

어느 운영체제나 마찬가지겠지만 리눅스도 필요가 있으면 이를 지원하는 다양한 방법들을 제공되고 있습니다.

 

우분투 리눅스에서는 보안 업데이트가 발생 시 관련 내용만 업데이트하도록 하는 unattended-upgrades라는 프로그램이 있습니다. 오늘은 이를 이용해 우분투 서버 자동 업데이트 방법에 대해서 알아보도록 하겠습니다.

 

unattended-upgrades 프로그램 설치

먼저 서버 업데이트 및 업그레이드를 통해서 최신 상태로 만듭니다.

sudo apt update && sudo apt upgrade 

 

다음으로는 위에서 이야기한 unattended-upgrades 프로그램을 설치합니다. 이는 아래 명령을 사용합니다. 별다른 메일 프로그램이 설치되어 있지 않으면 postfix를 설치합니다.

sudo apt install unattended-upgrades apt-listchanges bsd-mailx 

 

지메일 릴레이 서버를 이용해 우분투 서버에서 메일 발송 시스템 구축에 대해서는 아래 글을 참조하시기 바랍니다.

 

구글 지메일 이용 우분투 메일 서버 구축하기

설치를 시작하다가 중간에 이 프로그램이 서버 용량을 사용할 것인데 설치를 진행할 것인지 질문합니다. 사용하겠다는 용량은 기껏 588K 정도 되기 때문에 부담없이 Y를 누릅니다.

 

# sudo apt install unattended-upgrades apt-listchanges bsd-mailx

Reading package lists... Done

Building dependency tree       

Reading state information... Done

unattended-upgrades is already the newest version (2.3).

The following packages were automatically installed and are no longer required:

  lockfile-progs sendmail-base sendmail-cf sensible-mda

Use 'sudo apt autoremove' to remove them.

Suggested packages:

  www-browser x-terminal-emulator

The following NEW packages will be installed:

  apt-listchanges bsd-mailx

0 upgraded, 2 newly installed, 0 to remove and 31 not upgraded.

Need to get 150 kB of archives.

After this operation, 588 kB of additional disk space will be used.

Do you want to continue? [Y/n] Y

 

설정 보안 업데이트 허용

다음으로는 강제 보안 업데이트를 허용합니다. 아래와 같은 명령을 사용하면 중간에 unattended-upgrades를 사용하도록 설정할지 질문하는 팝업이 뜹니다.

sudo dpkg-reconfigure -plow unattended-upgrades 

Applying updates on a frequent basis is an important part of keeping systems secure. By default, updates need to be applied manually using package management tools. Alternatively, you can choose to have this system automatically download and install important updates.Automatically download and install stable updates?

 

오늘 목적이 바로 그것이므로 키보드를 옮겨 Yes를 선택합니다.

 

우분투 보안 자동 업데이트 설치 옵션, unattended-upgrades 사용 허용

 

unattended-upgrades 세부 옵션

이제 unattended-upgrades 세부 옵션을 정합니다. 이는 아래 파일을 편집합니다. 저는 아래 몇 가지를 조정했습니다.

 

① 업데이트 결과를 받을 이메일 주소 설정(73번째 줄)

② 보안 업데이는 종종 우분투 서버 리부팅이 필요할 경우가 있습니다. 이 경우 관리자 확인없이 리부팅 허용(93번째 줄)

③ 서버 리부팅이 필요한 경우 리부팅 시간을 위험이 적은 새벽 시간으로 설정(102번째 줄)

 

아래는 제가 설정한 내용입니다. 설명 등 군더더기 내용을 그대로 두었습니다.

 

// Automatically upgrade packages from these (origin:archive) pairs

//

// Note that in Ubuntu security updates may pull in new dependencies

// from non-security sources (e.g. chromium). By allowing the release

// pocket these get automatically pulled in.

Unattended-Upgrade::Allowed-Origins {

        "${distro_id}:${distro_codename}";

        "${distro_id}:${distro_codename}-security";

        // Extended Security Maintenance; doesn't necessarily exist for

        // every release and this system may not have it installed, but if

        // available, the policy for updates is such that unattended-upgrades

        // should also install from here by default.

        "${distro_id}ESMApps:${distro_codename}-apps-security";

        "${distro_id}ESM:${distro_codename}-infra-security";

//      "${distro_id}:${distro_codename}-updates";

//      "${distro_id}:${distro_codename}-proposed";

//      "${distro_id}:${distro_codename}-backports";

};

 

// Python regular expressions, matching packages to exclude from upgrading

Unattended-Upgrade::Package-Blacklist {

    // The following matches all packages starting with linux-

//  "linux-";

 

    // Use $ to explicitely define the end of a package name. Without

    // the $, "libc6" would match all of them.

//  "libc6$";

//  "libc6-dev$";

//  "libc6-i686$";

 

    // Special characters need escaping

//  "libstdc\+\+6$";

 

    // The following matches packages like xen-system-amd64, xen-utils-4.1,

    // xenstore-utils and libxenstore3.0

//  "(lib)?xen(store)?";

 

    // For more information about Python regular expressions, see

    // https://docs.python.org/3/howto/regex.html

};

 

// This option controls whether the development release of Ubuntu will be

// upgraded automatically. Valid values are "true", "false", and "auto".

Unattended-Upgrade::DevRelease "auto";

 

// This option allows you to control if on a unclean dpkg exit

// unattended-upgrades will automatically run

//   dpkg --force-confold --configure -a

// The default is true, to ensure updates keep getting installed

//Unattended-Upgrade::AutoFixInterruptedDpkg "true";

 

// Split the upgrade into the smallest possible chunks so that

// they can be interrupted with SIGTERM. This makes the upgrade

// a bit slower but it has the benefit that shutdown while a upgrade

// is running is possible (with a small delay)

//Unattended-Upgrade::MinimalSteps "true";

 

// Install all updates when the machine is shutting down

// instead of doing it in the background while the machine is running.

// This will (obviously) make shutdown slower.

// Unattended-upgrades increases logind's InhibitDelayMaxSec to 30s.

// This allows more time for unattended-upgrades to shut down gracefully

// or even install a few packages in InstallOnShutdown mode, but is still a

// big step back from the 30 minutes allowed for InstallOnShutdown previously.

// Users enabling InstallOnShutdown mode are advised to increase

// InhibitDelayMaxSec even further, possibly to 30 minutes.

//Unattended-Upgrade::InstallOnShutdown "false";

 

// Send email to this address for problems or packages upgrades

// If empty or unset then no email is sent, make sure that you

// have a working mail setup on your system. A package that provides

// 'mailx' must be installed. E.g. "user@example.com"

Unattended-Upgrade::Mail "업데이트 상황을 받아 볼 이메일 주소";

 

// Set this value to one of:

//    "always", "only-on-error" or "on-change"

// If this is not set, then any legacy MailOnlyOnError (boolean) value

// is used to chose between "only-on-error" and "on-change"

 

// Remove unused automatically installed kernel-related packages

// (kernel images, kernel headers and kernel version locked tools).

//Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

 

// Do automatic removal of newly unused dependencies after the upgrade

//Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

 

// Do automatic removal of unused packages after the upgrade

// (equivalent to apt-get autoremove)

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

 

// Automatically reboot *WITHOUT CONFIRMATION* if

//  the file /var/run/reboot-required is found after the upgrade

Unattended-Upgrade::Automatic-Reboot "true";

 

// Automatically reboot even if there are users currently logged in

// when Unattended-Upgrade::Automatic-Reboot is set to true

//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";

 

// If automatic reboot is enabled and needed, reboot at the specific

// time instead of immediately

//  Default: "now"

Unattended-Upgrade::Automatic-Reboot-Time "03:00";

 

// Use apt bandwidth limit feature, this example limits the download

// speed to 70kb/sec

//Acquire::http::Dl-Limit "70";

 

// Enable logging to syslog. Default is False

// Unattended-Upgrade::SyslogEnable "false";

 

// Specify syslog facility. Default is daemon

// Unattended-Upgrade::SyslogFacility "daemon";

 

// Download and install upgrades only on AC power

// (i.e. skip or gracefully stop updates on battery)

// Unattended-Upgrade::OnlyOnACPower "true";

 

// Download and install upgrades only on non-metered connection

// (i.e. skip or gracefully stop updates on a metered connection)

// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true";

 

// Verbose logging

// Unattended-Upgrade::Verbose "false";

 

// Print debugging information both in unattended-upgrades and

// in unattended-upgrade-shutdown

// Unattended-Upgrade::Debug "false";

 

// Allow package downgrade if Pin-Priority exceeds 1000

// Unattended-Upgrade::Allow-downgrade "false";

 

APT 변경 사항 발생 시 받을 메일 주소 변경

다음으로는 listchanges.conf를 편집해 APT 변경 사항 발생 시 받아볼 이메일 주소를 root에서 설정합니다.

# vi /etc/apt/listchanges.conf 

 

여기 설정은 매우 간단한데요. 아래와 같은 항목으로 구성되어 있고 이중 메일 주소를 설정하면 됩니다.

 

[apt]

frontend=pager

which=news

email_address=업데이트

email_format=text

confirm=false

headers=false

reverse=false

save_seen=/var/lib/apt/listchanges.db

 

테스트

아래와 같은 명령을 사용해 제대로 작동하는지 확인해 봅니다.

sudo unattended-upgrades --dry-run

 

그러면 아래와 같은 형식으로 변경된 내용을 출력해 줍니다.

# sudo unattended-upgrades --dry-run 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/snmp_5.8+dfsg-2ubuntu2.1_amd64.deb /var/cache/apt/archives/libsnmp35_5.8+dfsg-2ubuntu2.1_amd64.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/glib-networking-common_2.64.2-1ubuntu0.1_all.deb /var/cache/apt/archives/glib-networking_2.64.2-1ubuntu0.1_amd64.deb /var/cache/apt/archives/glib-networking-services_2.64.2-1ubuntu0.1_amd64.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/libsnmp-base_5.8+dfsg-2ubuntu2.1_all.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/libseccomp2_2.4.3-1ubuntu3.20.04.2_amd64.deb 

/usr/bin/dpkg --status-fd 10 --no-triggers --configure libseccomp2:amd64 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure --recursive /tmp/apt-dpkg-install-m8fgGO 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/linux-libc-dev_5.4.0-40.44_amd64.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

 

참고

이는 우분투 서버 보안 자동 업데이트 방법은 아래 글을 참조해 테스트 결과를 기반으로 재정리 했습니다.

 

아래 참고글은 우분투 18.04를 기준으로 했지만 저는 우분투 20.04에서 테스트해 보았습니다.

 

How to set up automatic updates for Ubuntu Linux 18.04

 

그리고 메일을 실행시마다 보내는 것은 아니고 문제가 발생하거나 패키지 업그레이드(problems or packages upgrades)가 발생시에만 보내게 됩니다.

728x90

우분투(Ubuntu)에서 시스템 및 패키지를 업데이트하고 사용하지 않는 패키지를 자동으로 삭제하는 방법

 

#!/bin/sh

sudo apt-get clean

sudo apt-get autoclean

 

sudo apt-get update

sudo apt-get -y upgrade

sudo apt-get -y dist-upgrade

 

sudo apt-get autoremove

 

sudo apt-get autoclean

sudo apt-get clean

 

sudo apt-get check

728x90

패키지 업데이트

$ sudo apt-get update

 

크롬 다운로드

$ sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

 

크롬 설치

$ sudo apt install ./google-chrome-stable_current_amd64.deb

728x90

Docker 설치

Docker를 사용하면 운영체제와 독립적인 이미지를 인스턴스로 올려 컨테이너로 작동시킬 수 있다. 아키텍쳐의 구성 및 확정, 배포 방법이 비약적으로 간소화됩니다. CentOS 7에서의 설치 및 실행 방법은 아래와 같습니다.

 

# Docker 저장소 설치

$ curl -fsSL https://get.docker.com/ | sh

 

# Docker 서비스 시작

$ sudo systemctl start docker

 

# Docker 서비스 작동 상태 확인

$ sudo systemctl status docker

 

# Docker 서비스를 운영체제 부팅시 자동 시작하도록 설정

$ sudo systemctl enable docker

 

# docker 명령어를 sudo 없이 사용하기 위해 계정을 docker 그룹에 소속 (계정 재접속 필요)

$ sudo usermod -aG docker $USER 

 

# 설치된 docker 버전 확인

$ docker --version

Docker version 1.13.1, build 7d71120/1.13.1

 

# hello-world 컨테이너 실행 확인

$ docker run hello-world

Hello from Docker!

This message shows that your installation appears to be working correctly.

 

Docker Compose 설치

Docker의 단점은 애플리케이션마다 각각의 컨테이너로 독립적으로 실행된다는 것입니다.

엔터프라이즈 레벨의 아키텍쳐에서는 여러 애플리케이션이 함께 실행되어 영향을 주고 받는 것이 흔합니다.

이 것을 가능하게 하기 위해 docker-compose가 제공됩니다.

CentOS 7에서의 설치 및 실행 방법은 아래와 같습니다.

 

# docker-compose 설치

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

# docker-compose 실행 권한 부여

$ sudo chmod +x /usr/local/bin/docker-compose

 

# 설치된 docker-compose 실행 확인

$ docker-compose --version

docker-compose version 1.29.1, build c34c88b2

728x90

CentOS 에서 httpd 등의 데몬 프로그램들을 설치하면 디폴트로 자동시작이 안 되어 있는 경우가 많습니다.

이 때는 수동으로 데몬 프로그램을 서버 부팅시 자동으로 시작하도록 설정해 둬야 합니다.

이 때 사용하는 명령어가 chkconfig 입니다.

 

서비스 리스트 조회

# chkconfig --list

 

서비스 자동시작 설정

# chkconfig httpd on

 

서비스 자동시작 해제

# chkconfig httpd off

 

데몬 프로그램의 서비스명은 chkconfig --list 에서 확인하시면 됩니다.

728x90

YUM 명령어 도움말 보기

yum -h

 

패키지를 최신 버전으로 업데이트 하기

yum update

 

패키지 설치하기

yum install <패키지명>

 

패키지 삭제하기

yum erase <패키지명>

 

모든 패키지 목록을 보기

yum list

 

모든 패키지 그룹 목록을 보기

yum grouplist

 

http과 관련된 패키지를 검색하기

yum search http

 

패키지 이름에 http를 포함하고 있는 것을 검색하기

yum list *http*

 

httpd 패키지의 정보 보기

yum info httpd

 

X Window System 패키지 그룹의 정보 보기

yum groupinfo "X Window System"

 

httpd 패키지 설치하기

yum install httpd

 

httpd와 php 설치하기

yum install httpd php

 

X Window System 패키지 그룹 설치하기

yum groupinstall "X Window System"

 

X Window System와 KDE Desktop 설치하기

yum groupinstall "X Window System" "KDE Desktop"

 

httpd와 php 삭제하기

yum erase httpd php

 

X Window System 삭제하기

yum groupremove "X Window System"

728x90

유저명 및 홈경로 변경(root 계정에서 실행)

# usermod  -l <newname> <oldname>

# usermod -m -d /home/<newname> <newname>

 

그룹명 변경(root 계정에서 실행)

# groupmod -n <newname> <oldname>

728x90

지역시간 설정

$ sudo dpkg-reconfigure tzdata

 

로케일 설정

$ sudo dpkg-reconfigure locales

728x90

은폰트 – unfonts

$ sudo apt-get install fonts-unfonts-core fonts-unfonts-extra

 

백묵폰트 – baekmuk

$ sudo apt-get install fonts-baekmuk

 

나눔폰트 – nanum

$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra

728x90

Nginx Proxy Manager (이하 NPM)에서 설정한 Proxy Host의 SSL의 인증 기간이 지나가서 문제가 발생하지 않도록 자동 갱신하는 방법에 대해 알아보도록 하겠습니다.

 

프록시를 설정하면서 SSL 인증을 설정하였는데요

이 인증서를 제때 갱신해주지 않으면 도메인으로 접속을 못하는 상당히 불편한 일을 겪게 될 수도 있습니다.

 

저희가 인증받은 Let’sencrypt는 무료 SSL 인증서로 갱신 주기가 90일입니다.

갱신 주기 : 90일 (만료 30일 이전부터 갱신 가능)

이렇게 90일마다 꼬박꼬박 갱신을 하지 않으면 어느날 갑자기 접속이 불가능해지는 상황이 발생한다는 것이죠

 

이제 본론으로 들어가서 명령어를 통해서 인증서를 갱신하는 방법을 설명하겠습니다.

 

갱신이 필요한 SSL 인증서

 

1. 명령어로 SSL 인증 하는 방법

1) docker 컨테이너명 확인

docker ps -a 

 

  CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                 PORTS                                                                        NAMES

  c510bbe77858        jc21/mariadb-aria:10.4            "/scripts/run.sh"        6 hours ago         Up 6 hours             3306/tcp                                                                     npm_db

  b51361627e5b        jc21/nginx-proxy-manager:latest   "/init"                 6 hours ago         Up 6 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp, 0.0.0.0:443->443/tcp  npm

 

가장 우측의 NAMES를 보시면 npm이라는 컨테이너가 있죠. 이걸 잘 확인해두시면 됩니다.

 

2) 컨테이너 쉘로 명령어 실행하기

docker exec -it npm /usr/bin/certbot renew

  Saving debug log to /var/log/letsencrypt/letsencrypt.log

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-1.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-3.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-5.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-6.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

  The following certs are not due for renewal yet:

    /etc/letsencrypt/live/npm-1/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-3/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-5/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-6/fullchain.pem expires on 2020-09-01 (skipped)

  No renewals were attempted.

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

“docker exec -it [컨테이너명] /usr/bin/certbot renew” 명령어를 입력하면 생성되어 있는 SSL 전체가 갱신됩니다.

 

2. crontab 사용하기

1) crontab 사용방법 (리눅스)

## crontab 설정

crontab -e

 

## crontab 목록 확인

crontab -l

 

## crontab 삭제

crontab -r

 

2) crontab 사용방법 (시놀로지)

시놀로지에서는 crontab -e 가 작동하지 않습니다.

## crontab 설정

nano /etc/crontab

 

3) crontab 주기 설정 방법

## crontab 주기

*      *      *      *      *

분(0-59)  시간(0-23) 일(1-31)   월(1-12)   요일(0-7)

 

## 매분마다 example.sh 실행 예제

* * * * * /home/example.sh

 

## 매주 일요일 10시 45분에 example.sh 실행 예제

45 10 * * 7 /home/example.sh

 

## 매일 매시간 0분, 30분에 example.sh 실행 예제

0,30 * * * * /home/example.sh

 

## 매일 7시 0분~30분까지 매분 example.sh 실행 예제

0-30 7 * * * /home/example.sh

 

## 매 10분마다 example.sh 실행 예제

*/10 * * * * /home/example.sh

 

## 매월 11일에서 15일까지 2시, 4시, 6시, 8시에 매 15분마다 example.sh 실행 예제

*/15 2,4,6,8 11-15 * * /home/example.sh

 

4) crontab 로그 기록하기 (cron logging)

## 로그 기록하기

* * * * * /home/example.sh > /home/example.log 2>&1

 

## 로그 누적시켜 기록하기

* * * * * /home/example.sh >> /home/example.log 2>&1

 

## 로그 없이 실행하기

* * * * * /home/example.sh > /dev/null 2>&1

 

여기까지 crontab 사용 방법을 알아보았는데요.

이제 crontab설정을 통해서 SSL 인증을 자동 갱신하는 방법에 대해 설명드리겠습니다.

 

3. crontab으로 SSL인증 자동 갱신하기

## root 권한 얻기

sudo -i

 

## crontab 열기

nano /etc/crontab

 

## 스크립트 파일 작성

nano /homes/script/auto_renew.sh

docker exec -it npm /usr/bin/certbot renew

 

## SSL인증을 위한 명령 추가하기 (매월 1일 0시 0분)

0       0       1       *       *       root    /volume1/homes/user/script/npm/auto_renew.sh

 

위와 같이 1달 단위로 갱신을 설정해두면 Let’sencrypt의 갱신주기 범위를 지나지 않고 갱신이 가능하겠죠?

불안하시면 보름 단위로 설정해두셔도 상관없습니다.

이상으로  crontab으로 SSL 자동 갱신하는 방법에 대한 포스팅을 마치도록 하겠습니다.

728x90

데비안 계열에서는 apt를, 레드햇 계열은 yum을 사용하듯이 아치리눅스는 pacman이라는 패키지 관리자를 통해 시스템의 패키지들을 관리합니다.

pacman 에서는 여러 옵션들을 제공하지만 실제로 사용하는 옵션은 그리 많지 않습니다. 업그레이드, 검색, 설치, 삭제 정도만 알아두면 사용에 큰 어려움이 없습니다.

 

1. 시스템 전체 업그레이드

pacman에서 시스템의 모든 패키지들을 업그레이드하는 것은 아치리눅스를 사용하면서 가장 많이 사용하게될 명령입니다. 명령은 아래와 같습니다.

$ sudo pacman -Syu

 

이를 실행하면 pacman은 패키지 데이터베이스를 업데이트하고 업데이트가 필요한 패키지를 찾아서 사용자가 업그레이드를 할지 말지 물어봅니다.

 

2. 패키지 검색

아치리눅스를 사용하다보면 추가적으로 패키지를 설치해야 할 필요가 있습니다. 그러기 위해서 패키지 이름을 알아야 하는데 pacman에서 패키지 명과 설명에 대해 검색할 수 있는 기능을 제공합니다. 설치되었거나 설치가능한 패키지를 검색하기 위해서는 -Ss 옵션을 사용하면 됩니다. 사실 이 검색을 사용하여도 원하던 패키지를 찾기 어렵기 때문에 인터넷에 검색하여 패키지 명을 알아내는게 대부분입니다.

$ sudo pacman -Ss [검색할 단어]

 

이미 설치가 되어있다면 패키지 명 마지막 부분에 [installed]가 표시됩니다.

-Ss 옵션에서 검색할 단어를 입력하지 않는다면 모든 패키지가 출력됩니다.

 

만약 설치된 패키지 중에서 검색을 하고싶다면 -Qs 옵션을 사용하면 됩니다.

$ sudo pacman -Qs [검색할 단어]

 

이 옵션도 검색할 단어를 입력하지 않는다면 설치된 모든 패키지를 출력합니다.

 

추가적으로 패키지의 자세한 정보(버전, 의존성, 용량, 만들어진 날짜 등등)를 알고싶다면 -Qi 옵션을 사용하면 됩니다.

$ sudo pacman -Qi 패키지명

 

3. 패키지 설치

패키지 설치를 위한 옵션은 -S 입니다. 옵션 뒤에 패키지를 여러 개 나열하면 한번에 설치가 가능합니다.

$ sudo pacman -S <패키지명> <패키지명> ...

 

4. 패키지 삭제

패키지 삭제를 위한 옵션은 -R입니다. 다만 이 옵션만으로는 입력한 패키지만 삭제하기 때문에 -s 옵션을 추가로 사용하여 다른 패키지에서 필요로하지 않는 의존성이 있는 패키지들도 함께 삭제하는 것이 일반적입니다.

$ sudo pacman -Rs <패키지명> ...

728x90

#만자로 미러서버 변경, 업데이트

sudo pacman-mirrors --country Japan Taiwan China Hong_Kong Indonesia Philippines South_Korea

sudo pacman -Syyu

sudo reboot

#zsh사용

chsh -s /usr/bin/zsh

 

#로그아웃 후 재로그인

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

 

#vim 설치

sudo pacman -S vim

sudo rm /usr/bin/vi

sudo ln -s /usr/bin/vim /usr/bin/vi

#yaourt 설치(aur)

pamac-manager

preference -> AUR -> enable aur support 체크, check for update from aur 체크

yaourt 검색, 체크, apply,commit

또는

git clone https://aur.archlinux.org/yaourt.git

cd yaourt

makepkg -si

 

#한글 입력기 설치(uim)

sudo pacman -S uim

uim-pref-gtk

 

#글로벌 세팅 -> default IM 체크, Default input method 벼루, enalbe input method 벼루only

enable im switching… 체크해제, enable input method toggle… 체크해제

 

#벼루 key bindings 1 -> 벼루 on-off에 한영키 추가

 

#나눔 글꼴, 구글 noto글꼴 설치

sudo pacman -S noto-fonts-cjk

yaourt -S ttf-nanum

yaourt -S ttf-nanumgothic_coding

 

#uim 자동 실행

vi ~/.xprofile

-> IM=”uim”

export GTK_IM_MODULE=$IM

export XMODIFIERS=@im=$IM

export QT_IM_MODULE=$IM

export XIM=$IM

 

#Plank Dockbar 설치

sudo pacman -S plank

 

#전체설정 -> 세션 및 시동 -> 프로그램 자동 시작 -> 오른쪽마우스-프로그램 추가

-> 이름: plank, 설명: plank, 명령: plank

sudo reboot

 

#plank 설정

plank –preferences

728x90

Samba는 리눅스의 파일이나 프린터를 윈도우에서 사용할 수 있게 해줍니다.

우분투에 Samba를 설치하고 디렉토리를 공유하면 윈도우에서 연결이 가능합니다.

우분투에 Samba을 설치하고 초기 설정을 진행하는 방법은 다음과 같습니다.

 

1. Samba 설치

아래 명령어를 순차로 입력해서 Samba를 설치합니다.

sudo apt-get -y update 

sudo apt-get -y install samba

 

기존에 사용하고 있는 리눅스 계정을 Samba에 추가하기 위해 아래 명령어를 입력합니다.

sudo smbpasswd -a <계정명>

 

명령어의 <계정명> 부분은 실제 계정 이름을 입력하면 됩니다.

계정은 리눅스에 존재하는 계정이면 Samba에 계속 추가할 수 있습니다.

 

2. 다음으로 원본을 보존하기 위해 Samba 설정 파일을 백업합니다.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_temp

 

이제 Samba 설정 파일을 수정합니다.

sudo nano /etc/samba/smb.conf

 

공유할 디렉토리를 설정하기 위해서 설정 파일의 가장 하단에 아래와 같은 형태로 입력합니다.

 

[multimedia]

comment = multimedia directory

path = /data/Multimedia

valid users = id1,id2

writeable = yes

read only = no

create mode = 0777

directory mode = 0777

 

해당 부분은 실제 필요한 상황에 맞춰서 다양하게 변경할 수 있습니다.

 

create mode와 directory mode는 실제 필요한 권한만 주는 것도 가능합니다.

 

Read는 4, Write는 2, Execute는 1이며 모든 권한을 주기 위해 777을 사용했습니다.

 

읽기 전용으로 변경하려면 writeble과 read only 값을 각각 no, yes로 변경하면 됩니다.

 

파일 수정이 완료되면 저장하고 Samba를 재시작해주면 됩니다.

sudo service smbd restart

 

이제 윈도우에서 네트워크 드라이브 연결을 통해 우분투의 공유 디렉토리를 사용할 수 있게 됩니다.

+ Recent posts