728x90

원문출처 : https://svrforum.com/os/288013

 

Proxmox 에서 사용하고있는 disk 외부로 꺼내는방법.

안녕하세요. 달소입니다 펜타네스트 @펜타네스트 169382 님께서 질문해주신 내부에서 사용중인 VM을 disk 형태로 꺼내서 마이그레이션 하는방법입니다. 기본적으로 Proxmox에서 스냅샷을 사용하기위

svrforum.com

 

안녕하세요. 달소입니다

펜타네스트 님께서 질문해주신 내부에서 사용중인 VM을 disk 형태로 꺼내서 마이그레이션 하는방법입니다.


기본적으로 Proxmox에서 스냅샷을 사용하기위해서는 lvm(btrfs)이나 ZFS를 사용해야합니다.
이경우에 VM의 가상디스크는 자동으로 Data 볼륨에 마운트 되기때문에 실제로 그 파일의 경로를 찾을수는 없는데요.


아래 방법을 통해 디스크의 논리적 위치를 확인하고 qcow2 파일로 떨궈서 보관하는방법을 진행하겠습니다.
보관장소는 NAS의 NFS를 사용하거나 외장하드를 사용하거나 편하신대로 하시면 되며 저같은경우 예를들기위해 작성하는거라 기본 셋팅된 lvm-local에서 진행하겠습니다.

 

1. 사용하고있는 VM의 확인하기.

먼저 백업할 디스크가있는 VM의 설정 -> 하드웨어로 가서
하드디스크의 위치를 확인해줍니다.

여기서는 local-lvm:vm-103-disk-0 이 되겠네요.
 

2. qcow 파일로 변환하기.

그다음 Proxmox Host의 쉘로 접근한뒤에 백업을 할 디렉터리로 이동해주시고 아래명령어를 통해 해당 vm disk의 논리적 위치를 확인해줍니다.

 

pvesm path [VMdisk 경로]

 

 

경로는 /dev/pve/vm-103-disk-0이 되겠군요.

 

이제 백업할 디렉터리로 이동해주신뒤에 qemu-img 명령어를 통해 파일로 떨궈줍니다.


qemu-img convert -O qcow2 -f raw [VM-Disk경로] [output.qcow2]

 

명령어가 잘실행되면 아래처럼 파일이 잘떨어집니다.

 

 

3. 로컬로 내려받기 and 복구방법.

이제 winscp를 통해 로컬로 내려받으시거나 보관하시면되며 여기서는 간단히 복구 방법도 기술해보겠습니다.

 

 

복구 방법을 테스트하기전에 기존에 디스크를 먼저 삭제해보겠습니다.

삭제 전 확인.

 

 

디스크 삭제

하드웨어 -> 하드디스크 -> 떼어내기 후 제거

 

이제 디스크가 완전히 사라졌으니 백업해놓은 qcow2파일을 마운트해보겠습니다.

 

 

마운트명령어는 아래와같습니다.

qm importdisk [vm번호] [import 파일위치] [스토리지위치]

 

ex) qm importdisk 103 /root/vm_bak/Ubuntu22_bak.qcow2 local-lvm

디스크 마운트가 잘되면 다시 VM의 하드웨어로 가서 확인 해줍니다.

 

편집을 누르고 디스크 순서에 맞게 넣어주고 추가.

 

 

디스크를 뺐다가 꼈기때문에 옵션 -> 부트 순서 에서도 디스크를 활성화 시켜주고 순서도 올려주셔야합니다.

 

 

VM 실행시 잘 접속되며 아까 백업 후에 만든 파일은 당연히(?) 없는것을 보실수있습니다.

 

 

 

참 힘든여정이였지만.. 안되는건 없습니다 ㅎㅎ

Proxmox의 백업/복구 기능을 이용하면 훨씬간단하니.. 가급적이면 그쪽으로 ㅎㅎ
ex) 백업 헤놀에 NFS를 켜고 Proxmox에서는 PBS 서버를 Guest로 구동 후 NFS를 붙이고 거기다 데이터를 보관하시는걸 추천드립니다.

 

끝-!

728x90

1. 기존 라우팅 정보 확인
sudo ip route

2. connection명 확인
sudo nmcli connection show

3. 임시설정(재부팅하면 초기화 됨)

유형 : route add -(net/host) [목적지 네트워크] netmask [넷마스크] gw [게이트웨이]

<네트워크 대역 추가>
sudo route add -net 10.10.20.0 netmask 255.255.255.0 gw 172.23.38.254
sudo route add -net 10.10.25.0 netmask 255.255.255.0 gw 172.23.38.254

<네트워크 대역 삭제>
sudo route del -net 10.10.20.0 netmask 255.255.255.0 gw 172.23.38.254
sudo route del -net 10.10.25.0 netmask 255.255.255.0 gw 172.23.38.254

<호스트 추가>
sudo route add -host 192.168.1.100 gw 192.168.1.1

<호스트 삭제>
sudo route del -host 192.168.1.100

4. 라우팅 영구설정
sudo nmcli con mod '프로파일 1' +ipv4.routes "10.10.20.0/24 172.23.38.254"
sudo nmcli con mod '프로파일 1' +ipv4.routes "10.10.25.0/24 172.23.38.254"

5. 연결 Reload
sudo nmcli con down enp19
sudo nmcli con up enp19

6. 서비스 재시작
sudo systemctl restart NetworkManager

728x90

원문출처 : https://engineer-1.tistory.com/entry/docker-Rocky-Linux-docker-docker-compose-%EC%84%A4%EC%B9%98

 

[Linux] Rocky Linux docker, docker compose 설치

docker : 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 플랫폼이다. docker compose : yaml 파일에 설정된 정의를 기반으로 다중 컨테이너 애플

engineer-1.tistory.com

 

 

docker : 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 플랫폼이다.
docker compose : yaml 파일에 설정된 정의를 기반으로 다중 컨테이너 애플리케이션 환경을 실행할 수 있게 해주는 도구입니다.
YAML : 사람이 쉽게 이해할 수 있고 기계가 해석할 수 있는 방식으로 구조화된 데이터를 표현하는 표준화 형식을 제공합니다.  'YAML'은 'YAML은 마크업 언어가 아니다(YAML Ain't Markup Language)' 또는 '또 다른 마크업 언어(Yet Another Markup Language)'의 약어입니다. (참조 : https://www.ibm.com/kr-ko/topics/yaml)

yaml 파일에(docker-compose.yml) MinIO (Minimal Object Storage), MC (MinIO Client) 두 개의 서비스를 정의하고(차후 포스팅), docker compose로 한 번에 실행(docker compose up -d) 및 관리할 수 있도록 우선 docker와 docker TooL 인 docker compose를 설치하는 방법을 기재하겠습니다.

환경 : Rocky Linux 8.9

 

dnf : Rocky Linux는 기존 리눅스의 패키지 설치 관리 도구인 yum을 개선한 패키지 관리 도구로 dnf(Dandified YUM)를 사용을 할 수 있습니다. dnf는 RHEL/CentOS 8부터 정식 도입 되었으며, 기존 yum을 사용해도 되고, dnf(yum과 같은 용법)를 사용해도 됩니다.

docker 설치

1. dnf-utils 설치 (dnf config-manager 사용 시 필요) 

**전체 명령어 root 권한으로 수행

# dnf install dnf-utils -y

2. docker 레포지토리 추가 

참고 : Rocky Linux에서 # yum install docker로 설치하게 되면, podman-docker 가 설치된다. podman(RHEL 컨테이너 실행/관리 도구)

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

3. 레포지토리 리스트 확인 (목록 중 'docker-ce-stable' 을 확인하면 된다.)

# dnf repolist -v

4. docker 설치

**충돌하는 패키지(ex podman, podman-docker) 를 제거하려면 --allowerasing 옵션을 사용해야 한다.)

# dnf install -y docker-ce --allowerasing

[root@test ~]# docker --version
Docker version 26.0.1, build d260a54

5. docker 구동 & 활성화 (enable 서버 재부팅때 자동 시작)

# systemctl status docker
# systemctl start docker
# systemctl enable docker

docker compose 설치

참고 : docker 설치시 'docker-compose-plugin'도 동시에 설치된다.

[root@test ~]# docker compose version
Docker Compose version v2.26.1


docker compose가 설치가 안됬을 경우, docker 설치와 비슷한 과정으로 설치하면 된다.

1. 패키지 데이터베이스 업데이트

# dnf check-update

2. docker 레포지토리 확인 후 설치

# dnf repolist -v
# dnf install docker-compose-plugin


docker 컨테이너 실행 확인(별다른 컨테이너를 실행하지 않았을 경우 아래와 같은 유사한 내용만 출력)

# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

(참고) Linux 일반 사용자에게 docker 사용 권한 부여

docker 그룹 확인

# cat /etc/group
docker:x:986:

test-user에게 권한 부여

# usermod -aG docker test-user
-a, --append 
-G, --groups GROUPS

 

권한 부여 전

[test-user@test ~]$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/json": dial unix /var/run/docker.sock: connect: permission denied

 

권한 부여 후

[test-user@test ~]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

Rocky Linux docker 설치 참조 하였습니다.

https://hahahax5.tistory.com/10

728x90

1. 백업

 1-1. 디렉토리 백업

  $ cd /var/www/html/     (Rhymix가 설치된 폴더로 이동)
  $ tar -cvf rhymix_backup.tar ./html    (html디렉토리를 backup.tar 파일로 압축)


 1-2. mysql 데이터베이스(DB) 백업

 

  $ mysqldump -u root -p rhymixdb > rhymixdb_backup.sql (Rhymix가 설치된 DB이름(rhymixdb)를 rhymixdb_backup.sql 로 백업한다)
  Enter password: (mysql 패스워드 입력)
 
 1-3 백업된 rhymix_backup.tar, rhymixdb_backup.sql 파일을 FTP등으로 옮겨 따로 보관한다
 

2. 복원

 2-1. FTP 등으로 이전할 서버에 rhymix_backup.tar, rhymixdb_backup.sql 백업파일을 전송한다.

 

 

 2-2. 디렉토리 복원

  $ cd /var/www/html/    (Rhymix를 복원할 경로 : 복원할 rhymix_backup.tar 파일은 /var/www/html/에 있어야 한다. )
  $ tar -xvf rhymix_backup.tar  (Rhymix 설치 디렉토리 html 디렉토리 압축해제) 

 


 2-3. 데이타베이스(DB) 복원

   $ mysql -u root -p    (mysql에 로그인)
    MariaDB [(none)]>create database rhymixdb;   (mysql에 rhymixdb 이름으로 데이터베이스 생성)
    MariaDB [(none)]>exit                                (Bye)

   $ mysql -u root -p rhymixdb < rhymixdb_backup.sql  (Rhymix 데이터베이스에 rhymixdb_backup.sql 복원)
      Enter password:                                 (mysql 패스워드)

728x90

원문출처 : https://foxydog.tistory.com/117

 

Rocky Linux - 라이믹스(Rhymix) 설치하기

Rhymix란? 라이 믹스는 PHP 기반의 오픈소스 콘텐츠 관리 시스템(CMS) 및 프레임워크입니다. 현재는 개발이 중단된 XE1버전의 가지치기 포크(Frok)로 별도 개발된 프로젝트이며 누구나 무료로 사용 및

foxydog.tistory.com

 

Rhymix란?

라이 믹스는 PHP 기반의 오픈소스 콘텐츠 관리 시스템(CMS) 및 프레임워크입니다. 현재는 개발이 중단된 XE1버전의 가지치기 포크(Frok)로 별도 개발된 프로젝트이며 누구나 무료로 사용 및 개발에 참여할 수 있는 자유 소프트웨어입니다. 라이 믹스는 "시를 짓다, 운을 맞추다"라는 의미의 "rhyme"과 "조합하다, 변주하다"라는 의미의 "remix"를 합친 이름이라고 합니다.

 

공식 홈페이지 : https://rhymix.org
설치 매뉴얼 : https://rhymix.org/manual

설치환경 및 준비물

릴리즈 설치 테스트 : 2022-07-12

□ VMware Workstation 가상화에서 Rocky Linux 8.6 OS 준비 [포스팅 참고]

□ [root@localhost ~]# dnf update [※ OS 설치 후 기본 패키지 최신 업데이트]

□ [root@localhost ~]# cat /etc/selinux/config | grep SELINUX  [보안 설정]

SELINUX=disabled  [빠른 테스트를 위해 비활성화, 서버 재시작 필요]

 

□ Rhymix 현재 릴리스 버전으로 요구하는 사항

Rhymix 2.0.21  (2022-07-04 기준)
Apache(Httpd) 또는 Nginx 버전은 언급하지 않음 (mod_rewrite 권장하나 필수는 아님)
PHP 7.2 이상 (권장사항은 7.4 이상) / 필자는 PHP 8.0 으로 진행
PHP 모듈(필수) curl, gd, iconv (mbstring), json, mcrypt (openssl), PDO_MySQL
SimpleXML, Zend OPcache
PHP 모듈(권장) apcu (캐시 사용을 통해 성능 향상 가능)
exif (이미지 자동 회전 기능에 필요)
fileinfo (첨부파일 보안 검사에 필요)
intl (한글도메인 사용시 성능 향상 효과 있음)
zip (추후 필수 모듈로 지정될 가능성 있음)
MariaDB 또는 MySQL MariaDB 버전 언급은 없음, MySQL은 5.0.7 이상

STEP01 → 아파치[Apache] 설치

[root@]# dnf install httpd


STEP02 → 마리아[Maria DB] 설치

[root@]# dnf install mariadb-server mariadb


STEP03 → PHP 설치[8.0 이상]

① 사용 가능한 PHP 버전 확인

※ Rocky 8.6 버전부터는 기본 저장소에 PHP 8.0 버전이 업데이트되어 해당 버전으로 설치 진행

※ 하위 OS라면 PHP 7.4 버전으로 진행해주시면 됩니다.

[root@]# dnf module list php

② PHP [8.0] 모듈을 사용하기 위한 활성화 설정

※ 기존 모듈을 제거하고 재설정 하는게 좋다는 메시지가 나오므로 다음과 같이 먼저 진행합니다.

[root@]# dnf module reset php:7.2    [기존모듈 제거]

[root@]# dnf module enable php:8.0    [8.0 모듈 활성화]

③ PHP [8.0] 설치

[root@]# dnf install php

④ Rhymix에 필요한 PHP-모듈(필수) 설치

[root@]# dnf install php-curl php-gd php-iconv php-mbstring php-json php-openssl php-pdo_mysql php-simplexml php-opcache

⑤ Rhymix에 필요한 PHP-모듈(권장) 설치

[root@]# dnf install php-apcu php-exif php-fileinfo php-intl php-zip

⑥ 설치된 PHP 모듈 확인

[root@]# php -m | egrep -i "curl|gd|iconv|mbstring|json|openssl|pdo_mysql|simplexml|Zend opcache|apcu|exif|fileinfo|intl|zip"


STEP04 → 설치 버전 확인

[root@]# httpd -v
Server version: Apache/2.4.37 (rocky)
Server built:   Jun 22 2022 14:17:54

 

[root@localhost ~]# php -v
PHP 8.0.13 (cli) (built: Nov 16 2021 18:07:21) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies

 

[root@localhost ~]# mysql -V
mysql  Ver 15.1 Distrib 10.3.32-MariaDB, for Linux (x86_64) using readline 5.1


STEP05 → 아파치(Apache) 및 PHP(PHP.ini) 설정 및 구동

① Apache 기본 설정[수정 후 저장]

[root@]# vim /etc/httpd/conf/httpd.conf

 

#ServerName www.example.com:80

ServerName 192.168.150.153:80    [도메인 또는 해당 서버 IP 입력 추가]

 

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php    [일부 추가]
</IfModule>

 

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php    [라인 추가]
AddType application/x-httpd-phps .phps    [라인 추가]

② PHP.ini 기본 설정[수정 후 저장]

[root@]# vim /etc/php.ini

 

session.auto_start = off    [변경]

upload_max_filesize = 2M    [기본 설정]

post_max_size = 8M    [기본 설정]

memory_limit = 128M    [기본 설정]

 

※ 기본 설정입니다. 서버 환경에 맞게 용량 수정 하면 됩니다.

※ 단, upload_max_filesize 보다 post_max_size 가 더 커야 하며, post_max_size 보다 memory_limit 값이 더 커야 합니다.

※ 라이믹스는 대용량 파일을 분할 업로드하는 것을 지원하므로 업로드 용량이 10M 이상 주어지기만 하면 서버 용량 내에서 사실상 무한대로 업로드가 가능

※ 대용량 이미지 처리가 필요한 사이트라면 memory_limit가 256M 설정 필요

③ PHP-FPM 기본 설정[수정 후 저장]

[root@]# vim /etc/php-fpm.d/www.conf

 

listen.acl_users = apache,nginx    [유지]
listen.acl_groups = apache    [라인 추가]

④ 아파치/PHP-FPM 시작 및 프로세스 구동 확인

[root@]# systemctl start httpd    [시작]

[root@]# systemctl start php-fpm    [시작]

 

[root@]# systemctl enable httpd php-fpm    [부팅 후 자동 실행 설정(비활성화 시 disable)]

Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

 

[root@]# ps -ef |egrep "httpd|www"  [아파치/PHP-FPM 구동 확인]

⑤ 방화벽 설정 및 적용

[root@]# firewall-cmd --permanent --add-port=80/tcp    [HTTP 80번 포트 추가]

success

[root@]# firewall-cmd --reload    [적용]

success

[root@]# firewall-cmd --list-all    [추가된 포트 확인]

ports: 80/tcp

 

⑥ 웹 구동 확인 테스트[스크린샷 참고]

⑦ PHP 적용 확인

[root@]# cd /var/www/html/

 

해당 경로에서 PHP의 정보를 보여주는 함수 파일 생성 후 저장
[root@]# vim /var/www/html/phpinfo.php

 

<?php phpinfo();?>      [라인 추가]

[root@]# ls

phpinfo.php    [파일 생성 확인]

 

⑧ PHP 웹 연동 확인 테스트[스크린샷 참고]


STEP06 → MariaDB 구동 및 설정

① MariaDB 구동

[root@]# systemctl start mariadb

 

[root@]# systemctl enable mariadb    [부팅 시 자동 시작 활성화(비활성화 disable)]

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

 

[root@]# ps -ef | grep mysql     [구동 확인]

mysql    /usr/libexec/mysqld --basedir=/usr

② Maria DB 기본 설정 [DB가 구동된 상태에서 진행 가능]

[root@]# mysql_secure_installation

 

Enter current password for root (enter for none): [패스워드가 없기 때문에 엔터]

 

◇ 유닉스 소켓 관련 메시지는 10.4 버전 이상에서 나옵니다.

Switch to unix_socket authentication [Y/n] Y    [MariaDB 실행 시 통신 소켓 생성 여부? Y 엔터]

Change the root password? [Y/n] Y   [DB ROOT 패스워드 설정할 것인가? Y 엔터]

New password:  패스워드 입력

Re-enter new password:  재확인 패스워드 입력

Remove anonymous users? [Y/n] Y  [익명의 접근을 막을 것인지? 보안을 위해 Y 엔터]

Disallow root login remotely? [Y/n] Y  [DB ROOT 원격을 막을 것인지? 보안을 위해 Y 엔터]

Remove test database and access to it? [Y/n] Y [Test 용으로 생성된 데이터베이스를 삭제할 것인가? Y 엔터]

Reload privilege tables now? [Y/n] Y [현재 설정한 값을 적용할 것인지? 당연히 Y 엔터]
Thanks for using MariaDB! [설정 완료]

③ MariaDB 접속 및 Rhymix 데이터베이스 생성

◇ 데이터베이스 이름이나 유저 ID/패스워드는 임의로 설정

 

[root@]# mysql -u root -p  [DB 접속]
Enter password패스워드 입력

◇ Rhymix 데이터베이스 생성 : CREATE DATABASE 데이터베이스 이름;
MariaDB [(none)]> CREATE DATABASE rhymixdb;
Query OK, 1 row affected (0.000 sec)

 

◇ 접근 유저 ID 및 패스워드 생성 : CREATE USER '유저 ID'@'localhost' IDENTIFIED BY '패스워드';
MariaDB [(none)]> CREATE USER 'rhymix'@'localhost' IDENTIFIED BY 'test1234';
Query OK, 0 rows affected (0.037 sec)

 

◇ 접근 권한 설정[모든 권한] : GRANT ALL ON 데이터베이스 이름.* TO '유저 ID'@'localhost';
MariaDB [(none)]> GRANT ALL ON rhymixdb.* TO 'rhymix'@'localhost';
Query OK, 0 rows affected (0.000 sec)

 

◇ 저장 종료
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> EXIT;
Bye


STEP07 → Rhymix 다운로드

◇ 공식 홈페이지 다운로드 : https://rhymix.org/news

◇ 또는 Git허브에서 다운로드 : https://github.com/rhymix/rhymix

※ Git으로 다운로드하는 방법도 있습니다. 매뉴얼에 따라 편한 것으로 진행하시면 됩니다.

[root@]# wget https://rhymix.org/files/attach/releases/rhymix-2.0.21.zip    [wget 다운로드]

rhymix-2.0.21.zip’ saved [14189999/14189999]

 

[root@]# unzip rhymix-2.0.21.zip    [ZIP 압축해제]

 

[root@]# mkdir rhymix/files    [압축해제 경로에 미리 Files 폴더 생성]

 

[root@]# cp -R rhymix /var/www/html/rhymix    [웹 루트 경로에 복사 또는 이동]

 

[root@]# chown -R apache:apache /var/www/html/rhymix    [유저/그룹 권한 설정]

[root@]# chmod 777 /var/www/html/rhymix/files    [Files 권한 설정]

※ 서버 환경에 따라 777 또는 707 퍼미션을 부여합니다.


STEP08 → Rhymix용 Apache 가상 호스트 구성 및 적용

[root@]# vim /etc/httpd/conf.d/rhymix.conf    [파일 생성 후 저장]

 

<VirtualHost *:80>    [시작]

ServerName 192.168.150.153    [도메인 호스트 주소 또는 서버 IP]

ServerAdmin foxydog@localhost

DocumentRoot /var/www/html/rhymix

<Directory "/var/www/html/rhymix">

Options Indexes FollowSymLinks

AllowOverride all

Require all granted

</Directory>

ErrorLog /etc/httpd/logs/rhymix_error.log

CustomLog /etc/httpd/logs/rhymix_access.log common

</VirtualHost>    [끝]

[root@]# systemctl restart httpd    [재시작 적용]

 

[root@]# systemctl status httpd | grep active    [구동 확인]
   Active: active (running) since Wed 2022-07-13 04:32:15 EDT; 4s ago


STEP09 → 브라우저에서 Rhymix 설정 및 설치[스크린샷 순서대로 진행]

 http://서버IP 입력


마치며

앞서 설명하였듯이 기본 베이스는 XE1(Xpress Engine.ver1) 이므로 해당 게시판을 운영을 해보았다면 비슷한 부분이 많아 개발 및 운영이 좀 더 익숙하다고 느낄 수 있습니다. 저도 개인적으로는 워드프레스보다는 좀더 친숙한 느낌이 드네요. 실제로도 운영하는 서버가 있어 관리하기가 좀더 편합니다. 개발자분들께서 최적화가 좀더 진행이 되었는지 VMWARE에서 기본 2코어/2GB 메모리만 할당하였음에도 엔진이 가볍다는 느낌이 듭니다. 웹 개발자로 공부하시는 분들은 개인 PC 가상 서버나 클라우드 서버에 업로드 설치하여 연습하면 좋을 것으로 보입니다.

728x90

FortiGate에서 아래와 같이 외부(all)에서 내부(all)로의 정책(ID 15)을 차단으로 설정했지만, VIP 정책(ID 14)은 차단되지 않고 허용된다.

 

FortiOS에서는 VIP 객체와 Firewall Address 객체는 완전히 다른 객체로 판단하다. 즉 Firewall Address 객체인 "all" 과 VIP 객체인 "VIP_eBT_FAZ" 객체는 서로 다른 별개의 영역으로 판단하게된다. 따라서 "VIP_eBT_FAZ"접속하는 트래픽은 "all"에 매칭되지 않고, ID 15 정책에 의해 허용된다.

 

차단하려면 VIP 객체에 대한 차단 정책을 생성해야 한다.

 

또는 ID 15 정책에 아래와 같은 옵션을 추가하여, VIP 객체에 대해서도 매칭되도록 설정 할 수 있다.

 

 

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

 

문제 해결 팁: VIP 트래픽이 '모든' 대상을 포함하는 방화벽 정책과 일치하지 않음

설명 이 문서에서는 VIP 트래픽이 대상이 '모두'로 설정된 방화벽 정책과 일치하지 않는 문제를 해결하는 방법을 설명합니다.
범위 FortiGate v7.2.2 및 이하.
해결책 가끔 'WAN'에서 'LAN'으로 방화벽 정책을 생성할 때 목적지를 '모두'로 설정하면 VIP 트래픽이 정책에 의해 필터링되지 않습니다. 예를 들어, 작업이 '거부'로 설정되어 있어도 허용됩니다.


기본적으로 정책은 VIP 객체 트래픽이 호출되는 경우에만 VIP 객체 트래픽과 일치합니다. 대상이 '모두'인 경우에는 일치하지 않습니다.


정책과 일치하려면 해당 정책의 CLI 구성에서 'set match-vip enable' 옵션을 활성화합니다. 그 후 VIP 트래픽은 정책과 일치하고 의도한 대로 거부됩니다.


메모 :
FortiGate는 먼저 DNAT 검사를 수행한 다음 보안 정책을 적용하기 때문에 대상 주소 객체는 VIP 객체의 '매핑된 IP'여야 합니다. 
 





메모:
  • match-vip 옵션은 v7.2.3까지 기본적으로 비활성화됩니다. 7.2.3 이후 버전에서는 옵션이 기본적으로 활성화됩니다.
  • 'set match-vip' 옵션은 정책 작업이 'deny'로 설정된 경우에만 사용할 수 있습니다. 
728x90

원문출처 : https://svrforum.com/recent/1914952

 

RouterOS 입문 가이드 : RouterOS 및 부트로더 업그레이드 하기

개요 본 가이드에서는 미크로틱(마이크로틱) 라우터 및 CRS 스위치 제품군에서 RouterOS와 부트로더의 버전을 이해하고, 업그레이드 또는 다운그레이드 하는 방법을 설명합니다. RouterOS에는 WinBox

svrforum.com

 

개요

본 가이드에서는 미크로틱(마이크로틱) 라우터 및 CRS 스위치 제품군에서 RouterOS와 부트로더의 버전을 이해하고, 업그레이드 또는 다운그레이드 하는 방법을 설명합니다.

 

RouterOS에는 WinBox 또는 FTP, SCP로 파일을 전송할 수 있으며, 여기서는 WinBox로 전송하는 방법만 다룹니다.

 

또한 RouterOS v7을 기준으로 설명하며, 기존 v6에서는 추가 및 번들 패키지 종류가 다를 수 있으나 이미 사장되어 가는 구식 커널 기반 OS이므로 해당 설명은 제외하였습니다.

 

 

RouterOS가 설치된 MikroTik 제품을 처음 접하신다면 사용자가 확인할 수 있는 버전 정보가 여러가지 표시되어 혼란스러울 수 있습니다.

 

예를 들면 아래와 같습니다.

 

 

당장 현시되는 버전 정보만 다섯 가지나 되는데, 의미를 모르는 사람이 보면 약간 기괴하게 느껴집니다.

 

  • 왼쪽에 표시되는 버전은 7.16.2인데 오른쪽에 표시되는 현재 버전은 7.15.3입니다.
  • 현재 설치된 버전은 7.16.2일까요? 아니면 7.15.3?
  • 그런데 오른쪽의 업그레이드 버전은 7.16.2이니까 동일버전으로 업그레이드 해야된다는 걸까요?

 

지금 혼란스러우시다면, 이 가이드를 꼭 읽어보셔야 합니다!

 

그래서... 미크로틱 개발자들은 변태 성향이라 사용자를 괴롭히는 걸까요? 당연히 아닙니다.

 

이를 모르고 사용하시는 분들도 많지만, 각각의 버전 정보는 MikroTik 장비에서 중요한 의미를 가지므로 이해하면 큰 도움이 됩니다.

 

 


 

시스템 소프트웨어 구분

미크로틱 RouterOS 장비는 크게 두 가지 시스템 소프트웨어로 구동됩니다.

  • RouterOS
    • RouterBOARD 장치용 Linux 기반 OS 및 라우팅 소프트웨어
  • RouterBOOT
    • RouterBOARD 장치용 부트로더 및 펌웨어
    • 부팅시 RouterOS 구동 및 장치의 Low-Level 설정 제어

 

RouterBOARD의 의미

 










 


 

소프트웨어 버전 확인하기

RouterOS 버전 확인하기

 

 

WinBox 우측 메뉴에서 System - Resource를 순서대로 누릅니다.

  • A. Version
    • 현재 설치 및 구동 중인 RouterOS의 버전과 출시 정보가 표시됩니다.
  • B. Factory Software (중요)
    • 해당 장치가 지원하는 가장 오래된 버전을 표시합니다.
    • 해당 장치는 반드시 해당 버전과 동일하거나 이후에 출시된 RouterOS만 설치할 수 있습니다.
      • 이는 해당 기종에 맞는 드라이버나 여러 리소스 지원이 추가된 버전의 RouterOS가 필요하기 때문이며, 동일 모델이라도 하드웨어 리비전에 따라서 개정 사항이 반영된 OS 및 부트로더가 필요하기 때문입니다.
      • 인텔 8세대 이후의 컴퓨터에서 윈도우 XP나 7을 지원하지 않는 것처럼, 미크로틱 장비 또한 구동할 수 있는 구형 OS 버전에 한계가 있습니다.

 


 

설치된 패키지(Package) 종류와 버전 확인하기

 

 

1. WinBox 좌측 메뉴에서 System - Packages를 차례대로 누릅니다.

 

 

 

2. Package List 창이 표시되며, 여기서 RouterOS를 크게 두 가지 패키지로 구분할 수 있습니다.

  • A. routeros - Main Package / System Package (시스템 패키지)
    • RouterOS의 필수 시스템 패키지입니다.
    • 해당 장치의 CPU 아키텍처에 따라 구분되어 제공됩니다. (arm / arm64 / tile / mmips / mipsbe 등)
    • v7.12까지는 와이파이 제어 인터페이스가 wifiwave2라는 추가 패키지로 지원되었지만, v7.13부터는 시스템 패키지에 통합되어 WiFi 메뉴로 제공됩니다.
  • B. Extra Packages (추가 패키지)
    • RouterOS의 기능 추가를 위한 선택형 패키지입니다.
    • Extra Package는 각 기능에 특화되어 개별 패키지로 제공되며, 사용자 필요나 용도에 따라 별도 설치할 수 있습니다.
    • 예를 들어 Container 패키지를 설치하면 RouterOS에서 리눅스 컨테이너 기능이 지원되고, User Manager 패키지를 설치하면 RouterOS에 중앙 집중식 인증 서버(RADIUS)를 구축할 수 있으며, Zerotier 패키지를 설치하면 제로티어 엔드포인트 기능이 추가됩니다.

 

여기서 주의해야 할 부분은, 언제나 각 시스템 패키지 버전에 맞는 추가 패키지가 제공 및 배포된다는 것입니다.

 

예를 들어 7.15 버전의 시스템 패키지와 및 추가 패키지가 설치된 라우터를 7.15.2로 업그레이드 하려면 반드시 해당 버전의 시스템 패키지와 추가 패키지 파일을 모두 라우터에 업로드 해야 합니다.

 

또한 다른 버전의 추가 패키지만 설치하는 것도 불가능하므로 반드시 설치된 시스템 패키지와 동일한 버전의 추가 패키지를 다운로드하여 설치해야 합니다.

 

그렇지 않다면 설치 또는 업그레이드 절차가 거부되고, 기존의 패키지가 그대로 유지됩니다. 

 

 


 

RouterBOOT 버전 확인하기 

 

 

WinBox 우측 메뉴에서 System - RouterBOARD를 순서대로 누릅니다. 

 

  • C. Factory Firmware
    • 공장 제조시 해당 장치에 내장시킨 백업 부트로더(RouterBOOT)의 버전입니다.
  • D. Current Firmware
    • 현재 설치되어 사용 중인 RouterBOOT의 버전입니다.
  • E. Upgrade Firmware
    • 현재 설치된 버전과 다른 RouterBOOT 펌웨어가 발견되면 해당 버전을 표시합니다.

 

Factory Firmware와 Current Firmware 버전이 서로 다른 경우

  1. 새로 구매한 장비라도 Factory Firmware와 Current Firmware의 버전이 서로 다를 수 있습니다.

    Current Firmware는 기설치된 RouterOS와 동일한 버전으로 설치되며, Factory Firmware는 해당 장치에서 오랜 시간 검증된 버전으로 설치하여 출하하기 때문입니다. 

  2.  현재 사용 중인 부트로더인 Current Firmware는 사용자가 원할 때 얼마든지 업그레이드 또는 다운그레이드 할 수 있지만, 이와 다르게 Factory Firmware는 자유롭게 업그레이드 할 수 없습니다.

    비교적 최근(2022년)에 Factory Firmware 업그레이드가 허용된 사례는 '보호된 부트로더(Protected)' 기능을 지원하기 위해서 였는데, 이 또한 최근 생산/출하되는 기기에는 해당 없으며 특별한 소정의 절차가 필요합니다.

    해당 절차를 요약하면, Factory Firmware가 v7.6 미만 또는 v6.x 버전인 기종에서 Factory Firmware 쓰기 제한이 해제된 특정 버전(v7.6 또는 v6.49.7)의 RouterOS를 설치한 뒤 별도의 범용 패키지로 업그레이드하는 것입니다.

    따라서 이미 설치된 Factory Firmware를 변경하는 경우는 드물며, 현재 부트로더가 손상되었을 때 사용되는 보루에 가까우므로 애초에 업그레이드 할 필요가 없습니다.

 

 


 

RouterBOOT를 업그레이드 해야 하나요?

 

모든 RouterOS 패키지에는 해당 버전에 맞는 RouterBOOT 부트로더(펌웨어)를 포함하여 제공됩니다.

 

예를 들어, RouterOS v7.16.2 버전의 npk 패키지에는 이미 v7.16.2 버전의 RouterBOOT가 함께 포함된 것입니다.

 

그러나 새로운 RouterBOOT는 RouterOS 업그레이드 과정에서 자동 적용되지 않으며 항상 개별 적용해야 합니다.

 

'신규 펌웨어를 함께 제공하지만 설치는 개별'이라는 부분을 이해하기 어려우실 수 있으나, 윈도우 업데이트와 바이오스 업데이트가 서로 구분되는 것처럼 RouterOS와 RouterBOOT 또한 서로 다르게 구분해야 합니다.

 

또한, 반드시 두 버전이 같아야 하는 것은 아닙니다.

 

대부분 OS와 부트로더의 버전이 서로 다르더라도 문제 없이 사용할 수 있기 때문에 오히려 RouterBOOT의 존재를 모르거나 업그레이드 필요성을 느끼지 못하는 분들도 있습니다.

 

