반응형

jboss migration 프로그램 다운로드
 https://github.com/wildfly/wildfly-server-migration/releases

 

샘플 구성환경
-----------------------------------------------------------
Jboss 6.4 경로: /SW/jboss/jboss-eap-6.4
Jboss 7.2 경로: /SW/jboss/jboss-eap-7.2
-----------------------------------------------------------

메뉴얼 jboss-server-migration/docs/user-guide/index.html

 

1.jboss 7.2 설치

 /SW/jboss에 jboss-eap-7.2.5.zip 파일 업로드 (Jboss EAP 7.2에서 패치5가 적용된 파일)
 $ cd /SW/jboss
 $ unzip jboss-eap-7.2.5.zip

 

2.마이그레이션 툴 압축 해제 

/SW/jboss에 jboss-server-migration-1.7.0.Final.zip 파일 업로드
 $ unzip jboss-server-migration-1.7.0.Final.zip
 $ cd jboss-server-migration

 

3.마이그레이션 환경파일 수정

vi /SW/jboss/jboss-server-migration/configuration/environment.properties

####### SERVER PATHS
# Jboss EAP 6.4의 정보
server.source.standalone.serverDir=/SW/jboss/jboss-eap-6.4/standalone
server.source.standalone.configDir=/SW/jboss/jboss-eap-6.4/standalone/configuration
# 마이그레이션 환경파일 설정(모두 마이그레이션 할 경우: standalone.xml,standalone-full.xml,standalone-ha.xml,standalone-full-ha.xml)
server.source.standalone.configFiles=standalone.xml

# Jboss EAP 7.2 설치 경로
server.target.standalone.serverDir=/SW/jboss/jboss-eap-7.2/standalone
server.target.standalone.configDir=/SW/jboss/jboss-eap-7.2/standalone/configuration

# deployment 이관
deployments.migrate-deployments.skip=false
 
# 모듈 포함(jdbc 드라이버)
modules.includes=org.mariadb


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

####### SERVER PATHS

# Jboss EAP 6.4의 정보
server.source.standalone.serverDir=/SW/jboss/jboss-eap-6.4/standalone
server.source.standalone.configDir=/SW/jboss/jboss-eap-6.4/standalone/configuration
# 마이그레이션 환경파일 설정(모두 마이그레이션 할 경우: standalone.xml,standalone-full.xml,standalone-ha.xml,standalone-full-ha.xml)
server.source.standalone.configFiles=standalone.xml

# Jboss EAP 7.2 설치 경로
server.target.standalone.serverDir=/SW/jboss/jboss-eap-7.2/standalone
server.target.standalone.configDir=/SW/jboss/jboss-eap-7.2/standalone/configuration

# deployment 이관
deployments.migrate-deployments.skip=false
 
# 모듈 포함(jdbc 드라이버)
modules.includes=org.mariadb

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

 

4.마이그레이션 수행

$ ./jboss-server-migration.sh -e /SW/jboss/jboss-server-migration/configuration/environment.properties -s /SW/jboss/jboss-eap-6.4 -t /SW/jboss/jboss-eap-7.2
----------------------------------------------------------
----  JBoss Server Migration Tool  -----------------------
----------------------------------------------------------Retrieving servers...
 INFO  SOURCE server name: EAP, version: 6.4.0.GA.
 INFO  TARGET server name: JBoss EAP, version: 7.2.5.GA.----------------------------------------------------------
----------------------------------------------------------Server migration starting... INFO  --- Migrating modules requested by environment... INFO  Module org.mariadb:main migrated.Migrate the source's standalone server?
yes/no? yes INFO  --- Migrating standalone server... INFO  No source's standalone content found to migrate. INFO  Source's standalone configurations found: [standalone.xml]Migrate all configurations?
yes/no? yes INFO  Migrating standalone configuration standalone.xml...
 INFO  Unsupported extensions removed: [org.jboss.as.threads]
 INFO  Unsupported subsystems removed: [urn:jboss:domain:threads:1.1]
 INFO  Module com.mariadb:main migrated.
 INFO  Subsystem elytron added.
 INFO  Subsystem web migrated.
 INFO  Subsystem undertow updated.
 INFO  Subsystem infinispan updated.
 INFO  Subsystem ee updated.
 INFO  Subsystem ejb3 updated.
 INFO  Subsystem remoting updated.
 INFO  Subsystem batch-jberet added.
 INFO  Subsystem core-management added.
 INFO  Subsystem request-controller added.
 INFO  Subsystem security-manager added.
 INFO  Subsystem singleton added.
 INFO  Subsystem discovery added.
 INFO  Subsystem ee-security added.
 INFO  Subsystem microprofile-config-smallrye added.
 INFO  Subsystem microprofile-health-smallrye added.
 INFO  Subsystem microprofile-opentracing-smallrye added.
 INFO  HTTP Upgrade Management configured.
 INFO  Socket binding's port expressions added.
 INFO  Security realms migrated.
 INFO  Security realm ApplicationRealm SSL server identity configured.
 INFO  Persistent deployments found: [test_page.war]This tool is not able to assert if persistent deployments found are compatible with the target server, skip persistent deployments migration?
yes/no? no
 INFO  Persistent deployment test_page.war migrated.Migrate the source's managed domain?
yes/no? noServer migration done. INFO
-------------------------------------------------------------------------------------------
 Task Summary
------------------------------------------------------------------------------------------- server ........................................................................... SUCCESS
  modules.migrate-modules-requested-by-user ....................................... SUCCESS
   modules.migrate-modules-requested-by-user.migrate-module(id=org.mariadb:main) .. SUCCESS
  standalone ...................................................................... SUCCESS
   standalone-configurations ...................................................... SUCCESS
    standalone-configuration(source=standalone.xml) ............................... SUCCESS-------------------------------------------------------------------------------------------
 Migration Result: SUCCESS
-------------------------------------------------------------------------------------------

 

5.jboss-eap 6.4의 실행/종료 스크립트 jboss-eap 7.2로 복사 후 환경에 맞게 수정

 

6.Jboss-eap 7.2 기동 및 서비스 점검

안녕하세요!
오늘은 IT 직업중 인프라 직무에 대해 설명해드리려고 합니다.
 
일반적으로 "IT 한다" 그러면 "개발자야?" 라고 물어보시는 분들이 대부분일 것 입니다.
실제로는 개발자 외에도 인프라 운영 직무가 있습니다.

보통 개발된 프로그램이 단독으로 서비스를 실행한다고 생각하는 경우가 많은데, 시스템을 구축하고 서비스를 제공하려면 서버소프트웨어가 필요합니다.
 

 

시스템 구축을 위한 필수 소프트웨어 3가지

  • WEB(웹): 사용자와 웹 애플리케이션이 상호작용하는 인터페이스로, 브라우저를 통해 콘텐츠와 서비스를 제공하는 기능을 제공합니다. 웹 페이지의 디자인, 이미지 등 정적 페이지를 표시합니다.
  • WAS(웹 애플리케이션 서버): 웹 애플리케이션의 비즈니스 로직을 처리하는 서버로, 사용자의 요청을 데이터베이스와 연결하여 동적인 콘텐츠를 생성합니다. 개발자가 개발한 어플케이션은 WAS에 배포되어 실행됩니다.
  • DB(데이터베이스): 데이터를 체계적으로 저장하고 관리하는 시스템으로, 웹 애플리케이션이 필요한 정보를 저장하고 검색할 수 있도록 지원합니다.

서버와 소프트웨어를 구성하여 사용자에게 안전하게 서비스하기 위해서는 네트워크보안도 굉장히 중요합니다.
 
이러한 기반 시스템을 운영하는 사람들은 인프라 관리자라고 부릅니다. 인프라 직무는 위에 언급해 드린 분야별로 5가지가 존재합니다. 시스템(서버), 미들웨어(WEB/WAS), 데이터베이스(DB), 네트워크, 보안입니다.
 

