카테고리 Archives: linux

CVE-2024-6387 – regreSSHion 취약점

openssh 명령어의 취약점이 공개 되었다.

인터넷 진흥원 공지: https://www.krcert.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71480

심각도가 high 이고 root 권한 탈취가 가능하기 때문에 외부에 ssh 가 공개되는 서버는 필히 업데이트를 하는것이 좋다.

 

영향을 받는 ubuntu 버전은 22.04 ~ 24.04 이며 RHEL 9 의 경우 업데이트가 필요 하다. (ssh -V 를 했을때 버전 8.5p1 ~ 9.8p1)

 

다른 방법 으로는 sshd_config 에서 LoginGraceTime 을 0으로 수정하는 방법이 있는데 DDOS 에 취약해지니까 가급적 패치를 하도록 한다.

 

Ubuntu 공지: https://ubuntu.com/blog/ubuntu-regresshion-security-fix

RockyLinux 공지: https://rockylinux.org/news/2024-07-01-openssh-sigalrm-regression

Docker 와 firewall-cmd 사용법

Rockylinux(OracleLinux) 8.x 에서 Docker 는 run/start/stop 을 할때
Docker-proxy 가 iptables 를 이용해서 DOCKER, DOCKER-USER, DOCKER-ISOLATION-STAGE-1, DOCKER-ISOLATION-STAGE-2 등의 Chain을
만들어 관리 하기 때문에 기존에 설정된 firewall 설정을 무시하고 호출이 가능한 상태가 된다.

OCI 에서는 인스턴스에 시큐리티 리스트에서 아이피/포트를 관리할 수 있으나
스위치의 access_list 처럼 같은 서브넷에 속한 모든 서버가 영향을 받기 때문에 firewall 에서
설정한 포트만 오픈을 하고자 할때 사용할 수 있는 방법이다.(OCI 안에서 여러 인스턴스를 운영하거나 로컬에서 Docker 서버를 운영할때..)

AWS 의 보안 그룹은 각 인스턴스 별로 작동하기 때문에 불필요 하다.


  1. 먼저 도커의 iptables 사용 옵션을 끄고 docker 를 재시작 한다.
  2. firewalld 에서 설정된 값을 모두 초기화 한다.
  3. Docker 의 네트워크 정보를 확인 한다.
  4. Container 에서 호스트롤 통해 outbound 를 위한 설정을 추가 한다. (첫번째줄에 Docker의 네트워크 정보를 입력해서 실행 해야 한다.)
  5. inbound 를 위한 설정을 추가 한다.
  6. 필요에 따라 아래와 같이 inbound 설정을 추가 한다. (nginx-docker 를 위한 80(tcp), 443(tcp/udp) 을 연다.)

 

마지막에 여는 명령어를 보면 알겠지만 열려고 하는 컨테이너의 IP를 알아야 한다.

때문에 Container 으로 진입해서 ifconfig 를 보면 알 수 있겠지만 매우 귀찬은 관계로 스크립트를 작성 하였다.

실행하면 아래와 같이 나오는데 필요한 Container 부분만 실행을 해서 사용하면 된다.

20240620_131234


출처: https://firewalld.org/2024/04/strictly-filtering-docker-containers

Docker 를 이용한 데이터베이스(mariadb) 사용법

Web / Was 만 도커를 이용해 배포하는 이유는 Mysql, MariaDB 등의 공식 도커가 너무 잘되어 있어서 이다.

그래서 이용하는 법만 알면 되는데.  ‘ㅅ’a

공식 소개 페이지에 잘 나와 있긴 하지만 docker 사전 지식 없이 사용을 하기엔 설명을 건너 뛴 부분이 많다.

 

여기서는 MariaDB 공식 도커이미지를 가지고 간단히 DB를 띄우는 방법에 대한 부분만 설명 한다.

