springboot 의 systemd 설정 및 rsyslog 설정

스프링부트로 작성이 된 프로그램을 systemd 를 이용한 데모나이즈를 위해 아래와 같이 생성 한다. (가장 기본적인 부분..)

 

위와 같이 설정 파일을 생성 한뒤에 아래와 같은 명령어로 실행 할 수 있다.

 

위와 같이 실행을 할 경우 발생하는 로그는 CentOS 7 기준 /var/log/messages 파일에 누적이 된다.

가만히 두면 messages 파일이 엄청 커지거나 섞여 있어서 로그 확인에 에로 사항이 발생하게 된다.

때문에 다음 와 같이 /etc/rsyslog.d/30-springboot.conf 파일을 생성 하여 분리 하도록 한다.

 

rsyslog 를 재시작 한다.


PS1. 로그 순환 설정

 

rsyslog 에서 생성하는 별도의 파일을 새롭게 선언 되었기 때문에 logrotate 가 안되면 파일이 무한 증식 하게 되므로 아래와 같이 순환 설정을 하여

1달동안 보관 되고 삭제 되도록 설정 한다. (생성만 해두면 다음 주기에 적용됨..재시작할 필요는 없음.)


PS2. 프로그램 배포계정에 특정 데몬의 콘트롤 권한만 부여(sudo 이용) 하는 방법.

 

배포계정에 systemctl 을 이용 하여 특정 데몬을 콘트롤 할수 있는 권한을 부여 한다.

 

배포 계정은 아래와 같이 부여된 명령어를 root 와 같은 권한으로 실행이 가능 하다.

 

 

GEOIP database 파일 업데이트

그렇다. 또 바뀌었다 ‘ㅅ’….

 

GeoIP database 파일을 다운 받는데 링크 주소가 변경 되었다

맥스마인드 사이트의 회원 가입 이후 라이선스 키를 받아야 다운로드를 받을 수 있도록 변경 되었다.

 

crontab 에 아래와 같이 geoipupdate 명령어를 주기적으로 실행 함으로서 업데이트를 실행할 수 있다.

 

단지 위 명령어를 실행 하기 위해 맥스마인드사의 회원 가입 과 라이선스 키를 발급 받아야 한다.

2021-04-15_095619

그리고 /etc/GeoIP.conf 파일에서 라이선스키 등록을 진행해야 한다.

이후 geoipupdate명령어를 통해서 업데이트가 잘 되나 실행해보면 된다.

 

출처 : https://dev.maxmind.com/geoip/geoipupdate/


다른 방법으로는 기존 처럼 스크립트를 이용 하여 바뀐 URL 에 파라메터로 라이선스 키를 넣어서 호출하는 방법이 있다.

 

개인 적으로 남이 만든 프로그램 보단 직접 하는 스크립트를 선호하는 편이라.. (OS 의존성도 없는 편이고 해서 ‘ ㅅ’a)

스크립트 3 번째 줄에 위 방법을 따라 만든 maxmind 라이선스 키를 입력해야 한다.

 

기존 스크립트에서 추가 변경된 기능이 있는데 DB 업데이트가 이루어 졌는지 배포주소의 HEAD 체크를 통해서 Last-Modified 를 체크 한다.

쉽게 말하면 맥스마인드사에서 새로운 db를 업데이트 할때만 작동 한다는 소리다. ( 더 쉽게: 매일 돌리면 된다. )

때문에 위 스크립트는 /etc/cron.daily/ 폴더내에 넣어두면 필요할 때 자동 실행이 된다.

 

출처 : https://dev.maxmind.com/geoip/geoip-direct-downloads/#Direct_Downloads

google-Noto-Sans CJK

Adobe 와 구글이 합작하여 만든 폰트 이다.

CJK는 중국 일본 한국의 약자이며, 본고딕 이라고 불리기도 하며 과거 에는 Droid 라는 이름을 쓰기도 하였다.

기본적으로는 otf (Open Type Font) 와 ttf (True Type font) 으로 제공 되고 있다.

ttc (True Type Collection) 으로 (묶음) 으로 배포 되기도 한다.

 

공식 다운로드 사이트에서는 otf 파일의 다운로드를 제공한다.

 

linux 에서는 otf 파일 폰트를 사용이 가능하지만 사용하는 프로그램에 따라 otf 를 사용하지 못하는 경우도 있다.

때문에 특정 프로그램 (mikehaertl/phpwkhtmltopdf) 에서 woff 혹은 otf 폰트를 사용시 정상작동하지 않는 경우 서버에 ttf 파일을 설치해야 할 수 있다.

 

CentOS 7 에서는 아래의 명령어로 설치가 가능하다.

font 파일은 기본적으로 /usr/share/fonts/google-noto 폴더 아래에 생성이 되기 때문에 폴더에서 바로 확인을 해볼 수 있다.


centos 버전이 틀리거나 다른 리눅스에서는 다음과 같이 noto-sans를 배포중인 깃허브 에서 다운받아 수동 설치를 진행할 수도 있다.

 

설치가 된 내용을 아래 명령어로 확인할 수 있다.

음 수동 설치한 파일은 2020-12-06 에 업데이트 된 v2.002 버전 파일이다 보니 HK 추가 되었다 ‘ㅅ’a

iptables 를 이용한 마스커레이드

외부로 연결된 1개의 서버가 존재 하고

내부망으로 로컬 서버가 여러개 존재 할때..

2021-03-24_131359

 

외부망에 연결된 서버는 일반 적인 설정을 따라가면 되지만 위 그림과 같이 연결된 상태에서

내부망 서버는 인터넷이 안되므로 gateway 지정을 외부망에 연결된 서버로 향하게 한뒤에

외부망에 연결된 서버에서 아래와 같이 마스커레이드 및 포워드 허용 처리를 해주어야 한다. (시간 동기화나 패키지 설치나 ‘ㅅ’a 인터넷은 되어야 하니까…)

이때 내부망은 10.0.0.1 ~ 10.0.0.7 만 허용처리한 결과 이다. Online IP CIDR / VLSM Supernet Calculator (subnet-calculator.com)

 

iptables 으로 설정된 값을 자세히 확인하는 방법은 아래와 같다.

위 명령어로 출력된 룰셋은 첫번째 값이 라인번호로 아래와 같이 일부 삭제를 진행 할 수 있다.

 

sudo – Heap buffer overflow 취약점 Baron Samedit [CVE-2021-3156]

sudo 명령의 -s 옵션 또는 -i 옵션을 이용하여 이스케이프(‘\’) 으로 Heap buffer overflow 취약점이 발견 되었음 ‘ㅅ’a

root 권한 탈취가 가능하므로 심각한(important) 취약점 이라고 볼수 있다.

 

취약점 테스트

위와 같이 Segmentation fault 가 발생한다면 취약한 버전 으로 업데이트가 필요로 하다 ‘ㅅ’a

 

업데이트 CentOS 7 ~ 8

 

업데이트 Ubuntu 14.04 ~ 21.04

 

시스템 재 부팅은 불필요 하다 ///ㅅ///

 

https://access.redhat.com/ko/security/vulnerabilities/5740281

https://ubuntu.com/security/CVE-2021-3156