작년에 악의적으로 회원가입을 반복적으로 시도하는 사람이 나타나서 네트워크 단위로 막았다. https://yiunsr.tistory.com/941

 동일인 인지 모르겠으나 그 방법으로 악의적으로 회원가입을 반복하는 사람이 다시 나타났다. 이번에는 IP 마다 공동적인 네트워크가 없어서 방법을 모르고 있다가 https://www.abuseipdb.com/  이 사이트에서 IP를 검색하니 이 IP가 토르 네트워크로 이용된다는 것을 알게 되었다. 
https://www.abuseipdb.com/ 는 IP 에 대해 부정적 사용이 많은지 검색해 보는 사이트이다. 이번에 처음으로 알게 되었다. 앞으로 매우 유용하게 이용할 수 있을 것 같다. 

tor 네트워크에 대해서는 나무위키(https://namu.wiki/w/Tor) 에 설명이 잘 되어 있어, 이 곳을 참고 하면 된다. 결론적으로 이 사용자들이 IP 를 변경하면서 들어 온다는게 문제이다. 제미나이을 통해 이 IP 들이 공개되어 있다는 것을 알게 되었다.  https://check.torproject.org/exit-addresses 에서 정보들이 공개되어 있다. 이 IP들을 막으면 된다. https://check.torproject.org/exit-addresses  에서 IP를 가져오는 것도 다음과 같이 쉘 스크립트로 만들 수 있다. 

#!/bin/bash
TOR_IP_LIST=$(curl -s https://check.torproject.org/exit-addresses | grep ExitAddress | awk '{print $2}')
NGINX_CONF="/etc/nginx/conf.d/block_tor_ips.conf"

echo "# Tor Exit Nodes Block List" > $NGINX_CONF
for ip in $TOR_IP_LIST; do
    echo "deny $ip;" >> $NGINX_CONF
done

# Nginx 설정 테스트 후 리로드
nginx -t && systemctl reload nginx

 

/etc/nginx/conf.d/block_tor_ips.conf  에 파일이 자동으로 생성된다. 

# Tor Exit Nodes Block List
deny 171.25.193.25;
deny 80.67.167.81;
.........


Nginx 에는 IP 를 막는 기능이 있기 때문에 다음과 같은 방법으로 IP를 막을 수 있다.

* nginx 에 설정
```
..........
server {
    listen 443 ssl http2;
     ..........
     include /etc/nginx/conf.d/block_tor_ips.conf;
     ..........
}

```

 

이것을 crontab 으로 등록해서 bash script 를 주기적으로 실행시키며 토르 접속 IP를 갱신 시킬 수 있다.

이제는 이런 식의 공격은 그만 들어 왔으면 좋겠다. 계속 들어 온다면 
https://github.com/firehol/blocklist-ipsets/  에 공개된 악의적으로 공격을 하는 IP 에 대해 전부 막는 방법을 생각해야 한다. 

회사 admin 사이트에 vuetify3 을 사용해서 만들었는데 뭔가 layout 이 내 마음에 들지 않았다. 
v-navigation-drawer 을 사용하고 있었는데 dim 처리가 화면 전체를 가리지 못하고 딱 body 의 높이 만큼만 보여주는 문제가 있었다.  아무리 찾아봐도 이것에 대한 기능이 없어서 css 을 사용해서 dim 처리된 반투명한 검은색 layout 을 높여주려고 했다.
그런데 이게 뭔가 높이를 참조해야 하는 것 끼리 예쁜 관계(css selector 로 쉽게 처리 할 수 있는 관계)가 아니었다.
그래서 혹시 특정 div 의 높이를 참고해서 높이를 따라 만들 수 있는 기능이 있나 하고 찾아 봤다. 그랬더니 anchor-size 라는 css 함수를 발견했다. 

결론부터 말하면 가능하고 다음과 같이 처리 하면 된다. anchor-name, position-anchor, anchor-size 을 잘 이용하면 된다.
https://jsfiddle.net/nahanmil/bwmro68d/19/

<style>
#src{
  width: 250px;
  border: 1px red solid;
  anchor-name: --target-height;
}
#src textarea{
  width: 200px;
  field-sizing: content;
}