사용할 버전은 10.11 버전이다. 10.11을 사용하는 이유는 LTS 이기 때문에 지금 당장은 가장 오랜 업데이트가 지원될 예정이기 때문이다. (https://endoflife.date/mariadb)

– 2024-09-19 추가 : 현재 11.4 가 마지막 Long Term Support 버전이다. ‘ㅅ’a –

 

사용할 도커 이미지: mariadb – Official Image | Docker Hub

 

1. 이미지 pull 및 run을 한다.

 

2. mysql을 이용 한다. = _ =..

 

3. 그냥 글을 마무리 하기 심심하니.. 데이터베이스 생성, 유져 생성 쿼리…

 


 

PS. docker run 에 대한 옵션에 대한 설명.

--restart unless-stopped : stop 명령을 내린게 아니라면 (재 부팅 또는 도커 데몬을 스탑 한경우..) 자동으로 시작 하는 옵션.

-v /etc/mysql/mariadb.conf.d/:/etc/mysql/mariadb.conf.d/ : my.cnf 수정이 필요한 DB 튜닝의 경우 /etc/mysql/mariadb.conf.d/custom.cnf 파일을 만들고 내용을 넣고 컨테이너를 재시작 하면 적용 된다.

-v /var/lib/mysql:/var/lib/mysql : mysql 의 데이터 폴더를 마운트 한다.

docker를 이용한 데이터베이스 사용은 업데이트를 편하게 하기 위함이기 때문에 container 를 다시 run 하면 안의 내용을 모두 유실 하게 된다. 때문에 이와 같이 주요 폴더는 호스트OS 와 연결 하여 사용 하면 된다.

-e TZ=Asia/Seoul 만들려는 인스턴스의 timezone을 Seoul(+9) 으로 설정 한다.

-e MARIADB_ROOT_PASSWORD=루트패스워드 run 할때 루트패스워드를 지정해서 생성 한다.(미지정시 랜덤 생성)

 


 

연결할 WEB / WAS 구현은 아래 글을 확인합니다 ‘ㅅ’a

OCI arm 인스턴스에서 docker로 web, was 사용

 

GEOIP database 파일 업데이트

기존 GeoIP 스크립트에서 GeoIP.dat 파일이 0 으로 생성을 하게 되어서 Apache에 에러가 발생 하였다.

에러 메세지는 아래와 같이 /var/log/httpd/error_log 파일과 /var/log/messages 파일 에서 확인 되었다.

 

내용 확인 결과 maxmind 에서 배포 되는 csv 파일이 2024년 5월 1일 부로 S3 presigned 를 이용하여 배포 하는 형태로 바뀐것으로 확인이 되었다.

오랜만에 maxmind 사이트에 로그인을 해보니 라이선스 키 길이도 바뀌어서 같이 바꾸는게 좋겠다. 🙂

중간에 주석 처리된 3줄은 python2를 사용하는 서버(centos 7 이하)에서는 주석을 제거 하고 사용해야  한다.

 

몇가지 로직 개선 및 mmdb 파일까지 갱신 하도록 geoipupdate 명령을 중간에 실행 하도록 하였다.

때문에 /etc/GeoIP.conf 파일에 자신의 어카운트 및 라이선스키를 넣어줘야 한다.

그냥 사용 할경우 www.enteroa.com 에서 생성하고 재배포 하는 파일을 다운 받아 사용 한다.

자신의 서버에서 스스로 dat파일을 생성 하고 싶을 경우 Maxmind_Licensekey 부분과 PRIMARY_SERVER_HOSTNAME 부분 또 PRIMARY_DEPLOY_URL 부분을 수정 해서 사용해야 한다.

 

라이선스키 발급 방법은 같기 때문에 maxmind 에서 라이선스 발급을 원하면 아래 역인글을 확인 한다.

역인글 : GEOIP database …

RockyLinux 8 미사용 커널 삭제

Linux 상에서 dnf update 를 한  경우 보통은 새로운 업데이트 버전이 설치 되면서 기존 버전을 삭제 하게 되어있다.

다만 일반적인 범주를 벗어나는 java 라든가 python 은 기존 버전의 삭제 없이 다른 이름으로 설치 되어 alternatives에 의해 선택되어 사용 된다.

그리고 또 다른 하나의 경우는 kernel 이 업데이트 된 경우 인데 (8.5 -> 8.9) 이경우 /boot 파티션에 기존 부분 삭제없이 누적 되기 때문에

업데이트를 꾸준히 한경우 /boot 파티션의 용량이 부족한 경우가 발생한다.

 

요점은 /boot 폴더는 보통 용량이 작기 때문에 용량 확보를 위해서 기존 커널을 지워야 한다 ‘ ㅅ’a

손쉽게 삭제가 된다. 🙂

20240304_142946

OCI 구성 서버중 update를 많이 한 웹서버 용량이 73%를 쓰고 있어서 삭제 후 43% 으로 감소 하였음 :).