sshポート変更とかファイアウォールとか
VPSで借りてるCentOS7のセキュリティ設定あれやこれやっていう話。
とくに目新しいことをやるわけじゃないので、よくあるような設定をやっていく。
ブルートフォースって一般的よね
適当にセキュアログの最新20件とかとってみるとこんな感じ。
これだけ見ても割と頻繁にやってきているのがよくわかる。
$ sudo grep "Invalid user" /var/log/secure | tail -20 Jan 29 16:47:24 ******** sshd[21619]: Invalid user device from 142.93.185.255 port 39216 Jan 29 16:47:24 ******** sshd[21621]: Invalid user mysql from 142.93.185.255 port 39274 Jan 29 16:47:24 ******** sshd[21623]: Invalid user gpu from 142.93.185.255 port 39316 Jan 29 16:47:24 ******** sshd[21625]: Invalid user yjh from 142.93.185.255 port 39358 Jan 29 16:47:25 ******** sshd[21632]: Invalid user test from 142.93.185.255 port 39484 Jan 29 16:47:26 ******** sshd[21640]: Invalid user heliulu from 142.93.185.255 port 39658 Jan 29 16:47:26 ******** sshd[21642]: Invalid user xguest from 142.93.185.255 port 39712 Jan 29 16:47:26 ******** sshd[21647]: Invalid user hangchen from 142.93.185.255 port 39778 Jan 29 16:47:27 ******** sshd[21653]: Invalid user liuhui from 142.93.185.255 port 39904 Jan 29 16:47:27 ******** sshd[21658]: Invalid user user from 142.93.185.255 port 39994 Jan 29 16:47:27 ******** sshd[21664]: Invalid user test from 142.93.185.255 port 40118 Jan 29 16:47:27 ******** sshd[21666]: Invalid user gym from 142.93.185.255 port 40152 Jan 29 16:47:28 ******** sshd[21668]: Invalid user test from 142.93.185.255 port 40200 Jan 29 16:47:28 ******** sshd[21675]: Invalid user admin from 142.93.185.255 port 40328 Jan 29 16:47:28 ******** sshd[21677]: Invalid user wwwlogs from 142.93.185.255 port 40368 Jan 29 16:47:28 ******** sshd[21679]: Invalid user ubuntu from 142.93.185.255 port 40406 Jan 29 16:47:29 ******** sshd[21681]: Invalid user tsc_dev from 142.93.185.255 port 40444 Jan 29 16:47:29 ******** sshd[21685]: Invalid user upload from 142.93.185.255 port 40538 Jan 29 16:47:29 ******** sshd[21688]: Invalid user dmdba from 142.93.185.255 port 40572 Jan 29 16:47:29 ******** sshd[21690]: Invalid user test from 142.93.185.255 port 40624
とりあえずこいつらを防ぐためにfail2banの導入とか設定とかをやっていく。
設定項目
- fail2ban導入
- firewalld設定
- sshd設定変更
fail2ban導入
インストールとか設定なんかはこの辺りを参考にただやっていく。
knowledge.sakura.ad.jp
www.khstasaba.com
qiita.com
note.classact.co.jp
CentOS7の場合、iptableじゃなくてfirewalldを使用することになるので、そこは間違えないようにとにかくポチポチ設定して起動する。
設定が終わってエラーなく起動していたらよしとする。
$ sudo systemctl status fail2ban ● fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled) Active: active (running) since 金 2021-01-29 17:54:26 JST; 9s ago Docs: man:fail2ban(1) Process: 25377 ExecStop=/usr/bin/fail2ban-client stop (code=exited, status=0/SUCCESS) Process: 23994 ExecReload=/usr/bin/fail2ban-client reload (code=exited, status=0/SUCCESS) Process: 25383 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 25384 (f2b/server) Tasks: 7 Memory: 10.6M CGroup: /system.slice/fail2ban.service mq25384 /usr/bin/python2 -s /usr/bin/fail2ban-server -xf start
ちなみに、fail2banのステータス確認時にWARNINGとか表示された場合は、jail設定ファイルに問題がある場合が多いので、設定を見直すこと。
たまにいろいろ変更したものが競合することもあるので、fail2banを再起動するとWARNINGが消えることもある。
fail2banでBANされた状況を確認するためにはfail2ban-clientコマンドやipsetコマンドを使用して確認することになる。
とはいえ確認するためにいちいちコマンド実行するのもめんどくさいので、こんな内容のbashを作成してサーバログイン時とか状況を見たいときに確認するようにしている。
geoiplookupはこんなコマンド。
techracho.bpsinc.jp
現在はGeoIPの最新のDBファイルは、アカウントを作成しないと取得できないようになっている。
とはいえ、ある程度見れればいいのでそのままにしている。
#!/usr/bin/bash sudo fail2ban-client status sshd echo "------------------------------------------" sudo ipset --list echo "------------------------------------------" for i in `sudo ipset --list | egrep "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | awk '{print $1}'` do printf "%s : %s\n" "$i" "`geoiplookup $i`" done
このbashの実行結果としてはこんな感じ
使用している環境はfail2banのBANタイムを変更していたりするのでタイムアウトが長い。
fail2ban-clientでBANされていて、ipsetにその内容が反映されていることがわかるので見たい内容としては十分。
geoipの結果はさきに書いた通り、あくまでも参考。
$ /Local/fail2ban_check.bash Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 615 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 5 |- Total banned: 5 `- Banned IP list: 178.128.59.188 159.65.13.76 111.14.216.210 142.93.185.255 216.222.148.196 ------------------------------------------ Name: f2b-sshd Type: hash:ip Revision: 4 Header: family inet hashsize 1024 maxelem 65536 timeout 604800 Size in memory: 600 References: 2 Number of entries: 5 Members: 111.14.216.210 timeout 602958 159.65.13.76 timeout 602958 142.93.185.255 timeout 602958 216.222.148.196 timeout 602958 178.128.59.188 timeout 602958 ------------------------------------------ 111.14.216.210 : GeoIP Country Edition: CN, China 159.65.13.76 : GeoIP Country Edition: SG, Singapore 142.93.185.255 : GeoIP Country Edition: CA, Canada 216.222.148.196 : GeoIP Country Edition: US, United States 178.128.59.188 : GeoIP Country Edition: GR, Greece