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

SSHサーバー             2016年6月6






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

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

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

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

rootログインを禁止する場合
PermitRootLogin no  #をとり、noに変更。49行目

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 restart sshd

●/etc/hosts.allow
全てに対して(外部に対しても)オープンにする場合、
sshd: ALL

●SSHセキュリティ対策
不正なアタックが立て続けに行われた際、次のように設定することでアクセス元に制限を掛けることができる。
/etc/ssh/sshd_config編集
MaxStartups 10:30:100  ←#をとる。131行目
「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)へ

目 次

特別企画
Raspberry Piで遊ぶ

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

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

CentOS5〜6
ネットワーク&ファイアウォール(iptables)
DNS(BIND)サーバー
DHCPサーバー
メールサーバー(基本)
メールサーバー/実際の運用
Webサーバー
  WebDAVによるファイル共有
  Webでファイルのやり取り
  アクセス解析ツールawstats
  namazuで全文検索
  WordPressブログサイト構築
  EC-CUBEショッピングサイト構築
FTPサーバー
ファイルサーバー・Samba
データベースpostgreSQL
  ExcelからpostgreSQLを操作
データベースMySQL
SSHサーバー
VNC
SSL/TLSを利用した暗号化通信
openVPN
ストリーミングサーバー
    C++ RTMP Server
    Helix server Basic
ドメインの追加
Xen・仮想化
特定ディレクトリに容量制限

SELinux
SELinux基本設定
新しいタイプとポリシー・モジュールを作成してみる
マクロを利用したteファイルの記述
新しいドメインを導入してみる

coLinux
Fedora11で試す

Cプログラミング目次
X11プログラム
サイエンス・プログラム

計測・プログラム
秋月電子のデーターロガーpico ADC-16
「今すぐ使えるパソコン計測USBマイコン基板」に付属のTRZ1102
センサーの使用例

Glade2/GTK+を使ってみる
テキスト・ビューで簡易エディター
ドローイングエリアで自動描画
放物線運動(pango、cairoも試してみる)
これらを、GTK+のみで書き出す

フォントについて
ネットワーク・プログラミング
postgreSQL接続
CGI
ファイル操作

●その他
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く