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


35

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


どのサービスが実行されますか?
wojox

LAMP、メール、DNS
ワンゼロ

Ubuntu Server Cheat Sheetを作成しましたので、共有したいと思います。最初の数ページは一般的なlinuxコマンドで、次に特定のサーバーパッケージ、最後のページはサーバーセキュリティチェックリストです。チェックリストは、多くのWebサイトのヒントと強化をまとめています。お役に立てばと思います!WTFPLライセンスの下でライセンスされています。あなたはここに/ダウンロード/どんなチェックリストを表示することができます。私は時々それを更新します。
ノアクラッサー

回答:


43

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

  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に特に注意してください


2
UFWを使用する代わりに(Ubuntuで組み込みのファイアウォールを使用している場合)、システムを非常に特殊なiptablesルールでロックダウンして、利用しないサービスへの外部アクセスを禁止します。ただし、高度なルーティングとスタッフを必要とするボールのセットアップ。
トーマス・ウォード

2
@LordofTime合意。私は実際に自分でiptablesを使用していますが、ほとんどの基本的なインストールにはufwで十分です。また、UFWは多かれ少なかれ、ほとんどの一般的なiptables構成の単なるラッパーです。基になるシステムは同じままです。
パトリックリーガン

2
ufwの+1、あなたは新しいユーザーではありません、あなたは1年間メンバーです:p
Tachyons

1
確かに、私は特定の場合にはUFWの上にある場合にはiptablesのがより良いユーザビリティを持っているだろうことを指摘したかった
トーマス・ウォード

1
BastilleLinuxを検討してください。これは優れたセキュリティ強化スイートでもあります。
-pl1nk

13

安全な共有メモリ

/ 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は、/ etc / hosts.denyにエントリを追加することにより、SSH攻撃を自動的にブロックするPythonプログラムです。また、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 mail@domain.com --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.*

さらにヘルプが必要な場合


PHP: magic_quotes_gpc = On。マジッククオートは最初に廃止され、その後削除されました:php.net/manual/en/security.magicquotes.whynot.php
ティム

13

あなたはこれがウェブホスティングサーバーだと言ったので... ウェブホスティングラインでの5年間のベストプラクティスと経験を共有したいと思います

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

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

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

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

  5. すぐに使えるものが必要な場合は、Turnkey Linuxを使用できます。Ubuntuに基づいており、実装が非常に簡単で、ニーズに柔軟に対応できます。わずかな労力で、すぐにセキュリティを確保できます。これは彼らのLAMPスタックです。私は個人的にこれを使用し、これを好みます。

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

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

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

  9. 取得ブルートフォース保護 fail2banのようなソフトウェアを。

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

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

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

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

**My heartiest best wishes to you. good luck.**

1
PHPは、ユーザー入力(たとえば、SQLインジェクション)を信頼する場合にも危険です。
NoBugs

@NoBugs私はこの点に完全に同意します。単一の回答ですべてを圧縮することはできません。私の答えには多くのハイパーリンクが含まれているため、これらのページを含むこれらのWebサイトは非常に便利です。私の答えと含まれているリンクがコミュニティに役立つことを願っています:)
Bhavesh Diwan

2
#9:いいえ、ramdom passowrdsは悪いです、キーは長さにあります、すなわち。"D0Gは....................." "PrXyc.N(n4k77#L!eVdAfp9"よりも強い。で説明explainxkcd.com/2011/08/10 /パスワード強度
papukaija

2
@papukaija私はあなたが上でGoogleに提案するbrute force attacksdictionary attacksランダム長いパスワードは、このような攻撃から身を確保するための唯一の方法..です。
バベシュディワン

6

Bastille Linuxプロジェクトを利用してください。

総合的なセキュリティを強化し、Ubuntuシステム(Bastille Linuxから)の侵害の危険性を減らすために、追加のセキュリティ強化対策を実行するための対話型ツールを提供します。

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

ここで Web(のみ)デモのプレビューを見ることができます

BastillleLinux


1
私はその勧告を再確認できます。公開されたホスト(Webサーバーなど)を実行する場合、bastilleはシステムのセキュリティ保護に大いに役立ちます。
フロイド

これは、CentOS / Redhatで見つけたSELinuxシステムに似ていますが、SELinuxの方が現代的だと思います。
djangofan

3

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

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

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

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

パスワードなしで、デジタル証明書を使用したマシンへのsshログインのみを許可します。それはまた、ブルートフォース攻撃を困難/不可能にします。



0

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

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

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

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.