리눅스 터미널에서 복사 붙이기

리눅스/OS 일반|2024. 4. 23. 16:14
반응형

윈도우즈 사용자는 복사 붙이기를 Ctrl + C, Ctrl + V 로 많이 사용하는데,

리눅스 터미널의 CLI 환경을 많이 사용하다 보면 위 단축키가 먹히지 않아 다른 방법으로 복사 붙이기를 합니다.

GUI 환경에서도 마우스 우클릭으로 해당 작업이 가능하지만 주로 키보드와 병행하여 사용할때는 아래 방법이 더 빠를 수 있으니 한 번 사용해 보세요.

 

- 복사 : Ctrl + Insert 또는 Ctrl + Shift + C

- 붙이기 : Shift + Insert 또는 Ctrl + Shift + V

 

반응형

댓글()

서버에 로그인 (계정 환경 불러오기) 될때마다 Telegram 으로 관리자에게 알람 주는 방법

리눅스/Security|2024. 4. 18. 12:23
반응형

리눅스 서버에 로그인 (SSH 또는 로컬) 이벤트가 발생하면 Telegram bot 을 이용해 관리자에게 알람을 주는 방법입니다.

접속자의 IP 와 계정 정보를 Telegram 메세지로 발송 함으로써 보안 이슈를 감지하고 차단할 수 있습니다.

이러한 기능을 구현하려면 몇 가지 단계를 따라야 합니다.

이 작업을 수행하기 위해서는 Bash 스크립트 작성, Telegram Bot 생성, CHAT_ID 수신 허용, 그리고 Profile 환경 설정 파일에 로그인 이벤트와 스크립트를 연동하는 과정이 포함됩니다.

 


1. Telegram Bot 생성 및 API 토큰 획득

 

Telegram Bot 생성: Telegram 에서 BotFather 를 검색하여 시작합니다. /newbot 명령을 입력하고, Bot 의 이름과 유저네임을 설정합니다.

API 토큰 획득 : Bot 생성이 완료되면, BotFather 는 API 토큰을 제공합니다. 이 토큰은 HTTP API 를 통해 메시지를 보낼 때 사용됩니다.

 

텔레그램에서 @BotFather 검색 > 대화창에 /newbot 입력 이후, 요청하는 절차대로 진행하면 됩니다.

메세지 수신을 위해서는 텔레그램에서 봇이름 검색 후 대화창에서 [시작] 버튼을 눌러줍니다. 그래야 봇이 보내주는 메세지를 로그인 계정에서 받을 수 있는 허용 상태가 됩니다.

 

 

2. Bash 스크립트 작성

 

아래는 서버에 로그인 시 실행될 Bash 스크립트의 예입니다.

이 스크립트는 사용자 이름과 IP 주소를 추출하여 Telegram Bot API를 사용해 메시지를 보냅니다.

 

# vi /etc/alert_login.sh

#!/bin/bash

# Telegram 설정

API_KEY="12345678:ABFNrljuQ4nrwbChhMlx1z-tA36Ww" # 텔레그램 봇 API KEY
CHAT_ID="00112233" # 수신자 CHAT_ID

# 로그인 정보 추출

USER=`whoami`
TTY=`tty |sed -e 's/\/dev\///'`
IP_ADDRESS=`w |grep "$TTY " |awk {'print $3'}`

# 메시지 전송

MESSAGE="서버 로그인이 감지 되었습니다.
- 서버 : 파일 서버
- 로그인 ID : $USER
- 접속자 IP : $IP_ADDRESS"
URL="https://api.telegram.org/bot$API_KEY/sendMessage"

curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE" > /dev/null 2>&1

 

* 설명

whoami 명령 : 현재 로그인한 사용자의 이름을 반환합니다.

"$TTY " : 문자 뒤에 한칸 띄운 이유는 동일한 숫자로 시작되는 다른 TTY 를 가져오지 않기 위해서 입니다.

curl : 마지막에 null 처리하여 처리 결과를 콘솔에 출력시키지 않습니다.

 

