ssh のセキュリティ強化
su コマンドで正しく root になった時に、身に覚えのない「最後の正しいログインの後に xxx 回の失敗ログインの試行があります」とメッセージが表示されたらアタックを疑った方が良い。
ログの確認
/var/log/secure ログを確認する。(Raspberry Pi なら /var/log/auth.log)
以下の様なエラーが出ていたら間違いない。
1 2 |
Oct 27 13:08:31 サーバ名 sshd[3304]: Failed password for root from IPアドレス port 13069 ssh2 secure-20151025:Oct 24 10:03:15 サーバ名 sshd[22948]: Invalid user adolfo from IPアドレス |
1行目:IPアドレスから sshを使って、rootユーザでログインしようとして失敗した。
2行目:IPアドレスから sshを使って、adolfoユーザでログインしようとした。
どこから来たか確認
「IP 国 確認」 などでググるとIPアドレスから国コードを調べるサービスが出てくる。
IPアドレスの国を調べると、Bahrain、Botswana、Brazil、Bulgaria、Canada、China、Czech Republic、France、Hong Kong、India、Iran, Islamic Republic of、Italy、Japan、Korea, Republic of、Moldova, Republic of、Netherlands、New Zealand、Nigeria、Poland、Romania、Russian Federation、Serbia、Singapore、Somalia、Suriname、Ukraine、United States
とりあえずサービス作ってみた。
対策1
/etc/ssh/sshd_conifg
1 2 |
PermitRootLogin no MaxAuthTries 6 |
1行目:リモートからのrootログインを不許可にする。リモートからは別のユーザでログインしてから su コマンドで root になる。
2行目:パスワードの間違えを何回まで許すかの設定。
設定した後は、sshd をリスタートする。
/etc/rc.d/init.d/sshd restart (CentOS6≧)とか
systemctl restart sshd (CentOS7)とか
対策2
特定の IP からの ssh アクセスを拒否る。
/etc/hosts.deny に以下の様に追記する。
1 2 3 |
sshd : 拒否するIPアドレス1 sshd : 拒否するIPアドレス2 : |
でも、はっきりいってキリがない。
対策3
特定の IP からの ssh アクセスのみ許容
/etc/hosts.allow に以下を記述
1 2 3 |
ALL: 192.168 ALL: 127.0.0.1 sshd: 許可するIPアドレス |
1行目:イントラからのアクセスを許可。172.16.x.x 系のネットワークなら 172.16 と記述
2行目:ローカルループバック接続を許可
3行目:外部からアクセスを許可する IP アドレスを記載。職場とか学校とか
/etc/hosts.deny
1 |
ALL: ALL |
全て拒否
その後 sshd をリスタート
※ 設定を失敗するとターミナルからしか接続できなくなる。
また、DHCP とかで振り直されてIPアドレスが変わっても接続できなくなる。(イントラからはOKだけど)
ちなみに、上記の設定で refused connect すると、アタックスクリプトの仕様的に4回であきらめるみたい。