Linux サヌバヌの保護。 たず䜕をすべきか

Linux サヌバヌの保護。 たず䜕をすべきか
ハビブ・ムヘニ/りィキメディア・コモンズ、CC BY-SA

珟圚では、ホスティング䞊でサヌバヌを立ち䞊げるのは、マりスを数回クリックするだけで数分で完了したす。 しかし、起動盎埌、圌はロッカヌディスコにいる無邪気な女の子のようにむンタヌネット党䜓にオヌプンであるため、自分が敵察的な環境にいるこずになりたす。 スキャナヌはそれをすぐに芋぀け、ネットワヌク内を探玢しお脆匱性や構成ミスを探す、自動的にスクリプト化された䜕千ものボットを怜出したす。 基本的な保護を確保するために、起動盎埌に行うべきこずがいく぀かありたす。

ペヌゞ内容

非rootナヌザヌ

最初のステップは、自分甚の非 root ナヌザヌを䜜成するこずです。 ポむントはナヌザヌが root システム内で絶察的な暩限を䞎え、圌にリモヌト管理を蚱可するず、あなたはハッカヌの仕事の半分を行うこずになり、ハッカヌに有効なナヌザヌ名を残すこずになりたす。

したがっお、別のナヌザヌを䜜成し、root の SSH 経由のリモヌト管理を無効にする必芁がありたす。

新しいナヌザヌはコマンドによっお開始されたす useradd:

useradd [options] <username>

次に、コマンドを䜿甚しおパスワヌドを远加したす passwd:

passwd <username>

最埌に、このナヌザヌを、管理者特暩でコマンドを実行する暩限を持぀グルヌプに远加する必芁がありたす。 sudo。 Linux ディストリビュヌションによっおは、これらは異なるグルヌプになる堎合がありたす。 たずえば、CentOS ず Red Hat では、ナヌザヌはグルヌプに远加されたす。 wheel:

usermod -aG wheel <username>

Ubuntuではグルヌプに远加されたす sudo:

usermod -aG sudo <username>

SSHパスワヌドの代わりにキヌ

ブルヌト フォヌスやパスワヌドの挏掩は暙準的な攻撃ベクトルであるため、SSH (Secure Shell) でのパスワヌド認蚌を無効にし、代わりにキヌ認蚌を䜿甚するこずが最善です。

SSH プロトコルを実装するためのさたざたなプログラムがありたす。 ああ О ドロップベア, しかし、最も人気があるのは OpenSSH です。 Ubuntu ぞの OpenSSH クラむアントのむンストヌル:

sudo apt install openssh-client

サヌバヌのむンストヌル:

sudo apt install openssh-server

Ubuntu サヌバヌ䞊で SSH デヌモン (sshd) を起動したす。

sudo systemctl start sshd

起動するたびにデヌモンを自動的に起動したす。

sudo systemctl enable sshd

OpenSSH のサヌバヌ郚分にはクラむアント郚分が含たれるこずに泚意しおください。 ぀たり、 openssh-server 他のサヌバヌに接続できたす。 さらに、クラむアント マシンからリモヌト サヌバヌからサヌドパヌティ ホストぞの SSH トンネルを開始するず、サヌドパヌティ ホストはリモヌト サヌバヌをリク゚ストの送信元ず芋なしたす。 システムをマスクするための非垞に䟿利な機胜です。 詳现に぀いおは蚘事を参照しおください 「実践的なヒント、䟋、SSH トンネル」.

通垞、クラむアント マシンに (セキュリティ目的で) コンピュヌタぞのリモヌト接続の可胜性を防ぐために本栌的なサヌバヌをむンストヌルするこずは意味がありたせん。

したがっお、新しいナヌザヌの堎合は、たずサヌバヌにアクセスするコンピュヌタヌ䞊で SSH キヌを生成する必芁がありたす。

ssh-keygen -t rsa

公開鍵はファむルに保存されたす .pub で始たるランダムな文字列のように芋えたす。 ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

次に、root の䞋からサヌバヌ䞊のナヌザヌのホヌム ディレクトリに SSH ディレクトリを䜜成し、そのファむルに SSH 公開キヌを远加したす。 authorized_keysVim などのテキスト ゚ディタを䜿甚しお:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

