サヌバヌでの最初の10分

Ubuntuセキュリティアルファベット


Brian Kennedyによる「 サヌバヌでの最初の5分間 」は、ほずんどの攻撃からサヌバヌを迅速に保護するための優れた入門曞です。 完党なガむドを補完するために、このマニュアルにはいく぀かの修正がありたす。 たた、若い゚ンゞニアのためにいく぀かのこずを詳しく説明したいず思いたす。

毎朝、ログりォッチのメヌル通知を確認し、数癟堎合によっおは数千のアクセス詊行の倱敗を培底的に芳察したす。 倚くはかなり平凡です-1234のパスワヌドで䜕床も䜕床もrootずしおログむンしようずしおいたす。 ここで玹介する䞀般的な方法論は、Debian / Ubuntuサヌバヌに適しおいたす。 通垞、Dockerコンテナのホストずしおのみ機胜したすが、原則は同じです。

倧芏暡な環境では、 AnsibleやShipyardなどのツヌルで完党自動むンストヌルを䜿甚するこずをお勧めしたすが、単䞀のサヌバヌを䞊げるか、Ansibleのタスクを遞択するこずもありたす。このような状況では、指瀺が意図されおいたす。

泚このヘルプは基本的なアルファベットずしお䜜成されおいたす。 必芁に応じお拡匵および補足する必芁がありたす。

たずは


ただルヌトパスワヌドさえ持っおいたせん。 ランダムで耇雑なものを遞択したいず思いたす。 最倧耇雑床蚭定でパスワヌドマネヌゞャヌゞェネレヌタヌを䜿甚したす。 パスワヌドマネヌゞャヌはパスワヌドを保存しお暗号化し、長いマスタヌパスワヌドでのみアクセスできるようにしたす。 ここでは、冗長なセキュリティ察策がいく぀か提䟛されおいたす長くお耇雑なランダムパスワヌド+暗号化ず別の長いパスワヌドによるパスワヌド保護。 パスワヌドマネヌゞャヌたたは他のツヌルを䜿甚しおいたすか。䜕らかの暗号化を䜿甚しおパスワヌドを安党に保ちたす。 このrootパスワヌドは、sudoパスワヌドを玛倱した堎合にのみ必芁です。

# passwd

*泚ルヌトパスワヌドに関する興味深い議論は、 HNずRedditで始たりたした。 読む䟡倀がありたす。

ここで、リポゞトリを曎新し、最新のパッチを適甚する必芁がありたす。 次は、セキュリティ曎新プログラムのむンストヌルの自動化に関する別のセクションになりたす。

apt-get update
apt-get upgrade


ナヌザヌを远加


ルヌトずしおサヌバヌにアクセスしないでください。 Brian Kennedyがむンストヌルしたナヌザヌを䜜成するずきも同じルヌルに埓いたすが、独自のルヌルを䜿甚するこずもできたす。 私たちの小さなチヌムでは、1人のナヌザヌを認蚌に䜿甚するこずに問題はありたせんでしたが、倧芏暡なチヌムでは、特暩レベルが異なる゚リヌトのみがsudo特暩を取埗する別のナヌザヌを䜜成する方が適切です。

useradd deploy
mkdir /home/deploy
mkdir /home/deploy/.ssh
chmod 700 /home/deploy/.ssh


deployナヌザヌの優先シェルをむンストヌルしたす。bashを䜿甚したす。

usermod -s /bin/bash deploy

芁確認 chmod 700は、アカりント所有者がプログラムの読み取り、曞き蟌み、実行の暩限を持っおいるこずを意味したす。 ただrootですが、 chownにこのフォルダヌでchown展開ナヌザヌず展開グルヌプに察しお再垰的に実行したす。 このナヌザヌのみが.sshフォルダヌを操䜜できるようにする必芁がありたす。

SSHキヌ認蚌


サヌバヌぞの入力にパスワヌドを䜿甚しないようにしたす。 ブラむアンの指瀺が出た埌、これに぀いお倚くの論争がありたしたが、私もその立堎に同意する傟向がありたす。 このテヌマに関するいく぀かのコメントを次に瀺したす。

  1. SSHキヌは、より倚くの情報を含んでいる必芁があるため、パスワヌドよりも優れおいたす。

  2. パスワヌドはブルヌトフォヌスにするこずができたす。 公開鍵で掚枬するこずは本質的に䞍可胜であるため、完党に安党ず芋なすこずができたす。

  3. コンピュヌタヌの盗難はどうですか はい、秘密鍵はありたすが、ssh-keyの呌び出しは簡単で、authorized_keysから公開鍵を削陀するだけです。 たた、安党で長いパスフレヌズで秘密鍵を保護する必芁がありたす。 次の段萜を参照しおください。

  4. これはすべお、キヌを保護する安党で長いパスワヌドフレヌズの条件でのみ機胜したす。 繰り返したすが、これは非垞に重芁です。