인프라 관리자의 역할

  • 시스템 관리자: IDC 센터에 있는 서버를 관리하며, 서버는 성능이 좋은 안정적인 PC로 이해할 수 있습니다. 서버 관리자는 CPU, 메모리, 디스크, 네트워크 트래픽 등의 사용량을 모니터링하고, 데이터 백업 및 복구 작업을 수행합니다. 또한, 서버 가상화 기술을 사용해 서버 자원을 효율적으로 관리하고 최적화할 수 있습니다.

  • 미들웨어 관리자: 소프트웨어 관리자 역할을 합니다. 애플리케이션은 웹 서버(WEB)나 웹 애플리케이션 서버(WAS)와 같은 소프트웨어 내에서 동작하며, 미들웨어 관리자는 이 소프트웨어가 정상적으로 작동하는지 관리합니다. 또한 서비스에 필요한 다양한 솔루션(공인인증, 대외기관 통신, 개인정보 암호화, 리포트 디자이너, 서비스 모니터링 제품 등)을 운영합니다. 미들웨어 관리는 시스템의 성능과 안정성을 보장하기 위해 지속적인 업데이트와 패치 관리도 포함됩니다.

  • 데이터베이스 관리자(DBA): 시스템에서 사용하는 대용량 데이터베이스를 관리합니다. 데이터베이스 상태 모니터링, 테이블 생성, 설정 튜닝, 백업 및 복구 작업 등을 수행합니다. 또한, 데이터 보안과 접근 권한 관리, 데이터베이스 성능 최적화를 위한 지표 분석 및 쿼리 튜닝도 중요한 업무입니다.

  • 네트워크 관리자: 네트워크가 원활하게 작동하도록 라우팅 설정, 방화벽 설정, 네트워크 장비(L4) 설정 및 모니터링 업무를 담당합니다. 방화벽은 보안 담당자가 관리하는 경우가 많지만, 네트워크 관리자는 네트워크의 안정성과 보안을 위해 다양한 보안 정책을 시행합니다. 또한, VPN과 같은 원격 접속 솔루션을 구성하고 유지 관리하여 외부 사용자나 지사와의 원활한 통신을 지원합니다.

  • 보안 관리자: 시스템과 네트워크의 보안을 책임지며, 각종 보안 정책을 수립하고 실행합니다. 보안 관리자는 침입 탐지 시스템(IDS), 방화벽, VPN 등의 보안 장비를 관리하고, 취약점 분석과 보안 패치 작업을 수행하여 시스템을 안전하게 유지합니다. 또한, 보안 사고 발생 시 대응 절차를 마련하고, 내부 교육을 통해 보안 인식을 높이는 역할도 수행합니다.


각 담당자의 역할을 쉽게 이해할 수 있도록 구성도를 그려보았습니다.

이중화된 시스템 구성도(icon by icon8)

 
[추가 설명]
-L4 스위치는 사용자의 요청을 여러대의 서버로 분산해주는 역할(Load Balancing)을 합니다.
-WEB/WAS 서버가 2대인(이중화) 이유는 1대의 서버에 문제가 생겨도 다른 서버로 정상적으로 서비스하기 위함입니다.
-그림에는 표시되어 있지 않지만 DB도 2대 이상(이중화)인 경우가 많습니다.
-시스템 구성도는 회사 및 업무에 특성에 따라 차이가 있을 수 있습니다.
 
오늘은 여기서 포스팅을 마치겠습니다.
내용이 도움이 되셨다면 공감! 구독! 부탁드리겠습니다.^^
 
감사합니다!

Docker는 애플리케이션을 "컨테이너"라는 독립된 환경에서 실행할 수 있도록 해주는 "컨테이너화 플랫폼"입니다. Docker는 애플리케이션과 필요한 라이브러리, 종속성을 하나의 이미지로 묶어 배포하므로, 개발 환경과 운영 환경 간의 차이로 발생하는 문제를 줄여주며 일관된 환경에서 애플리케이션을 실행할 수 있게 해줍니다.


Docker의 개념

