web-dev-qa-db-ja.com

Ubuntu Serverを保護するために何ができますか?

Ubuntu Serverをできる限り保護するプロジェクトがあります。サーバーはWebホスティングサーバーです。サーバーはLAMP、Mail、およびDNSを実行します。

35
One Zero

以下は、サーバーを保護するために行うことのリストです。

  1. UFW(Sudo ufw enable)をオンにして、実際に使用されるポートのみを許可します。 (Sudo ufw allow 80
  2. MySQLがローカルホストからの接続のみを許可するようにしてください。
  3. メールサービスでTLSを有効にします。自己署名証明書であっても。パスワードを平文で送信したくない。
  4. Denyhostsやfail2banなどのssh bruteforceブロッカーをインストールします。 (Sudo apt-get install denyhosts
  5. Sshキーベースのログインのみを検討してください。
  6. AppArmorをご覧ください。かなりバニラ構成を使用する場合、それは非常に簡単です。電源が入っていることを確認してください。ゼロデイ攻撃の削減に役立ちます。
  7. サーバーへの物理アクセスに応じて、ハードディスク上のデータの暗号化を検討することもできます。
  8. このリンクの他の推奨事項に従ってください。編集:リンクを追加するほどの評判がなかったときに、これを編集するのを忘れました。ここでのリンクは、以下の最後のリンクです。
  9. ユーザーを信頼しないでください。システムにアクセスできる複数のユーザーがいる場合は、それらをロックします。 Sudoアクセスを付与する必要がある場合は、必要なもののみを付与します。
  10. 常識を使用します。ロックアウトされた場合、どのように侵入するかを真剣に考えてください。次に、それらの穴を閉じます。

さらに考慮すべきことがいくつかあります。ほとんどの人は、物理的なアクセスを忘れています。物理的にLiveCDを持ち込んでデータを盗むことができれば、世界中のすべてのソフトウェア構成は何の意味もありません。ソーシャルエンジニアリングに注意してください。質問をして、誰が電話をかけているのかを確認し、彼らが行っているリクエストを行うための承認を得ていることを確認します。

私はまだ「新しい」ユーザーなので、3つ以上のリンクを投稿することはできません。このテーマの詳細については、 https://help.ubuntu.com/12.04/serverguide/index.html をご覧ください。 https://help.ubuntu.com/12.04/serverguide/security.html

43
Patrick Regan

安全な共有メモリ

/ dev/shmは、httpdなどの実行中のサービスに対する攻撃で使用できます。/etc/fstabを変更して、より安全にします。

ターミナルウィンドウを開き、次を入力します。

Sudo vi /etc/fstab

次の行を追加して保存します。この設定を有効にするには、再起動する必要があります。

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

sysctl設定でネットワークを強化

/etc/sysctl.confファイルには、すべてのsysctl設定が含まれています。着信パケットのソースルーティングを防止し、不正な形式のIPをログに記録する

Sudo vi /etc/sysctl.conf

/etc/sysctl.confファイルを編集し、次の行をコメント解除または追加します。

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0 
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

sysctlを最新の変更でリロードするには、次を入力します:

Sudo sysctl -p

IPスプーフィングを防ぐ

ターミナルを開き、次を入力します:

Sudo vi /etc/Host.conf

次の行を追加または編集します:

order bind,hosts
nospoof on

セキュリティのためにPHPを強化する

php.iniファイルを編集します:

Sudo vi /etc/php5/Apache2/php.ini

次の行を追加または編集します:

disable_functions = exec,system,Shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On

Webアプリケーションファイアウォール-ModSecurity

http://www.thefanclub.co.za/how-to/how-install-Apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

DDOS(サービス拒否)攻撃から保護する-ModEvasive

http://www.thefanclub.co.za/how-to/how-install-Apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

ログをスキャンし、疑わしいホストを禁止する-DenyHostsおよびFail2Ban

@DenyHosts

DenyHostsはpythonプログラムで、/ etc/hosts.denyにエントリを追加することにより、SSH攻撃を自動的にブロックします。また、DenyHostsは、問題のあるホスト、攻撃されたユーザー、疑わしいログインについてLinux管理者に通知します。

ターミナルを開き、次を入力します:

Sudo apt-get install denyhosts

インストール後、構成ファイル/etc/denyhosts.confを編集し、必要に応じて電子メールやその他の設定を変更します。

管理者のメール設定を編集するには、ターミナルウィンドウを開いて次のように入力します:

Sudo vi /etc/denyhosts.conf

サーバーで必要に応じて次の値を変更します。

ADMIN_EMAIL = root@localhost
SMTP_Host = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 

@ Fail2Ban

Fail2banは、ログの監視をSSH、Apache、Courier、FTPなどを含む他のサービスに拡張するため、DenyHostsよりも高度です。

Fail2banは、ログファイルをスキャンし、悪意のある兆候を示すIPを禁止します。パスワードの失敗が多すぎる、エクスプロイトを探すなどです。

通常、Fail2Banは、指定された時間IPアドレスを拒否するためにファイアウォールルールを更新するために使用されましたが、他の任意のアクションも設定できます。すぐに使えるFail2Banには、さまざまなサービス(Apache、courier、ftp、sshなど)用のフィルターが付属しています。

ターミナルを開き、次を入力します:

Sudo apt-get install fail2ban

インストール後、構成ファイル/etc/fail2ban/jail.localを編集し、必要に応じてフィルター規則を作成します。

設定を編集するには、ターミナルウィンドウを開いて次のように入力します:

Sudo vi /etc/fail2ban/jail.conf

enabled = falseを *enabled = true*に変更して、fail2banで監視するすべてのサービスをアクティブにします。

たとえば、SSH監視とjailの禁止を有効にする場合は、以下の行を見つけて、enabledをfalseからtrueに変更します。それでおしまい。

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

Fail2Banからのメールを受信する場合ホストが禁止されている場合は、次の行をメールアドレスに変更します。

destemail = root@localhost

および次の行を次から変更します:

action = %(action_)s

から:

action = %(action_mwl)s

また、ルールフィルターを作成することもできますデフォルトでは提供されないfail2banに監視させたいさまざまなサービスに対して。

Sudo vi /etc/fail2ban/jail.local

Fail2banを構成し、さまざまなフィルターを作成する方法に関する適切な手順は、 HowtoForge - 例についてはここをクリック にあります。

Fail2Banの構成が完了したら、次を使用してサービスを再起動します。

Sudo /etc/init.d/fail2ban restart

ステータスを確認することもできます。

Sudo fail2ban-client status

ルートキットを確認します-RKHunterとCHKRootKit。

RKHunterCHKRootkit は基本的に同じことを行います-ルートキットがないかシステムを確認してください。両方を使用しても害はありません。

ターミナルを開き、次を入力します:

Sudo apt-get install rkhunter chkrootkit

Chkrootkitを実行するには、ターミナルウィンドウを開いて次のように入力します。

Sudo chkrootkit

RKHunterを更新して実行するには。ターミナルを開き、次を入力します

Sudo rkhunter --update
Sudo rkhunter --propupd
Sudo rkhunter --check

開いているポートをスキャンする-Nmap

Nmap(「ネットワークマッパー」)は、ネットワークの検出とセキュリティ監査のための無料のオープンソースユーティリティです。

ターミナルを開き、次を入力します:

Sudo apt-get install nmap

以下を使用して、開いているポートがないかシステムをスキャンします。

nmap -v -sT localhost

以下を使用したSYNスキャン:

Sudo nmap -v -sS localhost

システムログファイルの分析-LogWatch

Logwatchは、カスタマイズ可能なログ分析システムです。 Logwatchはシステムのログを解析し、指定した領域を分析するレポートを作成します。 Logwatchは使いやすく、ほとんどのシステムでパッケージからすぐに動作します。

ターミナルを開き、次を入力します。

Sudo apt-get install logwatch libdate-manip-Perl

Logwatchの出力を表示するには、lessを使用します。

Sudo logwatch | less

過去7日間のログウォッチレポートを電子メールアドレスに電子メールで送信するには、次を入力し、mail @ domain.comを必要な電子メールに置き換えます。 :

Sudo logwatch --mailto [email protected] --output mail --format html --range 'between -7 days and today' 

システムのセキュリティを監査する-Tiger。

Tigerは、セキュリティ監査と侵入検知システムの両方として使用できるセキュリティツールです。

ターミナルを開き、次を入力します。

Sudo apt-get install tiger

Tigerを実行するには:

Sudo tiger

すべてのTiger出力は/ var/log/tigerにあります

Tigerセキュリティレポートを表示するには、ターミナルを開き、次を入力します。

Sudo less /var/log/tiger/security.report.*

ヘルプが必要な場合

13
One Zero

あなたはこれがweb-hosting-server ...であると言ったので、5 long yearsの私のベストプラクティスと経験をweb-hosting行で共有したいと思います。

  1. 私の過去の経験から、すぐに構成の地獄に入るのではなく、最初に与えられた記事に示されているように、セキュリティの低いぶどうを組み立てる必要があります。

  2. LAMPを使用しているため、PHPについて非常に慎重でなければなりませんとそのphp.ini設定。これは、PHPを保護するのに適した link です。 PHPには、適切に設定されていない場合にセキュリティループになる可能性がある超能力があります。

  3. cron jobを使用して、ファイルが許可なく変更され、ハッキングされた可能性があるかどうかを確認できます。 このcronジョブ を使用します。 Notepad ++ を使用して、cronの結果を比較します(Webサーバーから直接cronメールをダウンロードして、Notepad ++で開きます)。

  4. SEMをインストールする場合は、cPanelをお勧めします(ただし有料)。 Webmin および zpanel は非常に優れた無料の代替手段です。 Webminは、少なくとも自己署名証明書を使用し、セキュリティを追加するため、より優れています。

  5. すぐに動作するようにしたい場合は、 Turnkey Linux。 を選択してください。Ubuntuベースで、実装が非常に簡単で、ニーズに柔軟に対応できます。わずかな労力で、すぐにセキュリティを確保できます。これは彼らの LAMPスタック です。 私は個人的に使用し、これだけを好みます。

  6. ゼロから始める場合は、ISPconfig3もインストールできます。指示 ここ

  7. セキュリティに侵入しようとするを使用してセキュリティをテストできます。 Back-Track-Linux を使用します。

  8. 複雑な長さを保つランダムなパスワード。 PCに保存しないでください。それらを書き留めます。ライブCDを使用して、これらのログインにアクセスします。

  9. brute force protection fail2banのようなソフトウェアを入手します。

  10. 必要のないデーモンを実行しないでください。

  11. 不要なポートをすべてブロック。 SSHポート(22)には特に注意してください。

  12. サーバーを管理するシステムの静的IPを取得します。 ほとんどのIPブロックを作成し、特定のIPのみにアクセスを許可するポート22などの設定場所。

1日の終わりに...完全な心で作業します感情的にならないでくださいインストールと常識の適用により、はるかに先に進みます。

**My heartiest best wishes to you. good luck.**
13
Bhavesh Diwan

Bastille Linuxプロジェクトを使用します。

追加のセキュリティ強化対策を実行して、全体的なセキュリティを高め、Ubuntuシステムのセキュリティ侵害の危険性を減らすインタラクティブツールを提供します( Bastille Linux から)。

システムのどの部分がロックダウンされていないかを判断できるように、評価およびレポート機能を提供します。システムを読み取り専用で検査し、各強化項目のステータスを報告します。たとえば、Bastilleは、DNSサーバーがchroot刑務所にロックされているかどうか、telnetがオフになっているかどうか、またはパスワードに十分な長さが必要かどうかをチェックします。このリンクからWebのみのデモを見ることができます(詳細 info )。

Web(のみ)デモのプレビューを表示できます here

BastillleLinux

6
pl1nk

マシンのすべてのインターフェースでnmapを使用して、マシンで実行しているサービスを把握します。これはセキュリティに不可欠なツールです。

外部インターフェイスで不要なサービスをすべて削除します。 localhostなどの特定のインターフェイスでのみリッスンするようにMySQLを構成できます。

Ufwを使用してSSHサービス(および可能性のある他のサービス)を保護し、同じマシンからの1分あたりの(失敗した)接続が多すぎないようにします。これにより、ブルートフォース攻撃が難しくなります。ポート番号を変更することはそれほど有用ではなく、単に不明瞭であり、セキュリティはありません。

マシン上のアカウントの数を制限してください。また、実際に使用するよりも多くのパッケージ/プログラムをインストールしないでください。 X11サーバーではなく、X11クライアントのみをインストールします。

デジタル証明書、no passwordを使用したマシンへのssh-loginのみを許可します。それはまた、ブルートフォース攻撃を困難/不可能にします。

3
Anders

CIS Debian Benchmarks ドキュメントも参照します。これには、Debianの派生物であるUbuntuに適用されるオペレーティングシステムを強化するための非常に多くの手順とプロセスがあります。私も相談します:

2
Justin Andrusk

セキュリティには常に代償が伴います。現実的な境界を設定すると、目標を達成するのに役立ちます。次の側面を検討します。

  • あなたは何に対して自分を守っていますか(どのタイプの悪役、彼の予算は何ですか)?
  • あなたの攻撃ベクトルは何ですか?

ここに掲載されているすべてのリンクを確認して、このリンクを追加する必要があると思います。ソフトウェアのセットアップ方法だけでなく、セキュリティ計画についても検討します。プラスとして、実行するすべてのコマンドは、そのソースと共に説明されています。

Xenial 16.04でのUbuntu Webサーバーの保護

0
Daan

少し前に、ubuntu 16.04-18.04を保護する方法について投稿しました。これらの手順は次のとおりです。

パスワードログインを認証済みキーに置き換えるLinuxサーバーにファイアウォールをインストールする

その他 https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/

0
Davh