LinuxでのVDSサーバー管理のいくつかの側面

VDS(Virtual Dedicated Server)は、ユーザーが最大の特権を持つ仮想専用サーバー受け取るサービスです。これは実際の物理サーバーのエミュレーションであり、ルートアクセス、任意のオペレーティングシステムおよび任意のソフトウェアをインストールする機能があります。さらに、容量が同程度の物理サーバーを借りるよりもはるかに安価です。



イメージからサーバーにOSを配置するか、コントロールパネルで既製のイメージを使用できます。







Debian10と標準リポジトリにあるNginxWebサーバーをインストールしたとしましょう(apt install nginx)。Linuxサーバーの管理に役立つユーティリティとコマンドを見てみましょう。Nginxを個別に検討し、VDSサーバー自体を全体として検討してみましょう。



コンテンツ





まず、Webサーバー自体を理解することをお勧めします。Nginxは、インストールが完了すると起動します。この事実を確認します。



systemctl status nginx


発行:



● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-08-17 08:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process


または、ブラウザにサーバーのIPアドレスを入力するだけです。



http://your_server_ip


サイトファイルをまだサーバーにコピーしていない場合は、標準のNginxヘッダーページが表示されます。







Nginxを管理するための基本的なコマンド



注意。ユーザーがroot権限を持っていない場合、コマンドを実行するたびに、コマンドを使用してroot権限を取得する必要がありsudoます。



Webサーバーの停止:



sudo systemctl stop nginx


rootとして実行する場合、コマンドは次のとおりです。



systemctl stop nginx


停止後に開始:



systemctl start nginx


停止して再起動(再起動):



systemctl restart nginx


構成を変更したばかりの場合、Nginxは現在の接続を失うことなく再起動できます。これは、次のコマンドで実行されます。



systemctl reload nginx


デフォルトでは、Nginxはサーバーの起動時に自動的に起動するように構成されています。この動作は、次のコマンドで変更できます。



systemctl disable nginx


サーバーの起動時にNginx自動起動を再度有効にします。



systemctl enable nginx


デフォルトでは、Nginxには1つのドメイン用に構成されたサーバーブロックルールのセットが1つあります。サーバー上でホストするサイトは1つだけであると想定されています。デフォルトでは、ディレクトリに配置する必要があり/var/www/htmlます。



Nginxの複数のサイトに対して複数サーバーブロックのセットを作成するか、現在のサイトのファイルを別のディレクトリに移動するとします/var/www/your_domain



これは、次のコマンドで実行されます。



まず、サーバー上に必要なディレクトリを作成します。



mkdir -p /var/www/your_domain/html


次に$USER、現在のユーザーに対応する変数使用して、このディレクトリの所有者を割り当てます。



chown -R $USER:$USER /var/www/your_domain/html


指定されたディレクトリにメインページを配置しますindex.html



次に、Nginxの適切なルールセットを作成する必要があります。任意のテキストエディタで、ファイル/etc/nginx/sites-available/your_domain作成し、そこにあるデフォルトファイルから構成をコピーします。ただし、アドレスとドメインは変更されています。



server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}


最後に、sites-enabledNginxが起動時に読み取るディレクトリにある新しい構成ファイルへのシンボリックリンクを書き込むことにより、この構成をアクティブ化します。



ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/


再起動後、Nginxはリクエストyour_domainとの適切なページを表示しますwww.your_domain



サーバー管理



Linuxサーバーを管理するときに、ユーザーが最もよく受ける質問は何ですか?経験の浅い管理者にも、どのようなツールをお勧めできますか?



スーパーバイザーのインストール



スーパーバイザーは、管理者がサーバー上のプロセスを制御するためのクライアント/サーバーシステムです。ツールは、それ自体に代わってサブプロセスとしてプロセスを作成します。



DebianまたはUbuntuへのsupervisordのインストールは非常に簡単です。



apt-get install supervisor


その後、スーパーバイザデーモンはすでに実行されており、システムが起動するたびに起動します。



新しいプログラムは、ディレクトリ内の構成ファイルを介してスーパーバイザに渡されます/etc/supervisor/conf.dたとえば、スクリプトの場合、long.sh構成ファイルは次のようになります。



[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log


したがって、スクリプトはシステムの起動ごとに自動的に起動され、終了すると自動的に再起動されます。この値は、「false」(再起動されない)または「unexpected」(予期しないエラーコードで終了した場合にのみ再起動されます。デフォルトでは、0または2以外のコード)です。



最後の2行は雑誌の住所です。これは、スーパーバイザープログラムの最小構成テンプレートです。



特定のプログラムの構成ファイルを作成した後、2つのコマンドを実行して、スーパーバイザーが新しい構成を再読み取りして適用します。



supervisorctl reread


supervisorctl update


この段階で、プログラムまたはスクリプトはすでに実行されているはずです。これはログで確認できます。



ユーティリティにsupervisorctlは、引数なしで実行されるインタラクティブモードがあります。



$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>


このモードでは、supervisorctlは最初に、スーパーバイザーの監視下にあるすべてのプログラムのステータスと実行時間を表示し、次にそのコマンドラインを表示します。そこで入力できますhelp-そして利用可能なコマンドのリストを見ることができます:



supervisor> help

default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version


ご覧のとおり、start、stop、restartコマンドを使用して、コマンドラインからプログラムを開始、停止、および再起動できます。



スーパーバイザーを終了するには、Ctrl-Cまたはquitコマンドを使用します。



supervisor> quit


空きディスク容量の分析



マウントされたパーティションに関する情報を表示するための標準ユーティリティはdfです。接続されているデバイスのリストと占有スペースに関する情報が表示されます。



df  


-hオプションは、人間が読み取れる出力(つまり、メガバイトまたはギガバイト)を有効にします。



$ df -h
     % C 
devtmpfs 925M 0 925M 0% /dev
tmpfs 936M 56K 936M 1% /dev/shm
tmpfs 936M 1,9M 934M 1% /run
tmpfs 936M 0 936M 0% /sys/fs/cgroup
/dev/sda3 15G 11G 4,2G 71% /
tmpfs 936M 192K 936M 1% /tmp
/dev/sdb4 133G 126G 974M 100% /home
tmpfs 188M 20K 188M 1% /run/user/42
tmpfs 188M 7,1M 181M 4% /run/user/1000


特定のディレクトリ(例:/ホーム)に関する情報:



df -h /home


特定のファイルシステムのパーティションに関する情報:



df -h -t ext4


コマンドでファイルを検索する find



ファイル名で検索:



find -name "query"


大文字と小文字を区別しない名前で検索:



find -iname "query"


指定されたパターンに一致しないファイルの「逆」検索:



find -not -name "query_to_avoid"


または



find \! -name "query_to_avoid"


ファイルタイプで検索



find -type _ 


一般的な記述子のいくつかは次のとおりです。



  • f-通常のファイル

  • d-ディレクトリ

  • l-シンボリックリンク

  • c-文字I / Oデバイスファイル

  • b-ブロックI / Oデバイスファイル


たとえば、次のコマンドは、システムにインストールされているすべての文字I / Oデバイスを一覧表示します。



find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .


サイズとアクセス/変更時間によるフィルターがあります。たとえば、50バイト未満のすべてのファイルを検索するコマンドは次のとおりです。



find / -size -50c


700メガバイトを超えるすべてのファイルを検索します。



find / -size +700M


アクセス時間、ファイルメタ情報の変更または変更で検索するには、パラメータ「-atime」、「-mtime」、および「-ctime」をプラス記号とマイナス記号とともに使用して、それぞれ指定された範囲よりも大きい範囲と小さい範囲を示します。



1日以内に変更されたファイルを検索します。



find / -mtime -1


アクセス時間が3日以上前のファイル:



find / -atime +3


直前に変更されたファイル:



find / -mmin -1


指定されたファイルよりも新しいファイル:



find / -newer myfile


所有者( '-user'、 '-group')および特定の権限を持つファイル( '-perm')による検索が可能です。見つかったすべてのファイルで、すぐに何らかのアクション( '-exec')を実行できます。



TCPおよびUDP接続のテスト



Linuxには、便利なユーティリティが多数付属しています。一部のシステム管理者は、追加のソフトウェアをインストールせずに、組み込みツールのみを使用してほとんどのタスクを実行できます。組み込みLinuxツールの真のスイスナイフはネットワークユーティリティnetcatです。一般的な構文:



netcat [options] host port


このコマンドは、指定されたポートで指定されたホストへのTCP接続を開始します。TCPの代わりにUDP接続をテストする必要がある場合は、次のオプションを指定します-u



netcat -u host port


ポート範囲:



netcat host startport-endport


ほとんどのシステムでは、との両方netcat記述できますnc



ポートスキャン



netcatの典型的な使用法の1つはポートスキャンです。オプション-zは、接続を確立する代わりにスキャンすることを意味します。-v1から1000までのポートをスキャンするときに、より詳細な情報を表示するオプションと一緒に使用します



netcat -z -v domain.com 1-1000


出力は次のようになります。



nc:domain.comポート1(tcp)への接続に失敗しました:接続が拒否されました
nc:domain.comポート2(tcp)への接続に失敗しました:接続が拒否されました
nc:domain.comポート3(tcp)への接続に失敗しました:接続が拒否されました
nc:domain.comポート4(tcp)への接続に失敗しました:接続が拒否されました
nc:domain.comポート5(tcp)への接続に失敗しました:接続が拒否されました
nc:domain.comポート6(tcp)への接続に失敗しました:接続が拒否されました
nc:domain.comポート7(tcp)への接続に失敗しました:接続が拒否されました
..。..。..。
domain.com22ポート[tcp / ssh]への接続に成功しました!
..。..。..。


ただし、このタスクには、より高度で専門的なプログラムがありますnmapそれをインストールします:



apt-get update
apt-get install nmap


このユーティリティは、ポートに関するより詳細な情報を提供します。既知のポートのレジスタには/usr/share/nmap/nmap-services、インターネット上のサーバーで特定のポートを開く平均頻度などの追加フィールドを含む、2万を超える行が含まれています(3列目)。



..。..。..。
tcpmux 1 / tcp 0.001995#TCPポートサービスマルチプレクサー[rfc-1078]
tcpmux 1 / udp 0.001236#TCPポートサービスマルチプレクサ
compressnet 2 / tcp 0.000013#管理ユーティリティ
compressnet 2 / udp 0.001845#管理ユーティリティ
compressnet 3 / tcp 0.001242#圧縮プロセス
compressnet 3 / udp 0.001532#圧縮プロセス
不明4 / tcp 0.000477
rje 5 / udp 0.000593#リモートジョブエントリ
不明6 / tcp 0.000502
エコー7 / tcp 0.004855
エコー7 / udp 0.024679
エコー7 / sctp 0.000000
..。..。..。


システム管理者がそのようなアクションを敵対的と間違える可能性があるため、外部サーバーでポートスキャンを実行することはお勧めしません。Nmapは独自のサーバーを探索するように設計されており、テスト目的で専用サーバーで実験することができますscanme.nmap.org



一部のコマンドは実行に時間がかかります。



ホスト上のオペレーティングシステムのスキャン:



nmap -O 


xxx.xxx.xxx.xxxからyyy.yyy.yyy.yyyまでのホスト範囲をスキャンします。



nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy


利用可能なサービスを探すためにネットワーク範囲をスキャンします。



nmap -sP _


特定のポートをスキャンする:



nmap -p _ 


開いているすべてのTCPおよびUDPポートをスキャンします。



nmap -n -PN -sT -sU -p- 


ホストで実行されているソフトウェアバージョンの調査:



nmap -PN -p _ 


nmapには、他にも多くのコマンド、オプション、および使用例があります。攻撃者はスキャンからアクションを開始するため、VDSサーバーのポートをスキャンすると、潜在的な攻撃ベクトルと脆弱性を特定できます。



メッセージとファイルの転送



キーを使用し-lて、サーバー上の特定のポートでリッスンできます。



netcat -l 5438


別のマシンでは、このポートでマシンに接続するように指定します。



netcat domain.com 5438


これで、2つのシステム間に通信チャネルが確立されました。テキストメッセージの送信に使用できます。



この方法でファイルを転送することもできます。これを行うには、リスニングコマンドをファイルに直接送信します。



netcat -l 5438 > _


別のコンピューターでは、テキストメッセージの代わりに、元のファイルを入力に送信します。



netcat domain.com 5438 < _


同様に、次の場所にオンザフライでアーカイブされたディレクトリの内容など、あらゆる種類のものを転送できますtarball



tar -czf - * | netcat domain.com 4444


同様に、一方の側でディスクイメージを作成し(dd)、作成したTCP接続を介して指定したポートに送信し、もう一方のシステムで受信することができます。



ユーザーの追加と削除



ユーザーを追加、削除し、特権を付与sudoするには、最初にrootとしてサーバーに接続する必要があります。



ssh root@ip__


その後、ユーザーを追加します。



adduser newuser


当初、彼には特権がありません。ただし、これがシステムのメインユーザーである場合は、管理者権限を割り当てて、サーバーの保守と保守の日常的なタスクを実行できるようにすることができます。



管理者権限を割り当てるには、ユーザーをsudoグループに追加する必要があります。このグループのユーザーはsudo、管理者に昇格した特権でコマンドを実行できます。



usermod -aG sudo user1


代わりに、user1以前に追加されたユーザーの名前示します。これで、彼は次の方法で任意のコマンドを実行できるようになりますsudo



sudo 


これらの権限により、このユーザーは他のユーザーを削除できます。



sudo deluser --remove-home username


このオプション--remove-homeは、ユーザーのホームディレクトリも削除します。



ルート自身には、deluserなしでコマンドを実行する権利がありsudoます。



もちろん、これはVDSサーバーを管理するための便利なツールの完全なリストではありません。しかし、これらの質問は、最初のサーバーをセットアップし、OSをインストールし、Linux管理の世界を理解し始めた初心者のシステム管理者によく発生します。









All Articles