그럼에도 RouterBOOT 업그레이드를 권장하는 이유는 무엇일까요?

 

아래는 RouterOS v7의 변경 사항 중 일부입니다.

 

What's new in 7.10 (2023-Jun-15 08:17):

*) routerboard - fixed memory test on CCR2116-12G-4S+ ("/system routerboard upgrade" required);
*) routerboard - improved RouterBOOT stability for Alpine CPUs ("/system routerboard upgrade" required);
*) routerboot - increased "preboot-etherboot" maximum value to 30 seconds ("/system routerboard upgrade" required);


What's new in 7.11 (2023-Aug-15 09:33):

*) routerboard - fixed "gpio-function" setting on RBM33G ("/system routerboard upgrade" required);
*) routerboard - improved RouterBOOT stability for Alpine CPUs ("/system routerboard upgrade" required);
*) routerboard - removed unnecessary serial port for netPower16P and hAP ax lite devices ("/system routerboard upgrade" required);
*) routerboot - increased etherboot bootp timeout to 40s on MIPSBE and MMIPS devices ("/system routerboard upgrade" required);


What's new in 7.16 (2024-Sep-20 16:00):

*) routerboard - improved Etherboot stability for CRS320-8P-8B-4S+ device ("/system routerboard upgrade" required); 
*) routerboard - improved Etherboot stability for IPQ-40xx devices ("/system routerboard upgrade" required);
*) routerboot - improved boot process ("/system routerboard upgrade" required);
복사

 

새로운 버전의 RouterBOOT에는 일반적으로 RouterBOARD의 전반적인 동작 안정성을 위한 개선 사항이 포함됩니다.

 

또한 변경 사항에 명시된 개선 사항 외에도 명시하지 않은 개선 사항이 있을 수 있는데, 경험상 이러한 차이는 RouterOS v6에서 v7 전환이 이루어지던 초기부터 과도기(v7.8 출시 이전까지)에 꽤나 잦았습니다.

 

예를 들면 v7.x로 업그레이드 후 라우터 부팅이 오래 걸리거나 중간에 비정상 재부팅 되는 문제가 발생했는데, RouterBOOT까지 업그레이드하면 증상이 없어졌지만 변경 사항에서 관련 내용을 별도 명시한 부분은 없었습니다.

 

따라서 MikroTik에서는 Current Firmware와 Upgrade Firmware의 버전이 서로 다른 경우 버전이 일치하도록 RouterBOOT 업그레이드를 권장하고 있고, 저 또한 Changelog에 특별히 명시된 부분이 없더라도 OS 업그레이드 후 습관처럼 함께 적용하고 있습니다.

 


 

RouterOS 업그레이드하기

RouterOS를 업그레이드 하는 방법은 크게 5 가지로 구분할 수 있습니다.

 

  • 표준 업그레이드 (최신, 간편)
    • 클릭 몇 번만 누르면 간편하게 최신 버전으로 업그레이드할 수 있는 표준 방법입니다.
  • 수동 업그레이드 (직접 파일 업로드)
    • 사용자가 원하는 버전의 RouterOS를 라우터에 업로드하여 업그레이드합니다.
  • 자동 업그레이드 (회사/학교 등 중대규모 또는 폐쇄망 환경용)
    • 자동/로컬 업그레이드
      • 미크로틱 라우터 중 하나를 업데이트 서버로 지정하고 다른 라우터에서 이를 다운로드할 수 있습니다.
      • 업그레이드 서버 라우터에 원하는 버전의 파일을 직접 업로드하거나 미러 서버로부터 자동 다운로드할 수 있으며, 주로 폐쇄망 환경에서 활용됩니다.
      • OS 버전에 따라 System 메뉴에 Auto Upgrade 또는 Packages - Local Upgrade에 표시됩니다.
    • Dude로 업그레이드
      • MikroTik의 중앙 집중식 네트워크 모니터링 툴인 Dude에서 업그레이드 서버로 활용 및 특정 라우터를 업그레이드 시킬 수 있습니다.
  • Netinstall (라우터 포맷 및 완전한 OS 재설치)
    • etherboot 모드로 진입한 라우터를 컴퓨터와 직접 연결해야 하며, Netinstall 소프트웨어로 깨끗하게 포맷 & 재설치할 수 있습니다.
    • 표준 또는 수동 업그레이드 후 예기치 못하게 오동작하는 경우 Netinstall로 완전히 재설치하면 해결되는 사례가 종종 있습니다.
    • Resources의 Bad Block 값이 5%를 초과한 경우, Netinstall로 라우터/스위치의 OS를 다시 설치해야 합니다. 이는 설치 과정에서 mtd로 flash erase를 거치면서 마킹된 불량 블록 정보가 갱신되기 때문입니다. (불량 블록을 없앨 수는 없습니다. 단지 마킹 테이블을 갱신하여 해당 위치에 데이터를 쓰지 않도록 피하는 것입니다.)

 

여기서는 RouterOS의 표준 및 수동 업그레이드 방법만 설명합니다.

 

자동 및 Netinstall을 설명하려면 개별 가이드 작성이 필요한 분량이 발생하므로 건너뛰었으며, 아래 공식 가이드를 참고하시기 바랍니다.

 

 

 

 

표준 업그레이드 하기 (최신 버전 설치)

WinBox에서 매우 간편하게 최신 버전의 RouterOS로 업그레이드 하는 방법을 설명합니다.

 

기본적으로 RouterOS에 추가 패키지가 설치된 경우, 업그레이드하려면 해당 버전의 추가 패키지 파일까지 함께 넣어야 합니다.

 

그러나 표준 업그레이드 기능을 사용하면 설치된 추가 패키지의 최신 버전까지 '알아서' 다운로드 및 설치해주므로 매우 쉽게 적용할 수 있습니다.

 

 

 

1. WinBox 좌측 메뉴에서 System - Packages를 차례대로 누르면 표시되는 Package List 창에서 우측의 Check For Updates를 누릅니다.

 

 

 

2. Check For Updates 창이 표시됩니다.

  1. Channel : 소프트웨어 배포판 채널을 선택합니다.
    • Development : 신규 변경 사항을 적용하여 비정기적으로 출시하는 개발용 알파 버전입니다.
    • Testing : 출시 후보(RC) 중 하나이며, 수 주마다 출시되는 베타 버전이므로 '변경사항 테스트' 목적에 적합하며 프로덕션 목적으로는 권장하지 않습니다.
    • Stable : 새로운 기능과 수정 사항을 포함한 안정적인 버전이며, 수 개월마다 출시됩니다. (권장)
    • Long-term : Stable 버전에서 장기간 검증된 출시판에 대해 보안 및 버그 패치 등 중요한 수정 사항만 적용하여 출시됩니다. (실제 운용 환경에서 권장) 단, 현재 RouterOS v7에서는 LTS 채널이 없으므로 사용할 수 없습니다.

  2. Version : 현재 설치된 버전과 최신 버전 정보를 표시합니다.
  3. Changelogs : 선택한 채널에 출시된 최신 버전의 변경 사항을 표시합니다.

  4. Download : 최신 버전의 RouterOS 패키지를 라우터에 다운로드 합니다.
    • 설치된 추가 패키지가 있는 경우 해당 패키지의 최신 버전까지 알아서 다운로드 됩니다.
    • 다운로드가 완료되더라도 설치는 하지 않으며, RouterOS 재부팅시 설치됩니다.

  5. Download & Install : 최신 버전의 RouterOS 패키지를 라우터에 다운로드 후 자동 재부팅하여 설치합니다.
    • 설치된 추가 패키지가 있는 경우 해당 패키지의 최신 버전까지 알아서 다운로드 및 설치됩니다.

 

Download 또는 Download & Install을 누르면 아래 이미지와 같이 진행률이 표시되며, 최신 버전의 시스템 및 추가 패키지를 임시 공간에 다운로드 합니다.

 

 

여기서 중요한 부분은 Download와 Download & Install 명령간의 차이입니다.

 

1. Download를 누르면 최신 패키지를 라우터에 '다운로드' 하지만, 자동으로 설치되지는 않습니다.

다운로드된 패키지는 사용자가 원할 때 WinBox 좌측 메뉴 -  System - Reboot을 눌러 소프트 리부트 작업을 수행해야 재부팅되며 비로소 설치됩니다.

라우터를 재부팅하면 그 시간 동안 모든 링크가 끊기므로 통신 장애가 발생하고, 중규모 이상의 네트워크 환경에서는 아무리 VRRP로 이중화가 되었다고 하더라도 링크 복구 및 일관된 라우팅 테이블의 갱신(컨버전스) 등의 시간이 소요되므로 매우 부담스러운 일입니다.

따라서 RouterOS를 업그레이드 하고 싶지만, 당장 재부팅하기에는 곤란한 상황이나 주기적으로 라우터를 재부팅하는 사용자에게 유용합니다.

 

2. Download & Install를 누르면 최신 패키지를 다운로드하고, 완료되면 자동으로 재부팅 및 설치됩니다.

이는 당장 라우터를 재부팅하더라도 문제 없는 상황에서 매우 간편하고 유용합니다.

 

상기된 Download 후 수동 재부팅 또는 Download & Install로 자동 설치하여 표준 업그레이드를 수행하면 RouterOS를 매우 간단하게 최신 버전으로 유지할 수 있습니다!

 

 

참고 : RouterOS 출시 과정 순서도

 

 


 

수동 업그레이드 하기 (버전 선택 가능)

원하는 버전의 RouterOS 패키지를 직접 라우터/스위치에 업로드하여 업그레이드할 수 있습니다.

  

참고 : 저사양 기기에서 수동 업그레이드시 주의하세요.

 

자동 또는 수동 업그레이드 진행시, 패키지 파일는 램디스크에 임시 저장됩니다.

 

RouterOS의 메인 패키지는 10MB에 불과하지만 무선 패키지 등의 추가 패키지를 포함할 때 15MB 전후의 크기가 되는데, 여기서 문제가 발생할 수 있습니다.

 

hAP lite 등의 저사양 기기의 경우 RAM 용량이 32MB에 불과하며, 그외 64MB 이하인 기기라면 가용 메모리 용량이 크기 않기 때문에 필요한 파일을 업로드 할 수 없거나 업로드 하더라도 시스템이 메우 불안정해지므로 실패할 가능성이 있습니다. 

이런 경우 재부팅 등으로 RAM 공간을 충분히 확보한 뒤에 진행하거나, 표준/수동 업그레이드보다는 Netinstall로 완전히 재설치하시기 바랍니다.

 

 

 

올바른 RouterOS 패키지를 다운로드하려면 반드시 설치하려는 라우터의 CPU 아키텍처 종류를 알아야 합니다.

 

 

 

1. WinBox 좌측 메뉴에서 System - Resources를 차례대로 누르고, 표시된 Resources 창에서 'CPU' 항목의 정보를 확인합니다.

  • 모델에 따라 arm / arm64 / tilegx (=tile) / mmips / mipsbe / x86(CHR) 등의 값이 표시될 것입니다.

 

 

 

2. 상기된 [설치된 패키지(Package) 종류와 버전 확인하기] 섹션에서 소개된 방법으로 시스템에 설치된 추가 패키지가 있는지 확인합니다.

 

위 이미지를 기준으로, 현재 RouterOS를 상위 버전으로 업그레이드 하려면 상위 버전의 ups, user-manager, zerotier 패키지 파일도 함께 준비해야 됩니다.

 

 

[참고] 와이파이(Wi-Fi) 기능이 포함된 모델의 추가 패키지 선택 요령

 

현재 사용 중인 라우터가 와이파이 지원 기종이라면 아래 내용을 꼭 읽어보시기 바랍니다.

 

 

 

위 이미지는 hAP ax3의 패키지 목록인데, 시스템 패키지 아래에 wifi-qcom이라는 추가 패키지가 설치되어 있습니다.

 

이는 Wi-Fi 6 지원 모델의 무선 드라이버 패키지이며, 와이파이 동작을 위해서는 해당 추가 패키지가 반드시 필요합니다.

 

RouterOS v7.13을 기점으로 CAPsMAN과 무선 드라이버 패키지가 완전히 분리되어 필요한 무선 드라이버 패키지를 설치해야만 무선(와이파이) 인터페이스를 올바르게 인식할 수 있습니다.

  • [wireless] 패키지가 필요한 경우
    • MIPSBE 타입 CPU가 적용된 모든 레거시 무선 모델에 해당
      • hAP, hAP lite, hAP AC, hAP AC lite, cAP lite 등
    • 상기 모델 및 wireless 패키지는 WPA3 인증이나 802.11k/v/r 로밍, MU-MIMO, OFDMA 등 wave2 이후 주요 기능을 지원하지 않습니다.
  • [wifi-qcom-ac] 패키지가 필요한 경우
    • ARM CPU를 적용한 Wi-Fi 5 지원 기종에 해당
      • Audience
      • Audience LTE kit
      • Chateau (모든 D53 파생 모델)
      • RB4011iGS+5HacQ2HnD-IN (5GHz 전용)
      • hAP ac2
      • hAP ac3
      • cAP ac
      • cAP XL ac
      • LDF 5 ac
      • LHG XL 5 ac
      • LHG XL 52 ac
      • NetMetal ac^2
      • mANTBox 52 15s
      • wAP ac (RBwAPG-5HacD2HnD)
      • SXTsq 5 ac 등
  • [wifi-qcom] 패키지가 필요한 경우
    • 모든 Wi-Fi 6 지원 모델
      • hAP ax2
      • hAP ax3
      • hAP ax lite
      • cAP ax
      • wAP ax
      • Chateau PRO ax 등


위 내용을 정리한다면, 아래와 같습니다.

  • hAP ac 에서 와이파이를 사용하려면 반드시 'wireless' 패키지를 추가로 설치해야 합니다.
  • hAP ac2 에서 와이파이를 사용하려면 반드시 'wifi-qcom-ac' 패키지를 추가로 설치해야 합니다.
  • hAP ax3 에서 와이파이를 사용하려면 반드시 'wifi-qcom' 패키지를 추가로 설치해야 합니다.

참고로 RB4011iGS의 와이파이 모델 (RB4011iGS+5HacQ2HnD-IN)은 v7.13부터 2.4G와 5G 무선을 동시에 사용할 수 없습니다.

이는 AR9582(2.4G) + QCA9984(5G)라는 이상한 패브릭 디자인 때문인데, AR9582는 레거시 wireless 패키지가 필요하고 QCA9984는 wave2용 wifi-qcom-ac 패키지가 필요하지만 두 패키지와 무선 장치는 더 이상 양립할 수 없으므로 두 주파수 중 하나만 사용할 수 있습니다.

 

 

 

 

 

3. 상기 링크에 접속하고, 원하는 버전을 클릭합니다.

 

 

 

4. 아키텍처별로 정렬되어 여러 종류의 파일 목록이 표시되며, 제가 사용하는 기기는 아키텍처가 'arm'이므로 이를 기준으로 설명합니다.

  1. all_packages-xxx-xxx.zip : 모든 종류의 추가 패키지를 모아둔 압축 파일입니다. 
    • 기존에 설치된 추가 패키지가 없다면 이 파일은 다운로드할 필요가 없습니다.
    • 현재 시스템에 추가 패키지가 설치되어 있는 경우 함께 다운로드하여 압축을 해제합니다.
  2. routeros-xxx-xxx-npk : RouterOS 시스템 패키지 파일입니다.
    • 다운로드 후 별도 작업 없이 npk 확장자 그대로 업로드할 것입니다.

 

이제 이전 단계에서 확인한 정보로 arm / arm64 / mipsbe / mmips / ppc / tile(=tilegx) 등 기기에 맞는 아키텍처의 파일을 다운로드 하면 됩니다!

 

 

 

5. WinBox 좌측 메뉴에서 Files를 눌러 File List 창을 엽니다.

 

 

 

 

 

6. 이전 단계에서 다운로드한 패키지 파일을 File List 목록 빈 공간에 드래그하여 업로드합니다.

  • 기존에 설치된 추가 패키지가 없다면 RouterOS 시스템 패키지 파일만 업로드하면 됩니다.
  • 기존에 설치된 추가 패키지가 있다면 반드시 업그레이드할 버전에 맞는 해당 패키지까지 함께 업로드합니다.
    • 본 예제의 시스템에는 위 단계에서 이미 설치된 추가 패키지(ups, user-manager, zerotier)가 있었으므로 이를 함께 업로드하였습니다.
  • Files에 복사된 파일은 다운그레이드 및 재부팅 과정에서 자동으로 삭제됩니다. (SPI 적용 모델은 램디스크라서, NAND 적용 모델은 낸드에 기록되지 않고 삭제됨)

 

[참고] File List에 Flash 폴더가 존재하는 경우

 

 

 

 

7. WinBox 좌측 메뉴 -  System - Reboot을 눌러 소프트 리부트를 적용합니다. 이후 재부팅 과정에서 새로운 버전의 RouterOS 이미지가 자동으로 설치됩니다.

  • 모델에 따라 업그레이드 및 재부팅 과정이 길게 (약 3~5 분가량) 걸릴 수 있으므로 반응이 없더라도 절대 라우터 전원을 차단하지 마세요.

 

 

 

8. RouterOS 패키지 버전이나 로그 기록을 확인하여 업그레이드가 올바르게 적용되었는지 확인합니다.

  • 위 로그에서 4 번 항목에 downgrade 내용이 있는데, 이는 RouterOS가 upgrade 과정 진행시 이미지 설치 후 소프트 인터럽트를 진행하는 downgrade 명령으로 대체하기 때문입니다.
  • 로그에는 명령어 실행 여부만 기록되며 실제로 다운그레이드 된 것을 의미하지는 않습니다.

 

 


 