最埌に、ファむルに正しいアクセス蚱可を蚭定したす。

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

そしお所有暩をこのナヌザヌに倉曎したす。

chown -R username:username /home/username/.ssh

クラむアント偎では、認蚌甚の秘密キヌの堎所を指定する必芁がありたす。

ssh-add DIR_PATH/keylocation

これで、次のキヌを䜿甚しおナヌザヌ名でサヌバヌにログむンできるようになりたす。

ssh [username]@hostname

認蚌埌、scp コマンドを䜿甚しおファむルをコピヌできたす。 sshfs ファむル システムたたはディレクトリをリモヌトでマりントしたす。

パスワヌド認蚌を無効にしお秘密キヌを玛倱するず、自分のサヌバヌにたったくログむンできなくなるため、秘密キヌのバックアップ コピヌをいく぀か䜜成するこずをお勧めしたす。

䞊で述べたように、SSH では root の認蚌を無効にする必芁がありたす (これが新しいナヌザヌを開始した理由です)。

CentOS/Red Hat では、次の行が芋぀かりたす。 PermitRootLogin yes 蚭定ファむル内で /etc/ssh/sshd_config そしおそれを倉曎したす:

PermitRootLogin no

Ubuntu では次の行を远加したす PermitRootLogin no 蚭定ファむルに 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

新しいナヌザヌがキヌを䜿甚しお認蚌しおいるこずを確認した埌、パスワヌド認蚌を無効にしお、パスワヌド挏掩やブルヌト フォヌスのリスクを排陀できたす。 ここで、攻撃者がサヌバヌにアクセスするには、秘密キヌを取埗する必芁がありたす。

CentOS/Red Hat では、次の行が芋぀かりたす。 PasswordAuthentication yes 蚭定ファむル内で /etc/ssh/sshd_config 次のように倉曎したす。

PasswordAuthentication no

Ubuntu では次の行を远加したす PasswordAuthentication no ファむルぞ 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

SSH 経由で XNUMX 芁玠認蚌を有効にする手順に぀いおは、次を参照しおください。 ここで.

ファむアりォヌル

ファむアりォヌルは、盎接蚱可したポヌト䞊のトラフィックのみがサヌバヌに送信されるようにしたす。 これにより、他のサヌビスで誀っお有効になったポヌトの悪甚が防止され、攻撃察象領域が倧幅に枛少したす。

ファむアりォヌルをむンストヌルする前に、SSH が陀倖リストに含たれおおり、ブロックされないこずを確認する必芁がありたす。 そうしないず、ファむアりォヌルの起動埌にサヌバヌに接続できなくなりたす。

Ubuntu ディストリビュヌションには Uncomplicated Firewall (UFW)、CentOS/Red Hat を䜿甚 - ファむアりォヌル.

Ubuntu のファむアりォヌルで SSH を蚱可する:

sudo ufw allow ssh

CentOS/Red Hat では、次のコマンドを䜿甚したす。 firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

この手順の埌、ファむアりォヌルを開始できたす。

CentOS/Red Hat で、firewalld の systemd サヌビスを開始したす。

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu では次のコマンドを䜿甚したす。

sudo ufw enable

Fail2Ban

サヌビス Fail2Ban サヌバヌ䞊のログを解析し、各IPアドレスからのアクセス詊行回数をカりントしたす。 この蚭定では、䞀定期間内に蚱可されるアクセス詊行回数のルヌルを指定したす。その埌、この IP アドレスは指定された期間ブロックされたす。 たずえば、5 時間以内に SSH 認蚌の詊行が 2 回倱敗するこずを蚱可し、その埌、指定された IP アドレスを 12 時間ブロックするずしたす。

CentOS および Red Hat ぞの Fail2Ban のむンストヌル:

sudo yum install fail2ban

Ubuntu および Debian ぞのむンストヌル:

sudo apt install fail2ban

実行

systemctl start fail2ban
systemctl enable fail2ban

プログラムには XNUMX ぀の構成ファむルがありたす。 /etc/fail2ban/fail2ban.conf О /etc/fail2ban/jail.conf。 犁止制限は XNUMX 番目のファむルで指定されたす。

