openssh(リモートアクセスのために)
出先から、
ちょっと鯖の状況を確認したり、
ふと思いついた修正を加えたり、
ちょっとしたファイルをダウンロードしたり、
ダウンロードに時間がかかるものを玄箱にやらせておいたり、
玄箱にアクセスして操作したくなることがあります。
LAN内からだったら、標準でついているtelnetとかftpを使えばいいんだけど、
流石に、telnetとかftpを外部に公開する勇気はないですので、
安全に玄箱を操作できるようにする方法としてsshを利用しましょう。
「外部に公開する勇気はない」
まぁ、telnetもftpも玄箱標準のサービスですから、
そもそも、外部に公開するようにはできていません(セキュリティを考慮していないです)
これを公開するということは、、、
「この玄箱、自由に使ってください」といっているようなものかも?
だって、rootで直接ログインできるんだもん。
やること一覧 ・事前準備 ・起動方法の選択 ・インストール:sshd_config.0 ・各種設定変更
関連ページ ・openssl(あまりにも古いので) ・tcp_wrappers(アクセスコントロールのために) ・xinetd(アクセスコントロールのために)
opensshの導入には以下のソフトが必要になります。
sshdを使う場合、起動方法が2つある。
スタンドアロンで動かす方法とスーパーサーバーを経由する方法だ。
スタンドアロンで動かす場合
tcp_wrappersの機能をOpenSSHに取り込んでアクセス制限を行う場合、
事前にtcp_wrappersをインストールする必要がある。
インストール手順はtcp_wrappersを参照。
sshを利用している人はsshdをとめる
# /etc/init.d/ssh stopsshを利用していない人はsshd用のユーザーを作る(無ければ)
# groupadd -g 21 sshd # useradd -g sshd -u 21 -d /var/empty -s /bin/false sshdユーザーをロックする
# vipw または # vi /etc/passwd 変更点:! を * に書き換える設定ファイルの退避(または削除)
# mv /etc/ssh /etc/ssh.old または # rm -r /etc/sshopenssh-6.4p1.tar.gzを探してくる。
$ tar xvfz openssh-6.4p1.tar.gz $ cd openssh-6.4p1 $ ./configure --prefix=/usr --sysconfdir=/etc/ssh \ --with-default-path=/usr/local/bin:/usr/bin:/bin \ --without-shadow --with-tcp-wrappers
option | 説明など |
--sysconfdir= | opensshの設定ファイルディレクトリの指定 |
--with-default-path= | scpを含むコマンドパスの設定 scpを使うためにbin系だけ設定する scpを使わない(sftpしか使わない)なら省略可能 |
--without-shadow | シャドウパスワードを使わない |
--with-tcp-wrappers | tcp_wrappersをsshdに取り込む tcp_wrappersを事前に再インストールしていないと意味が無い |
# vi /etc/init.d/ssh (変更) ┃AUTOKEYGEN=yes ┃/usr/bin/ssh-keygen -b 1024 -f /etc/ssh/ssh_host_key -N "" -t rsa1sshd_configを弄る。
# vi /etc/ssh/sshd_config (標準のsshd_configからの修正なら) ┃PermitRootLogin no ┃#RhostsAuthentication no ┃Subsystem sftp /usr/libexec/sftp-server ┃PrintMotd no 注:新規の場合、参考サイトを参照して大量のコメント記号 # を削除 自分のセキュリティポリシーに合わせて設定することlastlogの作成(logでエラー吐くから)
# touch /var/log/lastlogテスト(起動|再起動|停止)
# /etc/init.d/ssh start # /etc/init.d/ssh restart # /etc/init.d/ssh stop接続確認
# /etc/init.d/ssh start 以下を確認する。 1.sshdに接続する 2.rootでログインして失敗 3.一般ユーザでログインして成功 4.一般ユーザからsuで成功「標準のsshd_config」
共通の設定変更
sshdのログ出力設定の変更:ログが埋もれて見にくくなるため
# vi /etc/ssh/sshd_config
(変更)
┃SyslogFacility local0
ログファイルの設定# vi /etc/syslog.conf (追加) ┃# sshd log to sshd.log ┃local0.* /var/log/sshd.logログファイル(空)の作成
# touch /var/log/sshd.logsyslogdの再起動(設定を認識させる)
# killall -s HUP syslogdlogrotateの設定と(必要なら)sshdの再起動を忘れずに♪
# ln -s /etc/init.d/ssh /etc/rc.d/rc2.d/S23ssh # ln -s /etc/init.d/ssh /etc/rc.d/rc0.d/K23ssh # ln -s /etc/init.d/ssh /etc/rc.d/rc6.d/K23sshテスト
# shutdown -r now (再起動してから) # ps ax で、/usr/sbin/sshdがあることを確認する。スーパーサーバーを経由する場合(inetd)
# vi /etc/inetd.conf (追加) ┃ssh stream tcp nowait root /usr/sbin/tcpd sshd -i 注:inetdを経由したことが無いので正しいかは未確認inetdの再起動
# /etc/init.d/inetd reload接続確認をする。
# vi /etc/xinetd.d/sshd (新規) ┃service ssh ┃{ ┃ socket_type = stream ┃ wait = no ┃ user = root ┃ server = /usr/sbin/sshd ┃ server_args = -i ┃ log_on_success += USERID ┃ log_on_failure += USERID ┃ disable = no ┃} または、 ┃service ssh ┃{ ┃ flags = NAMEINARGS ┃ socket_type = stream ┃ wait = no ┃ user = root ┃ server = /usr/sbin/tcpd ┃ server_args = /usr/sbin/sshd -i ┃ log_on_success += USERID ┃ log_on_failure += USERID ┃ disable = no ┃} 注:上はsshdを直接、下はtcpd(tcp_wrappers)を経由して起動する設定xinetdの再起動
# /etc/init.d/xinetd reload接続確認をする。
戻るなら押せ!