実践Linux
CentOS8        CentOS8 目次へ  TOP(HOME)へ


SSHサーバー             2020年7月






SSHサーバー(openssh 8.0)

SSHの暗号通信は、公開鍵暗号(RSAやDSA)を用いて共通鍵暗号(トリプルDES、AESなど)の共通鍵を暗号化して鍵交換を行い、通信自体は高速な共通鍵暗号を用いる、いわゆるハイブリッド暗号である。また、なりすましを防止するための認証の仕組みも充実している。パスワード認証、公開鍵認証、ワンタイムパスワードなどが提供されており、個々の情報セキュリティポリシーに合わせて選択できる。

CentOS8にはopenSSHがインストール済み。

●SSH設定ファイル/etc/ssh/sshd_config

Port 10055 ← #をとり、変更。
PasswordAuthentication no ← noに変更。通常パスワードでのログインを禁止(鍵方式によるログインのみ許可) 73行目
また、PAMが使用可能になっている場合はPAMのチャレンジ・レスポンス認証がパスワード認証と同じ機能をもっているため、通常パスワード認証を禁止するときはかならずChallengeResponseAuthenticationもnoを指定しておくこと。
ChallengeResponseAuthentication no  77行目

rootログインを禁止する場合
PermitRootLogin yes  noに変更。46行目

firewalldの設定
ポート10055/TCPを開ける。
trustedゾーンに対しては、必要ない。
externalゾーンの設定
# firewall-cmd --get-services  定義されているサービス一覧
/usr/lib/firewalld/services/ssh.xmlをみると、これは22ポートなっている。
これをコピーして、/etc/firewalld/services/に貼り付け編集する。
<port protocol="tcp" port="10055"/>に変更。
# firewall-cmd --list-service --zone=external
externalゾーンには、すでにsshが適用されていることがわかる。
# firewall-cmd --reload   firewalldのリロード 

sshdサービスの起動
# systemctl --type=service list-unit-files  インストールされたサービス一覧
# systemctl --type=service list-units | grep sshd  実行中のサービスにsshdがあるか
起動停止にしたので、起動+自動起動にしておく。
# systemctl start sshd
# systemctl enable sshd
最初、faild because… が出たが、見直しをやっているうちになぜか出なくなった。原因不明。これが出ても問題はないのかもしれない。
「/etc/ssh/sshd_configのChallengeResponseAuthenticationとGSSAPICleanupCredentialsの行をコメントアウトすることで解決しました。」といった報告もある。

●SSHセキュリティ対策
不正なアタックが立て続けに行われた際、次のように設定することでアクセス元に制限を掛けることができる。
/etc/ssh/sshd_config編集
MaxStartups 10:30:100  ←#をとる。126行目
「MaxStartups」の項目は、認証されていない段階の接続をSSH デーモンが受け付ける確率を指定できます。 この指定は、不正なSSHアクセスが一度にたくさん行われる場合などに接続要求を拒否する手段としてで有効です。 上記のように記述した場合、10個までの接続要求を受け付け、これを超えると30%の確率で接続要求を拒否し、100個を超えるとすべて拒否するようになります。
編集後は、設定を反映させるためにsshd の再起動が必要です。

だが、現実的には、sshdの待ち受けポート番号をデフォルトの22番ではなく別な番号に変えてしまうだけで、不正なアクセスは解決する場合が多い。 sshd_configファイルで「Port 22」(コメントアウトされてる場合はデフォルトで22になる)となっているところを、ほかで使ってない番号(10000番台とか)に書き換えてsshdをrestartするだけ。

●linuxサーバーへの公開キー登録

キーの作成は、Windowsのputtyで行ったとする。CentOS5/6.5参照

公開キーputty_rsa.pubをlinuxサーバーにコピー。
これをopenSSHが使用可能な形式に変換する。(ここではputty.pub名で変換するとする。)
# ssh-keygen -i -f putty_rsa.pub > putty.pub
変換した公開キーをSSH接続したいユーザーの~/.ssh/authorized_keysファイルに登録する。(当然このユーザーはbashなどのログインシェルが必要。nologin等ではssh接続できない。ただし、winSCPの場合は、nologin等がログインシェルでもアクセスできる。)
ここではuser01に登録してみる。
# mkdir /home/user01/.ssh
# cat putty.pub >> /home/user01/.ssh/authorized_keys
# chmod 644 /home/user01/.ssh/authorized_keys
authorized_keysファイルには複数の公開キーを登録することができる。
.sshディレクトリの所有者をこのユーザーに。.ssh以下のファイルの所有者はrootでもよいようだ。

※トンネリング等、SSHの使用方法については、CentOS5/6.5参照

●SElinux
しかし、これだけではアクセスできないことが判明。
permissiveモードにする.
# setenforce 0
この状態でSSHアクセス。auditのログをとる。ログが溜まりすぎている場合は、/var/log/audit/audit.logをいったん削除して、auditdサービスを再起動しておく。audit.logが刷新されるので、それからログをとるとよい。
ログから足りない部分を解析する。
# audit2allow -a -l -m mylocal
これを見ると、ポリシーnis_enabledをONにすればよいことがわかる。
# setsebool -P nis_enabled 1
# setenforce 0



TOP(HOME)へ

目 次
HOME
 全体のシステム構成&目次

CentOS7-8の新機能(systemdとfirewalld)

CentOS8
CentOS8のインストール〜ネットワークの設定ほか
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
DHCPサーバー
FTPサーバー
FTPS(FTP over SSL/TLS)
Webサーバー
  アクセス解析ツールAwstats
Mail(Dovecot&Postfix)サーバー
MariaDB(MySQL)サーバー
SSHサーバー
Sambaサーバー
openVPNサーバー

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
  EC-CUBEショッピングサイト構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ストリーミングサーバーRed5
ドメインの追加
PHP7.1をインストール

CentOS5〜6

SELinux

Cプログラミング


●その他
クラウド Amazon EC2
Raspberry Piで遊ぶ
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く


●趣味の世界
相対性理論
量子力学
群論
熱力学・統計力学
解析力学
物理でつかう数学
超弦理論(ノート作成中)