サーバー上で実行されているサービスがなく、すべてのポートが開いていることは問題ではない場合、これは危険ではないと考える人もいます。同意しません。未使用の(そして人気のある)ポートへの接続がブロックまたはドロップされた場合、悪意のある侵入者の大多数は、ポートが接続を受け入れている別のマシンに移動します。ファイアウォールの設定には数分しかかからないため、サーバーを保護するためにファイアウォールを設定することを強くお勧めします。
新しいクラウドサーバーを作成したら、サーバーのセキュリティを強化するために次のタスクを実行することをお勧めします。
注: 別のディストリビューションを使用している場合は、次のコマンドに少し変更を加える必要がある場合があります。必要に応じて、オペレーティングシステムのドキュメントを参照してください。
サーバーのIPアドレスとパスワードを取得したら、次のSSHコマンドを使用してログインします。
ssh [email protected]
注 :再構築されたサーバーにログインしている場合、リモートホストIDが変更されたことを示すメッセージが表示される場合があります。クラウドサーバーを再構築すると、リモートホストキーが変更されます。これは、コンピューターでの異常なアクティビティまたは疑わしいアクティビティを示します。この問題を回避するには、サーバーのIPアドレスの古いエントリを削除します。 ローカル コンピューターで、SSH known_hosts
を編集します 次のコマンドを使用してファイルを作成し、クラウドサーバーのIPアドレスを指すエントリをすべて削除します。
nano ~/.ssh/known_hosts
ローカルコンピュータがLinuxまたはMacOSX以外のオペレーティングシステムを実行している場合、known_hosts
の場所 ファイルは異なります。このファイルの場所については、OSのドキュメントを参照してください。
サーバーにログインした後、次のコマンドを発行してルートパスワードを変更します。
passwd
注 :OnMetalserverに追加のSSHユーザーを設定する場合は、該当するOnMetalの手順について「OnMetalクラウドサーバーの作成」を参照してください。
-
管理者ユーザーを追加するには、次のコマンドを発行してデモを置き換えます 選択したユーザー名で:
adduser demo
注 :この最初のステップの後、サーバーで日常の操作を実行するためにrootuserとしてログインしないでください。ただし、これらの管理タスクを完了するには、スーパーユーザー(sudo)権限が必要です。
-
adminユーザーにsudo権限を割り当てるには、次のコマンドを発行します。これにより、Ubuntuオペレーティングシステムでデフォルトでnanoエディターが呼び出されます。
visudo
-
ファイルの最後に、管理者ユーザー名(次の例のデモインの代わりに)と次のテキスト文字列を追加します:
demo ALL=(ALL) ALL
-
この行の追加が完了したら、次のようにファイルを終了して確認し、保存します。
a。 Ctrl-Xを押します 終了するb。 yを押します 変更を確認するためc。 Enterを押します ファイルを
/etc/sudoers.tmp
として保存します 。注 :nanoエディターで作業しているときに、backspace / deletekeyが予期せず機能し、カーソルの後ろではなく前の文字が削除されます。この問題は、
/etc/nanorc
を編集することで解決できます。 ファイル(たとえば、nanoを使用)および次の行のコメント解除または追加:set rebinddelete
新しい動作は、ファイルを保存してnanoを再度開いた後に有効になります。
公開鍵と秘密鍵を設定する(SSH keygen)
クラウドサーバーへのSSHアクセスを保護する効果的な方法の1つは、パブリック/プライベートを使用することです。 キー。これは、公開キーがサーバーに配置され、秘密キーがローカルコンピューターに配置されることを意味します。これにより、誰かがパスワードだけを使用してログインすることは不可能になります。秘密鍵が必要です。このセットアップは、次の基本的な手順で構成されています。ローカルコンピューターでキーを作成し、公開キーをサーバーにコピーして、キーに適切なアクセス許可を設定します。
次の手順は、LinuxまたはMac OS Xを使用していることを前提としています。Windowsの手順については、PuttyforWindowsを使用したキーの生成を参照してください。
-
ローカルコンピューターで、キーを保持するフォルダーを作成します。
mkdir ~/.ssh
-
SSHキーを作成するには、ローカルで コンピューターで、次のコマンドを入力します:
ssh-keygen -t rsa
-
id_rsaおよびid_rsa.pubは.sshディレクトリに作成されます。rsa.pubファイルは公開鍵を保持します。このファイルをサーバーに配置します。
-
id_rsaファイルは秘密鍵です。このファイルを公共のコンピュータに表示したり、配布したり、保管したりしないでください。
-
scp
を使用できます サーバーに公開鍵を配置するコマンド。
-
ローカルにいる間 コンピューターで、次のコマンドを入力し、デモ、IPアドレス、および管理者ユーザーのホームディレクトリを管理者ユーザーに置き換えます。
scp ~/.ssh/id_rsa.pub [email protected]:/home/demo/
-
プロンプトが表示されたら、管理者ユーザーのパスワードを入力します。
-
次の例に示すように、サーバー上の管理者ユーザーのホームフォルダーに.sshというディレクトリを作成し、その中にpubキーを移動します。
mkdir /home/demo/.ssh mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
次のコマンドを使用してキーに正しい権限を設定し、「デモ」ユーザーとグループを管理者ユーザーとグループに変更します。
chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys
これで、ローカルコンピューターでキーが正常に作成され、公開キーがサーバーにコピーされ、キーに適切なアクセス許可が設定されました。
SSH構成を変更する
SSHサービスをデフォルトのポート22に維持すると、簡単にターゲットにできます。より安全にするために、デフォルトのSSH構成を変更することをお勧めします。
-
次のコマンドを発行します:
nano /etc/ssh/sshd_config
-
デフォルトのポートである22を任意のポートに変更し、ルートログインをオフにして、ログインできるユーザーを定義します。
Port 22 <--- change to a port of your choosing Protocol 2 PermitRootLogin no PasswordAuthentication no UseDNS no AllowUsers demo
注 :ポート番号は、1025〜65536の任意の整数にすることができます。後で追加のリスニングプロセスを構成する場合は、新しいポート番号をメモし、ポートの競合を回避することを忘れないでください。
公開鍵/秘密鍵を設定したので、PasswordAuthenticationパラメーターをnoに設定できます。ただし、別のコンピューターからサーバーにアクセスする場合は、PasswordAuthenticationをyesに設定したままにしておくことをお勧めします。秘密鍵は、ローカルコンピューターが安全である場合にのみ使用してください(つまり、仕事用のコンピューターに秘密鍵を置かないでください)。
これらの設定はまだ有効になっていません。新しいポートを使用してSSHを再起動する前に、iptablesを使用して単純なファイアウォールを作成する必要があります。
注 :SSHをまだ再起動しないでください。
iptablesを使用してプライベートファイアウォールを設定する
iptablesと呼ばれるユーティリティは、Linuxシステムのデフォルトのファイアウォールです。指定したポートまたはサービスへの接続を拒否することで機能します。
注: このセクションの手順は、systemd
を使用するサーバーには適用されません。 。 systemd
を使用するサーバー ここで、FirewallDと呼ばれるiptablesへの別のファイアウォールフロントエンドを使用します。 FirewallDの構文と実装は大きく異なります。 FirewallDおよびsystemd
で適切なファイアウォール構成を行うには サーバーについては、RedHatcustomerポータルの「firewalldの概要」を参照してください。
この手順の一環として、次の3つのポートを開きます。 ssh 、 http 、およびhttps。
次に、2つのファイルを作成します。
-
/
etc/iptables.test.rules
-
/etc/iptables.up.rules
1つ目は一時的なテストルールのセットで、2つ目はiptablesが使用する永続的なルールのセットです。
注 :手順を完了するには、rootユーザー権限が必要です。現在rootとしてログインしていない場合は、次のコマンドの前にsudoコマンドを使用してください。
-
次のコマンドを発行して、現在実行中のプロセスを確認します。
iptables -L
次のようなものが表示されます:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
これは、サーバーが任意のポートの誰からでも何でも受け入れていることを意味します。
-
ファイアウォールを構築するには、ファイル
/etc/iptables.test.rules
を作成します いくつかのルールを追加します。以前にこれらの手順を実行したことがある場合、このファイルは空ではない可能性があります:nano /etc/iptables.test.rules
-
必要に応じてポートを変更および追加します。
-
次のコマンドを発行して、サーバーにルールを適用します。
iptables-restore < /etc/iptables.test.rules
-
次のコマンドを発行して、違いを確認します。
iptables -L
-
出力に変化がない場合は、前の手順を繰り返して再試行してください。
-
ルールをチェックして、何が受け入れられ、拒否され、削除されているかを正確に確認してください。ルールに満足したら、次のコマンドを発行してルールを永続的に保存します。
iptables-save > /etc/iptables.up.rules
注 :ルールを永続的に保存する前にサーバーを再起動すると、変更が失われ、サーバーは以前の設定に戻ります。
-
ネットワークインターフェイスの起動時にシステムが実行するスクリプトを追加します。次のコマンドを実行してファイルを作成します:
nano /etc/network/if-pre-up.d/iptables
-
新しいファイルに次の行を追加します。
#!/bin/sh /sbin/iptables-restore < /etc/iptables.up.rules
-
変更を保存してから、新しいスクリプトを実行可能にします。
chmod +x /etc/network/if-pre-up.d/iptables
RedHatでiptablesを設定する
Red Hatディストリビューションを使用している場合、iptablesの動作はUbuntuオペレーティングシステムの場合とは少し異なります。次のコマンドを使用して、コマンドラインから直接iptablesルールセットを変更できます。
HTTP-ポート80
RHEL7およびCentOS7の場合、次のコマンドを使用して、iptablesファイアウォールのHTTP(Web)トラフィックのポート80を開きます。
sudo firewall-cmd --add-service=http --permanent
古いバージョンのOSの場合は、次のコマンドを使用します。
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport http -j ACCEPT
HTTPS/SSL-ポート443
RHEL7およびCentOS7の場合、次のコマンドを使用して、安全なHTTPトラフィックのためにポート443を開きます。
sudo firewall-cmd --add-service=https --permanent
古いバージョンのOSの場合は、次のコマンドを使用します。
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport https -j ACCEPT
SSH-ポート22
ポート22はデフォルトで開いており、ビルド後にサーバーにSSHで接続できますが、次のコマンドは、RHEL7およびCentOS7でポート22を開く方法を示しています。
sudo firewall-cmd --add-service=ssh -permanent
SSH用のカスタムポートを設定する場合は、RHEL7およびCentOS7に対して次のコマンドを使用します。
sudo firewall-cmd --add-port=<customport>/tcp --permanent
古いバージョンのOSの場合は、次のコマンドを使用してポート22を開きます。
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ssh -j ACCEPT
FTP-ポート21
FTPはファイル転送の一般的なサービスですが、安全なプロトコルではないため、ほとんど廃止されています。代わりに、SFTPなどの安全なファイル転送プロトコルを使用することを強くお勧めします。どうしてもFTPを使用する必要がある場合は、次のコマンドを使用して、デフォルトのポートである21inRHEL7およびCentOS7を開きます。
sudo firewall-cmd --add-service=ftp --permanent
古いバージョンのOSの場合は、次のコマンドを使用します。
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp-data -j ACCEPT
MySQL-ポート3306
別のサーバーからMySQLデータベースにリモート接続する必要がある場合は、iptablesでポート3306を開く必要があります。 RHEL7およびCentOS7の場合、次のコマンドを使用します。
sudo firewall-cmd --add-service=mysql --permanent
古いバージョンのOSの場合は、次のコマンドを使用します。
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport mysql -j ACCEPT
次のコマンドを使用して、作成したすべてのルールを保存します。サーバーを再起動する前に保存しない場合、iptablesルールセットはデフォルトのルールセットに戻り、ポート22を除くすべてのトラフィックをブロックします。RHEL7またはCentOS 7を使用している場合、この手順は必要ありません。
sudo /sbin/service iptables save
iptablesへの変更は、ルールを保存してiptablesサービスを再起動した後にのみ有効になります。ルールを保存する前にiptablesを再起動すると、iptablesはデフォルトのルールセットに戻ることに注意してください。
RHEL7およびCentOS7の場合、次のコマンドを使用します。
firewall-cmd --reload
古いバージョンのOSの場合は、次のコマンドを使用します。
sudo /sbin/service iptables restart
RHEL7およびCentOS7でファイアウォールをリロードした後にルールを確認するには、次のコマンドを使用します。
firewall-cmd --get-active-zones
これにより、アクティブなゾーン(すべてのルールを保存したゾーン)が返されます。
firewall-cmd --zone=<zone> --list-all
これにより、指定したゾーンで有効なサービスが一覧表示されます。
sshを再起動
これで、SSHサービスを再起動できます。 shを再起動している間はログインしたままにして、新しい接続でテストしてください。 そうすれば、エラーが発生した場合に、より簡単にトラブルシューティングを行うことができます。
ほとんどのディストリビューションでは、サービスはsshdであり、次のコマンドで再起動します:
sudo service sshd restart
Ubuntuオペレーティングシステムやその他のディストリビューションでは、サービスはsshと呼ばれ、同様のコマンドで再起動します。
sudo service ssh restart
SSHの再起動後に新しい接続を確立できない場合は、症状を確認して、何が問題であるかを判断してください。
- 接続がタイムアウトした場合は、iptablesの構成に問題がある可能性があります。
- 秘密鍵に関する警告が表示された場合は、鍵がサーバーに正しくインストールされていない可能性があります(コピーアンドペースト操作で欠落した余分な改行や文字を確認してください)。
- サーバーを再構築している場合は、接続を確立する前に、known_hostsファイルからホストキーを削除する必要がある場合があります。
SSH、sudo、またはiptablesの設定が正しくないと、システムからロックアウトされる可能性があります。これが発生した場合は、TheRackspace Cloudコントロールパネルにログインし、緊急コンソールまたはレスキューモードを使用して構成を修復します。
これらは、LinuxCloudServerへの接続とセキュリティの設定の基本です。これらの手順をWindowsサーバーで実行するには、WindowsCloudServerを参照してください。