반응형

상황에 따라서 오류라고 볼 수도있고 아닐수도있다.

 

centos7 에서 root권한을 부여한 새 계정을 발급해달라는 요청이 왔다.

 

일반사용자로 로그인 한 후 su 명령어로 root권한이 부여한 계정을 사용하도록 2개의 계정을 생성하기로 하였다.

(해당 작업은 root계정으로)

useradd nuser
passwd nuser

nuser = 일반사용자

useradd ruser
passwd ruser

ruser = root권한사용자

 

ruser 계정을 생성한 후에 vi /etc/passwd으로 열어서

 

ruser:x:0:0::/home/ruser:/bin/bash

 

이렇게 0으로 변경해주고

 

 

vi /etc/group을 열어서

 

root:x:0:ruser

 

으로 변경해줬다.

 

그리고 나서  새 세션으로 일반사용자(nuser)로 로그인 후 

 

su ruser

 

명령어로 root권한 사용자로 su 명령어를 날리면

 

su : 권한 부여 거부

 

요렇게 떳다..

 

이 이유는 nuser가 root권한 계정으로 전환하는 권한이 부여되있지 않기 때문이다.

 

다시한번 .... 

 

vi /etc/group을 열고 아래와같이 wheel에 root권한 부여된 계정으로 전환할 일반 사용자 계정을 아래와같이 추가 후 저장

 

wheel:x:10:root,nuser

 

다시 접속해서 su명령어시 오류 없이 전환된다

반응형
반응형

 

이번엔 http code가 노출된다는 취약점 결과가 날라왔다. 

 

이전에 http code노출 막는 포스팅을 한 적이 있는데, 이와 다른 경우가 발생하였다.

2022.12.08 - [개발/취약점] - http 400 505 error code 노출 막기

 

http 400 505 error code 노출 막기

400 505번 http error code 출력되는 취약점 발생했다. 톰캣/conf/web.xml에 400 /error.html 401 /error.html 403 /error.html 404 /error.html 405 /error.html 500 /error.html 501 /error.html 정의를 하고 server.xml파일의 docBase에 error.htm

lsdev.tistory.com

1. web.xml에 error code별 html을 설정해줘도 안되서

 

2. server.xml설정을 해준 바 있다.(톰캣 8.5.82를 사용하고 있음)

 

분명히 http code와 tomcat 정보가 노출되지 않도록 설정을 했고 웹사이트에서 확인을 하였다.

 

(취약점을 내가 적용하기 전에 진단했나? 하며 확인해봤더니 날짜가 그렇지 않음을 확인... 주절주절)

 

curl --location --request GE@T 'https://url정보입력:포트'

터미널에서 이렇게 날려보니(GE@T :일부러 잘못된 요청을 해봄. 내가 위에 첨부한 이미지처럼 400이 발생하도록)

 

어? 그런데

취약점 보고서에 나온 내용대로 동일하게 위와 같이 오류가 나온다!

 

톰캣 access로그를 확인해보니 해당 요청(curl --location --request GE@T 'https://url정보입력:포트')에 대해선

 

로그가 안찍힌다. 들어오지 못하는걸까?

 

WAS로 가기전에 우리는 웹서버를 사용하지 않고 먼저, Haproxy에서 WAS로 로드밸런싱을 해준다.

 

Haproxy 설정에 대해서 찾아보니 HAProxy 구성 파일(haproxy.cfg)에 별도의 오류 페이지 설정이 없는 경우,

 

기본적으로 HAProxy는 내장된 오류 페이지를 사용한다고한다.

 

기본 오류 페이지에는 http code가 들어있기때문에, 각 코드별 파일을 아래와같이 수정하였다.

 

<html><body><h1>잘못된 접근입니다.</h1> Error Page </body></html>

 

또한, vi /etc/haproxy/haproxy.cfg 파일에서 443요청에 대해 아래와 같이 설정을 추가하였다.

errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

 

