LinuxServer

ssh

セキュア(公開鍵認証)

 

流れ

  1. クライアントで秘密鍵、公開鍵の生成
  2. サーバー側で公開鍵を登録
    1. sshの設定調整
  3. クライアントからログイン

クライアントで秘密鍵、公開鍵の作成

  1. ssh-keygen -t rsa -b 4096 -f keyName
    • パスワードを入力する

Server側

  1. 以下に上記の keyName.pub の内容を、サーバ側の以下のファイルへ追記する
    vim ~/.ssh/authorized_keys
  2. アクセス権の変更
    cd /home
    sudo chmod 755 userName
    cd /home/userName
    sudo chmod 700 .ssh
    sudo chmod 600 .ssh/authorized_keys
  3. sshd設定ファイルの編集
    • sudo vim /etc/ssh/sshd_config
    • portは22以外に変更推奨
      Port 22
      PermitRootLogin no
      PubkeyAuthentication yes
      AuthorizedKeysFile      .ssh/authorized_keys
  4. 一旦 sshd の再起動
    sudo systemctl restart sshd
  5. クライアントから以下のようなコマンドで接続できるか確認
    ssh -i /home/userName/.ssh/keyName userName@hostname -p 22
  6. 接続できたら以下を変更
    • sudo vim /etc/ssh/sshd_config
      PasswordAuthentication no
  7. (ファイアウォールの変更) 設定したportのオープン

putty, 秘密鍵の設定

  1. 秘密鍵をテキストファイルへ保存する
  2. 「PuTTYgen」を起動
  3. 「Conversions」->「Import key」
  4. 上記で保存したテキストファイルを開く
  5. パスワードの入力
  6. 「Save private key」ボタンを押し保存する
  7. Puttyを起動
    • 「Connection」->「SSH」->「Auth」->「Credentials」
    • 「Private key file...」に上記で変換して保存したファイルを指定する

Ubuntuでキー変換

トラブル

no matching host key type found. Their offer: ssh-rsa,ssh-dss

  1. クライアント側
    sudo vim ~/.ssh/config
  2. 末尾に以下を追加
    Host *
       HostKeyAlgorithms=+ssh-rsa
       PubkeyAcceptedAlgorithms=+ssh-rsa

ブルート・フォート(総当たり攻撃)対策

fail2banを導入する。

CentOS

  1. Install
    1. sudo yum install epel-release
    2. sudo yum install fail2ban
  2. 設定
    1. 設定ファイルのコピーとバックアップ
      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
    2. 設定ファイルの変更
      sudo vim /etc/fail2ban/jail.d/jail.local
      1. コメントアウトを削除
        # [sshd]
        [sshd]
        # enabled = true
        enabled = true
      2. banactionの変更
        #banaction = iptables-multiport
        banaction = firewallcmd-ipset
        #banaction_allports = iptables-allports
        #banaction_allports = iptables-allports
  3. 起動と自動起動
    1. CentOS6
      sudo service fail2ban restart
      sudo chkconfig fail2ban on
      • 自動起動設定の確認(qで出る)
        sudo chkconfig | less
    2. CentOS7以降
      sudo systemctl restart fail2ban
      sudo systemctl enable fail2ban
      • 確認
        sudo systemctl status fail2ban
  4. fail2banの動作確認
    1. message logで確認
      • sudo tail -f /var/log/messages
      • sudo cat /var/log/messages | grep fail2
    2. 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
    3. 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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS