우연히 우분투 서버에 top 명령을 쳐보니 이상한 프로세서가 엄청나게 cpu를 잡아먹고 있었다.
md5로 검색해본 의심스러운 파일 : 8f96e8b4e9d26884c776c1b42a70bae5
이하는 해결 과정
해당 프로세스가 의심스러워 보입니다. /tmp/./.kGX8ucb
같은 경로와 파일 이름은 보통 정상적인 소프트웨어가 사용하는 형식이 아닙니다. 이는 악성 코드나 해킹의 일부일 수 있습니다. 이 상황에서 빠르게 조치해야 할 몇 가지 단계는 다음과 같습니다.
- 의심스러운 프로세스 종료: 해당 프로세스를 강제로 종료할 수 있습니다.
kill -9 3785242
명령어를 사용하여 프로세스를 종료하십시오. - 의심스러운 파일 삭제: 프로세스를 종료한 후
/tmp/./.kGX8ucb
파일을 삭제해야 합니다.rm /tmp/./.kGX8ucb
를 실행하십시오. - 추가 의심스러운 프로세스 확인: 다른 의심스러운 프로세스가 실행 중인지 확인하려면
ps aux | grep tmp
같은 명령어를 사용해/tmp
디렉토리에서 실행 중인 다른 프로세스가 있는지 확인하십시오. - 시스템 점검: 시스템이 감염되었는지 확인하기 위해 추가적인 보안 점검을 수행하는 것이 좋습니다.
rkhunter
또는chkrootkit
같은 루트킷 탐지 도구를 사용해 시스템을 검사합니다.- 시스템 로그 (
/var/log/auth.log
또는/var/log/syslog
)를 확인하여 의심스러운 활동이 있었는지 살펴보세요.
- 네트워크 연결 확인:
netstat -tulnp
명령어로 네트워크 연결을 확인해 외부로 연결된 이상한 프로세스가 있는지 확인하십시오. - 패치 및 업데이트: 시스템이 최신 상태인지 확인하고, 가능한 모든 보안 패치를 적용하십시오.
sudo apt update && sudo apt upgrade
를 사용하여 패키지를 업데이트하세요. - 비밀번호 변경: 혹시 모를 계정 탈취에 대비하여, 서버의 모든 사용자 계정 비밀번호를 변경하는 것도 중요합니다.
상황에 따라서는 백업 후 시스템을 재설치하는 것도 고려해 보시는 것이 좋습니다.
4o
나의 말:
특정한 계정을 사용못하게 잠글수 있나? postgres 계정
ChatGPT의 말:
ChatGPT
네, 우분투에서 특정 계정을 잠그는 방법을 통해 postgres
계정과 같은 특정 사용자 계정의 로그인을 제한할 수 있습니다. 다음은 계정을 잠그는 몇 가지 방법입니다.
1. 계정 잠그기 (사용 불가로 설정)
passwd
명령어를 사용해 계정을 잠글 수 있습니다.
bash코드 복사sudo passwd -l postgres
이 명령은 postgres
계정의 비밀번호를 잠금 상태로 변경하여, 해당 계정으로 로그인할 수 없게 만듭니다.
2. 쉘을 /bin/false
또는 /sbin/nologin
으로 변경
로그인을 아예 불가능하게 하려면 해당 계정의 쉘을 변경할 수도 있습니다. 예를 들어, postgres
계정의 쉘을 nologin
으로 설정하면 해당 계정은 로그인할 수 없습니다.
bash코드 복사sudo usermod -s /sbin/nologin postgres
또는
bash코드 복사sudo usermod -s /bin/false postgres
이 명령은 postgres
사용자가 쉘 액세스를 시도할 때 접근할 수 없도록 만들어 줍니다.
3. 계정 만료 설정
계정 자체를 만료시켜서 사용을 제한할 수도 있습니다.
bash코드 복사sudo usermod -e 1 postgres
이 명령은 postgres
계정을 만료된 상태로 만들어, 더 이상 로그인이 불가능하게 합니다.
4. 프로세스와 서비스 확인 후 조치
만약 postgres
계정이 해킹에 이용되었다면, 해당 계정이 시스템 내에서 실행 중인 프로세스나 서비스에 관련이 있을 수 있으니 다음 명령으로 프로세스를 확인하고 종료하는 것도 중요합니다.
bash코드 복사ps aux | grep postgres
이 명령을 통해 postgres
계정이 실행 중인 프로세스를 확인한 후, 의심스러운 프로세스를 강제로 종료할 수 있습니다.
bash코드 복사sudo kill -9 <PID>
위 방법들을 통해 postgres
계정을 효과적으로 잠글 수 있습니다.
당장 해당 계정을 로그아웃 시키는 방법
네, postgres
계정을 즉시 로그아웃시키고, 해당 계정의 모든 프로세스를 종료할 수 있습니다. 다음 명령어를 사용해 postgres
계정으로 실행 중인 모든 세션을 강제 종료할 수 있습니다.
1. postgres
계정의 프로세스 확인
먼저 postgres
계정으로 실행 중인 프로세스를 확인합니다.
bash코드 복사ps -u postgres
이 명령을 실행하면 postgres
계정으로 실행 중인 모든 프로세스의 목록을 확인할 수 있습니다.
2. postgres
계정의 모든 프로세스 강제 종료
다음 명령을 사용하면 postgres
계정으로 실행 중인 모든 프로세스를 즉시 종료할 수 있습니다.
bash코드 복사sudo pkill -u postgres
이 명령은 postgres
계정이 실행하고 있는 모든 프로세스를 강제로 종료합니다. 이로 인해 해당 계정이 실행 중인 모든 세션이 로그아웃됩니다.
3. 추가 확인
종료 후 다시 프로세스를 확인하여 postgres
계정이 여전히 실행 중인지 확인합니다.
bash코드 복사ps -u postgres
이 과정으로 postgres
계정을 즉시 로그아웃시킬 수 있습니다.
postgres 계정 로그인 정보를 볼수 있나? 우분투에서
우분투에서 특정 계정(예: postgres
)의 로그인 기록을 확인하려면, 몇 가지 로그 파일과 명령어를 사용할 수 있습니다. 대표적으로 로그인 기록은 /var/log/wtmp
, /var/log/auth.log
파일에 저장됩니다.
1. last
명령어 사용하기
last
명령어를 사용하면 시스템에 로그인한 사용자의 기록을 확인할 수 있습니다.
bash코드 복사last postgres
이 명령은 postgres
계정으로 로그인한 모든 기록을 보여줍니다. 여기에는 로그인 및 로그아웃 시간, 로그인한 위치(IP 주소 등) 등이 포함됩니다.
2. auth.log
파일 확인
/var/log/auth.log
파일에는 인증 관련 이벤트가 기록됩니다. 여기에는 사용자 로그인 시도, 성공 및 실패한 로그가 기록됩니다. grep
명령어를 사용해 postgres
계정에 대한 로그인 관련 정보를 필터링할 수 있습니다.
bash코드 복사sudo grep 'postgres' /var/log/auth.log
이 명령을 실행하면 postgres
계정과 관련된 로그인 시도, 성공 또는 실패에 대한 정보를 확인할 수 있습니다.
3. journalctl
명령어 사용하기
systemd
를 사용하는 시스템에서는 journalctl
명령어를 사용하여 postgres
계정과 관련된 로그인 이벤트를 확인할 수 있습니다.
bash코드 복사sudo journalctl _COMM=postgres
이 명령은 postgres
서비스 또는 계정과 관련된 모든 로그를 표시합니다. 여기서 로그인 시도나 관련된 활동을 확인할 수 있습니다.
4. /var/log/wtmp
파일 확인
wtmp
파일은 모든 로그인, 로그아웃, 시스템 재부팅 기록을 보관하는 바이너리 파일입니다. last
명령어는 기본적으로 이 파일을 참조합니다. wtmp
파일을 직접 확인하려면:
bash코드 복사last -f /var/log/wtmp | grep postgres
이 명령은 wtmp
파일에서 postgres
계정과 관련된 로그인/로그아웃 기록을 표시합니다.
위 명령어들을 통해 postgres
계정의 로그인 정보를 확인할 수 있으며, 이 정보를 기반으로 의심스러운 로그인 활동을 파악할 수 있습니다.
이상한 파일들이 막 생기는데 이 파일들을 분석할수는 없나? 해킹툴인거 같은데
의심스러운 파일들이 우분투 시스템에서 생성되고 있다면, 해당 파일들을 분석하여 악성코드(해킹툴)인지 여부를 확인할 수 있습니다. 몇 가지 방법을 통해 파일을 분석할 수 있습니다. 다음 단계들을 따라 분석할 수 있습니다.
1. 파일의 기본 정보 확인
먼저 파일의 기본적인 속성을 확인하여 파일이 어떤 유형인지, 누가 만들었는지, 언제 만들어졌는지를 확인할 수 있습니다.
bash코드 복사ls -l /path/to/suspicious_file
이 명령은 해당 파일의 소유자, 권한, 파일 생성 시간 등을 보여줍니다.
bash코드 복사file /path/to/suspicious_file
이 명령은 파일의 유형을 확인합니다. 예를 들어, 바이너리 파일인지, 스크립트 파일인지 등을 알 수 있습니다.
2. 파일의 해시 값 생성 (무결성 검사)
파일의 무결성을 확인하거나 다른 시스템에서 유사한 파일을 검색할 수 있도록 해시 값을 생성할 수 있습니다. MD5나 SHA256 같은 해시 값을 생성하여 해당 파일이 악성코드 데이터베이스에 있는지 확인할 수 있습니다.
bash코드 복사md5sum /path/to/suspicious_file
sha256sum /path/to/suspicious_file
이 해시 값을 사용해 바이러스 토탈(VirusTotal) 같은 온라인 서비스에서 파일을 검사할 수 있습니다.
3. 온라인 악성코드 검사 도구 사용 (VirusTotal 등)
파일을 직접 업로드해 악성코드 여부를 검사하는 방법도 있습니다. VirusTotal
같은 서비스는 파일을 여러 안티바이러스 엔진을 통해 분석해줍니다.
- 의심스러운 파일을 다운로드하여 안전한 네트워크를 통해 VirusTotal에 업로드합니다.
- 또는 파일의 해시 값을 VirusTotal에 입력하여 해당 파일이 이미 분석된 적이 있는지 확인할 수 있습니다.
4. strings
명령어로 파일 내부 확인
바이너리 파일이더라도 strings
명령어를 사용해 파일 내에 사람이 읽을 수 있는 텍스트 정보를 확인할 수 있습니다. 이를 통해 악성코드의 단서를 찾을 수 있습니다.
bash코드 복사strings /path/to/suspicious_file
이 명령은 파일 내부의 텍스트(예: URL, 명령어 등)를 보여줍니다. 악성코드의 흔적이 될 수 있는 URL이나 스크립트를 찾을 수 있습니다.
5. lsof
명령으로 파일 사용 여부 확인
해당 파일이 현재 어떤 프로세스에서 사용되고 있는지 확인하기 위해 lsof
명령어를 사용할 수 있습니다.
bash코드 복사lsof /path/to/suspicious_file
이 명령은 의심스러운 파일을 열고 있는 프로세스나 네트워크 연결을 보여줍니다. 만약 이 파일이 악성 프로세스에서 사용 중이라면, 해당 프로세스를 종료하고 파일을 격리할 수 있습니다.
6. 파일의 네트워크 활동 확인
파일이 실행 중이라면 네트워크 활동을 확인할 수 있습니다. 악성코드가 외부로 데이터를 전송하고 있는지 확인하기 위해 netstat
또는 ss
명령을 사용할 수 있습니다.
bash코드 복사netstat -tulnp
이 명령은 현재 열려 있는 네트워크 연결을 확인하여 의심스러운 연결이 있는지 찾습니다. 또한 의심스러운 파일이 외부 서버로 연결되고 있는지 확인할 수 있습니다.
7. 악성코드 샌드박스 분석 도구 사용
만약 보다 전문적인 악성코드 분석을 하고자 한다면 샌드박스 분석 도구를 사용할 수 있습니다. 이러한 도구는 파일을 안전한 환경에서 실행하여 파일의 행동을 추적합니다. 오픈 소스 샌드박스 도구로는 Cuckoo Sandbox가 있습니다.
- Cuckoo Sandbox는 의심스러운 파일을 가상 환경에서 실행해 파일이 어떤 작업을 수행하는지 추적합니다.
8. ClamAV 같은 안티바이러스 도구 사용
우분투에서는 오픈 소스 안티바이러스 프로그램인 ClamAV를 사용해 시스템을 검사할 수 있습니다.
ClamAV 설치 및 검사:
bash코드 복사sudo apt update
sudo apt install clamav
sudo freshclam # 바이러스 데이터베이스 업데이트
sudo clamscan -r /path/to/directory
이 명령은 지정된 디렉토리 또는 파일을 검사하여 악성코드를 찾아줍니다.
9. 실행 권한 제거 및 파일 삭제
파일이 악성코드로 확인되거나 의심스러운 경우, 파일의 실행 권한을 제거하고 격리하거나 삭제할 수 있습니다.
실행 권한 제거:
bash코드 복사chmod -x /path/to/suspicious_file
파일 삭제:
bash코드 복사rm /path/to/suspicious_file
요약
- 파일의 기본 정보를 확인 (
ls
,file
). - 파일의 해시 값을 생성해 온라인 도구 (VirusTotal)에서 검사.
strings
명령어로 파일 내부 텍스트를 확인.lsof
명령어로 파일이 사용 중인지 확인.- 네트워크 연결을 확인 (
netstat
,ss
). - 샌드박스 도구(Cuckoo Sandbox)를 통해 파일 행동 분석.
- ClamAV 같은 안티바이러스 도구를 사용해 시스템 검사.
- 악성 파일로 확인되면 실행 권한 제거 및 삭제.
이런 절차를 통해 의심스러운 파일들이 악성코드인지 확인하고 적절한 조치를 취할 수 있습니다.
Trojan:Linux/CoinMiner.K 이거라는데 어떡하지
Trojan:Linux/CoinMiner.K
는 리눅스 기반에서 암호화폐를 채굴하는 악성코드(Trojan)입니다. 이 트로이 목마는 감염된 시스템의 리소스를 사용해 암호화폐를 채굴하여, 시스템 성능을 저하시키고 과도한 전력 소비를 초래할 수 있습니다. 이를 제거하고 시스템을 보호하기 위해 아래 단계를 따라 조치하세요.
1. 의심스러운 프로세스 종료
암호화폐 채굴 트로이 목마는 coinminer
, xmrig
, minerd
등과 같은 이름의 프로세스를 실행합니다. 실행 중인 모든 의심스러운 프로세스를 확인하고 종료합니다.
bash코드 복사ps aux | grep -i 'coinminer\|xmrig\|minerd'
위 명령으로 의심스러운 프로세스의 PID를 찾은 다음, 아래 명령으로 종료합니다.
bash코드 복사sudo kill -9 <PID>
2. 파일 삭제
해당 트로이 목마는 /tmp
디렉토리나 숨겨진 디렉토리에서 실행 파일을 만들어 두는 경우가 많습니다. /tmp
, /var/tmp
, 사용자 홈 디렉토리의 숨김 파일 등을 확인하고 의심스러운 파일들을 삭제하세요.
bash코드 복사sudo rm -rf /tmp/* /var/tmp/*
3. 사용자 계정 확인
트로이 목마가 루트 권한으로 설치되었다면, 악성 사용자가 시스템에 접근할 수 있도록 새로운 사용자 계정을 추가했을 가능성이 있습니다. 다음 명령을 사용해 의심스러운 사용자 계정이 있는지 확인하고 삭제합니다.
bash코드 복사sudo cat /etc/passwd
sudo userdel -r <사용자명>
4. 예약된 작업 확인 (Crontab)
트로이 목마는 감염 후 지속적으로 실행되기 위해 cron
작업에 추가됩니다. cron
에 등록된 의심스러운 작업이 있는지 확인하고 제거합니다.
- 사용자별
crontab
확인:bash코드 복사sudo crontab -l sudo crontab -u postgres -l
- 시스템
cron
확인:bash코드 복사sudo cat /etc/crontab sudo ls /etc/cron.*
의심스러운 작업이 있다면 다음 명령으로 삭제하세요.
bash코드 복사sudo crontab -e
5. ClamAV로 전체 시스템 검사
ClamAV를 설치하여 시스템 전체를 검사하고 악성 파일을 제거할 수 있습니다.
bash코드 복사sudo apt update
sudo apt install clamav
sudo freshclam # 바이러스 데이터베이스 업데이트
sudo clamscan -r --remove / # 전체 시스템 검사 및 감염 파일 제거
6. 의심스러운 네트워크 연결 확인 및 차단
트로이 목마가 외부 서버에 연결하여 작업을 수행할 수 있습니다. netstat
명령으로 네트워크 연결을 확인하고 의심스러운 IP 주소를 차단하세요.
bash코드 복사sudo netstat -tulnp
만약 의심스러운 IP 주소가 확인되면, iptables
를 사용해 해당 IP 주소를 차단할 수 있습니다.
bash코드 복사sudo iptables -A OUTPUT -d <의심스러운 IP 주소> -j DROP
7. 시스템 로그 확인
침투 및 활동 흔적을 추적하기 위해 /var/log/auth.log
, /var/log/syslog
등을 확인하세요.
bash코드 복사sudo cat /var/log/auth.log
sudo cat /var/log/syslog
8. 패키지 업데이트 및 보안 패치
시스템의 보안 취약점을 막기 위해 모든 패키지를 최신 버전으로 업데이트하세요.
bash코드 복사sudo apt update && sudo apt upgrade -y
9. 비밀번호 변경
모든 사용자 계정의 비밀번호를 변경해, 외부 침입 가능성을 최소화합니다.
10. 추가적인 보호 조치
보안을 위해 보안 그룹을 설정하고, 필요 시에는 백업 후 OS를 재설치하는 것이 최선일 수 있습니다.
이 조치들로도 의심스러운 활동이 계속되면, 감염이 지속되었을 가능성이 있으므로 시스템을 백업하고 초기화하는 것이 좋습니다.
postgre 계정도 삭제하고 데이터베이스도 삭제하고 관련 모든 데이터도 지우려면 어떻게 해야해?
PostgreSQL 계정과 데이터베이스, 그리고 관련 데이터까지 완전히 삭제하려면 아래의 단계를 순서대로 수행하시면 됩니다. 이 과정은 PostgreSQL 서버와 모든 데이터 파일을 삭제하므로 주의가 필요합니다.
1. PostgreSQL 서비스 중지
먼저 PostgreSQL 서버를 중지합니다.
bash코드 복사sudo systemctl stop postgresql
또는 서비스 이름에 따라 아래 명령어를 사용할 수 있습니다.
bash코드 복사sudo service postgresql stop
2. postgres
계정 삭제
PostgreSQL 설치 시 생성된 시스템 사용자 계정 postgres
를 삭제합니다. 이 계정을 삭제하면 해당 계정이 소유한 파일도 삭제됩니다.
bash코드 복사sudo userdel -r postgres
-r
옵션은 postgres
계정의 홈 디렉토리 및 소유한 파일도 함께 삭제합니다.
3. PostgreSQL 데이터 디렉토리 및 로그 파일 삭제
PostgreSQL의 모든 데이터베이스와 데이터는 일반적으로 /var/lib/postgresql/
디렉토리에 저장됩니다. PostgreSQL을 삭제하고 나면 이 디렉토리를 삭제하여 데이터베이스 파일을 제거합니다.
bash코드 복사sudo rm -rf /var/lib/postgresql/
또한, PostgreSQL 로그 파일이 /var/log/postgresql/
에 있다면, 해당 로그 파일도 삭제할 수 있습니다.
bash코드 복사sudo rm -rf /var/log/postgresql/
4. PostgreSQL 소프트웨어 삭제
PostgreSQL 패키지를 삭제하여 관련 파일들을 모두 제거합니다.
우분투/Debian 기반 시스템에서 PostgreSQL 제거
bash코드 복사sudo apt-get --purge remove postgresql*
--purge
옵션을 사용하면 PostgreSQL 관련 설정 파일도 삭제됩니다.
CentOS/RHEL 기반 시스템에서 PostgreSQL 제거
bash코드 복사sudo yum remove postgresql*
5. 남은 구성 파일 확인 및 삭제
PostgreSQL의 설정 파일이나 관련 파일이 /etc/postgresql/
에 남아 있을 수 있습니다. 해당 디렉토리가 존재하면 삭제합니다.
bash코드 복사sudo rm -rf /etc/postgresql/
6. 시스템에서 PostgreSQL 확인
PostgreSQL이 완전히 삭제되었는지 확인합니다. psql
명령어가 작동하지 않으면 PostgreSQL이 성공적으로 제거된 것입니다.
bash코드 복사psql
만약 PostgreSQL 관련 파일이나 프로세스가 여전히 발견된다면, 각 디렉토리를 다시 한 번 확인하고 삭제해 주세요.
이 단계를 통해 PostgreSQL과 관련된 모든 데이터, 사용자 계정, 데이터베이스 파일이 완전히 삭제됩니다.
참고
https://si.mpli.st/dev/2018-04-15-cryptominer-inside-postgres
결국 나같은 경우에는 postgres 계정 삭제, db 삭제, 관련 모든 파일 삭제 및 clamscan 을 전체 컴퓨터에 대해서 실행했고 clamscan에서 tmp에 있던 이상한 파일들까지도 삭제 , 비번 변경 및 방화벽 강화 등을 했다.