혹시 error code별 http코드가 보이지 않는다면 find / -name *.http로 haproxy의 error code http를 찾아서 위의 디렉토리에 cp하자.

 

여기까지 끝났다면 

 

systemctl restart haproxy  명령어를 날려주고

 

아까와 같이 curl 날려주면 아래와 같이 내가 만든 ERROR PAGE가 나오는 것을 확인할 수 있다.

 

우리는 apache를 별도로 web server를 사용하지 않고 haproxy를 사용하기에 이와같은 순서가 됬지만,

 

혹시 동일한 취약점의 경우인데 haproxy가 아니라면 사용하고있는 web server의 설정을 알아보고 설정하자.

 

반응형
반응형
마운트란, 파일 시스템을 사용하기 위해 디스크나 외부 저장장치를 특정 디렉토리에 연결하는 것을 말한다.

 

 

이를 통해 해당 디렉토리를 통해 저장 장치에 접근할 수 있다.

 

마운트할 때는 디스크를 마운트하는 것이 아니라, 파일 시스템을 마운트한다.(디스크에하는 줄)

 

파일 시스템은 여러 가지 타입이 있을 수 있으며,

 

이러한 파일 시스템들은 각각의 파일과 디렉토리를 어떻게 저장할지 결정한다.

 

마운트할 때는 해당 파일 시스템의 타입을 명시하고, 파일 시스템을 마운트할 마운트 포인트(디렉토리)를 지정한다.

 

윈도우 : 자동 인식
  • 윈도우에서는 새로운 저장 장치(USB 포함)를 연결하면 자동으로 해당 드라이브에 대한 마운트가 수행
  • 해당 드라이브의 파일 및 디렉토리에 쉽게 접근가능해짐
리눅스 : 수동 설정 필요

 


아래는 chat gpt와 나눈 대화이다. (각 각 리눅스와 윈도우)

 

Q. 만약에 내가 리눅스 서버에 새로 ssd를 추가했어. 그럼 처음부터 끝까지 어떤 과정을 거쳐야 사용할 수 있는지 자세하게 설명좀

A. 새로운 SSD를 추가해서 사용하려면 다음과 같은 과정이 필요합니다.

  1. 파티션 생성: 새로운 SSD를 사용하기 위해서는 먼저 파티션을 생성해야 합니다. 이 단계에서는 새로운 SSD에 대한 파티션을 생성하는 작업을 수행합니다. 파티션은 디스크의 논리적인 구획으로서, 디스크를 여러 개의 영역으로 나누어서 사용할 수 있도록 합니다.
  2. 파일 시스템 생성: 파티션을 생성한 후에는 해당 파티션에 파일 시스템을 생성해야 합니다. 파일 시스템은 운영체제에서 파일을 저장하고 관리하기 위한 방식을 의미합니다. 이 단계에서는 새로운 파티션에 대해 파일 시스템을 생성합니다.
  3. 마운트: 파일 시스템을 생성한 후에는 해당 파일 시스템을 마운트해야 합니다. 마운트는 파일 시스템을 운영체제의 디렉토리 구조에 연결하는 작업을 의미합니다. 이 단계에서는 생성된 파일 시스템을 운영체제의 디렉토리 구조에 연결하고, 해당 디렉토리를 통해 새로운 SSD에 접근할 수 있도록 설정합니다.
  4. 부팅 시 자동 마운트 설정: 위의 과정을 모두 마쳤다면 새로운 SSD를 사용할 수 있습니다. 그러나 매번 시스템을 부팅할 때마다 해당 SSD를 수동으로 마운트해야 한다면 번거로울 것입니다. 따라서, 부팅 시 자동으로 마운트 설정을 해주는 것이 좋습니다. 이를 위해서는 /etc/fstab 파일을 수정하여 자동 마운트 설정을 추가해주면 됩니다.

위의 과정을 통해, 새로운 SSD를 사용할 수 있게 됩니다.

 

Q. 그럼 윈도우는 디스크를 추가하면 어떻게 파일시스템을 생성해?