RouterBOOT 업그레이드하기

RouterOS를 업그레이드 했다면, 이제 부트로더를 업그레이드 할 차례입니다.

 

 

 

 

1. WinBox 좌측 메뉴에서 System - RouterBOARD를 차례대로 누르고, 위 이미지처럼 Upgrade Firmware가 Current Firmware 보다 높은 버전이 표시되는지 확인합니다.

  • RouterOS를 올바르게 업그레이드했다면, 반드시 Upgrade Firmware에는 설치한 OS와 동일한 버전을 표시해야 합니다.

 

 

 

2. 우측에 Upgrade를 누르고, 확인 메시지가 표시되면 OK를 누릅니다.

 

 

 

 

3. 펌웨어 업그레이드가 예약되면 상단에 재부팅시 적용된다는 알림이 표시됩니다.

 

 

 

4. WinBox 좌측 메뉴에서 System - Reboot를 눌러 재부팅합니다.

 

 

 

5. 재부팅 후 Current Firmware 버전을 확인하여 올바르게 업그레이드 되었는지 확인합니다.

 

 

 


 

RouterOS 다운그레이드 하기

 

기본적으로 RouterOS는 현재 설치된 버전보다 이전 버전의 패키지 파일이 발견되면 이를 무시합니다.

 

따라서 아래와 같이 소정의 과정을 거쳐야 설치된 OS를 이전 버전으로 다운그레이드할 수 있습니다.

 

 

MikroTik Download Archive에서 이전 버전의 RouterOS 패키지 다운로드하기 :

 

 

 

 

1. 수동 업그레이드 섹션에 안내된 방법대로 상기 링크에서 라우터 유형에 맞는 RouterOS 패키지를 다운로드 합니다.

  • 여기서는 7.14.3 버전으로 다운그레이드 하는 방법을 예시로 설명합니다.
  • 시스템 패키지와 추가 패키지 버전은 항상 같아야 하며, 둘 중 하나만 다운그레이드할 수 없습니다.
  • 따라서 시스템에 이미 설치된 추가 패키지가 있다면 해당 패키지의 구버전 파일까지 함께 준비합니다.

 

 

 

2. WinBox 좌측 메뉴에서 Files를 눌러 파일 목록 창을 열고, 업그레이드 과정과 동일하게 다운로드한 패키지 파일을 드래그하여 업로드합니다.

  • Files에 복사된 파일은 다운그레이드 및 재부팅 과정에서 자동으로 삭제됩니다.

 

 

 

3. WinBox 좌측 메뉴에서 System - Packages를 차례대로 누르고 Package List 창이 표시되면 우측의 Downgrade를 누릅니다.

  • 반드시 Downgrade 명령으로 적용해야 하위 버전의 패키지를 인식할 수 있으며, 그렇지 않으면 무시됩니다.

 

 

 

4. 다운그레이드 확인 메시지에서 OK를 눌러 재부팅하면, 업로드된 버전으로 다운그레이드 됩니다.

 

 

 

5. 재부팅 이후 패키지 버전을 확인하여, 원하는 버전으로 올바르게 다운그레이드가 완료되었는지 확인합니다.

 

 


 

RouterBOOT 다운그레이드 하기

부트로더 다운그레이드 방법은 업그레이드 방법과 완전히 동일하므로 간략하게 다시 설명합니다.

 

 

 

1. RouterOS를 올바르게 다운그레이드 했다면, 위 이미지와 같이 System - RouterBOARD 정보의 Upgrade Firmware에서 해당 버전이 표시됩니다.

 

 

 

2. 상기 RouterBOOT 업그레이드 단계와 동일하게 우측의 Upgrade를 누르면, 위 이미지와 같이 재부팅이 필요하다는 메시지가 표시됩니다.

 

 

 

3. System - Reboot를 눌러 재부팅하면, 이전 버전의 RouterBOOT가 적용되며 부트로더 다운그레이드가 완료됩니다!

 

 

 

결론

RouterOS 및 시스템을 최신 버전으로 유지하려면 표준 업그레이드 방법을 따르면 됩니다.

 

'딸깍' 한 번이면 최신 버전 패키지를 알아서 다운로드하고 설치해주기 때문입니다.

 

이와 다르게 원하는 특정 버전 또는 다운그레이드하려면 패키지 파일을 직접 넣어 업그레이드 해야 합니다.

728x90

원문출처 : https://siane.tistory.com/330

 

[Xpenology] 헤놀로지 DVA 설치후 서베일런스 용량이 부족할 때

VMware, Proxmox 등 가상화 환경에서 헤놀로지로 DVA모델을 올린 후 SurveillanceStation을 사용하다보면 어느순간 용량이 무럭무럭 늘어나서 하드디스크가 꽉 차는 모습을 볼 수 있습니다. 이미 해결을 한

siane.tistory.com

 

VMware, Proxmox 등 가상화 환경에서 헤놀로지로 DVA모델을 올린 후 SurveillanceStation을 사용하다보면 어느순간 용량이 무럭무럭 늘어나서 하드디스크가 꽉 차는 모습을 볼 수 있습니다.

 

이미 해결을 한 상태라 스크린샷을 찍지는 못했으나.. 

 

카메라 3개를 90일 보관설정하고 데이터 보관을 하고 있는데 2TB의 하드디스크가 용량 부족이 뜹니다.

 

이리저리 검색해봐도 순정이 아니기도 하고.. 네이티브 설치하신 분들께는 나오지 않는 증상이라 자료를 찾기 어려웠습니다.

 

일단 원인은 그래픽카드를 패스쓰루시키지 않아 서베일런스 스테이션 패키지 폴더 내의 특정 파일이 증식하는 문제입니다.

 

1. 그래픽카드를 패스쓰루하시면 해결됩니다.

2. 서베일런스 스테이션의 Local Display를 사용 중지시키면 됩니다.

 

이미 만들어진 파일은 설치 경로에서 파일을 찾아 삭제하면 됩니다.

 

SSH로 접속한 후 sudo -i를 입력해 루트권한을 획득한 후에 아래 폴더로 이동합니다.

/[패키지가 설치된 볼륨]/@appstore/SurveillanceStation/local_display/.config/chromium-local-display/BrowserMetrics

 

*는 와일드카드, 즉 모든 문자를 대체합니다.

*.pem은 .pem으로 끝나는 모든 파일을 의미합니다.

 

rm *.pem 으로 삭제하셔도 되고 rm * 하셔도 됩니다. 어짜피 저 폴더 안에는 BrowerserMetrics-*.pem 파일만 존재합니다.

 

만약, 이미 많이 생성되어 삭제가 어렵다면..파일명을 쪼개서 삭제해주세요.

rm *62F*.pem 이런식으로 중간의 번호부분 일부를 잡아서 지워버리면 됩니다.

 

# SSH 접속
$sudo -i
# 패스워드 입력
# 볼륨 이동 volume1인 경우 아래와 같이 입력합니다.
cd /volume1/@appstore/SurveillanceStation/local_display/.config/chromium-local-display/BrowserMetrics

# 파일 삭제
rm *
# 만약, 파일이 너무 많다는 오류가 나오는 경우
# rm BrowerserMetrics-62*.pem 과 같은 형태로 일부만 잡아 삭제

 

728x90

원문출처 : https://davelogs.tistory.com/126

 

터미널 개발 환경 변경하기 for Mac OS X (iTerm2 + oh-my-zsh)

개발자에게 Mac OS X 기본 터미널 앱의 부족함을 채워줄 개발 환경을 iTerm2와 oh-my-zsh를 통해 변경, 구축해 보고자 한다. 참고로, Mac OS X의 기본 쉘이 bash에서 zsh로 변경된 카탈리나 이후 버전의 OS를

davelogs.tistory.com

 

 

출처: https://iterm2.com/index.html

 

개발자에게 Mac OS X 기본 터미널 앱의 부족함을 채워줄 개발 환경을 iTerm2와 oh-my-zsh를 통해 변경, 구축해 보고자 한다.

 

참고로, Mac OS X의 기본 쉘이 bash에서 zsh로 변경된 카탈리나 이후 버전의 OS를 기준으로 작성했다.

 


 

1. iTerm2 설치

기본 터미널 앱에 비해 제한적인 요소가 덜하고 좀 더 다양한 기능을 가진 터미널 프로그램으로 iTerm2를 설치한다.

 

https://iterm2.com/index.html

 

iTerm2 - macOS Terminal Replacement

iTerm2 by George Nachman. Website by Matthew Freeman, George Nachman, and James A. Rosen. Website updated and optimized by HexBrain

iterm2.com

 

2. oh-my-zsh 설치

oh-my-zsh는 이제 기본 쉘이 된 zsh를 보다 유연하게 다룰 수 있게 하는 프로그램으로, 다음 명령 구문을 통해 설치할 수 있다.

 

# oh-my-zsh 설치
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

 

아래는 iTerm2에서 설치한 후의 화면이다.

 

oh-my-zsh 설치 결과 화면

 

 

oh-my-zsh에 대한 자세한 사항은 아래 경로에서 확인하기 바란다.

 

https://ohmyz.sh/

 

Oh My Zsh - a delightful & open source framework for Zsh

Oh-My-Zsh is a delightful, open source, community-driven framework for managing your ZSH configuration. It comes bundled with several helpful functions, helpers, plugins, themes, and a few things that make you shout... OH MY ZSH!

ohmyz.sh

 

3. Theme 변경

3.1 ZSH Theme 변경

다음의 구문을 통해 ~/.zshrc 파일을 열고, ZSH_THEME를 "agnoster"로 변경한다.

 

# ~/.zshrc 열고, ZSH_THEME="agnoster"로 변경
$ open -e ~/.zshrc

# 변경내용 적용
$ source ~/.zshrc

ZSH_THEME="agnoster"로 변경

 

3.2 iTerm2 Theme 변경

iTerm2의 테마는 다음의 사이트에서 여러 사람들이 구성해 놓은 테마 중 맘에 드는 것을 골라 설정하면 된다.

 

https://iterm2colorschemes.com/

 

Iterm Themes - Color Schemes and Themes for Iterm2

iTerm Themes Intro This is a set of color themes for iTerm (aka iTerm2). Screenshots below and in the screenshots directory. Installation Instructions To install: Launch iTerm 2. Get the latest version at iterm2.com Type CMD+i Navigate to Colors tab Click

iterm2colorschemes.com

 

선택한 테마는 다운로드 받아 .itemcolors 파일 형태여야 한다. (테마 이름 우클릭 후 저장)

 

iTerm2 테마 샘플

이제 iTerm2를 열고, Preferences > Profiles > Colors 탭에서 우측하단의 "Color Presets"를 눌러 다운로드한 테마를 import 한 후 사용할 테마로 설정한다.

 

Preferences > Profiles > Colors > Color Presets 선택 후 import

 

 

4. Font 변경

때때로 테마에 따라 폰트가 깨지는 경우가 있어, 많은 개발자들이 사용하고 있는 Naver D2 Coding 폰트를 설치한다.

 

출처: https://github.com/naver/d2codingfont

 

아래 경로에서 다운로드 한다.

 

https://github.com/naver/d2codingfont

 

GitHub - naver/d2codingfont: D2 Coding 글꼴

D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub.

github.com

 

폰트 설치 방법은 아래 사이트를 참고하자.

 

https://support.apple.com/ko-kr/HT201749

 

Mac에서 서체를 설치 또는 제거하는 방법

Mac에는 많은 서체가 내장되어 있으며 Apple 및 기타 소스에서 서체를 추가로 다운로드하여 설치할 수 있습니다. 서체가 앱에 나타나지 않게 하려면 서체를 비활성화하거나 제거하면 됩니다.

support.apple.com

 

이제 다시 iTerm2를 열고, Preferences > Profiles > Text 탭 하단의 Font에서 설치한 폰트로 설정한다.

 

Preferences > Profiles > Text 탭 하단의 Font에서 설치한 폰트로 설정

 

5. 기타

5.1 프롬프트 꾸미기

다음과 같이 프롬프트를 간소화하거나 이모지 등을 통해 꾸며볼 수 있다.

 

5.1.1 프롬프트 간소화

다음 구문을 ~/.zshrc에 삽입해 사용자 이름 뒤에 붙는 컴퓨터 이름을 제거하여 프롬프트를 간소화한다.

 

# Prompt customization
prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
  fi
}

 

5.1.2 이모지를 활용한 프롬프트 

다음 구문을 ~/.zshrc에 삽입해 랜덤하게 이모지가 포함된 프롬프트로 꾸며볼 수 있다. 참고로 '{사용자이름}'에는 원하는 텍스트를 마음대로 넣으면 된다.

 