- 컨테이너: 애플리케이션과 그 실행에 필요한 모든 요소를 포함하는 독립적인 실행 환경입니다. 컨테이너는 가상 머신(VM)과 달리 운영 체제를 공유하여 가볍고 빠르게 실행됩니다.
- 이미지: 컨테이너의 원본 파일 시스템입니다. 이미지는 코드, 런타임, 라이브러리 등 컨테이너 실행에 필요한 모든 요소를 포함하며, 이를 기반으로 여러 컨테이너를 생성할 수 있습니다.
- Docker Hub: Docker 이미지 저장소로, 다양한 이미지들을 다운로드하여 사용할 수 있습니다.

 

Docker의 활용

1. 개발 환경 설정: Docker를 이용해 특정 버전의 개발 환경을 쉽게 설정하고 공유할 수 있습니다.
2. 애플리케이션 배포: 일관된 환경을 제공하므로 개발에서 테스트, 운영까지 같은 이미지를 사용해 손쉽게 배포할 수 있습니다.
3. 마이크로서비스: 각 서비스가 독립된 컨테이너에서 실행되도록 구성해, 마이크로서비스 아키텍처를 효과적으로 구현할 수 있습니다.
4. 지속적 통합 및 배포(CI/CD): Docker는 자동화된 테스트와 배포 파이프라인에서 일관된 환경을 제공하여 신속한 CI/CD 구현을 지원합니다.

Docker는 개발과 배포의 일관성을 유지하고, 경량화된 컨테이너 환경을 통해 서버 자원을 효율적으로 사용할 수 있게 하여, 개발자와 운영팀의 생산성을 높여줍니다.

 

이미지 관리

 

이미지 검색하기
sudo docker search centos

이미지를 다운로드
sudo docker pull centos:latest

이미지 목록 출력
sudo docker images

이미지 삭제
sudo docker rmi ubuntu:latest

 

 

컨테이너 관리

컨테이너 생성하기
sudo docker run -i -t --name hello ubuntu /bin/bash
 > -i(interactive), -t(Pseudo-tty) 옵션을 사용하면 실행된 Bash 셸에 입력 및 출력을 할 수 있습니다.
 > --name 옵션으로 컨테이너의 이름을 지정할 수 있습니다. 이름을 지정하지 않으면 Docker가 자동으로 이름을 생성하여 지정합니다


컨테이너 시작
sudo docker start hello

컨테이너 종료
sudo docker stop hello

컨테이너 재시작
sudo docker restart hello

컨테이너 접속
sudo docker attach hello

컨테이너 안의 명령 실행
sudo docker exec hello echo "Hello World"

실행된 컨테이너 목록을 출력
sudo docker ps

전체 컨테이너 목록을 출력
sudo docker ps -a

컨테이너 삭제
sudo docker rm hello

 

 

데이터베이스 구성 예시

 

mysql 구성

 -컨테이너 생성
 $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

-새로운 컨테이너를 시작하고 원래  mysql 컨테이너에 대해  mysql 명령을 실행
 $ docker run -it --netwo성rk some-network --rm mysql mysql -hsome-mysql -uexample-user -p

-이 이미지는 Docker가 아닌 또는 원격 인스턴스의 클라이언트로도 사용할 수 있습니다.
 $ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

Mysql 컨테이너에 root계정의 bash로 접속
$ docker exec -it -u root mysql-5.7 bash


Oracle 11g 구성

Oracle 11g 다운로드
 $ docker pull jaspeen/oracle-xe-11g

Oracle 11g 컨테이너 생성
 $ docker run --name oracle11c -d -p 1521:1521 jaspeen/oracle-xe-11g

oracle 11g 실행하기 
docker exec -it oracle11g sqlplus

계정: system  암호: oracle


Dockerfile 작성

FROM ubuntu:14.04
MAINTAINER Foo Bar <foo@bar.com></foo@bar.com>

RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]

WORKDIR /etc/nginx

CMD ["nginx"]

EXPOSE 80
EXPOSE 443


-FROM: 어떤 이미지를 기반으로 할지 설정합니다. Docker 이미지는 기존에 만들어진 이미지를 기반으로 생성합니다. <이미지 이름>:<태그> 형식으로 설정합니다.
-MAINTAINER: 메인테이너 정보입니다.
-RUN: 셸 스크립트 혹은 명령을 실행합니다.  
 > 이미지 생성 중에는 사용자 입력을 받을 수 없으므로 apt-get install 명령에서 -y 옵션을 사용합니다(yum install도 동일).
 > 나머지는 nginx 설정입니다.
 > VOLUME: 호스트와 공유할 디렉터리 목록입니다. docker run 명령에서 -v 옵션으로 설정할 수 있습니다.
   예) -v /root/data:/data는 호스트의 /root/data 디렉터리를 Docker 컨테이너의 /data 디렉터리에 연결합니다.
-CMD: 컨테이너가 시작되었을 때 실행할 실행 파일 또는 셸 스크립트입니다.
-WORKDIR: CMD에서 설정한 실행 파일이 실행될 디렉터리입니다.
-EXPOSE: 호스트와 연결할 포트 번호입니다.

 

Dockerfile 설명(Jboss)

# jboss/base-jdk:8 이미지를 기본으로 한다.
FROM jboss/base-jdk:8
 
# local directory에 있는 wildfly-12.0.0.Final.tar.gz를 생성되는 Docker Image 내부의 /opt 로 복사 및 압축을 해제한다.
# local directory에 있는 파일의 경로는 해당 Dockerfile의 상대경로를 작성해야 한다.
ADD ./wildfly-12.0.0.Final.tar.gz /opt
 
# 생성되는 Docker Image의 환경변수를 지정한다.
ENV WILDFLY_VERSION 12.0.0.Final
ENV JBOSS_HOME /was/wildfly-$WILDFLY_VERSION
 
# 생성되는 Docker Image의 User를 root로 변경한다.
USER root
 
# 환경변수로 지정한 JBOSS_HOME Directory의 파일 소유자, 권한을 변경한다.
# 예제에서는 jboss 사용자에게 JBOSS_HOME Directory를 접근할 수 있는 권한을 주고 있음.
RUN chown -R jboss:0 ${JBOSS_HOME} \
    && chmod -R g+rw ${JBOSS_HOME}
 
# 환경변수 지정(Wildfly를 background에서 동작하게 한다.)
# 해당 옵션을 지정하지 않으면 컨테이너를 종료시킬 때 강제로 종료(sudo docker kill {containerID})시켜야 한다.
ENV LAUNCH_JBOSS_IN_BACKGROUND true
 
# 현재 사용자를 root에서 jboss로 변경한다.
USER jboss
 
# 컨테이너가 실행되었을 때 요청을 기다리고 있는 포트를 지정한다.
EXPOSE 8080
 
# 컨테이너가 실행되었을 때 실행되는 명령어를 정의한다.
# 예제에서는 standalone로 wildfly를 실행하고 모든 ip address에 bind를 하는 옵션을 주고 있다.(ip지정시 해당 ip만 접속이 허용됨)
CMD ["/was/wildfly-12.0.0.Final/bin/standalone.sh", "-b", "0.0.0.0"]


이미지 생성 및 파일 이동

이미지 생성(Dockerfile)
sudo docker build --tag hello:0.1 .

이미지 히스토리 조회
sudo docker history hello:0.1

컨테이너의 파일 꺼내기
sudo docker cp hello-nginx:/etc/nginx/nginx.conf ./

컨테이너의 변경사항을 이미지로 생성
sudo docker commit -; "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2

컨테이너에서 변경된 파일 확인
sudo docker diff hello-nginx

이미지,컨테이너 세부 정보 출력
sudo docker inspect hello-nginx

대기업 IT 회사들이 어떤 일을 하는지 업무 경력을 바탕으로 알기 쉽게 설명해드리겠습니다.

 

대기업 IT회사의 공통의 업무

 

대기업 그룹사에는 대표 회사들이 있습니다. 이들 그룹사는 반도체, 금융, 건설, 통신, 화학, 제조, 디스플레이 등의 다양한 서비스를 제공합니다.

이런 대기업 그룹사에는 IT 계열사도 포함되어 있으며, IT 계열사에서 각 회사의 서비스들을 운영하는 구조입니다.