A. 윈도우에서 디스크를 추가하면, 해당 디스크에 파일 시스템을 생성하기 위해 다음과 같은 과정을 거칩니다.

  1. 디스크 관리 유틸리티 실행: 윈도우 운영체제에서는 "디스크 관리"라는 유틸리티를 이용하여 새로운 디스크를 사용할 수 있도록 준비합니다. 이 유틸리티는 "관리 도구" 폴더 안에 있습니다.
  2. 디스크 초기화: 디스크 관리 유틸리티에서 새로 추가한 디스크를 선택하고, 초기화 작업을 수행합니다. 초기화 작업은 디스크에 대한 파티션 정보를 생성하고, 파일 시스템을 준비합니다.
  3. 파티션 생성: 디스크를 초기화한 후, "새로운 단위 생성" 기능을 사용하여 디스크에 파티션을 생성합니다. 이 과정에서 파티션의 크기와 유형을 선택합니다.
  4. 파일 시스템 생성: 파티션을 생성한 후, 해당 파티션에 파일 시스템을 생성합니다. 이 때 NTFS 또는 FAT32와 같은 파일 시스템을 선택할 수 있습니다.
  5. 드라이브 문자 할당: 파일 시스템을 생성한 후, 해당 파티션에 할당된 드라이브 문자를 지정합니다. 이 때, 사용자가 지정한 드라이브 문자를 사용하거나, 시스템에서 자동으로 드라이브 문자를 할당할 수 있습니다.
  6. 마운트: 마지막으로, 윈도우 운영체제에서 해당 파티션을 마운트합니다. 이렇게 하면 파일 시스템이 해당 드라이브 문자에 연결되어 사용할 수 있게 됩니다.

 

마운트를 디스크를 사용하기 위한 정도로만 알고 있었는데,

 

마운트에 대해 gpt와 대화하다보니 디스크추가시 일련 과정을 알 수 있었다.

반응형
반응형

21번 포트를 사용하고 있는 프로그램인데,

보안이슈로 인해 21번 포트를 사용하려면 해당 서버에 21포트 사용하는 ip를 제외하고는 접근제한을 해달라는 요청이 왔다.

해당 웹서버에서는 21번 포트를 사용하는건 접근제한이 안되있다고해서 다른 pc에서 리눅스 서버와 cmd로 ftp 접속시도를 해보았고 방법은 각각 아래와 같다.

리눅스에서 ftp 접속하는 방법
# ?.?.?.? ftp 접속하려는 ip주소
ftp ?.?.?.? 21


1. 연결이 잘 된 경우

Connected to ?.?.?.? (?.?.?.?).
111 warnning welcome


잘된 경우 welcome이 뜨면서 계정정보과 비밀번호 입력하라고 차례대로 나온다.
정확한 계정 정보를 입력하면 Login successful.

2. 연결이 안된 경우

Connected to ?.?.?.? (?.?.?.?).
421 Service not available.


윈도우 cmd창에서 ftp 접속하는 방법
# ftp를 입력후 
ftp
# 'open {접속할아이피주소} {포트}' 입력
ftp> open ?.?.?.? 21


1. 연결이 잘 된 경우

?.?.?.?에 연결되었습니다.
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.


잘된 경우 계정정보과 비밀번호 입력하라고 차례대로 나온다.
정확한 계정 정보를 입력하면 Login successful.

2. 연결이 안된 경우

?.?.?.?에 연결되었습니다.
421 Service not available.
원격 호스트에 의해 연결이 닫혔습니다.



연결이 안된 경우 421 Service not available. 에러가 나온 경우는

21포트 사용하는 해당 서버가 아닌 다른 pc에서 테스트한 경우에 발생했다.
(운영중인 웹서버만 자기 자신 서버 즉, 로컬 서버만 21포트를 사용하도록 설정이 되어있음)

결국 로컬에서만 21포트를 사용하도록 잘 설정이 되어 있었음을 확인하였다.

아래 이미지는 21포트를 허용할 host정보 내용이다.(hosts.deny는 ALL:ALL로 설정되어 있다.)

반응형
반응형


디스크가 full이되서 어디서 용량이 많이 차지하는지 확인이 필요했다.

# 현재 디렉토리 기준, 용량 큰 순서대로 디렉토리명과 용량 보여주기
du -h --max-depth=1 | sort -hr


위와같이 루트서부터 동일한 명령어로 큰용량을 차지하는 디렉토리를 추적했다.

확인해보니 오래된 database백업 파일들이 여럿 있었고,

database를 통으로 백업하기에 꽤나 큰 용량이었다.

이러한 삭제하지 않은 데이터가 있는데 계속해서 새로 백업을 하고있었다.

원래 삭제되야하지만 (오류 등으로 인해) 삭제되지 않았던 database백업파일들이 2021년 8월에 해당하는 파일들이라서

많은 양의 백업파일들중 2021년 8월에 해당하는 백업파일만 조회하고 삭제하기로 하였다.

# 날짜기준 파일 보여주기
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2021-08
# 날짜기준 파일 삭제하기
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2021-08 | awk '{print $2}' | xargs rm -f


삭제하고 나니


디스크가 87%로 확인됬다. 끝

반응형
반응형

 

/var/log/btmp : 로그인 실패를 기록하는 바이너리 타입의 로그파일

 

위 로그파일에 기록된 내용을 확인하는 명령어 lastb

 

아래 코드는 btmp파일 설정하는 부분

 

vi /etc/logrotate.conf
...
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}
...

 

vi /etc/logrotate.conf에 보면 include /etc/logrotate.d라는 코드가 있다.

 

이 코드는 이 디렉토리의 파일들을 전부 불러들여서 log가 관리된다.

 

 

이 중 yum파일을 열어보면 vi /etc/logrotate.conf 에서의 log설정과 같다

 

vi /etc/logrotate.d/yum

/var/log/yum.log {
    missingok
    notifempty
    maxsize 30k
    yearly
    create 0600 root root
}
반응형
반응형

tomcat 8.5.57 사용중인데 취약한 버전이므로 버전업데이트 요청이 들어와서 작업하게 되었다.

 

마이너업데이트란 8.5.57에서 8.5.81처럼, 큰 틀은 톰캣 8.5버전이지만 세세하게 변경되는 사항들이 있으면 맨 뒤에 숫자가 커지면서 업데이트 되어 내놓는것을 말한다.

 

이미 운영중인 프로그램이기때문에 마이너업그레이드를 진행하기로 하였다.

 

현재 버전을 보는 방법은  아래와 같이 입력하게되면

 

톰캣위치/bin/version.sh

 

버전 정보가 나오게 된다.

 

8.5.81로 변경하는 방법은 간단하다.

 

1. https://tomcat.apache.org/download-80.cgi

 

Apache Tomcat® - Apache Tomcat 8 Software Downloads

Welcome to the Apache Tomcat® 8.x software download page. This page provides download links for obtaining the latest versions of Tomcat 8.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versions

tomcat.apache.org

 

2. 위 사이트에 접속해서 

노란색영역 tar.gz 오른쪽 마우스 눌러서 링크 복사

 

3. 톰캣 다운로드를 위한 아래와 같은 과정 진행

설치
# yum install wget
...
Is this ok [y/d/N] : y
...
톰캣최신버전 업데이트받을 위치 이동해서 아래와 같이 다운로드
$ cd /home
$ wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.81/bin/apache-tomcat-8.5.81.tar.gz

tar.gz 압축풀기 
$ tar -zxvf apache-tomcat-8.5.81.tar.gz

기존라이브러리 백업
$ mv /home/www-apache-tomcat-8.5.57/lib /home/www-apache-tomcat-8.5.57/lib_back

기존톰캣에 업데이트된 라이브러리만 교체
$ cp -r /home/apache-tomcat-8.5.81/lib /home/www-apache-tomcat-8.5.57/

