Pdmenuまたは初心者に間違いをさせない方法

画像






こんにちは、Habr!



多くのシステム管理者は、サーバーへのアクセスを経験の浅い人や未確認の人に提供しなければならない場合がありました。 安全上の注意事項を守れば、問題から身を守ることができますが、コンソールにまったく慣れていない場合はどうでしょうか?



「強く断ってください!」-あなたは言って、あなたは正しいでしょう。 しかし、この人があなたの上司である場合はどうなりますか?



それがすべて始まった方法



勤務している会社のサイトのコントロールパネルへのアクセスは、パスワードだけでなく、IPによっても制限されています。 上司が積極的に移動し始めたため、アクセスリストのIPアドレスを積極的に更新する必要もありました。 とても活発なので、このトピックに関する電話とリクエストは彼と私を悩ませました。



その人は、UNIXシステムとコンソール管理にまったく精通していないため、最も簡単で安全なソリューションを見つける必要がありました。 そして、それが見つかりました: pdmenu



ビジネスへ



特定のシステムの詳細に読者を飽きさせないために、pdmenuの機能を示すために、多少なりとも一般的なタスクを取ります。 「外部」のFTPサーバーへのアクセスは、私たちが受け入れられるIPを除くすべてのユーザーのファイアウォールによって閉じられているとしましょう。



目的 :完全に経験の浅い人に、新しいアドレスのFTPアクセスを開く機会を与えること。



この場合、CentOSはサーバーにインストールされていますが、他のUNIXシステムのpdmenuに問題はないはずです。 検索とインストールには数分かかりますので、すぐにセットアップに移りましょう。



システムの準備



オペレーティングシステムでは、sudoを使用してiptablesのみを実行し、〜/ .bash_profileに次を追加できるように、別のユーザーを作成します。



# :

ip=`set | /bin/grep SSH_CLIENT | /bin/cut -d\' -f2 | /bin/awk '{print $1}' | /bin/awk '/[0-9]/ {print}'`

date=`/bin/date +'%d.%m.%G %H:%M:%S'`

echo "${date} | ${ip} | ---Logged into the shell menu---" >> /var/log/pdmenu.log

# pdmenu

/usr/local/pdmenu/bin/pdmenu

exit

# , pdmenu

logout








したがって、ユーザーはパテの学習を行い、パテ(または他のSSHクライアント)にパスワードを入力する必要があります。 次に、便利で直感的なメニューが起動します。



今pdmenu



すべての構成は、pdmenurcファイルに保管されます。 ここにあります: / usr / local / pdmenu / etc / pdmenurc



メインメニューを作成します。このために、pdmenurcで次のように記述します。



menu:main:Main menu:

show:--------------------------::

nop

show:System tools::system

nop

show:::

exit:Exit

show:--------------------------::







取得するもの:

画像



次に、システムツールサブメニューについて説明します。 これを行うには、pdmenurcを追加します。



menu:system:System tools

show:-------------------------------::

nop

exec:Open FTP access:pause:ip=`set | /bin/grep SSH_CLIENT | /bin/cut -d\' -f2 | /bin/awk '{print $1}' | /bin/awk '/[0-9]/ {print}'`; date=`/bin/date +'%d.%m.%G %H:%M:%S'`; echo "${date} | ${ip} | Open FTP access" >> /var/log/pdmenu.log && /bin/sh /home/shellmenu/bin/openftp.sh

nop

exit:Main menu

show:-------------------------------::







4行目では、「 ip = 」から「 && 」までのすべてがログエントリです。 記録が成功した場合、シェルスクリプトが起動され、アクセスが開かれます。



次のようになります。

画像



そして、ここにopenftp.shシェルスクリプト自体があります。これはすべての汚い作業を行います。



#!/bin/sh

printf '\n---------------------\n\033[1;32m Open FTP connection\033[0m\n---------------------\n\n'

printf 'Enter the IP address you wish to provide FTP access: \033[1;32m'

read ip

if [ $ip ]

then

printf '\n\033[0mOk, you are going to allow FTP connections to the following IP: \033[1;31m%s\033[0m' ${ip}

printf '\n\nAre you sure? [y/n] \033[1;32m'

read wish

if [ $wish -a $wish == y ]

then

/usr/bin/sudo /sbin/iptables -I INPUT -s ${ip} -p tcp -m tcp --dport 20 -j ACCEPT

/usr/bin/sudo /sbin/iptables -I INPUT -s ${ip} -p tcp -m tcp --dport 21 -j ACCEPT

/etc/init.d/iptables save

printf '\n\033[0m--------------------------------------------'

printf '\n The FTP access to \033[1;32m'

/bin/echo -n ${ip}

printf '\033[0m has been \033[1;31mgranted\033[0m';

printf '\033[0m\n--------------------------------------------\n\n'

else

printf '\033[0m\nExiting...\n\n'

fi

else

printf '\033[0m\nExiting...\n\n'

fi








結果



ここに私たちがやったことがあります:



画像



したがって、パスワードの入力方法、カーソルキーおよびEnterボタンの使用方法を知っている人であれば、サーバー上でいくつかのアクションを非常に安全に実行できます。

それで:サービスの再起動、コンテンツを生成するスクリプトの実行、ログの表示、ファイルの編集など。 など



主なもの:ログとsudoで必要な制限で自分自身を保護することを忘れないでください。



sudoのセットアップ、ユーザーの作成などのPSのニュアンス 記事を膨らまさないために、説明されていません。

Pdmenuの説明とは異なり、インターネット上のこのトピックに関する十分なドキュメントと説明があります。



UPD:尊敬されているshadowaloneが示唆するように、 ここから Pdmenuをダウンロードしてインストールできます。

UPD2: pdmenu(だけでなく)のシェルスクリプトを作成する際に尊敬されるlorcが示唆したように、ユーザーの入力内容を必ず確認してください



All Articles