최근에 서버 정지 또는 네트워크 문제와 같은 몇 가지 문제가 발생했습니다(현재로서는 어떤 문제인지 알 수 없습니다). 저는 포트 443에서 OpenSSH를 실행하고 있는데, fall2ban의 SSH 방지 DDoS 필터가 원인인 것 같습니다. 일반적으로 HTTPS용으로 예약된 포트에서 실행 중이기 때문에 때때로 잘못된 요청을 받습니다.
# /var/log/auth.log
Aug 25 11:46:38 void sshd[13782]: pam_unix(sshd:session): session closed for user tim
Aug 25 11:46:38 void sshd[13782]: syslogin_perform_logout: logout() returned an error
Aug 25 11:46:41 void sshd[15911]: Bad protocol version identification 'CONNECT 194.109.153.5:11111 HTTP/1.0' from 194.109.21.230
Aug 25 11:46:45 void sshd[15915]: Bad protocol version identification 'CONNECT 194.109.153.5:11111 HTTP/1.0' from 194.109.21.230
Aug 25 11:46:53 void sshd[15912]: Did not receive identification string from 194.109.21.230
Aug 25 11:46:53 void sshd[15910]: Did not receive identification string from 194.109.21.230
Aug 25 11:46:57 void sshd[15916]: Did not receive identification string from 194.109.21.230
Aug 25 11:46:57 void sshd[15914]: Did not receive identification string from 194.109.21.230
그러면 다음과 같이 failure2ban이 실행됩니다.
# /var/log/fail2ban.log
2014-08-25 11:46:58,609 fail2ban.actions: WARNING [ssh-ddos] Ban 194.109.21.230
2014-08-25 11:56:58,852 fail2ban.actions: WARNING [ssh-ddos] Unban 194.109.21.230
이전에 걱정했던 것은 아닙니다. 로그에 약간의 소음이 있을 뿐 서버에는 아무런 영향도 미치지 않습니다. 하지만 지난 며칠 동안 나는프록시 스캔여러 번 194.109.21.230 (proxyscan.xs4all.net
. 내 Munin 차트를 보면, fall2ban이 겉보기에 중요하지 않은 IP를 금지한 같은 기간 동안 정지된 것 같습니다.
이것이 무엇과 관련이 있는지는 잘 모르겠지만 최근에 동일한 서버²에서 RCU 일시 중지를 경험했습니다. 이 날짜 이전에는 Fail2ban이 실행되었음에도 불구하고 서버 정지를 경험한 적이 없습니다. 그 이후로 문제를 해결했지만 /etc/ntp.conf
정지 현상이 발생한 후에야 문제가 해결되었습니다.
# /var/log/syslog
... (multiple 'host name not found' for ntpd)
Aug 20 20:24:22 void ntpd_intres[8124]: host name not found: 1.tid.uio.no
Aug 20 20:40:25 void ntpd_intres[8124]: host name not found: 0.ntp.uio.no
Aug 20 20:40:25 void ntpd_intres[8124]: host name not found: 1.tid.uio.no
Aug 20 20:57:44 void kernel: [18225085.384024] INFO: rcu_sched detected stall on CPU 0 (t=18892 jiffies)
Aug 20 20:57:44 void kernel: [18225085.384024] sending NMI to all CPUs:
Aug 20 20:57:44 void kernel: [18225085.384024] NMI backtrace for cpu 0
Aug 20 20:57:44 void kernel: [18225085.384024] Modules linked in: tun iptable_nat nf_nat iptable_mangle xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_mark bridge stp xt_multiport iptable_filter ip_tables x_tables vmwgfx snd_page_alloc parport_pc parport processor thermal_sys snd_timer snd soundcore evdev pcspkr serio_raw ttm drm button i2c_piix4 i2c_core ext4 crc16 jbd2 mbcache sg sr_mod cdrom ata_generic virtio_blk virtio_net floppy ata_piix libata virtio_pci virtio_ring virtio scsi_mod [last unloaded: scsi_wait_scan]
Aug 20 20:57:44 void kernel: [18225085.384024]
Aug 20 20:57:44 void kernel: [18225085.384024] Pid: 8124, comm: ntpd Not tainted 3.2.0-4-686-pae #1 Debian 3.2.41-2+deb7u2 Bochs Bochs
... (call stack)
이제 방금 프록시 검색 서버를 차단하는 iptables 규칙을 추가했습니다.
iptables -A INPUT -p tcp --dport 443 -s 128.39.74.65 -j DROP
나 자신을 차단하여 강제로 문제를 해결하고, 매번 같은 일이 발생하는지, 재부팅 후 해결되었는지 확인하고 싶었습니다. 실제로 ssh-ddos를 트리거하는 명령을 생각해낼 수 없습니다. 인증이 작동하지 않거나 wget
충분하지 않은 것 같습니다. 어떤 팁이 있나요?
RCU 실행이 중지됩니까(*)은 Fail2ban/freezes와 관련이 있습니다. 그렇다면 그 이유는 무엇입니까? 재부팅하면 도움이 될 수 있지만 어떻게 이런 일이 발생하고 서버가 정지되는 이유가 궁금합니다.
편집하다:RCU가 정지 직후 정지됩니다.
# /usr/var/log/auth.log.1
Aug 20 21:09:28 void sshd[9115]: Bad protocol version identification 'CONNECT 194.109.153.5:11111 HTTP/1.0' from 194.109.21.230
Aug 20 21:09:40 void sshd[9114]: Did not receive identification string from 194.109.21.230
Aug 20 21:09:40 void sshd[9116]: Did not receive identification string from 194.109.21.230
# /usr/var/log/fail2ban.log.1
2014-08-20 21:10:28,747 fail2ban.actions: WARNING [ssh-ddos] Ban 194.109.21.230
2014-08-20 21:20:29,515 fail2ban.actions: WARNING [ssh-ddos] Unban 194.109.21.230
1 제가 정기적으로 사용하는 모든 네트워크가 22를 허용하는 것은 아니기 때문에 443에서 실행하고 있습니다. 또한 들어오는 SSH 공격에 덜 취약하다는 추가 이점도 있습니다.
² 커널 패닉이 아닌 RCU 정지(CPU). 댓글을 읽어보세요.