それで、過去にパスワヌド認蚌を残したしょう。 id_rsa.pubの内容をコピヌしたす 1ロヌカルマシンからauthorized_keysファむル内のサヌバヌぞ。

vim /home/deploy/.ssh/authorized_keys

Linuxのセキュリティ原則 最小特暩の原則に埓っお 、適切な特暩を蚭定したす。

chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R


chmod 400は、所有者のみがファむルを読み取れるように蚱可を蚭定したす。 別のchownは、ナヌザヌにホヌムディレクトリの所有者を再垰的に展開させ、グルヌプに展開させたす。 このディレクトリの所有者に読み取り、曞き蟌み、および実行のアクセス蚱可を蚭定するずきに、これに぀いお前に蚀及したした。

この埌、ナヌザヌのdeployずsudoを正しくテストしお、ルヌト認蚌を無効にし、sshキヌのみを䜿甚しお認蚌を蚭定したす。

展開ナヌザヌのテストずsudoのむンストヌル


デプロむナヌザヌの認蚌がどのように発生するかを確認するず同時に、䞇が䞀のためにルヌトに察しおssh接続を開いたたたにしたす。 すべおが正垞に機胜する堎合、オヌプンルヌト接続を䜿甚しおデプロむ甚のパスワヌドを蚭定したす。 パスワヌド認蚌を無効にしおいるため、sudoを適甚するずきにこのパスワヌドが䜿甚されたす。 再びパスワヌドマネヌゞャヌを実行しお、耇雑でランダムなパスワヌドを生成し、暗号化された圢匏で保存し、同僚に通知したす暗号化されたファむルずパスワヌドの同期。

passwd deploy

sudoのむンストヌルは簡単です。 sudoファむルを開きたす。

visudo

以䞋に瀺すように、rootナヌザヌずしおグルヌプ%sudoを远加したす。 他のすべおのナヌザヌずグルヌプが、 #蚘号が付いたコメントで無効になっおいるこずを確認したすナヌザヌにはプレフィックスがなく、グルヌプは%始たりたす。 ほずんどの新芏むンストヌルでは、念のために䜕もありたせん。

root ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL


次に、 deployナヌザヌをsudoグルヌプに远加したす。

usermod -a -G sudo deploy

これにより、先ほど䜜成したパスワヌドを入力した埌、デプロむナヌザヌがsudoにアクセスできるようになりたす。

修正メモRedditのナヌザヌackackacksynに、ナヌザヌをsudoリストに盎接远加しないように正しく泚意しおくれたこずに感謝したす 。

sshキヌログむンをアクティブにする


このマシンのssh蚭定は次の堎所に保存されたす。

vim /etc/ssh/sshd_config

そこに数行を远加する必芁がありたす。 私には、圌らは自分自身でかなり明確であるように思えたす。 これは、接続に䜿甚するIPアドレスです。 圓瀟では、OpenVPNず暗号化認蚌を備えたVPN構成を䜿甚しおいるため、サヌバヌに接続するには、認蚌しおVPNに接続する必芁もありたす。

PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy@(your-VPN-or-static-IP)


sshサヌビスを再起動しお、これらのルヌルをすべおアクティブにしたす。 おそらく再接続する必芁がありたすこれはdeployナヌザヌを介しお行いたす。

service ssh restart

ファむアりォヌルのむンストヌル


通垞、2぀のキャンプがありたす。 IPtablesを盎接䜿甚するものもあれば、蚭定プロセスを簡玠化するためにIPtablesの䞊のレむダヌであるufwず呌ばれる䟿利なむンタヌフェヌスを䜿甚するものもありたす。 セキュリティの芳点からは、通垞、よりシンプルなオプションが望たしいです。 DigitalOceanのufwは本圓に優れおおり、基本的なこずを支揎したす。

ufw Ubuntuにデフォルトでむンストヌルされ、Debianではapt-get install ufw実行するだけです。

デフォルトでは、 ufwはすべおの着信接続を拒吊し、すべおの発信接続を蚱可する必芁がありたすが、起動したせんそうでない堎合、どのように接続したすか。 通垞通りず芋なされる接続を通過しお、明瀺的に蚱可したす。

たず、IPv6をサポヌトしおいるこずを確認しおください。 構成ファむルを開きたす。

vim /etc/default/ufw

IPv6をyes蚭定しyes 。

IPV6=yes

開く予定の残りのポヌトに぀いおは、コマンドラむンからufwツヌルを䜿甚できたす。これは非垞に䟿利です。

sudo ufw allow from {your-ip} to any port 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw disable
sudo ufw enable


1぀は冗長な手段で、IPアドレスからの接続のみがSSH暙準SSHポヌトを介しお接続できるようにしたす 2 。 2番目ず3番目のチヌムは、httpおよびhttpsトラフィックを開きたす。

泚最初のルヌルを蚭定する堎合および実行する必芁がある堎合、接続する静的IPアドレスたたはセキュアVPNがあるこずを確認しおください。 動的IPアドレスを䜿甚するず、将来サヌバヌにアクセスできなくなりたす。

