![]() 红帽架构师为您从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别、并能够理解它们的优缺点。通过. ![]() Android manifest configChanges アンドロイド アプリ 開発 環境 構築 Eclipse android sdk インストール Java JDK JRE. For your security, if you’re on a public computer and have finished using your Red Hat services, please be sure to log out. Log Out. Linux アーカイブ最近SSHを許可していないサーバが多いような気がする。特に共有サーバの場合、他のディレクトリ(他のユーザー領域)が見えてしまう為である。共有サーバの場合、数十から数百のユーザーが同居するため、情報漏えいになりうるDataがあるからだ。しかし、シェルが使えないのは結構痛い。FTPでFile転送して、FTPクライアントでパーミッション設定変更。 非常に面倒。Telnet同様、暗号化されていないので通信の中身が丸裸!最悪の状態かも!って事で、思い腰を上げてSSHのchrootを試すことにした。ググって見るとココが非常に解りやすかった。参考にさせてもらった。今回のインストール環境は次の通り。■OS:Cent. OS5■インストール環境:ネットワーク越しでchrootの環境を構築先ず、既存のSSHをアンインストールを行う必要があるが、いきなりアンインストールするわけには行かない。一時的にTelnetをインストールして、chroot対応のSSHを組み込んだ後、Telnetをアンインストールを行う。既存のシステムでは、yumが使えるので、Telnetがインストールされていない場合はインストールを行う。先ずは、Telnetの有無確認# rpm - qa|egrep telnet該当するパッケージが無いため、インストールを行う# yum install telnet- serverインストールされたら、Telnet接続が出来るよう環境を整える※設定内容は割愛その次に、Telnetにて接続する為のUSERを作成する。 ← 既にUSERを作成している場合は必要ない。# groupadd user. ![]() Rf user. 1: user. Telnet接続できるかを確認。接続確認が出来たら、現在接続しているSSHセッションを切る。んで、改めてTelnetにて接続。# su - rootrootのパスワードを打ち込んで・・・・ココまできたら、ようやくSSHをアンインストール先ずは、SSHを停止# /etc/rc. Stopping sshd: [ OK ]============================Opensshを削除# rpm - e openssh- serverwarning: /etc/ssh/sshd_config saved as /etc/ssh/sshd_config. SSH関連のRPMがインストールされていれば、アンインストールを行っておく。さて、いよいよchroot対応のSSHの作成を行うが、rpmでは提供されていないようなので、tar玉を用意する。Get先はここ等辺りから・・・ http: //chrootssh. Cent. OS5のバージョンより新しい。では、早速作業してみよう。# cd /tmp ← 作業しやすいところで構わない。# wget http: //chrootssh. RPMパッケージ作成rpmbuild - tb - -clean openssh- 4. RPMをインストール# cd /usr/src/redhat/RPMS/i. Uvh openssh- 4. 5p. Rf openssh- 4. 5p. Starting sshd: WARNING: initlog is deprecated and will be removed in a future release」起動スクリプトを一部変更することで回避できるらしい。# vi /etc/rc. Create keys if necessarydo_rsa. Starting $prog: "#initlog - c "$SSHD $OPTIONS" & & success || failure ← #を追加してコメントアウト$SSHD $OPTIONS & & success || failure ← ここに追加する。RETVAL=$?[ "$RETVAL" = 0 ] & & touch /var/lock/subsys/sshdecho}- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- SSHを起動する前にキーの生成を行う# ssh- keygen - t rsa. N "" ← Hostkey(RSA1)再作成です・・Overwrite (y/n)? N "" ← Hostkey(RSA2)再作成ですです・・Overwrite (y/n)? N "" ← Hostkey(DSA)再作成です・・Overwrite (y/n)? SSH起動/etc/rc. d/init. Protocol 2,1↓Protocol 2 ← SSH2でのみ接続を許可#Syslog. Facility AUTH↓Syslog. Facility AUTHPRIV ← ログの格納場所? /var/log/secureでいいとも!!#Permit. Root. Login yes↓Permit. Root. Login no ← もちろんrootでのログインは禁止でしょ!#Permit. Empty. Passwords no↓Permit. Empty. Passwords no ← 当たり前のようにパスワードなしはログインを禁止- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 設定が終わったら、SSHの再起動# /etc/rc. SSHにてログインできるかを確認する。問題なくログインできたら、あともう少し。簡単にchrootユーザーが作れるようにスクリプトを作成する。作成する場所はどこでも構わないが、rootディレクトリ辺りに作成しておけば問題ないかな?# mkdir - p ~/bin# vi ~/bin/chroot- useradd- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- #!/bin/bash## Usage: ./chroot- useradd username [shell]## Here specify the apps you want into the enviroment. CMD="bash ls touch mkdir cp mv rm pwd chmod cat vi id rsync ssh scp sftp ping ssh- keygen perl"APPS=`which $CMD`APPS="${APPS} /usr/libexec/openssh/sftp- server"# Sanity checkif [ "$1" = "" ] ; thenecho " Usage: ./chroot- useradd username [shell]"exit 1fi# Obtain username and Home. Dir. CHROOT_USERNAME=$1if [ "$2" = "" ] ; thenuseradd $CHROOT_USERNAMEelseuseradd - s $2 $CHROOT_USERNAMEfiusermod - d /home/$CHROOT_USERNAME/./ $CHROOT_USERNAMEpasswd $CHROOT_USERNAMEchown $CHROOT_USERNAME /home/$CHROOT_USERNAMEchgrp $CHROOT_USERNAME /home/$CHROOT_USERNAMErm - f /home/$CHROOT_USERNAME/.* > /dev/null 2> & 1. HOMEDIR=`grep /etc/passwd - e "^$CHROOT_USERNAME" | cut - d': ' - f 6`cd $HOMEDIR# Create Directories no one will do it for youmkdir - p etcmkdir - p binmkdir - p usr/binmkdir - p usr/local/binmkdir - p usr/libexec/opensshmkdir - p public_html ← ホームページ領域の作成を追加chown $CHROOT_USERNAME /home/$CHROOT_USERNAME/public_html ← オーナー設定chgrp $CHROOT_USERNAME /home/$CHROOT_USERNAME/public_html ← グループ設定MAKEDEV - d dev - x null zero# Create short version to /usr/bin/groups# On some system it requires /bin/sh, which is generally unnessesary in a chroot cageecho "#!/bin/bash" > usr/bin/groupsecho "id - Gn" > > usr/bin/groupschmod 7. Add some users to ./etc/paswdgrep /etc/passwd - e "^root" - e "^$CHROOT_USERNAME" > etc/passwdgrep /etc/group - e "^root" - e "^$CHROOT_USERNAME" > etc/group# Copy the apps and the related libsfor prog in $APPS; docp $prog ./$prog# obtain a list of related libraryesldd $prog > /dev/nullif [ "$?" = 0 ] ; then. LIBS=`ldd $prog | awk '{ print $3 }'`for l in $LIBS; domkdir - p ./`dirname $l` > /dev/null 2> & 1cp $l ./$l > /dev/null 2> & 1donefidone# From some strange reason these 4 libraries are not in the ldd output, but without them# some stuff will not work, like usr/bin/groupscp /lib/libnss_compat. USERを作成してログイン確認また、chrootがきちんと設定されているかを確認。ログイン後次のコマンドで確認できるはず。$ pwd/↑「/」となっていれば、成功です。また、rootになれないことも確認$ su - root- bash: su: command not found. OKですね。では、不要になったTelnetを削除して、ポートも閉める。これで、安心してUSERにシェルを渡すことが出来る・・・・・・ と思う~~.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
October 2017
Categories |