스크립트 파일에 실행 권한을 부여합니다:

# chmod +x /etc/alert_login.sh

 

 

3. Profile 환경 설정 파일에 연결

 

서버에 로그인 시 스크립트가 자동으로 실행되도록 하려면, /etc/profile 파일에 스크립트 실행 명령어를 추가합니다:

# echo "sh /etc/alert_login.sh" >> /etc/profile

 

* 주의

위 설정은 모든 로그인 계정에서 강제로 실행됩니다.

특정 사용자의 계정에게만 적용하고자 한다면 개별 사용자의 .bash_profile 또는 .bashrc 에 스크립트를 추가하면 됩니다.

 

위의 단계를 완료하면, 서버에 로그인할 때마다 해당 사용자의 로그인 정보가 Telegram Bot 을 통해 관리자에게 알림으로 전송됩니다.

 

 

4. 쉘스크립트 암호화 (선택)

 

쉘스크립트에 Telegram Bot API KEY 와 사용자의 CHAT_ID 가 포함되어 있어 누군가 확인할 우려가 있을 경우 쉘스크립트를 바이너리 파일로 변경할 수 있습니다.

우선 필요한 패키지를 설치하고 위에서 작성했던 쉘스크립트를 암호화 합니다.

# apt -y install shc

# shc -f /etc/alert_login.sh -o /etc/alert_login

 

/etc/profile 파일에서 쉘스크립트 실행 명령을 바이너리 파일 실행 명령으로 바꿉니다.

- 기존 : sh /etc/alert_login.sh

- 변경 : /etc/alert_login
# sed -i 's/sh \/etc\/alert_login.sh/\/etc\/alert_login/' /etc/profile

 

변경이 완료되었으면 테스트를 해봅니다. 이상이 없는 경우 기존 쉘스크립트는 삭제해 두는 것이 좋습니다.

 

반응형

댓글()

리눅스 Desktop 에서 Alert 메세지창 띄우기

리눅스/OS 일반|2024. 4. 3. 06:32
반응형

JavaScript 의 Alert 와 같이 리눅스 Desktop 사용시 화면 중앙에 메세지를 띄우는 방법입니다.

 

첫번재 방법

# apt -y install zenity

# zenity --info --title="알림" --text="Sysdocu 프로세스가 실행 중입니다."

 

두번째 방법

# apt install libnotify-bin

# notify-send "알림" "Sysdocu 프로세스가 실행 중입니다."

 

반응형

댓글()

Docker 기본 root 디렉토리 변경하기

반응형

디스크 부족 등의 이유로 디렉토리를 변경해야 할 경우가 있습니다.

설정파일을 통해 간단히 변경이 가능합니다.

 

1. 확인

현재 Docker 기본 root 디렉토리를 확인합니다.

# docker info |grep Root
 Docker Root Dir: /var/lib/docker

 

2. 디렉토리 설정 변경

Docker 의 설정 파일을 수정하여 디렉토리를 변경할 수 있습니다.

아래는 기본 디렉토리를 /data 로 변경한 예 입니다.

(파일이 없을경우 생성하면 됩니다)

# vi /etc/docker/daemon.json

{
        "data-root" : "/data"
}

 

3. 적용하기

Docker 데몬을 재시작 하면 변경한 설정이 적용되고, 디렉토리를 조회하면 새로 구성된 파일이 생성 되었음을 알 수 있습니다.

# systemctl restart docker

# ls -al /data
total 52
drwx--x--- 12 root root 4096 Apr  1 05:56 .
drwxr-xr-x 20 root root 4096 Mar 31 23:30 ..
drwx--x--x  4 root root 4096 Apr  1 05:56 buildkit
drwx--x---  2 root root 4096 Apr  1 05:56 containers
-rw-------  1 root root   36 Apr  1 05:56 engine-id
drwx------  3 root root 4096 Apr  1 05:56 image
drwxr-x---  3 root root 4096 Apr  1 05:56 network
drwx--x---  3 root root 4096 Apr  1 05:56 overlay2
drwx------  4 root root 4096 Apr  1 05:56 plugins
drwx------  2 root root 4096 Apr  1 05:56 runtimes
drwx------  2 root root 4096 Apr  1 05:56 swarm
drwx------  2 root root 4096 Apr  1 05:56 tmp
drwx-----x  2 root root 4096 Apr  1 05:56 volumes

 

반응형

댓글()

Ubuntu 22.04 에서 Apache2 와 Tomcat9 연동하기

리눅스/APACHE|2024. 3. 29. 12:19
반응형

Ubuntu 22.04 에서 Apache2 와 Tomcat9 를 연동하는 방법입니다.

본 매뉴얼의 목적은 PHP 와 JSP 를 함께 사용하용하는데 있습니다.

설명은 최소화 하고 명령어 실행 절차만 기록하였습니다.

 

1. Apache 설치

# apt -y update

# apt -y install apache2

 

2. PHP 설치

# apt -y install php libapache2-mod-php php-mysqli

 

3. Tomcat 설치

# apt -y install default-jdk tomcat9 tomcat9-admin tomcat9-user

 

4. Mod JK 설치

Apache Tomcat 연결 모듈을 설치합니다.

# apt -y install libapache2-mod-jk

 

5. Apache 설정

아래 속성 파일을 생성합니다.

# vi /etc/apache2/workers.properties

workers.tomcat_home = /var/lib/tomcat9    # 톰캣 설치 경로
workers.java_home = /usr/lib/jvm/java-11-openjdk-amd64    # JDK 설치 경로
 
worker.list = tomcat1
 
worker.tomcat1.port = 8009
worker.tomcat1.host = localhost    # 톰캣이 다른 서버에 설치되어있으면 IP 입력
worker.tomcat1.type = ajp13
worker.tomcat1.lbfactor = 1

 

생성한 파일을 지정합니다.

# vi /etc/apache2/mods-available/jk.conf

...(생략)...

<IfModule jk_module>

    # We need a workers file exactly once
    # and in the global server
    JkWorkersFile /etc/apache2/workers.properties

...(생략)... 

 

VirtualHost 설정을 변경합니다.

(Tomcat 웹소스 디렉토리로 변경, Tomcat 처리할 확장자 추가)

# vi /etc/apache2/sites-available/000-default.conf