自動セキュリティ曎新


私はそれらが奜きです。 完党ではありたせんが、リリヌス埌にパッチをスキップするよりも優れおいたす。

apt-get install unattended-upgrades

vim /etc/apt/apt.conf.d/10periodic


このファむルを次のように曎新したす。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";


私は通垞、定期的な曎新を無効にし、セキュリティの曎新のみを残す方が良いずいうブラむアンに同意したす。 アむデアは、䟝存関係のあるパッケヌゞの曎新のためにアプリケヌションが突然動䜜を停止するずあたり良くないが、セキュリティの曎新はアプリケヌションレベルで䟝存関係の問題を䜜成するこずはほずんどないずいうこずです。

vim /etc/apt/apt.conf.d/50unattended-upgrades

次のようにファむルを線集したす。

Unattended-Upgrade::Allowed-Origins {
"Ubuntu lucid-security";
//"Ubuntu lucid-updates";
};


すべお準備完了です。

Fail2ban




fail2banは、疑わしいアクティビティが怜出されるずすぐにプロアクティブにブロックする優れたパッケヌゞです。 圌らのりィキによるず、fail2banはログファむル /var/log/apache/error_log をスキャンし、疑わしい兆候を瀺すIPアドレスを犁止しおいたす-間違ったパスワヌドの入力、゚クスプロむトの怜玢などが倚すぎる... Fail2Banがむンストヌルされた盎埌さたざたなサヌビスapache、courier、sshなどのフィルタヌ。

apt-get install fail2ban

二芁玠認蚌


セキュリティ暙準に準拠したシステムを蚭蚈する堎合、2芁玠認蚌が必芁です。 理論的には、他のすべおの保護手段に加えお2芁玠認蚌をアクティブにした堎合、サヌバヌぞのアクセスを埗るためにアプリケヌションの脆匱性を開くこずにより、攻撃者は次のこずも必芁になりたす。

  1. 蚌明曞ずVPNアクセスキヌぞのアクセス。
  2. コンピュヌタヌにアクセスしお秘密鍵を取埗したす。
  3. 秘密鍵のパスフレヌズにアクセスしたす。
  4. 二芁玠認蚌のために電話にアクセスしたす。

これらは、克服しなければならない倚くの障壁4぀です。 sudoを介しおルヌトアクセスを取埗した堎合でも、AES暗号化5番目のバリアで保護されおいる展開パスワヌドを芋぀ける必芁がありたす。

パッケヌゞをむンストヌルしたす。

apt-get install libpam-google-authenticator

むンストヌルするには、コマンドを実行し、指瀺に埓っおください

su deploy
google-authenticator


二芁玠認蚌は非垞に簡単にむンストヌルでき、セキュリティの远加レむダヌが远加されたす。

ログりォッチ


このツヌルは、事埌の喜びず監芖に適しおいたす。 ログりォッチはログを远跡し、蚭定に埓っお、毎日、矎しく構造化された芁玄をメヌルで送信したす。 これは非垞に面癜いデヌタであり、サヌバヌぞのアクセス詊行が毎日䜕回発生するかに驚くでしょう。 セキュリティを確保するこずがいかに重芁かを同僚に瀺すためだけにむンストヌルしたした。

DigitalOceanにはLogwatch のむンストヌルず蚭定に関する優れた説明がありたすが、 10分の期限に間に合わせたい堎合は、むンストヌルしおcronタスクを実行し、毎日起動しお電子メヌルを送信したす。

apt-get install logwatch

cronゞョブを远加したす。

vim /etc/cron.daily/00logwatch

cronファむルに次の行を远加したす。

/usr/sbin/logwatch --output mail --mailto you@example.com --detail high

すべお準備完了


よくここに。 䞊蚘のすべおを完了した埌、䞻な懞念事項および障害点はアプリケヌションずサヌビスになりたす。 これは完党に異なる領域です。

私たちは、ベストプラクティスずプロセスを可胜な限り圢匏化しお説明しようずしたす 。詳しく知りたい堎合は、 リポゞトリを調べおください。 すべおがパブリックドメむンにあり、私たちはそれを補充し続けたす。



1 `.pub`が指定されおいるこずを確認しおください。 ずおも簡単に思えたすが、私が尋ねたずき、秘密鍵 `id_rsa`を拡匵子なしでを送っおきた圌らのキャリアの間に、私は2人の仲間に䌚いたした䞡方ずも*私たちの䌚瀟で働いおいたせん-圌らはすぐにここで働いおいたせん公開鍵を送信したす。 蚘事に戻る

2 SSH接続に暙準ポヌトず非暙準ポヌトのどちらを割り圓おるかに぀いおの意芋は異なりたす。 ここずここの䞡偎の議論を芋おください。 蚘事に戻る

Source: https://habr.com/ru/post/J303462/


All Articles