#target{
  width: 250px;
  border: 1px blue solid;
  position-anchor: --target-height;
  height: anchor-size(height);
  position: absolute;
}

</style>


<div id="src">
<textarea>
Test
</textarea>
</div>
<br/><br/>
<div id="target">
auto resize height
</div>

textarea 크기를 마우스로 변경하거나 값을 넣어서 변경시키면 이 크기에 따라서 auto resize height 라고 쓰여진 div 박스도 같은 height 로 설정된다. 

오늘 기준으로 구글 AI 검색도 몰랐던 2026년 새 기능이다. (Baseline 2026 이라서 웬만한 최신 브라우저 다 지원하는 기능이다. ) 

 

 회사내 PC를 이용해서 ubuntu server 를 운영하고 있다. 이 서버는 회사에서만 사용하는 사내 서비스만 제공하기 때문에 회사에서 남는 PC를 이용해서 사용하고 있다. 

 어제 주기적으로 와야 하는 slack 알람이 안 오는 것을 보고 혹시 서버가 이상하냐는 생각과 함께 ssh 접속을 시도 했다. 접속 자체가 아예 동작하지 않았다. 이 사내 서버는 여러 서비스를 돌리고 있는 동작해야 하는 웹사이트도 접속되지 않았다. 그래서 이 PC를 강제로 재부팅 시켰다. 

 이 서버는 하도 많은 일을 하다보니 수요일날 아침 8시에 자동으로 재부팅 시키고 있었다. 재부팅하지 않고 사용하면 이상하게 여러 문제가 생기는 것을 경험했다. (가장 많은 문제는 out of memory 가 발생한다는 것이다. ) 단순히 웹서버 뿐만 아니라 다양한 역할을 하다보니 이런 일을 그러려니 하고 있다. 

그래서 내 추정으로는 뭔가 작업을 하다나가 너무 많은 일을 하다보니 재부팅 하는 시간이 되었지만 프로그램을 완전히 종료하지 못하고 뭔가 문제가 생기는 것 아닌가 하는 의심을 했다. 구글 제미나이와 많은 토론을 통해 그것이 맞다고 확인했다. 
last reboot | head -n 5
을 이용하면 재부팅한 기록을 볼 수 있다고 했다. 이것으로 아침 8시 재부팅이 동작하지 않았다는 것을 확인 했다. 
그리고 
sudo journalctl --since "2026-05-06 07:55:00" --until "2026-05-06 08:10:00"
을 통해서 상세한 동작을 확인 할 수 있다고 했다. 

어째든 이 방법으로 종료 자체가 되지 않았다는 것을 확인 했다. 

내 경우 crontab 을 이용해서 서버를 재시동 시키고 있었다. 
0 8 * * 3 /sbin/reboot
으로 매주 수요일날 아침 8시에 재부팅 하도록 하고 있었다. 

구글 제미나이와 토론을 해서 일정시간이 지나도록 종료가 안되면 강제로 종료하는 방식으로 처리 하도록 했다. 

주석 해제 필요
sudo vim   /etc/systemd/system.conf
==== system.conf ===
DefaultTimeoutStopSec=300s
========

저장후 재설정
sudo systemctl daemon-reexec


300초가 지나도록 종료가 되지 않으면 강제로 종료하도록 했다. 

 

이렇게 일을 처리하고 나니 구글제미나이가 너무 잘 해결해 주어서 내 역할이 뭔가 하는 자괴감이 든다. 
이렇게 간단히 적었지만 구글 제미나이와 처절한 토론이 있었다는 것을 꼭 강조하고 싶다. 
물론 제미나이를 믿지 못해 검색으로 검증도 했다.