...(생략)...

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/lib/tomcat9/webapps/ROOT/

        JkMount /*.jsp tomcat1
        JkMount /*.json tomcat1
        JkMount /*.xml tomcat1
        JkMount /*.do tomcat1

...(생략)... 

 

Tomcat 웹소스 디렉토리에 접근할 수 있도록 디렉토리 옵션을 추가합니다.

# vi /etc/apache2/apache2.conf

...(생략)...

<Directory /var/lib/tomcat9/webapps/ROOT>
    Require all granted
</Directory>

 

6. Tomcat 설정

# vi /var/lib/tomcat9/conf/server.xml

...(생략)...

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector protocol="AJP/1.3"
               address="0.0.0.0"
               port="8009"
               secretRequired="false"
               redirectPort="8443" />

...(생략)... 

 

Apache2 와 Tomcat9 를 재시작하여 설정을 적용합니다.

# systemctl restart apache2

# systemctl restart tomcat9

 

7. 테스트

테스트를 위해 PHP, JSP 샘플 파일을 생성하고 접속해 봅니다.

# cd /var/lib/tomcat9/webapps/ROOT/

# vi index.php

<?php
echo "Good Job, PHP !!";
?>

 

# vi index.jsp

Good Job, JSP !!<br>
The current time is: <%= new java.util.Date() %>

 

서버 도메인이나 IP 로 생성한 파일에 접근해 봅니다.

# curl http://sysdocu.kr/index.php

Good Job, PHP !!

 

# curl http://sysdocu.kr/index.jsp

Good Job, JSP !!<br>

The current time is: Fri Mar 29 14:05:22 KST 2024

 

반응형

댓글()

리눅스 한국 시간 동기화

리눅스/OS 일반|2024. 3. 29. 10:16
반응형

Rocky Linux 9 / Ubuntu 22.04

# timedatectl set-timezone Asia/Seoul

 

반응형

댓글()

Rocky Linux 9 에서 Docker 설치하기

반응형

Rocky Linux 9 에서 Docker 설치하는 방법을 기술하였습니다.

 

1. Docker 설치

# dns -y update

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

# dnf -y install docker-ce docker-ce-cli containerd.io

# systemctl enable --now docker

# docker --version

Docker version 26.0.0, build 2ae903e

 

2. Docker compose 설치

# curl -L "https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
Docker Compose version v2.26.0

 

반응형

댓글()

Docker data root directory 변경하기

반응형

이미지 용량이 커서 별도의 디스크로 저장하고자 할 경우에 Docker 설정 파일에서 디렉토리를 변경해 주어야 합니다.

물론 같은 디렉토리로 마운트하여 사용이 가능하지만, 여기에서는 추가한 디스크의 마운트 디렉토리로 변경하는 방법을 안내합니다.

 

1. HDD 추가

SATA 4TB 디스크의 파티션 및 파일시스템을 생성하고 /data 디렉토리로 마운트 해 두었습니다. (방법 생략)

 

2. Docker 중지

Docker 가 실행중일 경우 중지합니다.

# systemctl stop docker

 

3. 기존 데이터 복사

신규 디렉토리의 퍼미션을 원래 디렉토리와 동일하게 합니다.

# chmod 710 /data

기존에 사용하던 docker 디렉토리를 신규 디렉토리 아래로 복사해 넣습니다.

# cp -arp /var/lib/docker /data/

 

4. Docker 설정 변경

Docker 설정 파일을 열고 Docker data root directory 를 변경합니다.

파일이 없는 경우 생성하면 됩니다.

# vi /etc/docker/daemon.json

{
        "data-root": "/data/docker/"
}

 

5. Docker 실행

변경된 디렉토리를 적용하기 위해 Docker 데몬을 가동합니다.

# systemctl start docker

 

전에 사용하던 이미지가 있었다면, 그대로 출력이 잘 되는지 확인합니다.

# docker images

 

반응형

댓글()

기본 쉘 변경하기 (리눅스 쉘에서 방향키, 탭이 잘 동작하지 않을때)

리눅스/OS 일반|2024. 3. 25. 14:18
반응형

[증상]

터미널을 열고 방향키를 움직이면 커서가 움직이거나 히스토리가 보이지 않고 ^]]A 등의 문자가 찍힙니다.

이는 sh 쉘의 특징입니다.

 

[해결]

대부분의 OS 는 bash 쉘을 가지고 있으므로 bash 쉘로 변경하면 해결 됩니다.

# bash

 

편리하게 사용하도록 추가 조치를 합니다.

서버 로그인할때 마다 자동으로 bash 쉘 환경으로 적용되도록 기본 쉘을 변경합니다.

# chsh -s /bin/bash

 

* 참고

사용 가능한 쉘 종류 확인 명령어 : cat /etc/shells

 

반응형

댓글()

IwinV LinuxMint 21.3 에 XRDP 구성하기

리눅스/OS 일반|2024. 3. 22. 09:54
반응형

< IwinV VDI 상품 전용 >

XRDP 를 구성해서 원격접속 가능하도록 하는 방법입니다.

 

# apt -y update

# apt -y install xrdp xorgxrdp
# useradd -m sysdocu -p $(openssl passwd 12345678)
# usermod -aG sudo sysdocu

# sed -i '11 a unset DBUS_SESSION_BUS_ADDRESS' /etc/xrdp/startwm.sh
# sed -i '12 a unset XDG_RUNTIME_DIR' /etc/xrdp/startwm.sh

# systemctl restart xrdp

 

이제 XRDP 포트 (3389) 를 이용해 원격 접근이 가능합니다.

반응형

댓글()

Openstack Magnum 환경의 Kubernetes Cluster 에 CF 에서 접근 가능한 Kubernetes API 계정 생성하기

리눅스/PaaS|2024. 3. 7. 08:52
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.