각 그룹사에 내 자체 IT 인력이 존재하지만, 대부분의 IT 운영은 IT 계열사가 담당하게 됩니다.

 

SM (System Management) 과 SI (System Integration)

  • SM(System Management):이미 구축된 시스템을 운영하고 유지보수하는 업무입니다. 주요 역할로는 시스템의 안정적 운영, 장애 대응, 보안 관리, 성능 개선 등이 포함됩니다.
  • SI(System Integration): 새로운 시스템을 설계하고 구축하는 업무입니다. 다양한 기술과 솔루션을 조합해 고객의 요구에 맞는 시스템을 개발하는 것이 주요 역할입니다.

그룹사의 시스템 운영 업무는 SM, 그룹사 및 타 회사의 시스템 구축 업무는 SI로 이해하시면 됩니다.

 

시스템과 서비스

  • 시스템하드웨어, 소프트웨어, 네트워크, 데이터베이스 등 다양한 구성 요소가 상호작용하여 특정 기능을 수행하도록 통합된 구조입니다. 시스템은 데이터 처리, 저장, 관리 등 다양한 IT 기능을 수행하는 기술 구성 요소의 집합입니다.예)  인사관리 시스템, 교육 시스템, 그룹웨어 시스템, 근태관리 시스템, 영업관리 시스템, 구매관리 시스템
  • 서비스는 사용자가 시스템을 통해 제공받는 기능이나 작업의 결과입니다. IT 서비스는 시스템을 기반으로 제공되며, 시스템이 작동하여 사용자의 요구를 충족하는 기능적 결과물을 의미합니다.
    예) 클라우드 서비스, 이메일 서비스, 검색 서비스, 번역 서비스 등

 

시스템 내부적으로 작동하는 기술적 구조나 플랫폼을 뜻하며, 서비스 그 시스템이 외부에 제공하는 기능이나 가치를 의미합니다. 시스템은 구축과 운영에 초점을 맞추고, 서비스는 사용자에게 제공하는 편리함과 효율성에 초점을 둡니다.

 

IT 회사에서 제공하는 서비스에 문제가 발생했을 때, IT 운영자들은 이를 시스템 장애라고 표현하며, 고객들은 서비스 장애라고 표현합니다. 용어의 차이는 있지만, 유사한 상황이라고 보셔도 무방합니다.

 

오늘은 여기서 포스팅을 마치겠습니다.

유익한 내용의 글을 지속적으로 업로드할 예정이니 많이 구독해주세요.

감사합니다!

IT 분야에서 인프라 운영자와 소프트웨어 엔지니어로 일한 지 어느덧 10년이 넘었습니다.
다양한 진로를 선택할 기회가 있었지만, 결국 IT 분야로 취업하게 되었고 현재의 직업에 충분히 만족하고 있습니다.
오늘은 개인적으로 생각하는 IT 직업의 장점 몇 가지를 공유해 보려 합니다.
 

1.학벌보다 실력이 더 중요하다.

IT 분야에서는 대기업 취업 시 학벌보다 실력이 더 중요하게 여겨집니다. 명문 대학을 졸업하지 않았더라도, 충분한 실력을 갖추면 국내 대기업에 취직할 수 있는 기회가 많습니다. 물론, 자격증, 졸업 작품, 포트폴리오 등 자신의 역량을 어필할 수 있는 준비가 필요합니다. 어학 점수가 부족하더라도 자격증으로 이를 보완할 수 있습니다.
카카오, 네이버 같은 대기업 IT 회사들은 코딩 테스트를 요구하는 경우도 많아, 관련 공부를 통해 취업에 도전할 수 있습니다.
 

2.이직이 비교적 쉽다.

모든 회사는 IT 인력을 필요로 하기 때문에, 경력을 바탕으로 동종 업계에서 이직하는 것이 상대적으로 쉽습니다. IT 분야는 금융, 공공, 제조, 게임, 엔터테인먼트 등 다양한 산업군으로 나뉘어 있어, 첫 회사에서 쌓은 경력을 토대로 같은 분야의 다른 회사로 이직할 수 있습니다. 따라서 첫 회사에서 어떤 커리어를 쌓느냐가 차후 IT 포지션에 큰 영향을 미칩니다.
 
