優れたソフトウェアと実用的なチュートリアル
Ubuntuサーバーの設定方法、安全な設定のための初心者向けガイド
Ubuntuサーバーの初心者ユーザーにとって、エントリーレベルのセキュリティ設定は、一般的なネットワーク脅威からシステムを保護するのに役立ちます。セキュリティ設定には、デフォルトのSSHポートの変更、ログインユーザーの制限、ファイアウォールルールの設定、システムパッチの定期的な更新、Fail2Banなどの保護ツールの有効化などが含まれます。これらの基本的な手順は、サーバーへのブルートフォース攻撃や不正アクセスのリスクを軽減するだけでなく、サーバーの強固なセキュリティ基盤を確立することにもつながります。
ネットワーク セキュリティは非常に重要です。特に、初心者がセキュリティ設定を行わずにオペレーティング システムをインストールすると、ハッカーに門戸を開くことになります。
Ubuntuのデフォルトのオペレーティングシステム設定だけでは、サーバーのセキュリティを確保するには不十分です。この記事では、Ubuntu 22.04でセキュリティを設定してサーバーのセキュリティを強化する方法を説明します。
ルートユーザーに切り替える
SSH ターミナルで次のコマンドを入力して、root ユーザーに切り替えます。
sudo -i
ユーザーパスワードを入力後、rootアカウントに入り、以下のコマンドを入力してrootパスワードを設定します。
sudo パスワード ルート
システムを更新する
システムをインストールした後の最初のステップは、システム内のソフトウェアが最新になるようにシステムを更新することです。
sudo apt update && sudo apt upgrade -y
自動更新を有効にして、システムを最新の状態に保ちます。
sudo apt install 無人アップグレード
sudo dpkg-reconfigure --priority=low 無人アップグレード
最新のセキュリティパッチをインストールする
sudo apt autoremove -y
定期的な更新とパッチ管理: セキュリティ パッチがタイムリーに適用されるように、Ubuntu システムとインストールされているすべてのパッケージを定期的に更新します。
これらのメッセージは通常、システムアップデートやセキュリティチェックのレポートで表示され、システムが良好な状態であることを示します。具体的な意味は以下のとおりです。
- 再起動の必要なコンテナはありません: 現在、再起動の必要なコンテナはありません。これは、すべてのコンテナが最新のコードまたは構成を実行していることを示しています。
- ユーザー セッションでは古いバイナリが実行されません: ユーザー セッションでは古いバイナリが実行されないため、ユーザーは最新のプログラムを使用し、セキュリティの脆弱性を回避できます。
- このホストでは VM ゲストが古いハイパーバイザー (qemu) バイナリを実行していません。VM ゲストは古い QEMU (ハイパーバイザー) バイナリを使用していないため、仮想化環境のセキュリティが確保されます。
全体的に、これはシステム内のコンテナ、ユーザー セッション、および仮想マシンが更新され、再起動やそれ以上のアクションは必要ないことを示しています。これは「通常の」プロンプトです。
中国語言語パックをインストールする
中国語言語パックは、グラフィカル インターフェイスまたはコマンド ラインからインストールできます。
コマンドライン経由:
パッケージ リストを更新し、言語パックをインストールします。
sudo apt アップデート
sudo apt install language-pack-zh-hans -y
インストールが完了したら、システムのロケールを設定します。
sudo 更新ロケール LANG=zh_CN.UTF-8
新しい言語設定を適用するには、システムを再起動するかログアウトしてください。
タイムゾーンを調整する
タイムゾーンは、コマンド ラインまたはグラフィカル インターフェイスを通じて変更できます。
タイムゾーンを設定します。たとえば、タイムゾーンを中国標準時 (Asia/Shanghai) に設定するには、次のようにします。
sudo timedatectl set-timezone Asia/Shanghai
スワップファイルを設定する(オプション)
システム メモリが小さい場合は、スワップ ファイルを作成するとシステム パフォーマンスが向上することがあります。
sudo fallocate -l 2G /スワップファイル
sudo chmod 600 /スワップファイル
sudo mkswap /スワップファイル
sudo swapon /スワップファイル
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
基本ツールキットをインストールする
よく使用されるツールキットと開発ツールをいくつかインストールします。
sudo apt install -y build-essential curl wget git vim unzip htop nload
ネットワーク ツール、いくつかのネットワーク デバッグおよび管理ツールをインストールします。
sudo apt install -y net-tools dnsutils traceroute telnet nload
Pythonとそのツールをインストールします。Pythonは広く使用されているスクリプト言語であり、多くのアプリケーションがPythonに依存しています。
sudo apt install -y python3 python3-pip python3-venv
Node.js と npm をインストールします。Node.js はサーバーサイドの JavaScript ランタイム環境で、npm はそのパッケージ マネージャーです。
sudo apt install -y nodejs npm
Snapをインストールして、さらに多くのアプリケーションをインストールしましょう。SnapはUbuntuのパッケージマネージャーで、多くのアプリケーションをインストールできます。
sudo apt install -y snapd
開発関連ツールをインストールします。Javaの場合は、OpenJDK(OpenJDK 11または17など)をインストールします。
sudo apt install -y openjdk-17-jdk
C/C++ 開発の場合、build-essential に加えて、いくつかの一般的なライブラリとツールをインストールします。
sudo apt install -y cmake gdb
画像処理ツールといくつかの一般的な画像処理および変換ツールをインストールします。
sudo apt install -y imagemagick ffmpeg
テキスト処理ツールをインストールし、一般的に使用されるテキスト処理ツールをいくつかインストールします。
sudo apt install -y jq silversearcher-ag ツリー
不要になったインストール パッケージと依存関係をクリーンアップするには、次のコマンドを使用できます。
sudo apt autoremove -y
sudo apt autoclean
さまざまなニーズに応じてインストールを選択してください。これらを完了すると、システムは一般的な開発環境、運用・保守環境に必要なツールを備えることになります。
複数のIPアドレスを追加する
IP構成ファイルを表示する
ls /etc/netplan/
IP設定ファイルの編集
vi /etc/netplan/50-cloud-init.yaml
新しいプロファイルを適用する
sudo ネットプラン適用
ポートバインディングIPを表示する
ip a show eno1
ハードディスクを確認し、新しいハードディスクを/homeにマウントします。
現在のディスクの状態を確認する
sudo fdisk -l
parted を使用して新しいハードドライブをパーティション分割します。
sudo で /dev/sdb を分割する
sdbはサーバー上の2番目のハードディスクです。通常、1番目のハードディスク(sda)はシステムディスクとして使用され、sdbはデータディスクとして使用されます。
SSHセキュリティ設定
LinuxサーバーへのSSHアクセスのセキュリティを強化するには、/etc/ssh/sshd_configファイルを設定して、ログイン試行回数、間隔、および許可または拒否されるユーザーを制限できます。具体的な手順は以下のとおりです。
ログイン試行回数と失敗したログイン試行間隔を設定する
/etc/ssh/sshd_config ファイルを編集します。
sudo vi /etc/ssh/sshd_config
MaxAuthTriesの設定
MaxAuthTries: このパラメータは、接続が切断されるまでの認証試行の最大回数を設定するために使用されます。
デフォルト値は通常 6 ですが、セキュリティを強化するために 3 以下に設定できます。
最大認証試行回数 3
DenyUsersおよびAllowUsersディレクティブを使用してユーザーアクセスを制限する
DenyUsersディレクティブの設定
DenyUsers: SSH 経由でのログインを禁止するユーザーのリストを指定するために使用されます。
フォーマット: DenyUsers ユーザー名1 ユーザー名2
たとえば、ユーザー testuser と guest が SSH 経由でログインすることを禁止するには、次のようにします。
DenyUsers テストユーザー ゲスト
AllowUsersディレクティブの設定
AllowUsers: SSH 経由でログインできるユーザーのリストを指定するために使用されます (これらのユーザーのみがログインできます)。
フォーマット: AllowUsers ユーザー名1 ユーザー名2
たとえば、adminuser のみが SSH 経由でログインできるようにするには、次のようにします。
AllowUsers 管理者ユーザー
注意:AllowUsersとDenyUsersは互換的に使用できません。AllowUsersを使用した場合、リストに含まれるユーザーのみがログインを許可され、DenyUsersに含まれていないユーザーはログインできません。
完了したらファイルを保存して閉じ、SSH サービスを再起動します。
sudo systemctl sshdを再起動します
Fail2Banのようなツールを使う
Fail2Banをインストールする
ログインログを監視し、複数回のログイン試行に失敗したIPアドレスを自動的に禁止することで、セキュリティをさらに強化できます。Fail2Banを使用すると、IPアドレスを自動的に禁止できます。
Fail2Banは、SSHログイン試行の失敗を監視し、繰り返し失敗したIPアドレスを自動的に禁止する非常に効果的なツールです。Fail2Banをインストールして設定することで、同様の遅延効果が得られます。
sudo apt install fail2ban
Fail2Banの設定
/etc/fail2ban/jail.localファイルを編集する
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
注: jail.local が存在しない場合は、jail.conf の内容をコピーして jail.local を作成できます。
sudo vi /etc/fail2ban/jail.local
SSH 監視を設定するには、SSHD オプションに以下を追加します。
[sshd] enabled = true port = ssh maxretry = 3 bantime = 6000 findtime = 60
最大再試行回数: 設定時間を見つける (秒)以内に許容される失敗の最大数。
bantime: 禁止時間(秒単位)を設定します。必要に応じて増やすことができます。
Fail2Banを開始する
設定ファイルを保存したら、Fail2Ban サービスを再起動します。
sudo systemctl を再起動 fail2ban
構成が有効かどうかを確認する
sudo fail2ban-client ステータス
次のように表示されれば設定は成功です。
ステータス |- jailの数: 1 `- jailリスト: sshd
/etc/ssh/sshd_config を設定した後、MaxAuthTries、DenyUsers、AllowUsers パラメータを設定し、Fail2Ban をインストールすることで、SSH ログイン試行回数と許可されるユーザー数を効果的に制限し、ブルート フォース クラッキングのリスクを軽減できます。
フェイルツーバン設定完了すると、サーバーはブルートフォース攻撃から効果的に保護されます。また、特定のニーズに応じて、追加のjailやカスタムルールを有効にすることもできます。
ルートユーザーを使用せずにSSHログインする
セキュリティを強化するため、rootユーザーでサーバーに直接ログインするのではなく、管理者タスクを実行するためのsudo権限を持つ通常ユーザーを作成することをお勧めします。セットアップと設定のプロセスは以下のとおりです。
新しいユーザーを作成する
次のコマンドを使用して、新しいユーザーを作成し、sudo 権限を付与します。
sudo adduser 新しいユーザー名
sudo usermod -aG sudo 新しいユーザー名
コマンドを実行した後、新しいユーザー名sudo グループに追加されました:
グループ 新しいユーザー名
コマンドによって返されるグループ リストに sudo が含まれている場合、追加が成功したことを意味します。
再ログイン: ユーザーのグループ情報はセッションの開始時に読み込まれるため、変更を適用するにはログアウトして再度ログインする必要があります。
一部のシステムでは、sudo グループが有効になっていないか、/etc/sudoers ファイルが正しく構成されていない可能性があります。
次のコマンドを使用して、sudoers ファイルの構成を確認します。
sudo visudo
ファイルに次の行が含まれていることを確認してください。
%sudo ALL=(ALL:ALL) ALL
ファイルの末尾に次の行を追加します。
新しいユーザー名 ALL=(ALL) ALL
これにより、新しいユーザー名に sudo 権限が付与されます。
ルートユーザーのSSHログインを無効にする
サーバーのセキュリティをさらに強化するには、rootユーザーのSSHアクセスを無効にします。SSH設定ファイル/etc/ssh/sshd_configを編集します。
sudo vi /etc/ssh/sshd_config
次の行を見つけます。
#PermitRootLogin 禁止パスワード
変更後:
PermitRootLogin番号
ファイルを保存して閉じ、変更を有効にするために SSH サービスを再起動します。
sudo systemctl sshdを再起動します
ルートパスワードを変更する
root としてログインした後、passwd コマンドを使用して、root パスワードをより複雑なものに変更します。
キーを使用したSSHログイン
SSHキーペアを使用してログインすることは、ブルートフォース攻撃を効果的に防ぐ安全で便利な方法です。以下は、キーペアを生成し、公開鍵をアップロードし、SSHサーバーを設定してパスワードログインを無効にする詳細な手順です。
SSHキーペアを生成する
ローカルコンピューターでターミナルを開き、次のコマンドを実行します。
ssh-keygen -t rsa -b 4096
これにより、RSA キーのペア (公開キーと秘密キー) が生成されます。
ファイル名とパスワードの入力を求められます。
ファイル名: Enter キーを押すと、デフォルトのファイル名 (通常は ~/.ssh/id_rsa) を使用できます。
パスワード: セキュリティ強化のためにパスワードを設定することも、空白のままにすることもできます。
生成後、キー ペアは次のパスに保存されます。
秘密鍵: ~/.ssh/id_rsa
公開鍵: ~/.ssh/id_rsa.pub
サーバーに手動でログインし、~/.ssh/authorized_keys ファイルを開く (または作成する) して、公開鍵 ~/.ssh/id_rsa.pub を貼り付けます。
vi ~/.ssh/authorized_keys
権限設定
~/.ssh ディレクトリと authorized_keys ファイルの権限が正しく設定されていることを確認します。
.ssh ディレクトリは 700 に設定する必要があります。
chmod 700 /root/.ssh
authorized_keys ファイルは 600 に設定する必要があります。
chmod 600 /root/.ssh/authorized_keys
SSHサーバーの設定
SSH 構成ファイルを開きます。
sudo vi /etc/ssh/sshd_config
次の構成項目が設定されていることを確認してください。
公開鍵認証はい
パスワード認証番号
設定の変更を有効にするには、SSH サービスを再起動します。
sudo systemctl sshdを再起動します
メモリ使用量を表示する
メモリ使用量もサーバーのセキュリティにとって重要な指標です。free、top、htopなどのコマンドを使用して、現在のサーバーのメモリ使用量を確認し、悪意のあるプロセスがメモリリソースを過剰に占有していないことを確認できます。
ファイアウォールをインストールする
ウイルスファイアウォール
Ubuntuでは、システムを保護するために、人気のウイルス対策ソフトウェアを使用できます。ClamAVは、Linuxシステムで広く使用されているオープンソースのウイルススキャナーです。
ClamAVは、マルウェアの検出と削除に適したオープンソースのウイルス対策ソフトウェアです。UbuntuシステムにClamAVをインストールして設定する詳細な手順を以下に示します。
ClamAV をインストールします。
APT パッケージ マネージャーを使用して、ClamAV と clamav-daemon (リアルタイム スキャン サポートを提供) をインストールします。
sudo apt install clamav clamav-daemon -y
インストールが成功したことを確認する
clamscan --version
ウイルスデータベースを更新:
ウイルスデータベースを更新する前に、ClamAVを停止してください。
sudo systemctl stop clamav-freshclam
sudo フレッシュクラム
アップデートが完了したら、サービスを開始します
sudo systemctl で clamav-daemon を起動します。
sudo systemctl start clamav-freshclam
システム全体のスキャンを実行するには:
sudo clamscan -r /
自動スキャン(定期的にスキャンを実行するためのCronジョブを設定できます)。Cronタスクを編集して、ClamAVスキャンを定期的に実行できます。
ClamAVデーモンclamav-daemonを設定して、リアルタイムスキャン機能を提供します。サービスが起動していることを確認してください。
sudo systemctl で clamav-daemon を有効にする
sudo systemctl で clamav-daemon を起動します。
ウイルスデータベースの自動更新
sudo systemctl で clamav-freshclam を有効にする
sudo systemctl start clamav-freshclam
設定ファイルを変更する
/etc/clamav/freshclam.conf を vi してください
次の行を変更して1時間ごとに更新します
チェック24
定期的なスキャンをスケジュールする
cronを使って定期的なスキャンをスケジュールできます。crontabを編集します。
sudo crontab -e
毎日午前 2 時に /home ディレクトリをスキャンするには、次の行を追加します。
0 2 * * * clamscan -r /home
システムファイアウォール
UFW(Uncomplicated Firewall)は、Ubuntuで広く使用されているファイアウォールツールです。シンプルで使いやすく、初心者から経験豊富なユーザーまで幅広く対応しています。
UFWをインストールします。
sudo apt install ufw
UFW を有効にする:
sudo ufw を有効にする
SSH アクセスを許可します (ファイアウォールを有効にする前にリモート アクセスが可能であることを確認してください)。
sudo ufw sshを許可する
他のポートからのアクセスを許可します (HTTP や HTTPS など)。
sudo ufw allow 80/tcp # HTTPを許可する
sudo ufw allow 443/tcp # HTTPSを許可する
UFW ステータスを確認します。
sudo ufw ステータス詳細
UFWを無効にする:
sudo ufw を無効にする
要約する
現代のネットワーク環境では、Ubuntuサーバーのセキュリティを確保することが不可欠です。まず、システムとソフトウェアパッケージを定期的に更新し、最新のセキュリティパッチを適用することは、潜在的な脆弱性を防ぐための基本的な対策です。同時に、SSHキーを使用してログインし、パスワード認証を無効にすることで、リモートアクセスのセキュリティを向上させることをお勧めします。UFWファイアウォールを設定することで、不要なサービスへのアクセスを効果的に制限できます。さらに、ウイルス対策ソフトウェア(ClamAVなど)を定期的にインストール・更新し、システムログを監視することで、セキュリティ上の脅威をタイムリーに検出・対応することができます。これらの包括的な対策により、Ubuntuユーザーはシステムを攻撃から効果的に保護し、データのセキュリティと安定性を確保することができます。
CSF ファイアウォール (ConfigServer Security & Firewall) をインストールする
Ubuntu に CSF をインストールし、基本設定を有効にするには、次の手順に従います。
# 依存関係をインストールします sudo apt update sudo apt install -y perl libwww-perl liblwp-protocol-https-perl # CSF をダウンロードします wget https://download.configserver.com/csf.tgz tar -xzf csf.tgz cd csf # インストール スクリプトを実行します sudo bash install.sh # サーバーが CSF と互換性があるかどうかを確認します sudo perl /usr/local/csf/bin/csftest.pl
公式インストールスクリプトがアップグレードされました。csfのインストール後に500エラーが発生した場合は、公式アップグレードスクリプトを使用してアップグレードとインストールを行うだけで済みます。
シュ <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh || wget -O - https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh)