#author("2025-02-21T19:07:29+09:00","default:dramsukohome","dramsukohome") #author("2025-02-25T17:57:57+09:00","default:dramsukohome","dramsukohome") [[LinuxServer]] #shadowheader(1,"ssh"); #contents * セキュア(公開鍵認証) [#uc7b311f] ** 流れ [#qb38e04c] + クライアントで秘密鍵、公開鍵の生成 + サーバー側で公開鍵を登録 ++ sshの設定調整 + クライアントからログイン ** クライアントで秘密鍵、公開鍵の作成 [#hdb832a7] + ssh-keygen -t rsa -b 4096 -f keyName -- パスワードを入力する ** Server側 [#u461ab0d] + 以下に上記の keyName.pub の内容を、サーバ側の以下のファイルへ追記する vim ~/.ssh/authorized_keys + アクセス権の変更 cd /home sudo chmod 755 userName cd /home/userName sudo chmod 700 .ssh sudo chmod 600 .ssh/authorized_keys + sshd設定ファイルの編集 -- sudo vim /etc/ssh/sshd_config -- portは22以外に変更推奨 Port 22 PermitRootLogin no PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys + 一旦 sshd の再起動 sudo systemctl restart sshd + クライアントから以下のようなコマンドで接続できるか確認 ssh -i /home/userName/.ssh/keyName userName@hostname -p 22 + 接続できたら以下を変更 -- sudo vim /etc/ssh/sshd_config PasswordAuthentication no + (ファイアウォールの変更) 設定したportのオープン * putty, 秘密鍵の設定 [#j423daad] + 秘密鍵をテキストファイルへ保存する + 「PuTTYgen」を起動 + 「Conversions」->「Import key」 + 上記で保存したテキストファイルを開く + パスワードの入力 + 「Save private key」ボタンを押し保存する + Puttyを起動 -- 「Connection」->「SSH」->「Auth」->「Credentials」 -- 「Private key file...」に上記で変換して保存したファイルを指定する * Ubuntuでキー変換 [#ud0c6a15] - 書式 : puttygen (OpenSSH形式の秘密鍵ファイル) -O private -o (出力ファイル名) -- 例) puttygen secretkey.txt -O private -o secretkey.ppk * トラブル [#y812d62e] ** no matching host key type found. Their offer: ssh-rsa,ssh-dss [#w63f65a2] +クライアント側 sudo vim ~/.ssh/config +末尾に以下を追加 Host * HostKeyAlgorithms=+ssh-rsa PubkeyAcceptedAlgorithms=+ssh-rsa * ブルート・フォート(総当たり攻撃)対策 [#y4e833a6] -基本は秘密鍵を使ったファイル認証を使い、ユーザー名、パスワード認証はオフが基本です。~ 自分はなんとなくこちらの対策も入れてみましたw ** fail2banを導入する。 [#w680bbe3] *** CentOS [#ha0d4429] +Install ++ sudo yum install epel-release ++ sudo yum install fail2ban +設定 ++ 設定ファイルのコピーとバックアップ sudo cp -p /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.local sudo cp -p /etc/fail2ban/jail.d/jail.local /etc/fail2ban/jail.d/jail.local.org ++ 設定ファイルの変更 sudo vim /etc/fail2ban/jail.d/jail.local +++ コメントアウトを削除 # [sshd] [sshd] # enabled = true enabled = true +++ banactionの変更 #banaction = iptables-multiport banaction = firewallcmd-ipset #banaction_allports = iptables-allports #banaction_allports = iptables-allports +起動と自動起動 ++CentOS6 sudo service fail2ban restart sudo chkconfig fail2ban on ---自動起動設定の確認(qで出る) sudo chkconfig | less ++CentOS7以降 sudo systemctl restart fail2ban sudo systemctl enable fail2ban --- 確認 sudo systemctl status fail2ban +fail2banの動作確認 ++ message logで確認 --- sudo tail -f /var/log/messages --- sudo cat /var/log/messages | grep fail2 ++ fail2ban-client コマンドで確認 sudo fail2ban-client status sshd --- 結果例 Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 5 | `- File list: /var/log/secure `- Actions |- Currently banned: 1 |- Total banned: 2 `- Banned IP list: 92.255.85.37 ++ ipset コマンドで確認 sudo ipset --list --- 結果例 Name: fail2ban-sshd Type: hash:ip Header: family inet hashsize 1024 maxelem 65536 timeout 600 Size in memory: 16632 References: 0 Members: 92.255.85.37 timeout 102 +Log levelの変更 fail2ban-client set loglevel INFO --Log levelの種類 CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG