先日、DNSで自宅サーバの名前解決ができなくなりました。
自宅サーバにDNSサービスを立てている訳ではないので、取り急ぎ/etc/resolv.confを直接書き換える対処で事なきを得たわけですが、原因が分からず腑に落ちない状況です。
セキュリティ対策としてはルータのFW設定とポートを変更する対策をしていますが、不安になってきました。
そんなわけで、自宅サーバのセキュリティについて考えてみたいと思います。
話変わるけど、大阪都構想否決されましたね。
Contents
自宅サーバのセキュリティ対策
自宅サーバのセキュリティ対策として、何ができるのでしょうか。
最も基本的なセキュリティ対策はFirewall(FW:ファイヤーウォール)の設定です。
インターネットに公開しているサーバの場合は、インターネット越しに自宅サーバが攻撃される可能性が高いです。
私も、このブログをはじめ、VPNサーバ等を外から使うために自宅サーバをインターネットに公開しています。
そのため私の場合は、ルータ側でFWの設定をしています。
FWと言っても、ルータに設定する場合とサーバ側(iptablesやufw等)に設定する方法がありますが、私はルータ側でFWの設定をしています。
具体的には、インターネット公開しているサービスのポート番号(80、443、1194、51820)以外は拒否しています。
一応、SSHは22番ポートではなく、SSLHで443番ポートで受ける設定にしています。
基本的に、必要最低限にポートを絞っていれば攻撃されるリスクは大きく減らすことができます。
自分は一応、IPAの情報処理安全確保支援士のセキュリティ資格持っているので、基本的なセキュリティ知識は持っています。
SSHログインの足跡
このようなFWを設定していたとしても万全ではありません。
自宅サーバのログを確認すると大量のSSHへのログイン試行が確認されました。
SSHへのログイン試行(攻撃)の痕跡は以下のコマンドで確認できます。
1 2 |
# 攻撃者によるSSH試行の痕跡 grep -E "Failed|Invalid" /var/log/auth.log |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Oct 4 16:28:53 server sshd[521]: Invalid user admin from 172.31.0.5 port 57262 Oct 4 16:28:56 server sshd[521]: Failed password for invalid user admin from 172.31.0.5 port 57262 ssh2 Oct 4 16:28:57 server sshd[538]: Invalid user admin from 172.31.0.5 port 57280 Oct 4 16:28:59 server sshd[538]: Failed password for invalid user admin from 172.31.0.5 port 57280 ssh2 Oct 4 16:29:01 server sshd[541]: Invalid user admin from 172.31.0.5 port 57282 Oct 4 16:29:03 server sshd[541]: Failed password for invalid user admin from 172.31.0.5 port 57282 ssh2 Oct 4 18:10:05 server sshd[6233]: Invalid user admin from 172.31.0.5 port 36664 Oct 4 18:10:08 server sshd[6233]: Failed password for invalid user admin from 172.31.0.5 port 36664 ssh2 Oct 4 18:10:09 server sshd[6236]: Invalid user admin from 172.31.0.5 port 37736 Oct 4 18:10:11 server sshd[6236]: Failed password for invalid user admin from 172.31.0.5 port 37736 ssh2 Oct 4 18:10:12 server sshd[6239]: Invalid user admin from 172.31.0.5 port 38736 Oct 4 18:10:14 server sshd[6239]: Failed password for invalid user admin from 172.31.0.5 port 38736 ssh2 Oct 4 18:10:17 server sshd[6242]: Invalid user alarm from 172.31.0.5 port 40130 Oct 4 18:10:20 server sshd[6242]: Failed password for invalid user alarm from 172.31.0.5 port 40130 ssh2 Oct 4 18:10:21 server sshd[6245]: Invalid user auto from 172.31.0.5 port 41236 Oct 4 18:10:23 server sshd[6245]: Failed password for invalid user auto from 172.31.0.5 port 41236 ssh2 Oct 4 18:10:27 server sshd[6248]: Failed password for backup from 172.31.0.5 port 42218 ssh2 Oct 4 21:48:49 server sshd[19666]: Invalid user admin from 172.31.0.5 port 60674 Oct 4 21:48:52 server sshd[19666]: Failed password for invalid user admin from 172.31.0.5 port 60674 ssh2 Oct 4 21:48:53 server sshd[19669]: Invalid user admin from 172.31.0.5 port 60676 Oct 4 21:48:55 server sshd[19669]: Failed password for invalid user admin from 172.31.0.5 port 60676 ssh2 Oct 4 21:48:56 server sshd[19672]: Invalid user admin from 172.31.0.5 port 60678 Oct 4 21:48:58 server sshd[19672]: Failed password for invalid user admin from 172.31.0.5 port 60678 ssh2 Oct 5 17:08:26 server sshd[6890]: Invalid user ftp from 172.31.0.5 port 51416 Oct 5 17:08:28 server sshd[6890]: Failed password for invalid user ftp from 172.31.0.5 port 51416 ssh2 Oct 5 17:08:29 server sshd[6893]: Invalid user ftpadmin from 172.31.0.5 port 51418 Oct 5 17:08:31 server sshd[6893]: Failed password for invalid user ftpadmin from 172.31.0.5 port 51418 ssh2 Oct 5 17:08:32 server sshd[6896]: Invalid user kafka from 172.31.0.5 port 51420 Oct 5 17:08:34 server sshd[6896]: Failed password for invalid user kafka from 172.31.0.5 port 51420 ssh2 Oct 5 18:52:16 server sshd[13081]: Invalid user linktechs from 172.31.0.5 port 56878 Oct 5 18:52:18 server sshd[13081]: Failed password for invalid user linktechs from 172.31.0.5 port 56878 ssh2 Oct 5 18:52:19 server sshd[13109]: Invalid user martin from 172.31.0.5 port 56886 Oct 5 18:52:21 server sshd[13109]: Failed password for invalid user martin from 172.31.0.5 port 56886 ssh2 : : |
意外と攻撃されています。
月間試行数は・・・
1 2 |
# 10月のssh試行数をカウント cat /var/log/auth.log* | grep -E "Failed|Invalid" | grep '^Oct' | wc -l |
1 |
86602 |
8万って、思ってたよりやってくれたな・・・
知らない間にものすごい攻撃を受けていました。。
もしかしたら、夏の熱暴走もこれが要因の一つかもしれません。
ログを分析してみる
もう一度ログをよく見てみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Oct 4 16:28:53 server sshd[521]: Invalid user admin from 172.31.0.5 port 57262 Oct 4 16:28:56 server sshd[521]: Failed password for invalid user admin from 172.31.0.5 port 57262 ssh2 Oct 4 16:28:57 server sshd[538]: Invalid user admin from 172.31.0.5 port 57280 Oct 4 16:28:59 server sshd[538]: Failed password for invalid user admin from 172.31.0.5 port 57280 ssh2 Oct 4 16:29:01 server sshd[541]: Invalid user admin from 172.31.0.5 port 57282 Oct 4 16:29:03 server sshd[541]: Failed password for invalid user admin from 172.31.0.5 port 57282 ssh2 Oct 4 18:10:05 server sshd[6233]: Invalid user admin from 172.31.0.5 port 36664 Oct 4 18:10:08 server sshd[6233]: Failed password for invalid user admin from 172.31.0.5 port 36664 ssh2 Oct 4 18:10:09 server sshd[6236]: Invalid user admin from 172.31.0.5 port 37736 Oct 4 18:10:11 server sshd[6236]: Failed password for invalid user admin from 172.31.0.5 port 37736 ssh2 Oct 4 18:10:12 server sshd[6239]: Invalid user admin from 172.31.0.5 port 38736 Oct 4 18:10:14 server sshd[6239]: Failed password for invalid user admin from 172.31.0.5 port 38736 ssh2 Oct 4 18:10:17 server sshd[6242]: Invalid user alarm from 172.31.0.5 port 40130 Oct 4 18:10:20 server sshd[6242]: Failed password for invalid user alarm from 172.31.0.5 port 40130 ssh2 Oct 4 18:10:21 server sshd[6245]: Invalid user auto from 172.31.0.5 port 41236 Oct 4 18:10:23 server sshd[6245]: Failed password for invalid user auto from 172.31.0.5 port 41236 ssh2 Oct 4 18:10:27 server sshd[6248]: Failed password for backup from 172.31.0.5 port 42218 ssh2 Oct 4 21:48:49 server sshd[19666]: Invalid user admin from 172.31.0.5 port 60674 Oct 4 21:48:52 server sshd[19666]: Failed password for invalid user admin from 172.31.0.5 port 60674 ssh2 Oct 4 21:48:53 server sshd[19669]: Invalid user admin from 172.31.0.5 port 60676 Oct 4 21:48:55 server sshd[19669]: Failed password for invalid user admin from 172.31.0.5 port 60676 ssh2 Oct 4 21:48:56 server sshd[19672]: Invalid user admin from 172.31.0.5 port 60678 Oct 4 21:48:58 server sshd[19672]: Failed password for invalid user admin from 172.31.0.5 port 60678 ssh2 Oct 5 17:08:26 server sshd[6890]: Invalid user ftp from 172.31.0.5 port 51416 Oct 5 17:08:28 server sshd[6890]: Failed password for invalid user ftp from 172.31.0.5 port 51416 ssh2 Oct 5 17:08:29 server sshd[6893]: Invalid user ftpadmin from 172.31.0.5 port 51418 Oct 5 17:08:31 server sshd[6893]: Failed password for invalid user ftpadmin from 172.31.0.5 port 51418 ssh2 Oct 5 17:08:32 server sshd[6896]: Invalid user kafka from 172.31.0.5 port 51420 Oct 5 17:08:34 server sshd[6896]: Failed password for invalid user kafka from 172.31.0.5 port 51420 ssh2 Oct 5 18:52:16 server sshd[13081]: Invalid user linktechs from 172.31.0.5 port 56878 Oct 5 18:52:18 server sshd[13081]: Failed password for invalid user linktechs from 172.31.0.5 port 56878 ssh2 Oct 5 18:52:19 server sshd[13109]: Invalid user martin from 172.31.0.5 port 56886 Oct 5 18:52:21 server sshd[13109]: Failed password for invalid user martin from 172.31.0.5 port 56886 ssh2 : : |
よく見ると、攻撃者のIPアドレスが全て172.31.0.5になっています。
ローカルIPアドレスになっているのは、DockerコンテナのIPアドレスだからです。
Dockerコンテナ(SSLH)経由で443番ポートで受けてSSHDを叩くため、接続元がSSLHのDockerコンテナIPアドレス(172.31.0.5)になるのです。
ややこしいな
つまり、攻撃者は22番ポートを狙い撃ちしてSSHを試行しているわけではないということが分かりました。
「SSHの攻撃対策は22番ポートを閉じればよい」という浅はかな考えは、通用しません。
攻撃者には完全に裏を読まれています。
ということで、ログ収集のために一旦SSHに関してはSSLHを経由するのを辞めて、ルータ側で22番ポートをあえて公開してみました。
そして2-3週間ほどおいてログを確認してみます。
1 2 |
# 攻撃者によるSSH試行の痕跡(2週間後) cat /var/log/auth.log* | grep -E "Failed|Invalid" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Oct 23 22:10:15 server sshd[26960]: Invalid user loic from 14.225.3.47 port 54124 Oct 23 22:10:15 server sshd[26947]: Failed password for invalid user pliki from 14.225.3.47 port 53724 ssh2 Oct 23 22:10:17 server sshd[26960]: Failed password for invalid user loic from 14.225.3.47 port 54124 ssh2 Oct 23 22:10:17 server sshd[26962]: Invalid user demos from 14.225.3.47 port 54508 Oct 23 22:10:19 server sshd[26962]: Failed password for invalid user demos from 14.225.3.47 port 54508 ssh2 Oct 23 22:10:20 server sshd[26964]: Invalid user reactweb from 14.225.3.47 port 54890 Oct 23 22:10:22 server sshd[26964]: Failed password for invalid user reactweb from 14.225.3.47 port 54890 ssh2 Oct 23 22:10:22 server sshd[26966]: Invalid user hadoop from 14.225.3.47 port 55282 Oct 23 22:10:24 server sshd[26968]: Invalid user postgres from 14.225.3.47 port 55672 Oct 23 22:10:25 server sshd[26966]: Failed password for invalid user hadoop from 14.225.3.47 port 55282 ssh2 Oct 23 22:10:26 server sshd[26968]: Failed password for invalid user postgres from 14.225.3.47 port 55672 ssh2 Oct 23 22:10:27 server sshd[26970]: Invalid user pub from 14.225.3.47 port 56074 Oct 23 22:10:29 server sshd[26970]: Failed password for invalid user pub from 14.225.3.47 port 56074 ssh2 Oct 23 22:10:29 server sshd[26972]: Invalid user reviews from 14.225.3.47 port 56472 Oct 23 22:10:31 server sshd[26972]: Failed password for invalid user reviews from 14.225.3.47 port 56472 ssh2 Oct 23 22:10:31 server sshd[26974]: Invalid user ftpuser from 14.225.3.47 port 56868 Oct 23 22:10:33 server sshd[26974]: Failed password for invalid user ftpuser from 14.225.3.47 port 56868 ssh2 Oct 23 22:10:33 server sshd[26976]: Invalid user nearftp from 14.225.3.47 port 57306 Oct 23 22:10:35 server sshd[26976]: Failed password for invalid user nearftp from 14.225.3.47 port 57306 ssh2 Oct 23 22:10:36 server sshd[26978]: Invalid user oracle from 14.225.3.47 port 57736 Oct 23 22:10:38 server sshd[26978]: Failed password for invalid user oracle from 14.225.3.47 port 57736 ssh2 Oct 23 22:10:38 server sshd[26980]: Invalid user gwen from 14.225.3.47 port 58152 Oct 23 22:10:40 server sshd[26980]: Failed password for invalid user gwen from 14.225.3.47 port 58152 ssh2 Oct 23 22:10:41 server sshd[26982]: Invalid user zimbra from 14.225.3.47 port 58550 Oct 23 22:10:42 server sshd[26982]: Failed password for invalid user zimbra from 14.225.3.47 port 58550 ssh2 Oct 23 22:10:43 server sshd[26984]: Invalid user informix from 14.225.3.47 port 58932 Oct 23 22:10:44 server sshd[26984]: Failed password for invalid user informix from 14.225.3.47 port 58932 ssh2 Oct 23 22:10:45 server sshd[26986]: Invalid user info from 14.225.3.47 port 59316 Oct 23 22:10:47 server sshd[26988]: Invalid user snoopy from 14.225.3.47 port 59728 Oct 23 22:10:47 server sshd[26986]: Failed password for invalid user info from 14.225.3.47 port 59316 ssh2 Oct 23 22:10:49 server sshd[26988]: Failed password for invalid user snoopy from 14.225.3.47 port 59728 ssh2 Oct 23 22:10:50 server sshd[26990]: Invalid user tharun from 14.225.3.47 port 60114 Oct 23 22:10:51 server sshd[26990]: Failed password for invalid user tharun from 14.225.3.47 port 60114 ssh2 Oct 23 22:10:52 server sshd[26992]: Invalid user cafe from 14.225.3.47 port 60484 Oct 23 22:10:54 server sshd[26992]: Failed password for invalid user cafe from 14.225.3.47 port 60484 ssh2 Oct 23 22:10:54 server sshd[26994]: Invalid user deploy from 14.225.3.47 port 60860 Oct 23 22:10:55 server sshd[26994]: Failed password for invalid user deploy from 14.225.3.47 port 60860 ssh2 Oct 23 22:10:57 server sshd[26997]: Invalid user xbox from 14.225.3.47 port 32992 Oct 23 22:10:58 server sshd[26999]: Invalid user neha from 14.225.3.47 port 33372 Oct 23 22:10:59 server sshd[26997]: Failed password for invalid user xbox from 14.225.3.47 port 32992 ssh2 Oct 23 22:11:01 server sshd[27001]: Invalid user ejabberd from 14.225.3.47 port 33750 Oct 23 22:11:01 server sshd[26999]: Failed password for invalid user neha from 14.225.3.47 port 33372 ssh2 Oct 23 22:11:03 server sshd[27001]: Failed password for invalid user ejabberd from 14.225.3.47 port 33750 ssh2 : : |
頂きましたー。攻撃者のIPアドレスが分かりました。
リスト化してみます。
1 |
cat /var/log/auth.log* | grep -E "Failed|Invalid" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort | uniq | grep -vE "^10\.29\.3\..+" |
最後の「grep -vE “^10.29.3..+”」は、LAN内からのIPアドレスを除外するためです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 |
101.132.227.124 101.200.177.198 101.200.55.9 101.201.237.252 101.87.101.87 103.108.187.4 103.130.209.251 103.210.73.67 103.21.148.54 103.239.252.178 104.236.246.16 104.236.81.204 104.248.144.147 104.248.181.156 106.13.20.31 106.14.135.136 106.14.163.216 106.15.250.167 106.252.253.10 106.255.236.106 106.3.129.209 106.3.40.140 106.45.0.217 106.45.0.9 106.75.239.79 107.170.172.23 109.110.52.77 109.111.164.63 110.45.145.178 110.55.109.59 110.83.32.64 111.121.71.113 111.12.52.238 111.230.105.142 112.132.89.81 112.222.255.100 112.74.203.41 113.105.94.66 113.116.246.129 113.128.104.208 113.128.104.254 113.160.98.121 113.200.78.222 113.208.113.35 113.52.135.201 113.57.95.215 114.116.103.75 114.118.97.195 114.7.206.227 115.143.217.157 115.233.227.46 115.236.53.226 115.29.143.215 115.29.7.45 115.68.184.88 116.112.0.60 116.197.132.33 116.31.102.81 116.31.102.82 117.186.220.86 117.50.36.250 117.78.42.106 118.136.85.166 118.140.104.238 118.25.62.164 118.27.18.232 118.45.190.167 1.190.192.178 119.23.33.89 119.28.1.253 119.3.201.34 119.39.46.202 119.73.125.51 120.133.17.168 120.133.22.121 120.133.226.22 120.202.57.157 120.220.15.5 120.230.82.40 120.78.11.170 120.78.160.213 120.79.0.86 121.128.236.62 121.135.237.32 121.140.142.231 121.159.95.49 121.196.23.247 121.196.57.160 121.43.189.248 121.48.164.130 122.116.40.230 122.15.82.86 122.189.56.78 122.224.94.188 122.96.92.246 123.142.108.122 123.157.134.238 123.206.21.48 1.235.143.134 123.57.213.165 123.59.72.15 123.59.94.122 124.127.102.1 124.160.236.161 124.193.149.90 124.194.49.19 124.227.31.8 124.43.161.249 124.43.177.160 124.65.186.186 124.95.128.163 125.131.73.90 125.212.202.179 125.227.130.2 1.254.154.42 125.75.40.119 125.88.254.178 128.199.127.217 128.199.80.18 128.199.81.8 129.28.147.159 131.100.11.232 138.118.143.206 13.81.50.85 138.197.105.79 138.68.20.158 139.129.90.203 139.129.97.42 139.196.124.205 139.198.123.233 139.199.200.182 139.59.131.37 139.59.14.210 139.59.25.238 139.59.59.187 139.59.61.186 139.59.79.56 139.59.99.142 139.9.165.138 139.99.98.192 14.136.204.41 14.225.3.47 142.93.112.49 142.93.127.16 142.93.178.254 142.93.215.82 142.93.42.177 142.93.82.229 14.36.197.119 147.135.231.210 147.139.34.137 149.202.102.36 149.202.208.104 149.202.3.113 150.255.9.205 152.231.89.122 154.198.2.4 157.230.163.6 157.230.39.120 157.230.54.248 157.245.149.151 157.245.246.132 157.245.60.215 159.192.148.4 159.203.161.124 159.65.136.194 159.65.144.233 159.65.159.1 159.65.245.203 159.65.54.221 159.65.65.54 159.89.165.127 163.179.126.62 164.132.101.10 165.22.110.2 165.22.127.136 165.22.242.174 165.22.250.226 165.22.60.7 165.227.5.140 165.227.53.241 167.71.115.245 167.71.217.92 167.71.239.181 167.99.167.105 167.99.170.160 167.99.75.174 168.195.113.11 168.228.220.252 169.55.91.115 170.151.0.4 171.34.177.61 175.121.153.50 175.184.164.160 175.184.165.200 176.166.1.64 177.152.144.58 178.128.10.117 178.128.148.98 178.128.156.174 178.128.173.238 178.128.39.0 178.62.220.70 178.62.99.41 180.250.18.20 180.250.80.88 180.76.56.128 181.10.18.188 181.143.228.170 181.191.98.227 181.27.127.132 181.65.157.134 183.134.198.30 183.195.37.143 183.195.40.85 185.117.57.86 185.228.138.227 185.50.37.152 185.51.63.242 187.115.80.122 188.10.184.201 188.165.245.53 188.166.253.195 188.166.34.234 188.166.72.240 188.226.250.187 188.242.70.154 188.44.52.11 188.6.165.216 188.93.245.172 189.126.202.121 189.254.33.157 190.103.200.2 190.112.226.197 190.121.130.37 190.145.38.91 190.85.18.130 193.112.187.205 193.112.248.85 193.151.128.73 193.27.228.17 195.158.29.222 195.161.72.70 195.239.237.94 195.91.186.78 198.100.45.126 198.199.66.10 199.19.225.67 201.140.123.130 201.182.66.18 201.216.217.25 201.6.247.90 202.107.251.28 202.114.100.250 202.88.241.107 203.143.119.196 203.251.139.218 206.189.132.204 206.189.136.160 206.189.172.90 206.189.188.223 206.189.28.79 207.154.198.74 209.124.69.227 210.117.210.226 210.4.118.157 211.210.154.32 211.99.229.3 212.102.39.1 212.64.40.200 213.187.77.253 216.150.147.66 216.8.167.175 218.201.114.34 218.28.30.125 218.29.67.194 218.66.59.169 218.75.61.254 218.92.40.162 219.147.90.16 219.153.97.127 219.93.106.38 220.76.205.178 221.11.104.118 221.207.122.234 221.218.247.38 221.234.237.140 221.238.32.130 222.106.160.180 222.122.179.208 222.77.98.78 222.79.49.199 222.87.147.62 223.171.50.236 223.197.175.171 223.70.246.131 24.64.157.148 27.128.201.88 27.17.28.132 27.224.137.14 3.1.255.152 3.249.33.21 36.133.62.154 36.32.3.60 36.37.201.133 37.139.9.23 37.187.96.130 37.252.70.69 37.59.43.216 39.105.200.55 39.106.118.147 39.106.50.251 39.129.55.85 39.96.19.171 39.96.82.174 39.99.203.251 40.117.253.222 41.141.248.196 42.112.20.32 45.238.33.147 45.238.33.150 45.33.88.237 46.101.24.197 46.101.93.149 46.105.163.8 46.146.136.8 47.100.88.65 47.101.187.9 47.104.176.209 47.105.164.105 47.105.220.149 47.106.210.207 47.107.140.220 47.107.141.34 47.107.62.218 47.110.225.78 47.114.96.237 47.244.175.167 47.244.213.73 47.244.45.12 47.88.17.25 47.92.152.148 47.92.98.123 47.94.175.175 47.94.215.35 47.96.144.102 47.96.4.84 49.4.69.192 49.69.78.132 50.250.224.225 5.146.80.53 51.77.246.155 51.79.147.177 5.188.210.227 5.196.110.170 52.130.75.15 5.39.74.233 54.38.190.187 54.39.149.152 58.132.203.179 58.132.214.152 58.16.48.190 58.214.246.34 58.69.176.224 5.88.155.130 60.12.26.9 60.13.6.208 60.165.50.150 60.170.152.153 60.250.67.47 60.29.123.202 61.245.153.139 61.250.206.110 61.81.0.121 61.82.100.143 62.197.86.15 62.234.188.157 66.70.157.67 68.183.190.43 68.183.218.50 70.50.213.95 76.14.151.130 76.161.57.154 77.56.63.223 77.94.137.91 79.137.84.210 79.8.152.248 80.241.44.238 80.28.151.210 80.66.77.110 80.92.232.39 81.169.241.30 81.183.220.42 82.145.31.212 82.207.87.24 82.223.69.17 85.172.174.46 85.214.224.252 85.243.161.243 87.106.30.24 88.204.164.234 89.179.125.71 89.189.154.66 89.252.228.135 91.192.197.172 91.205.217.22 91.224.205.62 91.227.12.20 91.234.99.173 91.238.244.37 92.246.16.39 92.45.61.93 92.63.199.27 93.100.138.129 93.180.157.61 94.102.50.155 95.213.214.13 95.217.18.33 95.68.243.7 95.79.41.188 96.239.37.123 |
上記IPアドレスから、自宅サーバへのSSH試行がありました。
おそらく攻撃目的でしょうから、これらのIPアドレスからの接続を拒否するのがよさそうです。
ちなみに、各IPアドレスからのSSH試行回数をカウントしてみます。
1 |
cat /var/log/auth.log* | grep -E "Failed|Invalid" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort | uniq -c | grep -vE "^10\.29\.3\..+" | sort -nr |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 |
3986 41.141.248.196 1220 68.183.218.50 1206 157.245.246.132 1176 91.192.197.172 1033 39.105.200.55 996 129.28.147.159 987 103.21.148.54 981 95.213.214.13 981 77.94.137.91 981 47.92.152.148 981 188.226.250.187 981 139.59.131.37 980 149.202.3.113 978 193.112.187.205 978 167.71.239.181 978 138.68.20.158 978 119.3.201.34 978 112.222.255.100 978 103.108.187.4 977 79.137.84.210 977 159.65.54.221 976 47.244.45.12 976 37.187.96.130 975 76.161.57.154 975 61.245.153.139 975 5.196.110.170 975 47.92.98.123 975 221.11.104.118 975 211.210.154.32 974 61.81.0.121 974 120.78.11.170 974 104.236.246.16 973 62.234.188.157 973 61.82.100.143 973 206.189.172.90 973 193.112.248.85 973 13.81.50.85 973 110.45.145.178 973 106.3.129.209 972 51.79.147.177 972 178.128.156.174 972 175.121.153.50 972 125.227.130.2 972 101.201.237.252 970 5.39.74.233 970 167.71.217.92 970 165.22.250.226 969 164.132.101.10 969 123.142.108.122 968 42.112.20.32 967 176.166.1.64 967 165.22.110.2 967 159.65.245.203 967 115.68.184.88 966 142.93.112.49 964 139.196.124.205 963 112.74.203.41 962 37.59.43.216 961 139.59.79.56 950 120.79.0.86 934 121.196.23.247 918 47.114.96.237 906 47.105.164.105 878 47.107.141.34 842 120.133.226.22 747 89.189.154.66 742 157.245.60.215 742 113.200.78.222 741 198.100.45.126 741 147.139.34.137 740 89.179.125.71 740 82.145.31.212 740 178.128.39.0 740 157.230.163.6 739 113.52.135.201 739 113.160.98.121 739 113.105.94.66 738 95.79.41.188 738 87.106.30.24 738 82.207.87.24 738 39.96.19.171 738 178.128.173.238 738 142.93.127.16 738 139.59.25.238 738 120.133.17.168 738 119.23.33.89 737 89.252.228.135 737 61.250.206.110 737 47.96.144.102 737 188.166.34.234 737 178.128.148.98 737 139.59.59.187 737 139.198.123.233 737 125.75.40.119 737 1.254.154.42 736 91.205.217.22 736 52.130.75.15 736 46.101.93.149 736 206.189.132.204 736 167.99.167.105 736 125.212.202.179 736 122.15.82.86 736 118.25.62.164 736 116.197.132.33 735 68.183.190.43 735 203.143.119.196 735 190.103.200.2 735 185.51.63.242 735 165.227.53.241 735 159.65.144.233 735 157.230.54.248 735 142.93.178.254 735 128.199.127.217 734 62.197.86.15 734 39.129.55.85 734 219.93.106.38 734 159.65.136.194 734 157.230.39.120 734 118.140.104.238 734 106.14.163.216 733 66.70.157.67 733 60.29.123.202 733 60.170.152.153 733 58.69.176.224 733 58.214.246.34 733 142.93.82.229 733 121.43.189.248 733 106.14.135.136 732 37.139.9.23 732 206.189.136.160 732 159.65.65.54 732 128.199.81.8 732 103.130.209.251 731 47.94.175.175 731 47.107.140.220 731 209.124.69.227 731 115.29.7.45 731 115.29.143.215 730 181.10.18.188 730 124.43.177.160 728 195.91.186.78 727 210.117.210.226 726 202.88.241.107 724 109.110.52.77 721 223.70.246.131 703 101.87.101.87 637 47.94.215.35 631 81.183.220.42 612 47.107.62.218 562 106.75.239.79 560 120.220.15.5 500 85.172.174.46 500 80.241.44.238 500 47.105.220.149 500 221.238.32.130 500 221.218.247.38 500 219.153.97.127 500 206.189.28.79 500 190.121.130.37 500 185.50.37.152 500 181.27.127.132 500 170.151.0.4 500 139.99.98.192 500 123.59.72.15 500 114.7.206.227 499 96.239.37.123 499 95.217.18.33 499 93.100.138.129 499 92.63.199.27 499 91.224.205.62 499 85.243.161.243 499 5.146.80.53 499 27.128.201.88 499 223.171.50.236 499 216.8.167.175 499 195.239.237.94 499 190.85.18.130 499 189.126.202.121 499 187.115.80.122 499 181.65.157.134 499 181.191.98.227 499 177.152.144.58 499 168.228.220.252 499 165.22.127.136 499 159.89.165.127 499 152.231.89.122 499 14.225.3.47 499 139.9.165.138 499 125.131.73.90 499 122.96.92.246 499 119.28.1.253 499 118.27.18.232 499 117.78.42.106 499 114.116.103.75 499 106.255.236.106 499 106.15.250.167 499 101.200.177.198 499 101.132.227.124 498 80.66.77.110 498 60.165.50.150 498 58.16.48.190 498 47.88.17.25 498 45.33.88.237 498 39.106.50.251 498 36.37.201.133 498 222.87.147.62 498 218.92.40.162 498 212.102.39.1 498 211.99.229.3 498 201.6.247.90 498 201.182.66.18 498 201.140.123.130 498 195.161.72.70 498 188.93.245.172 498 183.134.198.30 498 178.62.99.41 498 169.55.91.115 498 167.99.75.174 498 163.179.126.62 498 157.245.149.151 498 14.36.197.119 498 138.118.143.206 498 124.194.49.19 498 124.193.149.90 498 123.206.21.48 498 120.78.160.213 498 120.230.82.40 498 117.50.36.250 498 117.186.220.86 498 113.208.113.35 498 111.121.71.113 498 106.3.40.140 497 79.8.152.248 497 76.14.151.130 497 49.69.78.132 497 39.99.203.251 497 222.106.160.180 497 216.150.147.66 497 193.151.128.73 497 190.112.226.197 497 185.228.138.227 497 168.195.113.11 497 167.99.170.160 497 149.202.102.36 497 131.100.11.232 497 124.43.161.249 497 121.135.237.32 497 114.118.97.195 497 107.170.172.23 496 70.50.213.95 496 5.88.155.130 496 58.132.203.179 496 46.101.24.197 496 203.251.139.218 496 188.44.52.11 496 159.192.148.4 496 119.73.125.51 496 106.252.253.10 495 91.238.244.37 495 60.12.26.9 495 36.133.62.154 495 219.147.90.16 495 218.28.30.125 495 181.143.228.170 495 142.93.215.82 495 1.235.143.134 495 110.55.109.59 494 222.77.98.78 494 218.75.61.254 494 124.65.186.186 492 46.146.136.8 492 116.31.102.82 492 113.116.246.129 491 180.250.80.88 488 180.76.56.128 488 116.112.0.60 484 139.129.97.42 484 121.196.57.160 483 115.143.217.157 481 47.100.88.65 481 159.203.161.124 479 95.68.243.7 479 165.227.5.140 479 165.22.60.7 478 93.180.157.61 477 149.202.208.104 475 54.38.190.187 475 188.166.253.195 475 118.45.190.167 475 104.248.181.156 474 139.59.14.210 473 88.204.164.234 473 207.154.198.74 472 223.197.175.171 472 199.19.225.67 472 159.65.159.1 471 49.4.69.192 471 212.64.40.200 471 121.159.95.49 470 218.201.114.34 470 139.199.200.182 470 121.140.142.231 466 14.136.204.41 464 77.56.63.223 458 125.88.254.178 456 123.57.213.165 451 80.28.151.210 446 122.224.94.188 440 188.10.184.201 440 112.132.89.81 388 180.250.18.20 381 103.210.73.67 366 122.189.56.78 348 111.230.105.142 326 116.31.102.81 320 39.106.118.147 286 124.127.102.1 280 183.195.40.85 278 40.117.253.222 263 1.190.192.178 244 120.202.57.157 242 58.132.214.152 242 106.13.20.31 241 91.227.12.20 241 80.92.232.39 241 50.250.224.225 241 47.106.210.207 241 46.105.163.8 241 188.242.70.154 240 92.246.16.39 240 54.39.149.152 240 47.110.225.78 240 218.29.67.194 240 124.95.128.163 240 122.116.40.230 240 121.48.164.130 239 221.207.122.234 239 218.66.59.169 239 213.187.77.253 239 202.107.251.28 239 178.62.220.70 239 115.236.53.226 238 47.96.4.84 238 222.122.179.208 238 206.189.188.223 238 198.199.66.10 238 195.158.29.222 238 190.145.38.91 238 185.117.57.86 238 178.128.10.117 238 165.22.242.174 238 104.248.144.147 237 24.64.157.148 237 202.114.100.250 237 201.216.217.25 237 189.254.33.157 237 188.166.72.240 237 188.165.245.53 237 139.59.99.142 237 128.199.80.18 237 121.128.236.62 237 118.136.85.166 237 113.57.95.215 236 51.77.246.155 236 37.252.70.69 236 3.249.33.21 236 188.6.165.216 236 147.135.231.210 236 123.59.94.122 236 123.157.134.238 236 120.133.22.121 236 103.239.252.178 235 39.96.82.174 235 3.1.255.152 235 27.17.28.132 235 139.59.61.186 235 139.129.90.203 235 101.200.55.9 234 91.234.99.173 234 82.223.69.17 234 47.104.176.209 234 210.4.118.157 234 167.71.115.245 234 109.111.164.63 233 47.244.175.167 233 47.101.187.9 233 142.93.42.177 232 47.244.213.73 231 220.76.205.178 231 104.236.81.204 230 45.238.33.150 220 183.195.37.143 208 154.198.2.4 205 115.233.227.46 49 111.12.52.238 15 85.214.224.252 10 92.45.61.93 10 60.250.67.47 9 45.238.33.147 5 81.169.241.30 4 138.197.105.79 2 193.27.228.17 2 175.184.165.200 1 94.102.50.155 1 60.13.6.208 1 5.188.210.227 1 36.32.3.60 1 27.224.137.14 1 222.79.49.199 1 221.234.237.140 1 175.184.164.160 1 171.34.177.61 1 150.255.9.205 1 124.227.31.8 1 124.160.236.161 1 119.39.46.202 1 113.128.104.254 1 113.128.104.208 1 110.83.32.64 1 106.45.0.9 1 106.45.0.217 |
Topは41.141.248.196からで、月間約4000回です。
おめでとうございます。
悪意しか感じない
自宅サーバのセキュリティ対策を考える
ログインに失敗しているとはいえ、やはりセキュリティを考えるとこうした悪意を持ったSSH試行はさせないことがリスク回避に繋がると考えました。
どうにか、対策する方法について考えてみます。
fail2banはどうか
私は使っていませんが、fail2banは各種ログを解析して不正アクセスを回避するルールを設定できる優れたアプリケーションです。
例えば、一定時間(1分間)に指定回数(3回)ログインに失敗したIPアドレスを一定期間(1週間)ブロックする(iptablesに追加する)といった、細かい設定ができます。
一見、有効なアプリケーションですが私の場合はsslhを使っているため、ログにはSSLHのDockerコンテナのIPアドレスしか見えないのでおそらく使えません。
やっぱり、利便性を考えるとSSLHは有効にしておきたいです。
ということで、fail2banは最終手段に。
ここでSSLHが問題になるとは
ルータにFWを設定してみる
攻撃元のIPアドレスは分かっているわけですから、FWに攻撃者のIPアドレスの接続拒否設定を追加すれば目的は達成できそうです。
ルータのFWにこれらのIPアドレスからの侵入を拒否する設定を加えます。
IPSのNUROから借りているルータ(F660A)を使っていますが、F660AにもIPアドレスでフィルタをかけられます。
でもね、さすがに400個以上のIPアドレスを手入力するガッツはありません・・・。
テキストファイルで一括登録機能とかあればよかったのですが。
ということで別案を考えます。
サーバのiptablesに設定してみる
消去法でサーバのFWに設定を加えるのが現実解のようです。
iptablesに攻撃者のIPアドレスからの接続を拒否する設定を加えることで、目的を達成できます。
1 |
iptables -A INPUT -s <IPアドレス> -j DROP |
こんな感じで、iptablesにルールを追加していけばOKです。
コマンドで設定するので、スクリプトを書けば対策ができそうです。
しかし、問題は攻撃者のIPアドレスが固定ではないこと。
攻撃者がIPアドレスを変えれば、iptablesにルールを追加しても意味がありません。
スクリプトを書いてFWを設定(iptablesにルールを追加)するにしても、そのことも考慮して対策を検討する必要があります。
fail2ban使えないかな
/etc/hosts.denyを設定するのはどうか
/etc/hosts.denyや/etc/hosts.allowでアプリケーションレイヤでIPアドレスベースでのアクセス制御ができます。
最も簡単な方法ではありますが、/etc/hosts.denyや/etc/hosts.allowを読み込むためにサービスやアプリケーションを経由するので、アプリケーションの脆弱性(セキュリティホール)を突かれた場合に機能しなくなる可能性があります。
また、今回のように頻繁にアクセス(攻撃)されると、アプリケーションで一旦パケットを受けて/etc/hosts.denyと照らし合わせるためCPU負荷の影響が懸念されます。
サーバ側でFWを作るならLinuxカーネルで機能するiptablesで制御するのが確実&安全です。
まとめ
自宅サーバのセキュリティ対策について記事にしてみました。
SSLHを使って、SSHDのポートを22番から443番に変更することで大丈夫だろうと高を括っていましたが、443番ポートに対してSSH試行されているログを確認しました。
幸いにもログインパスワードが突破されておらず、侵入は許していませんが攻撃者の方が一枚上手でした。
ログを確認数と月間8万回以上のsshログイン試行を確認しました。
ブルートフォース攻撃(総当たり攻撃)を仕掛けているようなので、パスワードが突破されるのも時間の問題、という状態でした。
これは、ある意味DDoS攻撃を受けているようなものなので、我が家の自宅サーバの、夏場の熱暴走はこれが原因だったのかもしれません。
パスワード大事
公開鍵認証にしたり、SSLHの利用を辞めることで安全性を高められますが、便性を考えると難しいこともあります。
その場合は、iptablesに目の細かいルールを設定することが現実的な手段です。
攻撃者のIPアドレスは400を超える数なので、スクリプトを書いて追加するのが現実的ですが、厄介なのは攻撃者のIPアドレスをどう追従していくかということ。
そのあたりの仕組みを考えて、引き続き対策していく必要がありそうです。
参考になれば幸いです。
また、良い方法があったら教えてもらえると嬉しいです。
コメント