일반적으로 한 회사에서 오래 일하는 것이 좋다는 인식이 있지만, IT 업계에서는 이직을 통해 다양한 기술을 배우고 커리어를 발전시키는 것이 더 유리하다고 생각합니다. 저의 경우, 보통 3년 정도 기술을 익히고 업무를 하다 보면 기술적 지루함이 생기곤 합니다. 그래서 새로운 기술 경험 및 연봉 상승을 목표로 이직을 시도합니다.
 

3.기술에 대한 활용도가 높다.

IT 업무를 하다 보면 인프라부터 사용자 서비스까지 전체적인 구조를 파악하게 되어, 직접 서비스를 구축해 사용할 수 있는 능력을 갖추게 됩니다. 저도 현재 서버용 PC를 구매해 쇼핑몰과 홈페이지를 직접 구축해 운영하고 있습니다. 모든 것을 처음부터 만들 필요 없이, 공개된 무료 소프트웨어를 활용해 쉽게 제작할 수 있습니다.
 
최근에는 가상화 서비스(VMWare)를 사용해 네트워크 트래픽을 공유하며 수익(Passive Income)을 창출하고 있습니다. 개인용 클라우드(파일 서버), 쇼핑몰, 홈페이지, 네트워크 트래픽 공유, 주식 자동매매 시스템, 기술 노트, 일정 관리 및 알림 설정 등 다양한 분야에서 기술을 활용할 수 있습니다.

 

오늘은 여기서 포스팅을 마치겠습니다.

유익한 내용을 지속적으로 업로드할 예정이니 많이 구독해 주세요.

감사합니다!

서버를 운영하다보면 다양한 IP로 부터 공격을 받게 됩니다.

접속 로그를 확인해보면 하루에도 수십번에 접속 시도를 확인 할 수 있습니다.

 

fail2ban 패키지를 사용하면 로그인 실패 횟수를 설정하고 해당 IP를 차단 할 수 있습니다.

1. fail2ban 설치

sudo dnf install fail2ban -y

 

2. SSH 감시를 위한 기본 설정

fail2ban의 기본 설정 파일을 편집하여 SSH 접속 실패에 대한 감시를 설정합니다.

 jail.local 파일이 없을 경우 jail.conf 파일을 jail.local로 복사하여 수정합니다.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
 

3. jail.local 설정

jail.local 파일에서 SSH 관련 설정을 추가합니다. 아래와 같이 설정할 수 있습니다.

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 3600
findtime = 600
  • enabled = true: 해당 jail을 활성화합니다.
  • port = ssh: 감시할 포트를 지정합니다.
  • filter = sshd: SSH 접속 실패 패턴을 찾기 위한 필터를 지정합니다.
  • logpath = /var/log/secure: SSH 로그 파일 경로를 지정합니다.
  • maxretry = 5: 5번 실패 시 IP를 차단합니다.
  • bantime = 3600: 차단 시간(초)을 설정합니다. 여기서는 1시간(3600초)입니다.
  • findtime = 600: 10분(600초) 동안 5번 실패하면 차단합니다.

 

4. fail2ban 서비스 시작 및 재시작

설정을 마친 후 fail2ban 서비스를 시작하고 활성화합니다.

sudo systemctl start fail2ban
sudo systemctl 
enable fail2ban
 

5. 설정 확인

fail2ban이 올바르게 작동하는지 확인하려면 다음 명령어를 사용할 수 있습니다.

# 설정 상태 확인
sudo fail2ban-client status

# 차단된 IP 확인
sudo fail2ban-client status sshd
 

※ 명령어 수행 화면

[break_in@Linux /home/break_in]#  sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd
 
실제로 많은 IP가 차단되었음을 확인할 수 있습니다.
[break_in@Linux /home/break_in]#  sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     16
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 193
   |- Total banned:     194
   `- Banned IP list:   101.126.64.15 101.126.69.203 101.126.95.220 101.32.114.105 101.42.237.107 101.43.26.143 101.43.39.17 101.43.4.185 103.139.193.99 103.142.87.231 103.143.231.132 103.143.72.165 103.163.118.84 103.172.204.55 103.174.103.90 103.176.78.193 103.211.217.182 103.248.60.70 103.25.47.94 103.92.24.242 103.99.115.26 106.12.222.76 106.124.137.140 106.58.219.160 109.236.47.90 109.75.33.121 112.103.254.249 112.184.135.67 112.6.122.181 113.137.40.250 113.88.210.159 114.100.49.20 114.217.20.159 115.247.46.122 118.179.135.65 119.28.118.4 120.28.109.188 121.229.62.94 122.227.174.98 124.156.205.16 125.124.45.195 125.91.122.29 128.199.137.110 128.199.206.26 128.199.70.247 129.226.198.6 129.226.215.132 134.122.13.225 134.209.157.237 139.59.36.213 139.59.79.179 14.29.147.56 14.48.202.73 14.56.193.140 140.246.22.189 143.110.220.40 146.190.119.107 150.158.31.194 154.221.21.206 156.236.71.21 156.54.108.185 157.148.123.74 159.203.104.187 161.35.182.145 162.241.71.207 165.227.2.252 165.227.201.152 167.99.224.42 174.160.133.10 175.178.114.15 175.204.112.213 176.31.253.67 178.128.56.162 178.128.73.254 178.62.66.67 182.253.47.126 183.106.6.202 183.162.79.39 185.126.34.211 185.174.136.146 185.233.37.14 185.6.105.150 186.31.95.163 187.188.0.71 187.210.77.100 187.49.152.10 187.72.83.169 187.95.160.53 188.166.161.55 188.213.197.78 190.119.66.238 190.221.7.146 193.32.162.29 194.110.54.141 194.113.236.217 194.145.208.178 195.24.56.135 196.219.43.154 197.199.224.52 197.227.8.186 198.23.174.113 201.149.49.146 201.251.51.218 201.6.100.191 202.157.184.3 203.0.104.170 203.150.34.32 206.189.121.27 206.189.175.87 206.189.230.76 211.75.19.210 212.233.136.201 213.194.140.33 217.160.88.147 217.182.73.127 217.60.244.8 218.70.106.202 220.194.171.236 23.158.56.100 34.139.17.74 34.92.176.182 35.219.62.194 36.138.68.207 36.64.217.27 41.223.66.252 42.123.122.175 42.180.160.78 42.51.33.212 43.128.142.238 43.128.233.205 43.133.42.162 43.134.129.4 43.134.13.231 43.134.226.192 43.134.237.227 43.134.41.24 43.135.172.65 43.153.171.66 43.153.219.239 43.153.84.164 43.154.96.206 43.156.156.39 43.156.3.145 43.159.59.118 45.131.108.155 46.101.9.148 47.237.30.245 47.245.87.100 49.205.174.180 49.232.6.67 51.15.218.133 51.178.182.201 52.86.173.91 58.220.39.220 58.228.29.87 59.127.158.223 59.36.75.227 61.155.106.101 61.191.103.17 64.227.126.250 64.227.149.214 67.205.160.228 69.49.246.102 79.110.62.145 79.137.197.11 79.224.101.219 8.218.134.133 8.219.117.148 8.219.237.64 8.222.197.223 80.94.92.139 81.161.238.51 81.192.46.38 82.67.7.178 83.12.113.122 83.97.73.40 88.214.25.16 89.185.85.182 89.46.223.31 89.46.223.35 91.196.54.125 91.205.219.185 91.237.163.37 91.92.252.162 92.87.22.210 93.113.63.124 93.197.94.25 94.228.169.65 95.181.86.2 95.214.27.253 95.90.242.212 96.126.113.215 8.222.172.160

 

6. 차단된 IP 해제 방법

SSH 접속 간 패스워드 입력 실수로 인해 내 PC IP가 차단될 경우의 조치 방법입니다.

sudo fail2ban-client set sshd unbanip 192.168.0.100

'IT기술노트 > Linux' 카테고리의 다른 글

Linux Bash 쉘 프로그래밍  (4) 2024.10.31

+ Recent posts