SSH の Jail は、デフォルト蚭定 (è©Šè¡Œ 5 回、間隔 10 分、犁止 10 分) でデフォルトで有効になっおいたす。

[デフォルト]ignorecommand=bantime=10m findtime=10m maxretry=5

SSH に加えお、Fail2Ban は nginx たたは Apache Web サヌバヌ䞊の他のサヌビスを保護できたす。

自動セキュリティ曎新

ご存知のずおり、すべおのプログラムで新しい脆匱性が垞に発芋されおいたす。 情報が公開されるず、人気のある゚クスプロむト パックに゚クスプロむトが远加され、ハッカヌやティヌン゚むゞャヌがすべおのサヌバヌを連続しおスキャンする際に倧量に䜿甚されたす。 したがっお、セキュリティ曎新プログラムが提䟛されたらすぐにむンストヌルするこずが非垞に重芁です。

Ubuntu サヌバヌでは、自動セキュリティ曎新がデフォルトで有効になっおいるため、それ以䞊のアクションは必芁ありたせん。

CentOS/Red Hat ではアプリケヌションをむンストヌルする必芁がありたす dnf-自動 そしおタむマヌをオンにしたす。

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

タむマヌチェック:

sudo systemctl status dnf-automatic.timer

デフォルトのポヌトの倉曎

SSH は、Telnet (ポヌト 1995) ず FTP (ポヌト 23) を眮き換えるために 21 幎に開発されたした。 デフォルトでポヌト 22 が遞択されおいたす、IANAによっお承認されおいたす。

圓然のこずながら、すべおの攻撃者は SSH がどのポヌトで実行されおいるかを認識しおおり、そのポヌトを残りの暙準ポヌトずずもにスキャンしお、゜フトりェアのバヌゞョンを調べたり、暙準の root パスワヌドをチェックしたりしたす。

暙準ポヌトの倉曎 (難読化) を数回行うず、ガベヌゞ トラフィックの量、ログのサむズ、サヌバヌの負荷が軜枛され、攻撃察象領域も枛少したす。 倚少ですが 「隠蔜による保護」ずいうこの方法を批刀する (隠蔜によるセキュリティ)。 その理由は、この手法が基本的な手法に反するからです。 建築䞊の保護。 したがっお、たずえば、米囜囜立暙準技術研究所は、 「サヌバヌセキュリティガむド」 この文曞には、オヌプン サヌバヌ アヌキテクチャの必芁性が瀺されおいたす。「システムのセキュリティは、そのコンポヌネントの実装の機密性に䟝存すべきではありたせん」ずこの文曞には蚘茉されおいたす。

理論的には、デフォルトのポヌトを倉曎するこずはオヌプン アヌキテクチャの実践に反したす。 しかし実際には、悪意のあるトラフィックの量は実際に枛少するため、これは簡単で効果的な察策です。

ポヌト番号はディレクティブを倉曎するこずで蚭定できたす Port 22 蚭定ファむル内で /etc/ssh/sshd_config。 パラメヌタでも瀺されたす -p <port> в sshd。 SSHクラむアントずプログラム SFTP オプションもサポヌトしたす -p <port>.

パラメヌタヌ -p <port> コマンドで接続するずきにポヌト番号を指定するために䜿甚できたす ssh Linuxで。 の SFTP О scp パラメヌタが䜿甚されたす -P <port> (倧文字の P)。 コマンドラむン呜什は、構成ファむル内の倀をオヌバヌラむドしたす。

サヌバヌが倚数ある堎合、Linux サヌバヌを保護するためのこれらのアクションのほずんどすべおをスクリプトで自動化できたす。 ただし、サヌバヌが XNUMX ぀しかない堎合は、プロセスを手動で制埡するこずをお勧めしたす。

広告の暩利に぀いお

泚文しおすぐに始めたしょう VDSの䜜成 どのような構成でも、どのオペレヌティング システムでも 128 分以内に完了したす。 最倧構成では、512 CPU コア、4000 GB RAM、XNUMX GB NVMe を最倧限に掻甚できたす。 玠晎らしい 🙂

Linux サヌバヌの保護。 たず䜕をすべきか

出所 habr.com