# Prompt customization (random emoji)
prompt_context() { 
  emojis=("🌙" "🚀" "🔥" "🚦" "⚡️" "😎" "👑" "🌈" "🐵" "🦄" "🐸" "🍻" "💡" "🎉" "🔑")
  RAND_EMOJI_N=$(( $RANDOM % ${#emojis[@]} + 1)) 
  prompt_segment black default "{사용자이름} ${emojis[$RAND_EMOJI_N]} " 
}

 

 

5.2 상태바 추가

iTerm2 하단에 상태바를 추가해 다양한 정보들을 확인할 수 있다.

 

우선 Preferences > Profiles > Session 탭 하단에서 상태바를  활성화한다.

 

Preferences > Profiles > Session 탭에서 상태바 활성

 

이어서, Preferences > Appearance 탭에서 상태바 위치를 변경한다.

 

Preferences > Appearance 탭에서 상태바 위치 변경

 

 

5.3 플러그인

먼저, 다음 구문을 통해 플러그인 폴더에 명령어 하이라이팅 플러그인 zsh-syntax-highlighting과 자동완성 플러그인 zsh-autosuggestions를 설치한다.

 

# 명령어 하이라이팅 플러그인 설치
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

# 자동완성 플러그인 설치
$ git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

 

이후 ~/.zshrc 파일을 열고 plugins 부분에 다음과 같이 zsh-syntax-highlighting과 zsh-autosuggestions를 추가한다.

 

명령어 하이라이팅과 자동완성 플러그인 추가

 


아래는 위 설정들을 그대로 적용해 사용중인 iTerm2의 모습이다.

 

설정을 완료한 터미널의 모습

 

검색해 보면 보다 다양한 설정 방법들이 많이 있으니 입맛에 맞게 선택, 적용하면 좋을 것 같다.

728x90
# faillock //전체 계정 확인
# faillock --user test //test계정 확인
# faillock --user test --reset //계정 잠김 및 비번 틀린 횟수 초기화

 

참고 사이트 : https://pinetreeday.tistory.com/224

 

LINUX faillock 명령어를 이용한 계정 lock 해제

LINUX faillock 명령어를 이용한 계정 lock 해제 root@TESTSVR [/root]# faillock user01: When Type Source Valid 2023-07-12 15:18:24 RHOST 10.1.2.101 V 2023-07-12 15:18:32 RHOST 10.1.2.101 V 2023-07-12 15:19:12 RHOST 10.1.2.101 V 2023-07-12 15:21:18

pinetreeday.tistory.com

 

728x90

원문출처 : https://continuetochallenge.tistory.com/135

 

윈도우 서버 -> 리눅스 NFS mount (연결 계정 지정)

윈도우 서버에서 리눅스에 올라가 있는 NFS 서버 디렉터리에 연결하는 방법입니다. 연결하는 방법을 3가지로 구분해봤는데, 특별할 건 없습니다. GUI로 할지, 커맨드로 할지 선택하시면 되고, 연

continuetochallenge.tistory.com

 

윈도우 서버에서 리눅스에 올라가 있는 NFS 서버 디렉터리에 연결하는 방법입니다.

연결하는 방법을 3가지로 구분해봤는데, 특별할  없습니다.

GUI 할지, 커맨드로 할지 선택하시면 되고,

연결할 계정(리눅스 OS 계정) 지정해서 연결하는 방법입니다.

 

포스팅이  길어서 목차를 먼저 알려드립니다.

1. 테스트 환경

2. 리눅스 서버에 NFS Server 설치/설정

3. 윈도우 서버에 NFS Client 기능 설치

4-1. NFS 서버와 연결 (계정 지정 없이 GUI)

4-2. NFS 서버와 연결 (계정 지정 없이 커맨드로)

4-3. NFS 서버와 연결 (계정 지정)

 

 

1. 테스트 환경

NFS Server

- OS : SUSE Linux 11

- Hostname : sles11t01

- IP : 192.168.80.151

- 디렉터리 경로 : /nfsdir

 

NFS Client

- OS : Windows Server 2019

- Hostname : WIN2019SVR03

- IP : 192.168.80.152

- 마운트 포인트 : Z:\

 

2. 리눅스 서버에 NFS Server 설치/설정

NFS Server 설정은 아래 포스팅  하나를 참고해주세요~

NFS란? NFS 설정 및 주요 옵션 또는

리눅스 NFS 서버/클라이언트 설정 (Step by Step) 또는

수세리눅스에서 NFS 서버 설정 (with GUI)

 

설정한 결과는 이렇습니다.

a.txt 테스트 용도로 하나 만들어두었습니다.

보시다시피 모든 권한은  root 설정해두었습니다. (테스트를 위해)

 

3. 윈도우 서버에 NFS Client 기능 설치

서버 관리자에서 역할  기능 추가 실행

 

다음

 

다음

 

서버 선택  다음

 

다음

 

NFS 클라이언트 선택  다음

 

설치

 

설치 완료 확인

 

4-1. NFS 서버와 연결 (계정 지정 없이 GUI)

먼저 계정 지정 없이 그냥 연결하는 것부터 해보겠습니다.

간단합니다.

 PC 열어서 네트워크 드라이브 연결을 클릭합니다.

 

마운트  드라이브를 선택하고 (예시에서는 Z:\ 드라이브)

NFS 서버의 공유 디렉터리 경로를 입력합니다 (예시에서는 \\192.168.80.151\nfsdir)

 

그러면 이렇게 네트워크 드라이브 형태로 NFS 공유 디렉터리 연결이 완료됩니다.

 

4-2. NFS 서버와 연결 (계정 지정 없이 커맨드로)

위의 방법대로 GUI 통해 하는 방법 외에 커맨드로 하실 수도 있습니다.

테스트를 위해 위에서 연결한 네트워크 드라이브 연결을 끊어 볼게요.

 

연결을 위해 cmd 창을 하나 열어서 아래 명령어를 실행하면 간단하게 끝납니다.

mount <\\IP\directory> <마운트  드라이브>

 

 PC 열어서 연결이  되었는지 확인해 보시면 됩니다~

 

4-3. NFS 서버와 연결 (계정 지정)

네트워크 드라이브에서 연결한 파일을 수정하거나 파일을 생성/삭제 하려고 하면 권한 오류가 발생하는  보실  있습니다.

 

[파일 수정 불가]

 

[파일 생성 불가]

 

이는 NFS 서버(리눅스) 공유 디렉터리 권한이 root 되어 있고 (테스트를 위해 root 설정했습니다.)

 

NFS 클라이언트(윈도우)에서 디렉터리에 연결할  사용하는 계정은 UID 2번으로 기본 설정하여 연결하기 때문입니다.

cmd 창을 열어서 mount 명령어를 실행해보시면 확인하실  있어요.

 

이를 해결하려면 연결할  사용할 계정을 변경 해야 합니다.

 

변경을 위해 PowerShell 창을 하나 열어줍니다.

그리고 아래 명령어를 실행해서 레지스트리  2개를 추가합니다. (이미 설정이 되어 있을 경우, 값을 변경해줍니다.)

New-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousUID -Value 0 -PropertyType "DWord"

New-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousGID -Value 0  -PropertyType "DWord"

 

여기서 저는 Value 값을 0으로 설정해 주었는데, 0으로 설정한 이유는 root 접속하기 위해서 입니다.

다른 계정으로 접속이 필요하시면 해당 계정의 UID, GID 값을 NFS 서버(리눅스)에서 확인해 보시면 됩니다.

 

레지스트리 값을 변경하신 후에 서버 재부팅을 해줍니다. 물론 NFS 클라이언트(윈도우) 서버를 재부팅 합니다.

 

mount 명령어로 속성 값을 다시 확인해 봅니다.

아래처럼 UID, GID 0으로 바꼈네요.

(혹시라도 속성 값이 바뀌지 않았다면, 연결 끊기  다시 연결해 봅니다.)

 

그러면 테스트를 해보겠습니다.

 

새로운 파일도 만들어보고~

 

기존에 만들어 두었던 파일의 내용도 수정하고 저장해봅니다.

 되네요!

 

NFS 서버에서도 변경사항이 반영되어 있는지 확인해 봅니다.

 

 

728x90

docker-compose up -d 로 docker-compose.yml 파일 내용을 실행 시 아래와 같이 오류가 발생을 확인하면

 

$ docker-compose up -d
[+] Running 1/2
 ✔ Network mstream_default  Created                                                                                       0.1s
 ⠹ Container mstream        Starting                                                                                      0.2s
Error response from daemon: failed to create task for container: Unimplemented: failed to start shim: start failed: unsupported shim version (3): not implemented

 

아래 명령어 입력 후 

$ systemctl restart containerd


다시 도커 실행하면 해결완료

$ docker-compose up -d
[+] Running 1/1
 ✔ Container mstream  Started
728x90
sudo pacman -S pacman-contrib --needed
curl -s "https://archlinux.org/mirrorlist/?country=KR&use_mirror_status=on" | sed -ne 's/#Server\(.*\)/Server\1/p' | rankmirrors -n 3 - | sudo tee /etc/pacman.d/mirrorlist

 

위 명령은 /etc/pacman.d/mirrorlist 파일에 가장 빠른 3개의 미러를 저장한다.

 

https://archlinux.org/mirrorlist 사이트는 Archlinux의 공식 미러 목록을 제공한다.

- country=KR

  - 나라는 대한민국으로 제한한다.

- use_mirror_status=on

  - 미러가 살아있는 것으로 제한한다.

 

결과

##
## Arch Linux repository mirrorlist
## Filtered by mirror score from mirror status page
## Generated on 2021-11-29
##

## South Korea
#Server = https://ftp.harukasan.org/archlinux/$repo/os/$arch
## South Korea
#Server = https://mirror.premi.st/archlinux/$repo/os/$arch

curl 명령어 사용 시, 위와 같은 결과가 나온다.

 

필요 없는 정보들을 없애기 위해 sed 명령어를 사용하면 아래와 같은 결과가 출력된다.

Server = https://ftp.harukasan.org/archlinux/$repo/os/$arch
Server = https://mirror.premi.st/archlinux/$repo/os/$arch

위에서 출력된 미러리스트를 빠른 순으로 정렬하기 위해 rankmirrors 명령어를 사용한다.

rankmirrors 명령어는 pacman-contrib 패키지에 포함되어 있다.

- n <NUM> 옵션

  - NUM 개수만큼 빠른 순으로 미러를 출력한다.

 

tee 명령어는 파이프를 통해 넘어온 결과를 출력하는 동시에 파일에 쓴다.

이때, /etc/pacman.d/mirrorlist 파일은 root 권한이 필요하므로, sudo를 사용한다.

728x90

원문출처 : https://gunnm.tistory.com/122

 

응답 헤더를 통한 서버 정보 노출 방지 (HTTP Response Header Remove)

특정 업체의 보안 정책에 따른 IIS 설정 변경이 필요함. [재현절차] 1.[보안] Response 값 헤더에 서버정보 노출 ex) server : Microsoft-IIS/8.5 [결함내용] 1.[보안] 부적절한 환경 설정 - 불필요한 서버 정보

gunnm.tistory.com

 

728x90

원문출처 : https://svrforum.com/recent/1581255

 

Proxmox LXC를 이용한 Zabbix 쉽게 구축하기.

안녕하세요. 달소입니다. 이번글에서는 많이들 모니터링에 사용하고계신 Zabbix를 LXC를 통해 쉽게 구축해보도록하겠습니다. proxmox lxc를 통해 구성하면 스크립트로 편하게 설치가 가능하기때문에

svrforum.com

 

728x90

1. https://github.com/RROrg/rr/ 에서 최신 버전을 다운로드 한다.

 

2. 받은 rr.img 파일을 Proxmox의 /root에 업로드 한다.

 

3. VM을 만든다.

 

4. # qm importdisk <VM-ID> /root/rr.img <Storage-ID>

ex) qm importdisk 104 /root/rr.img local-lvm

 

5. VM 내 img파일이 디스크로 생성된것을 확인 후 다음 작업을 진행한다. 끝~

728x90

윈도우 서버에서 다음과 같이 부팅 시 오류 메시지를 뿜뿜하며 부팅이 안 될때 해결방법

Windows를 시작하지 못했습니다. 최근 하드웨어 또는 소프트웨어 변경이 원인일 수 있습니다.
문제를 해결하려면 다음을 수행합니다.

Windows 설치 디스크를 삽입하고 컴퓨터를 다시 시작합니다.
언어 설정을 선택하고 다음을 클릭합니다.
컴퓨터 복구를 클릭합니다.
이 디스크가 없는 경우 시스템 관리자 또는 컴퓨터 제조업체에 문의하여 도움을 받으세요.

상태: 0xc000000e

정보: 필요한 디바이스에 액세스할 수 없으므로 부팅 선택이 실패했습니다.

 

해당 윈도우 서버 설치 ISO로 부팅 후
Command line으로 복구 시도......

 

Bootrec /FixMBR
Bootrec /FixBoot
Bootrec /ScanOS
Bootrec /RebuildBCD

SFC /ScanNow

 

재부팅~ 성공!

 

참고로 Windows Server 2012 R2 에서 테스트함!

728x90

https://pve.proxmox.com/wiki/Backup_and_Restore

 

Backup and Restore - Proxmox VE

You can mark a backup as protected to prevent its removal. Attempting to remove a protected backup via Proxmox VE’s UI, CLI or API will fail. However, this is enforced by Proxmox VE and not the file-system, that means that a manual removal of a backup fi

pve.proxmox.com

 

728x90

PVE 8 환경 최적화

1. 일반 구성(lvm 파티션, 스왑 조정, 소스 변경, 구독 삭제 팝업창)

이 장의 목표는 시스템 디스크 공간을 통합하고 스왑 파티션과 local-lvm 파티션 계정을 로컬 파티션에 통합하는 것입니다.

PVE와 함께 제공되는 Shell 기능을 엽니다.

다음과 같이하세요

pve에서 local-lvm 파티션 제거

  1.  
    lvremove pve/data
  2.  
    lvextend -l +100%FREE -r pve/root

볼륨 제거 여부 확인 [y/n] y를 입력하세요.

 

root@rh1288v3 :~# lvremove pve/data
활성 논리 볼륨 pve/data를 제거하시겠습니까? [y/n]: y
  논리 볼륨 "data"가 성공적으로 제거되었습니다.
FREE -r pve/root
  논리 볼륨 pve/root의 크기가 37.45GiB(9588 익스텐트)에서 101.82GiB(26067 익스텐트)로 변경되었습니다. resize2fs 1.47.0(2023년 2월 5일) 파일 시스템 크기가
  조정되었습니다. /dev/mapper/pve-root는 /에 마운트됩니다. 온라인 크기 조정 필요 old_desc_blocks = 5, new_desc_blocks = 13 /dev/mapper/pve-root의 파일 시스템 길이는 이제 26692608(4k) 블록입니다.

Data Center-Storage-local-lvm을 클릭하고 제거를 클릭한 후 확인합니다.

pve와 함께 제공되는 스왑 파티션을 제거하십시오.

기본 스왑 파티션은 시스템 디스크에 생성되므로 시스템 디스크의 작동에 영향을 미치고 시스템 디스크의 수명을 소모하므로 삭제하는 것이 좋습니다.

(다음 기사에서는 Optane M10 16G를 스왑 캐시 디스크로 사용합니다)

쉘에 들어가서 다음 명령을 입력하십시오

  1.  
    swapoff -a
  2.  
    lvremove /dev/pve/swap
  3.  
    lvresize -l +100%FREE /dev/pve/root

root@RH1288V3:~# swapoff -a
root@RH1288V3:~# lvremove /dev/pve/swap
활성 논리 볼륨 pve/swap을 제거하시겠습니까? [y/n]: y
  논리 볼륨 "swap"이 성공적으로 제거되었습니다.
root@RH1288V3:~# lvresize -l +100%FREE /dev/pve/root
  논리 볼륨 pve/root의 크기가 101.82 GiB(26067 익스텐트)에서 109.82 GiB(28115 익스텐트)로 변경되었습니다.
  논리 볼륨 pve/root의 크기가 조정되었습니다.

요약하면, 위의 작업 후에 로컬 공간이 최대화됩니다.

구독 팝업 삭제

sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

실행이 완료된 후 브라우저 Ctrl+F5를 누르면 캐시가 새로 고쳐집니다.

 

728x90

<RedHat 계열 리눅스 서버 취약점 조치 방법> - 2024.06 By MirDaTe

아래는 Rocky Linux 8, 9 버전 서버 취약점 점검 조치방법을 정리한 것이다. 직접 해 본 후 정리한 자료이며 Apache 등의 웹서버 조치방법은 제외된 자료임.

 

1. sudo vi /etc/ssh/sshd_config

PermitRootLogin no

MaxAuthTries 5

 

2. sudo vi /etc/profile

HISTSIZE=2000
HISTTIMEFORMAT="%F %T "
TMOUT=900

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT TMOUT

 

3. sudo vi /etc/login.defs

PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_MIN_LEN 8
PASS_WARN_AGE 7

 

4. sudo vi /etc/pam.d/system-auth

# Generated by authselect on Wed Apr 24 15:45:49 2024
# Do not modify this file manually.

auth required pam_env.so
#아래줄 추가 by MirDaTe
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth required pam_faildelay.so delay=2000000
auth sufficient pam_fprintd.so
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok
#아래줄 추가 by MirDaTe
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_usertype.so issystem
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
#아래줄 추가 by MirDaTe
account required pam_faillock.so

password requisite pam_pwquality.so local_users_only
password sufficient pam_unix.so sha512 shadow nullok use_authtok
password [success=1 default=ignore] pam_localuser.so
password sufficient pam_sss.so use_authtok
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so

 

5. sudo vi /etc/pam.d/password-auth

# Generated by authselect on Wed Apr 24 15:45:49 2024
# Do not modify this file manually.

auth required pam_env.so
#아래줄 추가 By MirDaTe
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth required pam_faildelay.so delay=2000000
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok
#아래줄 추가 By MirDaTe
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_usertype.so issystem
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
#아래줄 추가 By MirDaTe
account required pam_faillock.so

password requisite pam_pwquality.so local_users_only
password sufficient pam_unix.so sha512 shadow nullok use_authtok
password [success=1 default=ignore] pam_localuser.so
password sufficient pam_sss.so use_authtok
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so

 

6. sudo vi /etc/security/pwquality.conf

minlen = 8
dcredit = 1
ucredit = 1
lcredit = 1
ocredit = 1
maxrepeat = 3
maxclassrepeat = 3
usercheck = 1

 

7. sudo touch /etc/cron.allow

    sudo chmod 640 /etc/cron.allow /etc/cron.deny /etc/at.deny

    sudo vi /etc/cron.allow

root
mirdate

 

8. sudo chmod -s /usr/bin/chage /usr/bin/gpasswd /sbin/unix_chkpwd /usr/bin/at /usr/bin/newgrp /usr/bin/write /usr/bin/chfn /bin/mount /bin/umount /usr/sbin/lockdev

 

9. sudo vi /etc/pam.d/su

auth required pam_wheel.so use_uid #주석해제

 

10. sudo usermod --groups wheel <사용자ID>

sudo usermod --groups wheel mirdate

 

11. sudo vi /etc/motd

*************************************************************
*                     !!! WARNING !!!                       *
*         All Connections are monitored and recorded        *
* Disconnect IMMEDIATELY if you are not an authorized user! *
*************************************************************

 

12. sudo vi /etc/issue.net

*************************************************************
*                     !!! WARNING !!!                       *
*         All Connections are monitored and recorded        *
* Disconnect IMMEDIATELY if you are not an authorized user! *
*************************************************************

\S
Kernel \r on an \m

 

13. sudo dnf install chrony

      sudo vi /etc/chrony.conf

server time.google.com iburst
server time.nist.gov iburst
server time.bora.net iburst
server time.kriss.re.kr iburst
server time.windows.com iburst

 

- 서비스활성화 : sudo systemctl enable chronyd

- 서비스시작 : sudo systemctl start chronyd

- 서비스상태확인 : sudo systemctl status chronyd

 

       sudo chronyc tracking

       sudo chronyc ntpdata

728x90

pacman을 사용하여 시스템 업그레이드를 할 때 오류가 발생하여 업그레이드가 되지 않았다.

 

 

오류 : {PACKAGE_NAME} : signature from "{DEVELOPER_NAME} ({DEVELOPER_ID}) <{DEVELOPER_EMAIL_ADDRESS}>" is unknow trust

:: {PACKAGE_PATH_AND_NAME} 파일이 깨졌습니다(꾸러미가 잘못되었거나 손상되었습니다. (PGP 서명)).

삭제하시겠습니까? [Y/n]

 

 

삭제여부에서 "Y"를 입력해도 아래 오류메시지가 나타나면서 업그레이드되지 않는다.

 

 

오류: 커밋 트랜잭션에 실패했습니다(꾸러미가 잘못되었거나 손상되었습니다.)

오류가 발생하여 업그레이드한 꾸러미가 없습니다.

 

 

방법

  1. $ sudo rm -r /etc/pacman.d/gnupg
  2. $ sudo pacman -Sy gnupg archlinux-keyring
  3. $ sudo pacman-key --init
  4. $ sudo pacman-key --populate archlinux
  5. $ sudo pacman-key --refresh-keys
  6. $ sudo pacman -Sc
  7. $ sudo pacman -Su

 

 

 

참고

728x90

원문출처 : https://hmw0908.tistory.com/50

 

[Linux] Apache 보안 설정 (ServerTokens, ServerSignature)

서버정보 노출 방지 [권장] ServerTokens Prod ServerSignature Off ServerTokens 설정 종류 #웹 서버 이름만 공개 [Apache] ServerTokens Prod #웹 서버 이름 + Major 버전 [Apache2] ServerTokens Major #웹 서버 이름 + Major + Minor

hmw0908.tistory.com

 

 

728x90

원문출처 : https://m.blog.naver.com/godgodmin/221851224176

 

Apache 웹서버 보안 설정

불필요한 파일 삭제 DocumentRoot 폴더는 웹문서가 위치하는 디렉토리로 불필요한 파일이 있을시에 삭제 ...

blog.naver.com

 

불필요한 파일 삭제

DocumentRoot 폴더는 웹문서가 위치하는 디렉토리로 불필요한 파일이 있을시에 삭제 하는 것이 좋다. 따라서 DocumentRoot 디렉토리의 경로에 있는 파일들을 삭제해주자. (rm -rf)

또한 Apache 설치시 기본적으로 설치되는 CGI 스크립트를 제거한다. CGI 스크립트는 해킹에 이용될 수 있기때문이다.

/var/www/manual 또는 /var/www/cgi_bin은 삭제해주자.

리눅스 웹서버 정보 숨기기

1. ServerTokens

브라우저가 보낸 요청에 아파치 서버는 응답 패킷을 보내는데 이때 패킷의 Header에는 서버의 정보가 나타난다. 이는 서버 버전별 해킹을 시도할 수 있는 단서를 줄 수 있기 때문에 서버정보를 숨겨야한다.

서버정보는 httpd.conf파일에서 ServerToken 값을 변경해준다.

먼저 [curl -I 웹서버주소]로 응답 헤더의 매세지를 살펴보자. 현재 서버와 OS의 정보를 알려주어 보안에 취약한 상태이다. (현재 상태는 ServerToken이 기본값인 OS 상태이다.)

이를 해결하기 위해 httpd.conf에 있는 ServerTokens 값을 변경해주어야 한다.

ServerTokens 값에 따라 노출되는 정보를 선택할 수 있다.

ServerTokens 값
정보
Prod
웹서버의 이름만 알려준다. Apache
Major
웹서버의 이름과 Major 버전만 알려준다. Apache2
Minor
웹서버의 이름과 Minor 버전까지 알려준다. Apache2.2
Min
웹서버 이름과 Minimum버전까지 알려준다. Apache2.2.2
OS
웹서버 이름, 버전 운영체제까지 알려준다.(기본값)
Full
모든 정보를 알려준다.

httpd.conf 파일에서 ServerTokens 값을 가장 낮은 단계의 값인 Prod로 변경해주자.

이후 Apache 웹 서버를 restart해주고 헤더값을 다시 확인한다. 아래의 그림과 같이 서버 정보가 Apache만 나오는 것을 확인 할 수 있다.

2. ServerSignature

Apache 웹서버에 접속할 때 오류가 발생하면 404, 403 에러가 발생한다. 이때 아파치의 버전 정보와 포트가 나오게 되는데 해커가 악용할 수 있기 때문에 보안상으로 위험하다. 이러한 오류에 관여하는 설정은 httpd.conf 에 ServerSignature이다. 현재는 ServerSignature 값이 Off인 상태이다.

이러한 정보노출을 방지하기 위해 ServerSignature를 Off로 변경하여야한다.

이후 Apache 웹 서버를 restart해주고 헤더값을 다시 확인한다. 아래의 그림과 같이 서버 정보와 Port 정보가 나오지 않는 것을 확인할 수 있다..

디렉토리 리스팅

웹서버의 DocumentRoot 폴더에 가장 메인이 되는 index.html(설정에 따라 달라질 수 있다.)이 없는 경우 DocumentRoot 폴더에 있는 파일들을 탐색기 형태로 보여준다. 이는 소스코드, 스크립트 파일이

유출될 수 있으므로 점검해야 한다.

디렉토리 리스팅을 막기 위해 아래의 그림에 있는 Indexes를 제거 해야한다.

심볼릭 링크 차단

심볼릭 링크란 PC의 바로가기와 동일하다. 바로가기를 클릭하면 원본데이터를 불러와 사용할 수 있게 해주는 것 처럼 웹서버에서도 심볼릭 링크를 통해 파일 시스템에 있는 디렉토리에 접근할 수 있게 된다.

디렉토리 리스팅 처럼 디렉토리가 보이는 경우 심볼릭 링크를 root 디렉토리에 설정하면 누구나 파일시스템에 접근 가능하게 되는 것이다.

이를 차단하기 위해 httpd.conf에 FollowSymLinks 옵션을 삭제한다.

위의 그림에 나와있는 FollowSymLinks 옵션을 지우고 웹서버를 재시작 하면 심볼릭 링크를 이용하여 파일시스템에 접근 할 수 없게 된다.

728x90

원문출처 : https://atl.kr/dokuwiki/doku.php/%EA%B3%84%EC%A0%95%EA%B4%80%EB%A6%AC

 

계정관리 [AllThatLinux!]

항목 중요도 상 점검목적 관리자계정 탈취로 인한 시스템 장악을 방지하기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함 보안위협 root 계정은 운영체제의 모든기능을

atl.kr

 

root 계정 원격 접속 제한

항목 중요도 상

점검목적
관리자계정 탈취로 인한 시스템 장악을 방지하기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함

보안위협
root 계정은 운영체제의 모든기능을 설정 및 변경이 가능하여(프로세스, 커널변경 등) root 계정을 탈취하여 외부에서 원격을 이용한 시스템 장악 및 각종 공격으로(무작위 대입 공격) 인한 root 계정 사용 불가 위협

점검방법

RHEL 6, 7

[Telnet]

#cat /etc/pam.d/login
auth required /lib/security/pam_securetty.so
#cat /etc/securetty
pts/0 ~ pts/x 관련 설정이 존재하지 않음

[Telnet 서비스 사용시]
Step 1) /etc/securetty 파일에서 pts/0 ~ pts/x 설정 제거 또는, 주석 처리
Step 2) /etc/pam.d/login 파일 수정 또는, 신규 삽입

(수정 전) #auth required /lib/security/pam_securetty.so
(수정 후) auth required /lib/security/pam_securetty.so

※ /etc/securetty : Telnet 접속 시 root 접근 제한 설정 파일
/etc/securetty 파일 내 *pts/x 관련 설정이 존재하는 경우 PAM 모듈 설정과 관계없이 root 계정 접속을 허용하므로 반드시 /etc/securetty 파일에서 pts/x 관련 설정 제거 필요

또는

#echo > /etc/securetty

위에 제시한 내용으로 설정되어 있을 경우 root 원격 접속이 차단됨 / 내용 설정에 대해서는 아래의 보안설정방법을 참고함

결과

Last login: Fri Jan  7 14:27:23 2022 from 192.168.230.1
[root@rhel7 ~]# telnet 192.168.230.143
Trying 192.168.230.143...
Connected to 192.168.230.143.
Escape character is '^]'.
Red Hat Enterprise Linux Server release 6.10 (Santiago)
Kernel 2.6.32-754.el6.x86_64 on an x86_64
rhel6 login: root
Password: 
Login incorrect

[SSH 서비스 사용시]

Step 1) vi 편집기를 이용하여 /etc/ssh/sshd_config 파일 열기
Step 2) 아래와 같이 주석 제거 또는, 신규 삽입

(수정 전) #PermitRootLogin Yes
(수정 후) PermitRootLogin No

루트 계정에 대한 액세스를 추가로 제한하기 위해 관리자는 /etc/securetty 파일을 편집하여 콘솔에서 루트 로그인을 비활성화할 수 있습니다.
기본적으로 Red Hat Enterprise Linux의 /etc/securetty파일은 루트 사용자가 시스템에 물리적으로 연결된 콘솔에서만 로그인할 수 있도록 허용합니다.
루트 사용자가 로그인하지 못하도록 하려면 쉘 프롬프트에서 루트로 다음 명령을 입력하여 이 파일의 내용을 제거하십시오.

echo > /etc/securetty

KDM, GDM 및 XDM 로그인 관리자에서 securetty 지원을 활성화하려면 다음 행을 추가하십시오.

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

위 설정을 적용하기 위한 파일들은 다음과 같습니다.

/etc/pam.d/gdm
/etc/pam.d/gdm-autologin
/etc/pam.d/gdm-fingerprint
/etc/pam.d/gdm-password
/etc/pam.d/gdm-smartcard
/etc/pam.d/kdm
/etc/pam.d/kdm-np
/etc/pam.d/xdm

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#s2-wstation-privileges-noroot

RHEL 8 이후 시스템에서 tty 장치 파일의 동적 특성으로 인해 securetty PAM 모듈은 기본적으로 비활성화되었으며 /etc/securetty 구성 파일은 더 이상 RHEL에 포함되지 않습니다.
/etc/securetty는 가능한 많은 장치를 나열하므로 대부분의 경우 실질적인 효과는 기본적으로 허용되는 것이므로 이 변경은 약간의 영향만 미칩니다.
그러나 보다 제한적인 구성을 사용하는 경우 /etc/pam.d 디렉토리의 해당 파일에 pam_securetty.so 모듈을 활성화하는 행을 추가하고 새 /etc/securetty 파일을 생성해야 합니다.

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/security_considerations-in-adopting-rhel-8#securetty_security

 

Root ssh login 제한

RHEL 6, 7

SSH 프로토콜을 사용한 루트 로그인을 방지하려면 SSH 데몬의 구성 파일 /etc/ssh/sshd_config를 편집하고 다음 행을 변경하십시오.

#PermitRootLogin yes
PermitRootLogin no

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#s2-wstation-privileges-noroot

RHEL 8

#PermitRootLogin yes
PermitRootLogin no

PermitRootLogin 옵션
no - root 계정의 모든 접근 방법을 차단
prohibit-password - root 계정의 암호를 사용하는 대신 키 기반 인증은 가능함

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/securing_networks/index

패스워드 복잡성 설정

RHEL 6

네 가지 문자 클래스를 모두 포함하여 최소 길이가 8자인 암호를 요구하려면 /etc/pam.d/passwd 파일의 암호 섹션에 다음 줄을 추가하십시오.

password   required     pam_cracklib.so retry=3 minlen=8 minclass=4

연속 또는 반복 문자에 대한 암호 강도 검사를 설정하려면 /etc/pam.d/passwd 파일의 암호 섹션에 다음 줄을 추가합니다.

password   required     pam_cracklib.so retry=3 maxsequence=3 maxrepeat=3

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#sect-Security_Guide-Workstation_Security-Password_Security

RHEL 7

pam_quality 사용을 활성화하려면 /etc/pam.d/passwd 파일의 암호 스택에 다음 줄을 추가합니다.

password    required    pam_pwquality.so retry=3

네 가지 문자 클래스를 모두 포함하여 최소 길이가 8자인 암호를 요구하려면 /etc/security/pwquality.conf 파일에 다음 행을 추가하십시오.

minlen = 8
minclass = 4

문자 시퀀스 및 동일한 연속 문자에 대한 암호 강도 검사를 설정하려면 /etc/security/pwquality.conf에 다음 행을 추가하십시오.

maxsequence = 3
maxrepeat = 3

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/security_guide/index

RHEL 8

Red Hat Enterprise Linux 8에서는 authconfig명령이 authselect 유틸리티로 대체되었습니다.
/etc/pam.d/ 디렉토리에 있는 PAM 전역 파일 system-auth 및 password-auth에서 직접 수정하지 않는 것이 좋습니다.

Red Hat Enterprise Linux 8에서 암호 복잡성에 대한 기본 구성 파일은 /etc/security/pwquality.conf
비밀번호 정책/복잡성을 구성하기 전에 아래와 같이 authselect를 사용하여 사용자 정의 프로파일을 작성하십시오.

1. 사용 가능한 프로필 나열

# authselect list

2. 현재 프로필 및 활성화된 기능 나열

# authselect current

3. 현재 프로필/변경 사항 백업

# authselect apply-changes -b --backup=sssd.backup

4. 기존 프로필 sssd에서 복사한 새 사용자 지정 프로필 이름 password-policy 생성

#  authselect create-profile password-policy -b sssd

- 새로 생성된 프로필은 /etc/authselect/custom/password-policy/ 위치에서 사용할 수 있습니다.

5. 새 사용자 정의 프로필을 현재 프로필로 설정

# authselect select custom/password-policy
# authselect current

6. 예를 들어 기능을 활성화하려면 사용자 로그인 시 홈 디렉토리가 아직 없는 경우 생성하고 faillock을 사용하여 계정 잠금을 활성화하려면 다음 명령을 실행합니다.

# authselect enable-feature with-mkhomedir
# authselect enable-feature with-faillock

RHEL 8.2 릴리스에서 pam_faillock은 이제 /etc/security/faillock.conf에 있는 faillock.conf 구성 파일에서 설정을 읽을 수 있습니다. 이 페이지의 아래 참고 사항을 참조하십시오.

메모:
/etc/pam.d/xxxx-auth의 pam_faillock.so 행에 있는 옵션은 faillock.conf의 설정을 재정의합니다.
faillock.conf에서 구성하려면 다음과 같이 /etc/authselect/custom/PROFILE/xxxx-auth를 수정하십시오.

# Edit {system,password,fingerprint,smartcard}-auth in /etc/authselect/custom/password-policy/

(Before)
auth        required                                     pam_env.so
auth        required                                     pam_faildelay.so delay=2000000
auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200
...snip...
auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200
auth        required                                     pam_deny.so
↓  
(After)
auth        required                                     pam_env.so
auth        required                                     pam_faildelay.so delay=2000000
auth        required                                     pam_faillock.so preauth
...snip...
auth        required                                     pam_faillock.so authfail
auth        required                                     pam_deny.so

7. 사용자 정의 프로필 디렉토리 /etc/authselect/custom/password-policy/에서 사용할 수 있는 전역 PAM 구성 파일 system-auth  password-auth에서 원하는/사용자 정의 변경을 수행합니다.
변경 사항이 적용되면 다음 명령을 사용하여 적용합니다.

# authselect apply-changes

- 파일에 변경 사항이 기록되었는지 확인합니다.

8. 사용된 비밀번호의 이력(재사용할 수 없는 이전 비밀번호의 수)을 유지합니다.
/etc/authselect/custom/password-policy/system-auth  /etc/authselect/custom/password-policy/password-auth 파일에 다음 줄을 삽입합니다(pam_pwquality.so 줄 뒤에)

password    requisite     pam_pwhistory.so remember=5 use_authtok

9. 암호 복잡성을 위해 루트를 적용합니다.
/etc/authselect/custom/password-policy/system-auth  /etc/authselect/custom/password-policy/password-auth 파일의 암호 섹션 아래 pam_pwquality.so 행에 다음 옵션을 삽입/추가합니다.

enforce_for_root

참고: 변경한 후 변경 사항을 적용하려면 authselect apply-changes를 실행해야 합니다.

10. /etc/security/pwquality.conf 파일에서 적절한 옵션을 설정하십시오.

minlen = 9          새 암호에 대해 허용되는 최소 크기입니다. 여기에는 크레딧(기본값인 비활성화되지 않은 경우 1개 추가)이 포함됩니다.
dcredit = -1        비밀번호에 필요한 숫자가 있어야 하는 최소 크레딧
ucredit = -1        비밀번호에 대문자를 사용하기 위한 최소 크레딧입니다.
lcredit = 1         비밀번호에 소문자를 사용할 수 있는 최대 크레딧입니다.
ocredit = 1         암호에 다른 문자를 포함할 수 있는 최대 크레딧입니다.
minclass = 1        새 비밀번호에 필요한 최소 문자 클래스 수.
maxrepeat = 2       새 비밀번호에서 연속으로 허용되는 동일한 문자의 최대 수입니다.
maxclassrepeat = 2  새 비밀번호에서 동일한 클래스의 연속 문자가 허용되는 최대 수입니다.
difok = 5           새 비밀번호에 사용할 수 있는 최대 문자 수(이전 비밀번호에 비해..), root는 이전 비밀번호를 묻지 않으므로 적용되지 않음

크레딧 값 > 0 : 새 비밀번호에 각 문자를 포함하기 위한 최대 크레딧입니다.
크레딧 값 < 0 : 새 비밀번호에 각 문자를 포함하는 데 필요한 최소 필수 크레딧입니다.
신용 값 = 0: 새 암호에 해당 문자 클래스를 포함해야 하는 필수 요구 사항이 없습니다.

참조링크
https://access.redhat.com/solutions/5027331

계정 잠금 임계값 설정

RHEL 6

3번의 실패한 시도 후에 루트가 아닌 사용자를 잠그고 10분 후에 해당 사용자의 잠금을 해제하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-의 auth 섹션에 다음 행을 추가하십시오.

auth        required       pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth        sufficient     pam_unix.so nullok try_first_pass
auth        [default=die]  pam_faillock.so authfail audit deny=3 unlock_time=600

이전 단계에서 지정한 두 파일의 계정 섹션에 다음 줄을 추가합니다.

account     required      pam_faillock.so

루트 사용자에게도 계정 잠금을 적용하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth 파일의 pam_faillock 항목에 even_deny_root 옵션을 추가합니다.

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600

account     required      pam_faillock.so

사용자 계정의 잠금을 해제하려면 루트로 다음 명령을 실행합니다.

# faillock --user <username> --reset

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#sect-Security_Guide-Workstation_Security-Account_Locking

RHEL 7

3번의 실패한 시도 후에 루트가 아닌 사용자를 잠그고 10분 후에 해당 사용자의 잠금을 해제하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth의 auth 섹션에 두 줄을 추가합니다. 파일. 편집 후 두 파일의 전체 인증 섹션은 다음과 같아야 합니다.

1 auth        required      pam_env.so
2 auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=600  <- 추가
3 auth        sufficient    pam_unix.so nullok try_first_pass
4 auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600  <- 추가
5 auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
6 auth        required      pam_deny.so

이전 단계에서 지정한 두 파일의 계정 섹션에 다음 줄을 추가합니다.

account     required      pam_faillock.so

루트 사용자에게도 계정 잠금을 적용하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth 파일의 auth required pam_faillock.so 항목에 even_deny_root 옵션을 추가합니다.

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600

account     required      pam_faillock.so

사용자 계정의 잠금을 해제하려면 루트로 다음 명령을 실행합니다.

#faillock --user <username> --reset

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/security_guide/index#sect-Security_Guide-Workstation_Security-Account_Locking
https://access.redhat.com/solutions/62949

RHEL 8

/etc/pam.d/system-auth  /etc/pam.d/password-auth를 수동으로 편집하는 것은 권장되지 않습니다. authselect를 사용하여 pam_faillock을 활성화/비활성화합니다.

To enable faillock

# authselect enable-feature with-faillock

To disable faillock

# authselect disable-feature with-faillock

faillock 구성
faillock 옵션은 /etc/security/faillock.conf에 저장해야 합니다.

deny=4
unlock_time=1200
silent

인증 실패 기록을 재설정하거나 보려면 다음과 같은 명령을 사용하십시오.
사용자 이름에 대한 인증 실패 기록을 표시하려면

# faillock --user username

사용자 이름에 대한 인증 실패 기록을 재설정하려면

# faillock --user username --reset

SSHD 구성 조정
pam_faillock.so가 예상대로 작동하지 않으면 SSHD 구성을 다음과 같이 변경해야 할 수 있습니다.

# vi /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
PasswordAuthentication no

그런 다음 이러한 구성 변경 사항을 적용하려면 sshd 서비스를 다시 시작합니다.

# systemctl restart sshd

참조문서
https://access.redhat.com/solutions/62949

패스워드 파일 보호

/etc/shadow 파일의 패스워드 암호화 존재 확인
/etc/passwd 파일 내 두 번째 필드가 “ X ” 표시되는지 확인

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index

root 이외에 UID가 '0' 금지

/etc/passwd 파일 내 UID (세 번째 필드 값) 확인
root 이외의 계정이 “UID=0”인 경우 0이 아닌 적절한 UID 부여

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index

root 계정 su 제한

“wheel” 그룹 및 그룹 내 구성원 존재 여부 확인
/etc/group
wheel:x:10:root,admin

/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            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so

참조문서
https://access.redhat.com/solutions/452213

패스워드 최소 길이, 최대 사용 기간, 최소 사용기간 설정

/etc/login.defs 내 패스워드 관련 파일 수정

PASS_MAX_DAYS	99999  패스워드 사용 가능 기간(일)
PASS_MIN_DAYS	0      패스워드 변경 최소 기간(일)
PASS_MIN_LEN	5      패스워드 최소 길이
PASS_WARN_AGE	7      패스워드 기간 만료 경고 기간(일)

불필요한 계정 제거

/etc/passwd 파일 내 계정확인 후 제거

관리자 그룹에 최소한의 계정 포함

/etc/group 
root:x:0:root 확인

계정이 존재하지 않는 GID 금지

/etc/group 파일과 /etc/passwd 파일 비교하여 점검

동일한 UID 금지

/etc/passwd 파일 내 동일한 UID가 있는지 확인

사용자 shell 점검

로그인이 불필요한 계정에 /bin/false 또는 /sbin/nologin 쉘 부여

/etc/passwd 파일 내 로그인 쉘 부분인 계정 맨 마지막에 부여

Session Timeout 설정

 

/etc/profile 파일 내

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=5000                                 # 히스토리 저장 갯수 
HISTTIMEFORMAT="%F %T "                       # 히스토리 저장시 날짜 시간 같이 저장
TMOUT=300                                     # 세션 타임아웃 시간 설정
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT TMOUT  # 환경변수 적용
 

 

728x90

원문출처 : https://tech.chhanz.xyz/linux/2021/07/16/authselect-use-faillock/

 

[Linux] authselect 을 이용하여 faillock module 적용

RHEL v8 이후 변경점 RHEL v8 계열(CentOS/Oracle Linux/Rocky Linux) 부터는 이전과 같이 PAM 을 수정하여 설정하는 것을 권장하지 않습니다. [root@chhanz-c8-vm ~]# cat /etc/pam.d/system-auth ... # Generated by authselect on Fri J

tech.chhanz.xyz

 

RHEL v8 이후 변경점

RHEL v8 계열(CentOS/Oracle Linux/Rocky Linux) 부터는 이전과 같이 PAM 을 수정하여 설정하는 것을 권장하지 않습니다.

[root@chhanz-c8-vm ~]# cat /etc/pam.d/system-auth 
...
# Generated by authselect on Fri Jul 16 13:13:24 2021
# Do not modify this file manually.                      <<<
...

추가로 RHEL v8 계열부터는 기존에 사용하던 보안 설정으로 많이 사용 되던 pam_tally2 module 이 deprecated 되었습니다.
anthconfig 로 PAM 설정이 가능하였으나, RHEL v8 계열부터 authselect 을 사용하도록 변경 되었습니다.

authselect 이란?

authselect 는 특정 프로파일을 선택하여 시스템의 ID 및 인증 소스를 설정 할 수 있는 도구입니다.

authselect 사용법

Check current the profile

[root@chhan-rocky authselect]# authselect current 
Profile ID: sssd
Enabled features: None

Enable feature

faillock module 활성화.

[root@chhan-rocky authselect]# authselect enable-feature with-faillock 
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

[root@chhan-rocky authselect]# authselect current 
Profile ID: sssd
Enabled features:
- with-faillock

Create the custom profile

sssd Profile 를 base 로 한 Profile 생성.

[root@chhan-rocky authselect]# authselect create-profile -b sssd security-profile
New profile was created at /etc/authselect/custom/security-profile

Change profile

[root@chhan-rocky security-profile]# authselect select custom/security-profile
Profile "custom/security-profile" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group
- netgroup
- automount
- services

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

faillock module 을 이용한 보안 설정

기존에 pam_tally2등으로 주로 이용되던 계정 인증 실패에 대한 계정 잠금 정설이 faillock 으로 변경되면서 기능 활성화 및 정책 설정은 아래와 같이 해야됩니다.

faillock module 활성화

아래 명령을 통해 faillock module 을 활성화 합니다.

[root@chhanz-c8-vm ~]# authselect enable-feature with-faillock 
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

[root@chhanz-c8-vm ~]# authselect current
Profile ID: sssd
Enabled features:
- with-fingerprint
- with-silent-lastlog
- with-faillock

faillock 정책 설정

아래와 같이 /etc/securrity/faillock.conf 를 수정합니다.
(Note: /etc/security/faillock.conf is available from pam-1.3.1-8.el8.)

[root@chhanz-c8-vm ~]# cat /etc/security/faillock.conf | grep -v "#"
dir = /var/run/faillock
audit
silent
deny = 4

faillock.conf 가 수정이 되면 변경된 profile을 적용합니다.

[root@chhanz-c8-vm ~]# authselect apply-changes 
Changes were successfully applied.

faillock 보안 설정 테스트

현재 적용한 정책은 기본적으로 4회 계정 인증 실패시 계정이 LOCK 되고 600s(Default value) 후에 UNLOCK 됩니다.

[root@chhanz-c8-vm ~]# ssh test@localhost
test@localhost's password: 
Permission denied, please try again.

위와 같이 계정 인증 실패시 faillock 명령을 통해 인증 실패 현황을 파악 할 수 있습니다.

[root@chhanz-c8-vm ~]# faillock 
root:
When                Type  Source                                           Valid
test:
When                Type  Source                                           Valid
2021-07-16 13:14:36 RHOST ::1                                                  V
2021-07-16 13:14:39 RHOST ::1                                                  V
2021-07-16 13:14:42 RHOST ::1                                                  V
2021-07-16 13:14:46 RHOST ::1                                                  V

/var/log/secure 에서 위와 같이 계정 LOCK 에 대한 로그를 확인 할 수 있습니다.

...
Jul 16 13:14:46 localhost unix_chkpwd[7186]: password check failed for user (test)
Jul 16 13:14:46 localhost sshd[7184]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=::1  user=test
Jul 16 13:14:46 localhost sshd[7184]: pam_faillock(sshd:auth): Consecutive login failures for user test account temporarily locked              <<<
...

실제로 4회 계정 인증 실패 후에는 계정 접근이 안되었고, 10분후에 다시 인증 시도를 할 수 있었습니다.

계정 잠금 해제

LOCK 된 계정을 수동으로 unlock 하는 방법은 아래와 같습니다.

[root@chhanz-c8-vm ~]# faillock --reset --user test
[root@chhanz-c8-vm ~]# faillock 
root:
When                Type  Source                                           Valid
test:
When                Type  Source                                           Valid

[참고] authselect 에서 지원하는 feature (profile sssd)

Feature NameDescription

with-faillock Lock the account after too many authentication failures.
with-mkhomedir Create home directory on user’s first log in.
with-ecryptfs Enable automatic per-user ecryptfs.
with-smartcard Authenticate smart cards through SSSD.
with-smartcard-lock-on-removal Lock the screen when the smart card is removed.
Requires that with-smartcard is also enabled.
with-smartcard-required Only smart card authentication is operative; others, including password, are disabled. Requires that with-smartcard is also enabled.
with-fingerprint Authenticate through fingerprint reader.
with-silent-lastlog Disable generation of pam_lostlog messages during login
with-sudo Enable sudo to use SSSD for rules besides /etc/sudoers.
with-pamaccess Refer to /etc/access.conf for account authorization.
without-nullock Do not add the nullock parameter to pam_unix

참고 자료

728x90

원문출처 : https://junu19.tistory.com/17

 

[리눅스/보안취약점] 계정 잠금 임계값 설정

참고 : 주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드 https://www.krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988&queryString=cGFnZT0yJnNvcnRfY29kZT0mc29ydF9jb2RlX25hbWU9JnNlYXJjaF9zb3J0PXRpdGxlX2

junu19.tistory.com

 

참고 :

주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드

https://www.krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988&queryString=cGFnZT0yJnNvcnRfY29kZT0mc29ydF9jb2RlX25hbWU9JnNlYXJjaF9zb3J0PXRpdGxlX25hbWUmc2VhcmNoX3dvcmQ9 

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

적용 OS : RHEL 8.6

 

U-03 (상) 1. 계정관리 > 1.3 계정 잠금 임계값 설정

 

8버전 부터는 pam_tally2가 더 이상 기본으로 사용되지 않으며 faillock로 이용하게 됩니다. 

vi /etc/pam.d/system-auth

# Generated by authselect on Mon Jun 27 04:44:48 2022
# Do not modify this file manually.

auth        required                                     pam_env.so
# 아래 내용 추가
auth        required                                     pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth        required                                     pam_faildelay.so delay=2000000
auth        sufficient                                   pam_fprintd.so
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
auth        sufficient                                   pam_unix.so nullok
# 아래 내용 추가
auth        [default=die]                                pam_faillock.so authfail audit deny=5 unlock_time=600
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        sufficient                                   pam_sss.so forward_pass
auth        required                                     pam_deny.so

account     required                                     pam_unix.so
account     sufficient                                   pam_localuser.so
account     sufficient                                   pam_usertype.so issystem
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required                                     pam_permit.so
# 아래 내용 추가
account     required                                     pam_faillock.so

password    requisite                                    pam_pwquality.so local_users_only
password    sufficient                                   pam_unix.so sha512 shadow nullok use_authtok
password    sufficient                                   pam_sss.so use_authtok
password    required                                     pam_deny.so

session     optional                                     pam_keyinit.so revoke
session     required                                     pam_limits.so
-session    optional                                     pam_systemd.so
session     [success=1 default=ignore]                   pam_succeed_if.so service in crond quiet use_uid
session     required                                     pam_unix.so
session     optional                                     pam_sss.so

audit - 사용자(일반계정) 감사를 활성화

deny - 실패 횟수, deny=5 5회 로그인 실패 시 계정 잠금

unlock_time - 계정 잠금 유지 시간, unlock_time=600 600초가 지나면 자동 해제, 설정하지 않으면 faillock를 이용하여 수동으로 잠금해제 하여야함

even_deny_root - root 계정 적용할때 사용 

 

vi /etc/pam.d/password-auth

# Generated by authselect on Mon Jun 27 04:44:48 2022
# Do not modify this file manually.

auth        required                                     pam_env.so
# 아래 내용 추가
auth        required                                     pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth        required                                     pam_faildelay.so delay=2000000
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
auth        sufficient                                   pam_unix.so nullok
# 아래 내용 추가
auth        [default=die]                                pam_faillock.so authfail audit deny=5 unlock_time=600
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        sufficient                                   pam_sss.so forward_pass
auth        required                                     pam_deny.so

account     required                                     pam_unix.so
account     sufficient                                   pam_localuser.so
account     sufficient                                   pam_usertype.so issystem
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required                                     pam_permit.so
# 아래 내용 추가
account     required                                     pam_faillock.so

password    requisite                                    pam_pwquality.so local_users_only
password    sufficient                                   pam_unix.so sha512 shadow nullok use_authtok
password    sufficient                                   pam_sss.so use_authtok
password    required                                     pam_deny.so

session     optional                                     pam_keyinit.so revoke
session     required                                     pam_limits.so
-session    optional                                     pam_systemd.so
session     [success=1 default=ignore]                   pam_succeed_if.so service in crond quiet use_uid
session     required                                     pam_unix.so
session     optional                                     pam_sss.so
# 로그인 실패 확인 
faillock
maint:
When                Type  Source                                           Valid
2022-06-29 08:41:27 RHOST 12.12.12.1                                           V
root:
When                Type  Source                                           Valid
2022-06-28 13:49:45 TTY   /dev/tty1                                            V
2022-06-28 13:17:04 TTY   /dev/tty1                                            I
2022-06-28 13:17:09 TTY   /dev/tty1                                            I
2022-06-28 13:49:52 TTY   /dev/tty1                                            V
2022-06-28 13:49:57 TTY   /dev/tty1                                            V

# 특정 사용자만 확인 
faillock --user maint
maint:
When                Type  Source                                           Valid
2022-06-29 08:41:27 RHOST 12.12.12.1                                           V

# 수동 계정 잠금 해제
faillock --user maint --reset

# 로그인 한 번이라도 실패 시 아래 경로에 기록
ls /var/run/faillock/
maint  root

 

728x90

원문출처 : https://sexyguylab.com/entry/rhel9pamfaillock

 

[RHEL9] 계정 잠금(pam_faillock) 설정

제가 근무하고 있는 회사는 CentOS 7을 대체하기 위한 Next OS로 상용 OS인 RHEL(Red Hat Enterprise Linux) 9를 준비하고 있습니다. 아래 내용은 RHEL9 도입을 위한 사전 체크 중 기존 CentOS 7 기반 설정에서 변경

sexyguylab.com

 

제가 근무하고 있는 회사는 CentOS 7을 대체하기 위한 Next OS로 상용 OS인 RHEL(Red Hat Enterprise Linux) 9를 준비하고 있습니다. 아래 내용은 RHEL9 도입을 위한 사전 체크 중 기존 CentOS 7 기반 설정에서 변경이 되는 부분에 대한 내용을 정리하였습니다.

1. 문제점

기존 CentOS7 기반으로 작성된 설정과 스크립트들을 RHEL9에 그대로 적용하여 사용하려고 한 결과 아래와 같은 문제점이 발생되었습니다.

 1) RHEL8 이상 pam_tally2 미지원

RHEL8 이상부터 pam_tally2를 더 이상 지원하지 않습니다. 저는 CentOS7 기반 OS에서 pam_tally2와 pam_faillock이 선택적으로 사용이 가능하기에 pam_tally2를 사용해 왔습니다.

  • /etc/pam.d/system-auth 및 /etc/pam.d/password-auth에 pam_tally2 설정

 2) RHEL8/9에서는 pam_faillock 사용

RHEL8/9에서는 pam_faillock을 사용해야 합니다. 하지만 RHEL7과 RHEL8/9의 pam_faillock 사용법이 다릅니다. 이에 대해서는 아래에 설명하도록 하겠습니다.

2. pam_faillock 설정

RHEL8 이상부터 계정 잠금 제어 시 사용하던 PAM 패키지의 pam_faillock 사용법이 변경되었습니다. 기존의 authconfig를 대체한 authselect를 사용하여 pam_faillock 모듈을 활성화할 수 있습니다.

 1) RHEL7 pam_faillock 설정

RHEL7에서는 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth에 pam_faillock을 설정합니다. 두 파일 모두 변경해야 적용됩니다.

auth        required      pam_faillock.so preauth silent audit deny=5 unlock_time=300
...
auth        [default=die] pam_faillock.so authfail audit deny=5 unlock_time=300
...
account     required      pam_faillock.so

 2) RHEL8/9 pam_faillock 설정

위 RHEL7과 동일하게 설정하여 제어할 수도 있습니다. 하지만 RHEL8은 RHEL7과 달리 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth를 수동으로 편집하는 것은 권장하지 않습니다. RHEL 8/9는 authselect 명령어를 사용하여 제어가 가능합니다.

  • 명령어 예시: # authselect enable-feature with-faillock → faillock 활성화
  • 설정 파일 : /etc/security/faillock.conf

 3) RHEL9 system-auth, password-auth 파일 설정

RHEL9의 /etc/pam.d/system-auth 와 /etc/pam.d/password-auth 파일 내용은 아래와 같습니다.

 

[ system-auth 와 password-auth 파일 내용 ]

 

파일 내용 수정 후 /etc/pam.d/password-auth 화면은 아래와 같습니다. /etc/pam.d/system-auth 내용도 동일합니다. 

 

[ password-auth 수정 후 화면 ]

 

주의사항

  • 이렇게 수정하는 방법은 RedHat에서 권장하는 방법이 아니므로 주의가 필요합니다.

 4) /etc/security_faillock.conf 파일

/etc/security_faillock.conf 화면은 아래와 같습니다. 해당 설정에 대한 내용 확인 후 주석을 해제하여 설정하면 됩니다.

 

[ /etc/security/faillock.conf 파일 내용 ]

 

 5) pam_faillock 활용

1. sexyguy 계정에 대한 실패한 로그인 정보 확인

  • # faillock --user sexyguy

2. sexyguy 계정 잠금 해제

  • # faillock --reset --user sexyguy

 

[ faillock 로그인 정보 확인 및 잠금해제 ]

 

3. 마치며

지난 리눅스 계정 잠금 임계값 설정 포스팅은 CentOS7 기준으로 작성이 되었습니다. 기존에 사용하던 설정들을 RHEL9에 적용하려다 보니 수정해야 될 부분이 조금 있었습니다. 저는 위 방법들을 토대로 스크립트를 작성할 예정입니다. 지금까지 제가 RHEL9 도입을 준비하면서, 계정 잠금 설정에는 기존에 사용하던 OS와 어떠한 차이가 있는지 정리한 내용을 포스팅했습니다.

728x90

원문출처 : https://prolinux.kr/52

 

Enterprise Linux 8 보안취약점 점검 변경 부분 정리

2. 패스워드 복잡도 OS 8부터는 pam_cracklib 대신에 pam_pwquality 모듈이 적용됩니다. 아래 정책을 꼭 따를 필요는 없으며 필요한 정책만 적용할 것 설정 파일[수정 후 저장] [root@localhost ~]# vi /etc/security/

prolinux.kr

 

OS 8부터는 pam_cracklib 대신에 pam_pwquality 모듈이 적용됩니다.
아래 정책을 꼭 따를 필요는 없으며 필요한 정책만 적용할 것

 

설정 파일[수정 후 저장]

[root@localhost ~]# vi /etc/security/pwquality.conf

minlen = 8 [주석(#) 제거] - 최소 패스워드 길이 설정 [6자 이하는 설정 안 됨, 최소 8 이상 권장]

dcredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 숫자 수 [최소 1 이상 권장]

ucredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 대문자 수 [최소 1 이상 권장]

lcredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 소문자 수 [최소 1 이상 권장]

ocredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 특수문자 수 [최소 1 이상 권장]

maxrepeat = 3  [주석(#) 제거, 0 → 3] - 최대 연속된 동일한 반복 수 [최소 3 이상 권장] (예 aaa,111 형태를 사용 못함)

maxclassrepeat = 3 [주석(#) 제거, 0 → 3] - 최대 연속 문자 반복 수 [최소 3 이상 권장] (예 abc,123 형태를 사용 못함)

usercheck = 1 [주석(#) 제거, 그대로] - 패스워드에 유저 ID가 포함되어 있는지 점검 [1 권장/0 체크 안 함]

(예 ID:LOVE PASS:LOVE123 형태를 사용 못함)

 

 

pwquality.conf 정보를 불러올 수 있게 PAM 모듈 추가 [이미 존재]

[ ROOT도 적용 시local_users_only → enforce_for_root 변경 ]

[root@localhost pam.d]# vi /etc/pam.d/system-auth

password requisite pam_pwquality.so try_first_pass local_users_only

 

 

 

[root@localhost pam.d]# vi /etc/pam.d/password-auth

password requisite pam_pwquality.so try_first_pass local_users_only

※ 이 설정은 ROOT 권한이 있는 사용자가 수정할 시에는 무시합니다.

일반계정 사용자가 패스워드가 만료 후 패스워드를 재설정했을 때 적용되는 정책입니다.

 


 

OS 8부터는 pam_tally2 더 이상 기본으로 사용되지 않으며 faillock으로 이용하게 됩니다.

동일하게 pam_faillock.so 모듈을 이용하며 일정 간격 동안 사용자별로 실패한 인증 시도 목록을 유지 관리하고 인증 실패가 연속적으로 거부될 경우 계정을 잠급니다.

 

 

설정 파일 [수정 후 저장](※ 이 줄의 순서는 매우 중요하므로 꼭 해당 라인 사이에 추가할 것)

[root@localhost pam.d]# vi /etc/pam.d/system-auth

# Generated by authselect on Mon Jun 15 04:15:03 2020
# Do not modify this file manually.

auth        required        pam_env.so

auth        required        pam_faillock.so preauth silent audit deny=5 unlock_time=600 [라인 추가]

auth        required        pam_faildelay.so delay=2000000

auth        sufficient        pam_fprintd.so

auth        [default=1 ignore=ignore success=ok]    pam_succeed_if.so uid >= 1000 quiet

auth        [default=1 ignore=ignore success=ok]    pam_localuser.so

auth        sufficient        pam_unix.so nullok try_first_pass

auth        [default=die]   pam_faillock.so authfail audit deny=5 unlock_time=600 [라인 추가]

auth        requisite         pam_succeed_if.so uid >= 1000 quiet_success

auth        sufficient        pam_sss.so forward_pass

auth        required         pam_deny.so

 

account     required        pam_unix.so

account     sufficient       pam_localuser.so

account     sufficient       pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

account     required        pam_permit.so

account     required        pam_faillock.so [라인 추가]

..

 

※[옵션 설명]

audit - 사용자(일반계정) 감사를 활성화

deny - 실패 횟수를 의미하며 설정상 [=5]되어 있을 경우 5회 로그인 실패 시 계정 잠금

unlock_time - 계정이 잠길 시 유지되는 시간 [=600(10분)]초 단위이며 시간이 지나면 자동 해제됩니다. 설정하지 않으면 무조건 잠기게 되므로 [faillock] 명령어를 이용해 수동으로 해제

 

 

 

ROOT의 계정도 적용하고 싶을 경우는 아래의 옵션 추가

even_deny_root [예시]

auth        required        pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=600

auth        [default=die]   pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600

설정 파일 [수정 후 저장](동일)

[root@localhost pam.d]# vi /etc/pam.d/password-auth

# Generated by authselect on Mon Jun 15 04:15:03 2020
# Do not modify this file manually.

auth        required        pam_env.so

auth        required        pam_faillock.so preauth silent audit deny=5 unlock_time=600 [라인 추가]

auth        required        pam_faildelay.so delay=2000000

auth        sufficient        pam_fprintd.so

auth        [default=1 ignore=ignore success=ok]    pam_succeed_if.so uid >= 1000 quiet

auth        [default=1 ignore=ignore success=ok]    pam_localuser.so

auth        sufficient        pam_unix.so nullok try_first_pass

auth        [default=die]   pam_faillock.so authfail audit deny=5 unlock_time=600 [라인 추가]

auth        requisite         pam_succeed_if.so uid >= 1000 quiet_success

auth        sufficient        pam_sss.so forward_pass

auth        required         pam_deny.so

 

account     required        pam_unix.so

account     sufficient       pam_localuser.so

account     sufficient       pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

account     required        pam_permit.so

account     required        pam_faillock.so [라인 추가]

..

faillock 명령어를 통해 로그인 실패 확인 여부

전체 사용자 확인

[root@localhost faillock]# faillock
test:
When                Type  Source                                           Valid
2020-06-16 02:02:14 RHOST 192.168.232.1                                        V
2020-06-16 02:02:19 RHOST 192.168.232.1                                        V
2020-06-16 02:02:37 RHOST 192.168.232.1                                        V
2020-06-16 02:05:17 RHOST 192.168.232.1                                        V
2020-06-16 02:05:25 RHOST 192.168.232.1                                        V

test2:
When                Type  Source                                           Valid
2020-06-16 02:08:00 RHOST 192.168.232.1                                        V

 

 

특정 사용자만 확인

[root@localhost faillock]# faillock --user test

수동 차단 해제

[root@localhost faillock]# faillock --user test --reset

로그인 한 번이라도 실패한 계정은 아래의 경로에 관리됨
[root@localhost faillock]# ls /var/run/faillock/
test

728x90

원문출처 : https://sa2da-sac.tistory.com/75

 

[U - 03a] 계정 잠금 임계값 설정 (가이드에 없는 내용)

[U - 03] 계정 잠금 임계값 설정 점검 필요성 로그인 실패에 대한 임계값이 설정되어 있지 않으면 반복되는 로그인 시도를 통해 비인가 사용자에게 비밀번호 유추 및 각종 공격에 취약해질 수 있

sa2da-sac.tistory.com

 

개요

  • 취약점 분석 [U - 03] 해당 내용에 대해 보안조치 사항을 추가적으로 기술함
  • <주요정보통신기반시설 기술적 취약점 분석 평가 방법 가이드>에는 기술되지 않은 내용
  • 해당 게시물은 Linux(RHEL)를 기준으로 기술함

 

목차

  1. 운영체제 버전에 따른 system-auth 설정 (pam_tally.so / pam_tally2.so 차이)

  2. pam 모듈 계정 임계 값 설정 순서

  3. system-auth, password-auth 차이
    콘솔 기반 계정 잠금 설정은 system-auth
    GUI 즉 x-window(GNOME ,KDE) 기반의 계정 잠금 설정은 password-auth 

 

 

 

1. 운영체제 버전에 따른 system-auth 설정

  • 주요정보통신기반시설 기술적 취약점 분석 평가 방법 가이드>에는 계정 임계 값 설정 시 pam_tally.so에 대한 설정 내용만 존재 

 

 

 

  • 하지만, 해당 내용은 OS 버전에 따라 다르게 설정되어야 함
    Cent OS 5 이하(RHEL 5) : pam_tally.so
    Cent OS 6 이상(RHEL 6) : pam_tally2.so

 

 

  • Cent OS 6 버전에 pam_tally.so 설정 시 모듈 오류 발생 (password-auth)

 

 

(오류 해결은 single 모드로 실행하여 password-auth 파일 수정)

 

 

 

  • 또한, 로그가 기록되는 파일도 다름
    pam_tally.so : /var/log/faillog
    (로그 출력 명령: pam_tally)

    pam_tally2.so : /var/log/tallylog
    (로그 출력 명령: pam_tally2)

 

 

 

 

 

  • 사용자 잠금 해제 (root 권한으로 수행)
    # pam_tally2 --user <사용자명> --reset

 

 

 

 

 

 

2. 비밀번호 임계값 설정 pam 모듈 순서

  • pam 모듈은 위에서 아래로 순차적으로 수행
  • 같은 모듈로 구성, 설정되어 있어도 순서가 바뀌면 전혀 다른 결과를 발생
  • 따라 순서에 맞게 모듈을 구성해야 함
  • 비밀번호 임계 값 설정은 각 섹션의 2번째 Line에 설정해야 함

 

 

 

 

 

 

 

3. system-auth, password-auth 차이

  • <주요정보통신기반시설 기술적 취약점 분석 평가 방법 가이드>에는 system-auth에 대해서만 기술 
  • system-auth 뿐 아니라 password-auth 설정에 대해서도 고려해야하며, 설정 내용 방법은 system-auth와 동일
  • system-auth, password-auth는 서로 다른 영역의 계정 임계 값을 설정하는 곳으로 임계 값 설정 시 상황에 맞게 설정해야 함

 

/etc/pam.d/system-auth

  • console 기반 로그인 시 계정에 대한 임계 값 설정
  • /etc/pam.d/su 의 인증에 대한 모듈로 su 인증 시 system-auth를 참조

 

/etc/pam.d/passwd-auth

  • GUI 즉 x-window(GNOME ,KDE) 기반 로그인 시 계정에 대한 임계 값 설정
  • /etc/pam.d/sshd 의 인증에 대한 모듈로 sshd 인증 시 password-auth를 참조

 

출처: https://sa2da-sac.tistory.com/75 [사2다의 보안공부 기록:티스토리]

728x90

원문출처 : https://infraboy.tistory.com/94

 

[Linux] RHEL 8 / Rocky 8 | OS 보안 설정 방법

Red Hat Enterprise Linux에서 파생된 리눅스 배포판 CentOS가 2021년 12월 31일 기준으로 수명이 다 되었다고 합니다. CentOS는 RHEL의 소스를 기반으로 철저하게 최신 버전의 RHEL을 포킹하는데 중점을 두어

infraboy.tistory.com

 

Red Hat Enterprise Linux에서 파생된 리눅스 배포판 CentOS가 2021년 12월 31일 기준으로 수명이 다 되었다고 합니다.
CentOS는 RHEL의 소스를 기반으로 철저하게 최신 버전의 RHEL을 포킹하는데 중점을 두어 사용되었으나 이제부터는 RHEL배포 이전에 테스트 기반(Stream버전)만 지원하므로 더이상 우리가 안정적으로 사용했던 CentOS의 장점이 사라졌다. 

다행스럽게 새롭게 RHEL을 포킹하는 Rocky Linux가 생겨났고, 기존 CentOS를 Rocky로 대체하는 분위기가 형성되어있다. 

Rocky Linux는 RHEL8 버전을 포킹하는 프로젝트라 기존 7버전까지 잘 사용하던 보안 설정과 tcp_wrappers부분 (host.allow설정)이 미지원되어 새로운 방법으로 보안설정이 필요로 하게 되었다.

 

[보안 설정]

 

 보안 설정에서 /etc/pam.d/ 이하 system-auth 설정으로 계정 보안 설정이 필요했으나, 8버전 부터 해당 설정 파일을 수동으로 변경하기보다 명령어를 통해 변경하는 것을 권장한다고 합니다.
 패스워드 길이 정책은 아래 경로에서 (기본은 전부 주석) 주석을 해제하고, 필요한 값으로 대체해야 합니다.

1. pam_pwquality 모듈 설정

[root@localhost ~]# vi /etc/security/pwquality.conf    

minlen = 8   (최소 패스워드 길이 8로 설정)
dcredit = 1   (최소 1개 이상 숫자 포함)
ucredit = 1   (최소 1개 이상 대문자 포함)
lcredit = 1   (최소 1개 이상 소문자 포함)
ocredit = 1   (최소 1개 이상 특수문자 포함)
maxrepeat =3   (최대 연속된 동일한 숫자 또는 문자 3회 이상 안됨)  111
maxclassrepeat = 3   (최대 연속된 숫자 또는 문자 반복 3회 이상 안됨)  123
usercheck = 1   (패스워드에 사용자ID 포함 여부- 1 체크, 0 No체크)

2. vi /etc/pam.d/system-auth

아래와 같이 system-auth 파일을 수정하였고, root 또는 사용자 계정으로 접속할 때 특이사항은 없었다.
파란색으로 표기한 내용이 보안 설정을 위해 추가한 내용이며, 그 외는 기본 Default 설정이다.

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authselect is run.
auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=600
auth        required      pam_faillock.so delay=2000000
auth        sufficient    pam_fprintd.so
auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid>=1000 quiet
auth        [default=1 ignore=ignore success=ok] pam_localuser.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600
auth        requisite     pam_succeed_if.so uid>=1000 quiet_success
auth        sufficient    pam_sss.so forward_pass
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid<1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so
account     required      pam_faillock.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

 

 

3. tcp_wrappers 대신 firewall 모듈 사용으로 ssh접근 호스트 정책 제어

아래와 같이 파란색표기된 zone에 IP를 넣어두지 않으면 외부에서 SSH접근 불가

 RHEL 7버전 이하에서는 hosts.allow, hosts.deny 파일에 접근 허용할 호스트 IP를 등록하면 되었으나 8버전부터는 모듈이 지원되지 않아 사용이 불가능하다.
 firewalld 패키지를 사용하여 특정 호스트에 대한 접속 허용을 아래와 같이 지정하면 됩니다.## ssh 서비스를 기본 방화벽에서 제거
# firewall-cmd --permanent --remove-service=ssh
## newzone 이름으로 새로운 zone 추가
# firewall-cmd --permanent --new-zone=newzone
# firewall-cmd --permanent --zone=newzone --add-source=10.0.0.0/24
## 추가된 newzone에 ssh서비스를 추가
# firewall-cmd --permanent --zone=newzone --add-service=ssh
## 방화벽 다시 로드
# firewall-cmd --reload

등록된 Zone 정보를 보고 싶을 때 조회 명령어

# firewall-cmd --list-all-zone
# firewall-cmd --get-zones
# firewall-cmd --get-active-zones

등록된 source를 제거하고 싶을 때 (10.10.10.30 IP를 등록된 zone에서 제거할 때)
# firewall-cmd --permanent --zone=newzone --remove-service=10.10.10.30

4. root 계정 su 제한 설정

 # /etc/pam.d/su  파일에 주석 처리되어 있는 아래 부분 주석 해제 

(수정전) #auth           required        pam_wheel.so use_uid
(수정후) auth           required        pam_wheel.so use_uid

위와같이 저장 후 사용자 계정에서 root접속을 허여할 사용자 계정ID에 아래와 같이 명령어 실행

# usermod --groups wheel 사용자ID
(예시) # usermod --groups wheel infraboy

 

5. 기본 셋팅(Application 성격에 맞게) ulimits 제한 설정   --- 보안설정은 아님

*               soft    core            unlimited
*               hard    core            unlimited
사용자ID      soft    nproc           16384
사용자ID      hard    nproc           16384
사용자ID      soft    nofile          131072
사용자ID      hard    nofile          131072
root            soft    nofile          131072
root            hard    nofile          131072

 

6. 패스워드 만료일 설정 (이후 설정된 계정에만 적용되며 기존 계정에는 적용 안됨)
 아래와 같이 적용해야 보안 심사에서 귀찮게 안함.

# vi /etc/login.defs
PASS_MAX_DAYS 90     (90~180일 권장)
PASS_MIN_DAYS 90      (MAX값과 동일하게 설정)
PASS_MIN_LEN 8          (패스워드 최소 길이 설정)
PASS_WARN_AGE 7

* 특정 계정에는 패스워드 만료를 안먹이도록 설정이 필요할 수 있음. 
  (스케줄링에 의한 계정 등)
# chage -l 사용자ID       (사용자ID에 대한 패스워드 정책 조회)
# chage -E -1 -I 0 -m 0 -M 99999 사용자ID      (사용자ID에 대해 패스워드 만료 안되게 설정)

 

7. 로그인 접속 세션 시간 설정 및 History 조회 시 타임라인 설정

# vi /etc/profile

HISTSIZE=2000   (기본 1000)
HISTTIMEFORMAT="%F %T  " (%T뒤에 스페이스 붙여야 시간과 명령어가 떨어져서 보임)
TMOUT=600   (세션 타임아웃 설정- 보안 가이드에 맞게 설정)
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT TMOUT

History 명령어 시 날짜 시간 표기

 

8. 부팅 시 서비스 자동 시작

# systemctl -t service list-unit-files
# systemctl enable "서비스 Unit"

+ Recent posts