イメージからサーバーに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管理の世界を理解し始めた初心者のシステム管理者によく発生します。
