OpenSource-Hub

How-To-Secure-A-Linux-Server

チュートリアル

imthenachoman/How-To-Secure-A-Linux-Server

常に更新されるLinuxサーバーのセキュリティ強化ガイド。

概要

このガイドは、Linuxサーバーのセキュリティ強化に関する段階的な説明を提供し、SSHセキュリティ、ファイアウォール設定、侵入検知などをカバーしています。内容はコミュニティによって提供され、継続的に更新されています。

README プレビュー

# How To Secure A Linux Server\n\nAn evolving how-to guide for securing a Linux server that, hopefully, also teaches you a little about security and why it matters.\n\n[](#license)\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Guide Objective](#guide-objective)\n  - [Why Secure Your Server](#why-secure-your-server)\n  - [Why Yet Another Guide](#why-yet-another-guide)\n  - [Other Guides](#other-guides)\n  - [To Do / To Add](#to-do--to-add)\n- [Guide Overview](#guide-overview)\n  - [About This Guide](#about-this-guide)\n  - [My Use-Case](#my-use-case)\n  - [Editing Configuration Files - For The Lazy](#editing-configuration-files---for-the-lazy)\n  - [Contributing](#contributing)\n- [Before You Start](#before-you-start)\n  - [Identify Your Principles](#identify-your-principles)\n  - [Picking A Linux Distribution](#picking-a-linux-distribution)\n  - [Installing Linux](#installing-linux)\n  - [Pre/Post Installation Requirements](#prepost-installation-requirements)\n  - [Other Important Notes](#other-important-notes)\n  - [Using Ansible Playbooks to secure your Linux Server](#using-ansible-playbooks-to-secure-your-linux-server)\n- [The SSH Server](#the-ssh-server)\n  - [Important Note Before You Make SSH Changes](#important-note-before-you-make-ssh-changes)\n  - [SSH Public/Private Keys](#ssh-publicprivate-keys)\n  - [Create SSH Group For AllowGroups](#create-ssh-group-for-allowgroups)\n  - [Secure `/etc/ssh/sshd_config`](#secure-etcsshsshd_config)\n  - [Remove Short Diffie-Hellman Keys](#remove-short-diffie-hellman-keys)\n  - [2FA/MFA for SSH](#2famfa-for-ssh)\n- [The Basics](#the-basics)\n  - [Limit Who Can Use sudo](#limit-who-can-use-sudo)\n  - [Limit Who Can Use su](#limit-who-can-use-su)\n  - [Run applications in a sandbox with FireJail](#run-applications-in-a-sandbox-with-firejail)\n  - [NTP Client](#ntp-client)\n  - [Securing /proc](#securing-proc)\n  - [Force Accounts To Use Secure Passwords](#force-accounts-to-use-secure-passwords)\n  - [Autom

FAQ (4)

設定
SSHクライアント設定で「HashKnownHosts yes」を有効にするべきですか?

はい、/etc/ssh/ssh_config または ~/.ssh/config で 'HashKnownHosts yes' を設定すると、known_hosts ファイル内のホスト名とアドレスがハッシュ化されます。これにより、ファイルが侵害された場合でもサーバーIDが平文で漏洩するのを防ぎ、SSHワーム攻撃や覗き見を軽減します。該当の設定ファイルに 'HashKnownHosts yes' という行を追加し、その後SSH接続を再起動してください。

参照 Issue #115
トラブル対応
モバイルインターネット接続(LTE)使用時にSSHの切断を防ぐ方法は?

「TCPKeepAlive(なりすまし可能なセキュリティリスク)」を無効にし、代わりに「ClientAliveInterval」と「ClientAliveCountMax」を使用します。NATタイムアウトが25秒と短いLTEネットワークでは、/etc/ssh/sshd_configに「ClientAliveInterval 25」と「ClientAliveCountMax 3」を設定します。SSHを再起動: sudo systemctl restart sshd。これにより、25秒ごとに暗号化されたキープアライブが送信され、最大3回の応答なしを許容した後、切断されます。

参照 Issue #103
トラブル対応
低エントロピーが原因でヘッドレスLinuxサーバー上で予測可能なSSHキーが生成される問題を修正する方法

エントロピーソースを追加するためにrng-toolsをインストールしてください。Debian/Ubuntuでは: sudo apt-get install rng-tools。ハードウェアエントロピーには、Infinite Noise TRNGを検討してください。詳細は、https://hackaday.com/2017/11/02/what-is-entropy-and-how-do-i-get-more-of-it/ および https://www.2uo.de/myths-about-urandom を参照してください。

参照 Issue #33
トラブル対応
SSHのデフォルトポートを変更すると、どのようにブルートフォース攻撃の試行を減らせるのか?

/etc/ssh/sshd_config内でSSHポートを22からランダムな高ポート(例:6222)に変更し(Port 6222)、UFWで許可します:sudo ufw allow 6222/tcp。SSHを再起動します:sudo systemctl restart sshd。これにより、自動化されたブルートフォース試行が毎分数百回から数回に減少します。完全に排除するには、パスワード認証を無効(PasswordAuthentication no)にしてSSHキーを使用する方法と組み合わせてください。ポートノッキング(例:knockd)を使用すると、ポートを完全に隠せます。

参照 Issue #63