최신라이브러리를 넣어준 기존 톰캣디렉토리명을 최신버전인 8.5.81로 변경해주기
$ mv /home/www-apache-tomcat-8.5.57 /home/www-apache-tomcat-8.5.81

 

4. 톰캣 버전 8.5 수동 업그레이드시 lib 폴더만 갈아껴주고 재시작을 하면된다는 말이 있는데, 내 경우에는 재시작시 아래와 같은 오류가 발생했다

 

12-Aug-2022 11:04:34.860 심각 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8553]] org.apache.catalina.LifecycleException: 구성요소 [Connector[HTTP/1.1-8553]]을(를) 초기화하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:139) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:571) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:646) at org.apache.catalina.startup.Catalina.load(Catalina.java:669) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472) Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.buf.UriUtil.isAbsoluteURI(Ljava/lang/String;)Z at org.apache.tomcat.util.file.ConfigFileLoader.getInputStream(ConfigFileLoader.java:77) at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:198) at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207) at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:282) at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:246) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:106) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:72) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:205) at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1221) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1234) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:230) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:633) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:80) at org.apache.catalina.connector.Connector.initInternal(Connector.java:1112) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) ... 12 more

 

5. lib폴더 뿐만아니라 bin폴더에 있는 gz파일들이랑 jar파일들도 옮겨주고 재시작하면 업데이트가 완료된다.

(주의할 것은 bin폴더 gz파일와 jar파일만 옮기고 bin폴더 통째로 옮기지 않기. catalina.sh파일 등 설정이 필요할 파일들이 있기때문)

 

기존 bin 백업
$ mv /home/www-apache-tomcat-8.5.81/bin /home/www-apache-tomcat-8.5.81/bin_back

wget로 다운받아서 압축 풀은 새 톰캣 bin으로 이동
$ cd /home/apache-tomcat-8.5.81/bin

기존톰캣에 업데이트된 라이브러리만 교체
$ cp *.jar /home/www-apache-tomcat-8.5.81/bin
$ cp *.tar.gz /home/www-apache-tomcat-8.5.81/bin

 

6. 그리고나서 바꿔준 파일들을 교체해준 bin폴더와 lib폴더의 파일들 권한들도 기존 파일들 권한이랑 비교해서 동일하지않으면 권한을 맞춰준다.

 

7. 마지막으로 톰캣 재시작

/home/www-apache-tomcat-8.5.81/bin/shutdown.sh
/home/www-apache-tomcat-8.5.81/bin/startup.sh

 

끝!

반응형
반응형
# 현재 openssl 버전확인
openssl version

버전 : OpenSSl 1.-.2k-fips 26 Jan 2017
 

# 현재 최신 버전 다운로드
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate

# 압축 해제
tar xvfz openssl-1.1.1q.tar.gz

# 압축 해제된 경로로 이동하여 소스 컴파일 진행
cd /home/myproject/openssl-1.1.1q
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib

# 설치 진행
make && make install

# 주요 심볼릭 링크 설정 필요
ln -s /usr/local/ssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

 

# 업데이트 완료 버전 다시 확인
openssl version

버전 : OpenSSL 1.1.1q  5 Jul 2022


위에서 사용하는 [현재 최신 버전 다운로드] 주소 가져오는 방법 
1. https://www.openssl.org/source/ 접속
2. Downloads 메뉴 클릭하면 아래와 같다

3. 최신 버전 확인해보니

4. 링크 주소 복사

 

참고링크

[Linux] CentOS 7 OpenSSL 업데이트 하는 방법

안녕하세요. 주식회사 서버몬 입니다. 오늘은 CentOS 7 버전을 기준으로 OpenSSL 을 업데이트 하는 방법에 대해서 알아보겠습니다. OpenSSL 은 OS 내 SSL/TLS 과 관련된 데몬 입니다. 취약점 공격 대상으로

servermon.tistory.com

 

반응형

+ Recent posts