Linuxシステムのセキュリティ強化ガイド

Linuxシステムのセキュリティ強化

1.インストール

システムを独立した(または隔離された)ネットワーク環境に配置します。保護されていないシステムが他のネットワークやインターネットに接続されて、潜在的な攻撃を受けるのを防ぐためです。

インストール完了後、以下のソフトウェアをアンインストールしてください。

pump apmd lsapnptools redhat-logos

mt-st kernel-pcmcia-cs Setserial redhat-relese

eject linuxconf kudzu gd

bc getty_ps raidtools pciutils

mailcap setconsole gnupg

以下のコマンドでこれらのソフトウェアをアンインストールします:

[root@secure]#rpm –e softwarename

アンインストール前に、以下の3つのプロセスを停止することをお勧めします:

[root@secure]# /etc/rc.d/init.d/apmd stop

[root@secure]# /etc/rc.d/init.d/sendmail stop

[root@secure]# /etc/rc.d/init.d/kudzu stop

3 ユーザーアカウントのセキュリティ

3.1 パスワードセキュリティポリシー

l パスワードは少なくとも6文字以上で、特殊文字を含めること

l パスワードは単純すぎず、本人や関係者の情報(誕生日、電話番号、名前のピンインや略称、組織のピンインや英語略称など)で構成されないこと。

l パスワードには有効期限を設定すること

l 不正アクセスが長時間試行された場合、パスワードを変更すること

3.2 パスワードの安全性チェック

以下のツールを使用して、パスワードの安全性をチェックできます:

l JOHN,crackなどのブルートフォース攻撃ツール

l オンライン総当たりツール(Emailcrk、流光など)

3.3 Password Shadowing

l shadowを使用して暗号化パスワードを隠蔽する(現在はデフォルト設定)

l 定期的にshadowファイルをチェックし、パスワード長が空でないことを確認する。

#awk -F: length($2)==0 {print $1} /etc/shadow

l ファイルの属性と所有者を設定する

3.4 パスワードの管理

l パスワードの最長有効期間を設定する(/etc/login.defsファイルを編集)

l パスワードの最短文字数(Linuxのデフォルトは5文字、/etc/login.defsを編集して変更可能)

l 特定のユーザーのみがsuコマンドを使用してrootになることを許可する。

/etc/pam.d/suファイルを編集し、ファイルの先頭に以下を追加:

auth sufficient /lib/security/pam_rootok.so debug

auth required /lib/security/pam_wheel.so group=wheel

Red Hat 7.0ではsuファイルがすでに変更されています。先頭の2行のコメント記号を削除するだけです。

[root@secure]# usermod -G10 adminでユーザーをwheelグループに追加

3.5 その他

l 不必要なシステムアカウントを削除する

[root@secure]# userdel adm

[root@secure]# userdel lp

[root@secure]# userdel sync

[root@secure]# userdel shutdown

[root@secure]# userdel halt

[root@secure]# userdel news

[root@secure]# userdel uucp

[root@secure]# userdel operator

[root@secure]# userdel games(X Windowを使用しない場合は削除)

[root@secure]# userdel gopher

[root@secure]# userdel ftp(FTPサービスを使用しない場合は削除)

l passwdファイルに個人情報を含めないようにし、fingerなどのプログラムによる情報漏洩を防ぐ。

l shadow,passwd,gshadowファイルの変更不可属性を設定する

[root@secure]# chattr +i /etc/passwd

[root@secure]# chattr +i /etc/shadow

[root@secure]# chattr +i /etc/group

[root@secure]# chattr +i /etc/gshadow

l .netrcファイルは使用しない。$HOME/.netrcをあらかじめ生成し、0000に設定する。

touch /.rhosts;chmod 0 /.rhosts

l telnetd,ftpd,popなどの従来のネットワークサービスの代わりにsshを使用する。ftp、pop、telnetなどの従来のネットワークサービスは、本质上、パスワードやデータを平文でネットワーク上で送信するため、安全ではない。

4 ネットワークサービスのセキュリティ

Linuxシステムは多様で強力なサービスを提供します。サービスの多様性と複雑さにより、これらのサービスを構成および管理する際に特に誤りが起こりやすく、提供するソフトウェア自体にも様々な脆弱性が存在します。したがって、システムが外部にサービスを公開するかどうかを決定する際には、2つの基本的な原則を常に念頭に置く必要があります:

l 必要なサービスのみを外部に公開し、不要なサービスはすべて閉じる。外部に提供するサービスが少ないほど、外部からの脅威は小さくなります。

l 必要な異なるサービスを異なるホストに分散させる。これにより、システムのパフォーマンスが向上し、同時に構成と管理が容易になり、システムのセキュリティリスクが減少します。

上記の2つの基本原則の下で、システムサービスの機能とセキュリティ脆弱性をさらにチェックする必要があります。

ここでは、ホストが提供するサービスに基づいて基本的なセキュリティ設定を行います。一部の一般的なサービスのセキュリティ設定については、関連ドキュメントを参照してください。

4.1サービスフィルタリング

l SERVER上でこれらのサービスを禁止する

l これらのサービスを公開する必要がある場合は、ファイアウォールやルーターで信頼できるIPアドレスへのアクセスを指定する。

l 真に必要なサービスのみが外部アクセスを許可されるようにし、ユーザーのルーターでフィルタリングチェックを正常に通過することを確認する。特に、以下のサービスがユーザーの真のニーズでない場合は、ルーターからフィルタリングする。

NAME PORT PROTOCOL

echo 7 TCP/UDP

systat 11 TCP

netstat 15 TCP

bootp 67 UDP

tftp 69 UDP

link 87 TCP

supdup 95 TCP

sunrpc 111 TCP/UDP

news 144 TCP

snmp 161 UDP

xdmcp 177 UDP

exec 512 TCP

login 513 TCP

shell 514 TCP

printer 515 TCP

biff 512 UDP

who 513 UDP

syslog 514 UDP

uucp 540 TCP

route 520 UDP

openwin 2000 TCP

nfs 2049 UDP/TCP

x11 6000 to 6000+n TCP

注意:一部のUDPサービスはDoS攻撃やリモートオーバーフローを引き起こす可能性があります。例:

rpc.ypupdated

rpcbind

rpc.cmsd 100068

rpc.statd 100024

rpc.ttdbserver 100083

sadmind 100232/10

l 設定完了後、ネットワークスキャナを使用して、外部からスキャンしてテストします。例えばnmapを使用します。

4.2 /etc/inetd.conf

l ファイルのパーミッションを600に設定する

l ファイルの所有者をrootに設定する

l 不要なサービスをすべてコメントアウトし、inetdプロセスを再起動する

l netstat –anコマンドを使用して、ホストが提供するサービスを確認する。不要なサービスが停止されていることを確認する

4.3 Rサービス

Rサービスは使用しない

l Rサービスを停止する。Red hat 6.2では/etc/inetd.confファイルで以下のサービスをコメントアウトし、inetdサービスを再起動する。Red hat 7.0では/etc/xinetd.dディレクトリから削除する。

exec 512 TCP

Rlogin 513 TCP

Rshell 514 TCP

l $HOME/.rhosts、/etc/hosts.equivファイルをあらかじめ生成し、0000に設定する。"+ +"が書き込まれるのを防ぐ。(攻撃者はしばしばシンボリックリンクやROOTSHELLを使用して、リモートで保護されたホストのRサービスを開く)

Rサービスを使用する必要がある場合

l より安全なバージョンのrサービスを使用する。例えばWietse Venemaのlogdaemonプログラムなど。

l ルーターまたはファイアウォールで、保護されたホストの512、513、514(TCP)ポートへの外部ネットワークアクセスを禁止する。

l TCP WRAPPERSを使用して、保護されたホストのRサービスにアクセスできる信頼できるマシンを設定する。

4.4 Tcp_wrapper

このソフトウェアはUnixプラットフォーム上でTCP/UDPサービスをフィルタリングする役割を果たし、現在ではftp、telnet、rsh、rlogin、tftp、fingerなどの標準的なTCP/UDPサービスの監視とフィルタリングに広く使用されています。

システムにTCP_wrapperがインストールされると、in.confファイルの/usr/sbin/in.telnetdのin.telnetdはTCP_wrapperに付属のtcpdプログラムに置き換えられます。このプログラムはクライアントからのサービスリクエストをインターセプトし、リクエストが発生した時刻とIPアドレスを記録し、アクセス制御をチェックします。この接続のユーザー、リクエスト元のIP情報などが管理者の事前設定値に合致する場合、リクエストをシステムのin.telnetdに渡し、システムのin.telnetdが後続の作業を完了します。接続が要件を満たさない場合、接続リクエストは拒否されます。同様に、ftp、rshなどのTCP/UDPサービスもtcpdに置き換えられ、tcpdが中継役を果たします。

l PARANOIDモードを使用する。このパラメータを使用する場合は、/etc/hostsファイルにtelnetやftpサービスを使用できるクライアントの名前とIPアドレスを追加する必要があります

l /etc/hosts.denyでall:allを設定し、デフォルトですべてのアクセスを禁止する。

デフォルトではアクセスが拒否されます。

# すべてのアクセスを拒否する。

ALL: ALL@ALL, PARANOID #ホスト名がアドレスと一致しないホストに一致し、以下を参照

l /etc/hosts.allowで許可するサービスとアドレスを設定する

例:sshd: 208.164.186.1 gate.openarch.com

l tcpdchkを使用してチェックする

l UDPサービスでtcpwrapperを使用する場合は、/etc/inetd.confでnowaitオプションを使用する。

4.5 /etc/hosts.equiv ファイル

/etc/hosts.equivファイルは使用しない

l システムからこのファイルを削除する

l /etc/hosts.equivファイルをあらかじめ生成し、0000に設定する。"+ +"が書き込まれるのを防ぐ。(攻撃者はしばしばシンボリックリンクやROOTSHELLを使用して、リモートで保護されたホストのRサービスを開く)

/etc/hosts.equivファイルを使用する必要がある場合

l このファイル内の信頼できるホストが必須であることを確認する。

l /etc/hosts.equivファイルをあらかじめ生成し、0000に設定する。"+ +"が書き込まれるのを防ぐ。(攻撃者はしばしばシンボリックリンクやROOTSHELLを使用して、リモートで保護されたホストのRサービスを開く)

l NISまたはNIS+を使用している場合は、このファイル内のグループは管理しやすいものである必要がある。

l 信頼できるホストは確実である必要がある

l 信頼できるホストはフルネームを使用し、例えばhostname.domainname.cn

l いつでも"+"文字が出現してはならない。なぜなら、この文字により、どのホストのどのユーザーでもパスワードなしでシステムにアクセスできるからです

l ファイル内で'!'や'#'記号を使用しない。なぜなら、このファイルではそれらがコメント情報を意味しないからです

l ファイルの先頭文字は'-'であってはならない。C8を参照してください

l ファイルのアクセス権限が600に設定されていることを確認する。

l ファイルの所有者がROOTであることを確認する。

l パッチプログラムまたはオペレーティングシステムをインストールするたびに、このフォルダの設定を再チェックする必要がある

4.6 /etc/services

l ファイルのパーミッションを600に設定する

l ファイルの所有者をrootに設定する

l telnetdなどの一般的なサービスを提供する必要がある場合は、ここでポートを変更する

このファイルはポート番号とサービスの対応関係を定義し、このファイルに保護を追加して、無許可の変更や削除を防ぐ

[root@secure]# chattr +i /etc/services

4.7 /etc/aliases

l /etc/aliasesファイルを編集し、"decode" "games,ingress,system,toor,manager,…"などをコメントアウトする。

l /usr/bin/newaliasesコマンドを使用して新しい設定をアクティブにする

l ファイルのパーミッションを755に設定する

l ファイルの所有者をrootに設定する

4.8 NFS

NFSファイルシステムは以下の側面に注意する必要があります

l 外部ルーターでポート111、2049(TCP/UDP)をフィルタリングし、外部アクセスを許可しない。

l パッチの更新状況をチェックする。

l /etc/exports出力パスの権限をチェックし、rootのみが変更でき、すべてのユーザーはreadのみ可能であることを確認する

l exportfsを使用してディレクトリを追加または削除する

exportfs -o access=engineering,ro=dancer /usr

exportfs -u /usr

l マシンにNIS(YPサーバー)サービスがない場合、情報を変更する際に/etc/passwd、/etc/group、/etc/hosts、/etc/ethersを変更することを忘れないでください。

l ローカルエントリを含むディレクトリをエクスポートしない。

l 相手のマシンが完全に信頼できることを確認する。フルネームを使用する

l 出力リストが256文字を超えないことを確認する。

l showmount –eコマンドを使用して、自分のexport設定を確認する

l /etc/exportsのパーミッションを644に設定し、所有者をrootにする

l noexec、nodev、nosuidなどのオプションを使用して、/etc/fstabでマウントされたファイルシステムを制御する。

4.9 Trivial ftp (tftp)

どのような状況でもこのサービスプロセスを起動しない。

4.10 Sendmail

sendmailは多くのコンパイル時のオプション機能を提供します。通常、デフォルト設定で、一般ユーザーのニーズを満たすことができます。しかし、提供されている機能を理解研究することで、sendmailの多くの機能をより正確に設定して使用することができます。ネットワークセキュリティの観点から、関連する機能を合理的に設定することで、サービス提供とセキュリティ保証の間により正確なバランスを見つけることができます(設定機能の方法は、必要な機能を対応するシステムの.mcファイルに追加し、m4ツールを使用して最終的なsendmail.cfファイルを生成することです。現在の最新バージョンはsendmail8.11.1.(www.sendmail.org)です)

l 最新のリリースパッケージ

l promiscuous_relay:この機能は任意の転送機能を開きます。つまり、8.9がもたらしたメール転送に関するセキュリティ強化制御を無効にします。この機能の使用は、電子メールサービスの悪用に多くの隐患を残します。特別な状況でない限り、この機能を使用しないことをお勧めします。

l accept_unqualified_senders:デフォルトでは、この機能は無効になっており、MAIL FROM:パラメータのアドレスがネットワーク接続に属しているが、有効なホストアドレスを含まない場合、sendmailは通信を拒否します。この機能を有効にすると、MAIL FROM:パラメータに基づいてメールを拒否しなくなります。この機能を軽々しく使用してはいけません。

l loose_relay_check:通常、メールがソースルーティング機能を使用している場合、例えばuser%site@othersite、othersiteが転送メールの範囲に属している場合、sendmailはothersiteを分離し、siteが転送範囲に属しているかどうかを引き続きチェックします。この機能を使用すると、上記のデフォルトの操作が変更されます。この機能を使用しないことをお勧めします。

l accept_unresolvable_domains:通常、MAIL FROM:パラメータのホストアドレス部分が解決できない場合、つまり有効なホストアドレスであるかどうかを判断できない場合、sendmailは接続を拒否します。この機能を使用すると、上記の操作が変更されます。メールサーバーがファイアウォールの背後にあり、外部ホストアドレスを正常に解決できないが、まだメールを受信したい場合など、特定の状況ではこの機能を利用する必要があるかもしれません。

l blacklist_recipients:受信ブラックリスト機能を有効にします。受信ブラックリストにはユーザー名、ホスト名、またはその他のアドレスを含めることができます。

l relay_entire_domain:デフォルト設定では、sendmailはアクセスデータベース(access db)でRELAYと定義されたホストにのみ転送メールサービスを提供します。この機能の使用により、sendmailはローカルドメイン($=mクラスで定義)内のすべてのホスト上のユーザーに転送機能を提供します

l sendmailの制限付きシェルプログラムsmrshは、内部ユーザーの悪意のある操作を防ぐことができます。

l システム情報の漏洩を防ぐ。例えば、bannerを変更し、expn、vrfyコマンドを禁止する

l SMTP認証機能が必要であることを設定することをお勧めします。

l その他の関連メールサーバー

qmail: www.qmail.org
postfix: www.postfix.org
qpop: http://www.qpopper.org/
Imail:http://www.imailbox.com/

4.11 finger

l このサービスプロセスを起動しない。

l 必ず最新バージョンを使用してください。

4.12 UUCP

l 使用しないことをお勧めします

l すべてのrhostsファイル(UUCPディレクトリの下)を削除する

l .cmdsファイルの所有者がrootであることを確認する

l UUCPログインを制限する

l UUCPファイルがすべてのユーザーが書き込み可能になっていないことを確認する

4.13 World Wide Web (WWW) – httpd

l 選択したWEBサーバーの最新バージョンを使用する

l ROOTユーザーでhttpdを実行しない

l chroot環境でhttpdを実行する

l CGIスクリプトはできるだけ使用しない

l CGIスクリプトのセキュリティ監査を行う

l 静的ライブラリを使用するリンク

l 危険な文字(\n \r (.,/;~!)>|^&$`< など)をフィルタリングする

l 重要な業務の転送にはhttpsを使用する。

人気のあるwebserverは

apache http://www.apache.org

netscpeのweb serverとbrowser http://home.netscape.com/enterprise/v3.6/index.html

IETFのWebトランザクションセキュリティワーキンググループは、WWWセキュリティ問題に特化したメーリングリストを維持しています。

購読するには、e-mailをwww-security-request@nsmx.rutger.eduに送信し、メッセージの本文に

SUBSCRIBE www-security あなたのemailアドレス

を記入してください。

主要なWWW FAQもWebセキュリティに関する質問と回答を含んでいます。例えば、ログファイルの管理やサービスソフトウェアのソースなど。このFAQの最新版は: http://www.boutell.com/faq/ にあります。

4.14 FTPセキュリティ

主要なftpサーバー

l wuftp 最新バージョンは26.1

ダウンロード先はftp://ftp.wu-ftpd.org/pub/wu-ftpd-attic/wu-ftpd-2.6.1.tar.gz

l proftp 最新バージョンは1.2.0rc2

ダウンロード先はftp://ftp.proftpd.net/pub/proftpd

l ncftp 最新バージョンは2.6.3

ダウンロード先はhttp://www.ncftp.com/ncftpd/

構成Configuration

l すべてのデフォルト構成オプションをチェックする

l SITE EXECの問題がないことを確認する

l /etc/ftpusersを設定して、ftpを使用できないユーザーを決定する

l chroot環境でftpdを実行する

l 自分のlsなどのコマンドを使用する

l quota、pamなどのサポートを追加する

l /etc/ftpaccessファイルを構成し、システム情報の漏洩を禁止し、最大接続数を設定する

l /etc/ftphostsを構成し、FTPを使用できるHOSTとUSERを設定する

l 異なるユーザーに異なる権限を設定する

l ログ記録/var/log/xferlogを頻繁に確認する

l 構成ファイルの属性を600に変更する

Anonymous ftp

l コンパイル時に匿名アクセスオプションを有効にする

l 分散パスワード(例:NIS、NIS+)を使用する場合は、パスワードファイルを適切に設定する。

l 匿名ユーザーには読み取り権限のみを与える(/etc/ftpaccessで設定)

5 システム設定のセキュリティ

5.1コンソールの使用を制限する

コンソールプログラムの使用を禁止する: /etc/security/console.appsからサービスを削除する

[root@secure]# rm -f /etc/security/console.apps/servicename、

例:[root@secure]# rm -f /etc/security/console.apps/halt

[root@secure]# rm -f /etc/security/console.apps/poweroff

[root@secure]# rm -f /etc/security/console.apps/reboot

[root@secure]# rm -f /etc/security/console.apps/shutdown

[root@secure]# rm -f /etc/security/console.apps/xserver(削除すると、rootのみがXserverを起動できる)

コンソールのアクセスを禁止する: /etc/pam.d内のすべてのファイルで、pam_console.soを含む行にコメントを追加する

5.2システムのPing応答を無効にする

Pingを無効にし、システムがPingに応答しないようにすることは、ネットワークセキュリティに非常に有益です。

以下のコマンドを使用できます:

[root@secure]#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

この行を/etc/rc.d/rc.localファイルに追加すると、システムの再起動後に自動的に実行されます

システムのPing応答を復元する:

[root@secure]#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

5.3システム情報の無効化または変更

telnetシステム情報の無効化

Red Hat 6.2では、/etc/inetd.confを編集する

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd –h

-hパラメータを追加すると、telnet情報を無効にできます

Red Hat 7.0では、/etc/xinetd.d/telnetを編集する

server_args = -hを追加すると、telnet情報を無効にできます

/etc/rc.d/rc.localでシステム情報を無効化または変更する

/etc/issueと/etc/issue.netには、ローカルログインとネットワークログイン時に表示されるシステム情報が含まれています。これらを変更することでシステム情報を変更したり、または直接削除し、/etc/rc.d/rc.localファイルで関連行をコメントアウトすることができます:

#echo "" > /etc/issue

#echo "$R" >> /etc/issue

#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue

#cp -f /etc/issue /etc/issue.net

#echo >> /etc/issue

5.4 /etc/securettyファイル

/etc/securettyファイルはrootがどのTTYデバイスからログインできるかを規定します。許可されているttyデバイスがリストされており、許可されていないttyデバイスの行をコメントアウトします。

5.5 /etc/host.confファイル

/etc/host.confはホスト名がどのように解決され、どのサービスを使用し、どの順序で解決されるかを定義します

# 名前はまずDNSで検索し、次に/etc/hostsにフォールバックする。

order bind,hosts

# 複数のIPアドレスを持つマシンがあります。

multi on

# IPアドレスのスプーフィングをチェックする。

nospoof on

orderはサービスの選択順序を指定する

multiはホストが複数のIPアドレスを持つことができるかどうかを指定し、ONは許可することを意味する

nospoofはIPスプーフィングを許可しないことを指定し、このパラメータはONに設定する必要がある

5.6IPソースパスルーティングの禁止

IPソースパスルーティングを許可すると、ハッカーがコンピュータを欺き、情報パケットを傍受することができます。強く禁止することをお勧めします。以下のコマンドを使用します:

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do

echo 0 > $f

done

accept_source_routeを0に設定し、上記のコマンドを/etc/rc.d/rc.localに追加すると、毎回の再起動時に自動的に実行されます

5.7リソース制限

サービス拒否攻撃を回避するために、システムリソースの使用にいくつかの制限を設ける必要があります。

まず、/etc/security/limits.confを編集し、以下を追加または変更します:

* hard core 0 (coreファイルの作成を禁止)

* hard rss 5000 (rootを除く、他のユーザーは最大5Mのメモリを使用)

* hard nproc 20 (最大プロセス数を20に制限)

/etc/pam.d/loginの末尾に以下を追加します:

session required /lib/security/pam_limits.so

TCP SYN Cookieの保護:(SYN Flood攻撃を防止)

[root@secure]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

5.8 LILOセキュリティ

"/etc/lilo.conf"ファイルに3つのパラメータ:time-out、restricted、passwordを追加します。これらのオプションは、起動時間(例:"linux single")がブートローダーに移行する過程で、パスワードの入力を要求します。

ステップ1

lilo.confファイル(/etc/lilo.conf)を編集し、これらの3つのオプションを追加および変更します:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

time-out=00 #この行を00に変更

prompt

Default=linux

restricted #この行を追加

password= #この行を追加し、パスワードを入力

image=/boot/vmlinuz-2.2.14-12

label=linux

initrd=/boot/initrd-2.2.14-12.img

root=/dev/hda6

read-only

ステップ2

その中のパスワードは暗号化されていないため、"/etc/lilo.conf"ファイルはrootユーザーのみが読み取り可能です。

[root@secure /]# chmod 600 /etc/lilo.conf(もはやグローバルに読み取り可能ではありません)

ステップ3

上記の変更後、設定ファイル"/etc/lilo.conf"を更新します。

[root@secure /]# /sbin/lilo -v(lilo.confファイルを更新)

ステップ4

"/etc/lilo.conf"をより安全にするもう1つの方法は、chattrコマンドを使用して変更不可にすることです:

[root@secure /]# chattr +i /etc/lilo.conf

これにより、意図的であれ無意識であれ、"/lilo.conf"ファイルへの変更が防止されます。

5.9 Control-Alt-Delete キーボードシャットダウンコマンド

"/etc/inittab"ファイルを編集し、以下の行の前に"#"を追加してコメント行に変更します。

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

以下のように変更します:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

そして、変更を有効にするために、プロンプトで以下を入力します:

[root@secure /]# /sbin/init q

5.10ログシステムのセキュリティ

ログシステムの完全性を保証し、ハッカーによるログの削除を防ぐために、ログシステムのセキュリティ設定を行う必要があります。このトピックについては、専用のドキュメントで説明します。

5.11 /etc/rc.d/init.dディレクトリ内のスクリプトファイルの権限修正

スクリプトファイルの権限を修正し、スクリプトファイルは起動時に実行されるすべての通常プロセスの開始と停止を決定します。追加:[root@secure/]# chmod -R 700 /etc/rc.d/init.d/*

これは、rootユーザーのみがこのディレクトリでRead、Write、Executeスクリプトファイルを使用できることを意味します。

6 ファイルシステムのセキュリティ

6.1ファイルのパーミッション

l 不要なsuidプログラムを削除し、スクリプトを使用して確認できます

[root@secure]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls –lg {}\;

以下のコマンドを使用して不要なプログラムの's'ビットを削除します

[root@secure]# chmod a-s /usr/bin/commandname

l 重要な設定ファイル(/etc/passwd、/etc/shadow、/etc/inetd.confなど)を0755に設定し、変更不可にします

l /etc、/usr/etc、/bin、/usr/bin、/sbin、/usr/sbin、/tmp、/var/tmpの所有者はrootであり、スティッキービットが設定されています。

l /devディレクトリには特別なファイルがありません。

l 誰でも書き込み可能なファイルとディレクトリを検索する

[root@secure]# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;

[root@secure]# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \;

l 異常なファイル(..ファイル、…ファイルなど)を検索する

find / -name ".. " -print –xdev

find / -name ".*" -print -xdev | cat -v

l 所有者がないファイルをチェックする。

Find / -nouser –o –nogroup

l /devディレクトリ以外に特別なブロックファイルがないかチェックする

find / \( -type b -o -type c \) -print | grep -v '^/dev/'

l checksum md5またはPGPを使用してファイルを検証する

6.2マウントされたファイルシステムの制御

noexec、nodev、nosuidを使用してマウントされたファイルシステムを制御できます。/etc/fstabで設定します。例:

/dev/sda11 /tmp ext2 defaults 1 2

/dev/sda6 /home ext2 defaults 1 2

以下のように変更します:/dev/sda11 /tmp ext2 nosuid,nodev,noexec 1 2

/dev/sda6 /home ext2 nosuid,nodev 1 2

noexecは実行を許可しないことを意味し、nodevはブロックデバイスを許可しないことを意味し、nosuidはsuidビットを許可しないことを意味します

6.3バックアップと復元

定期的にファイルシステムをバックアップし、損失を最小限に抑えることができます。

Linuxには、dd、cpio、tar、dumpなど多种のバックアップ方法があります

7 その他

7.1ファイアウォールの使用

ファイアウォールはネットワークセキュリティの重要な側面であり、ファイアウォールの原理、Linux 2.2カーネルでのIPChains実装、Linux 2.4カーネルでのnetfilter実装、商用ファイアウォール製品のアプリケーションなどを含む、別のトピックで詳しく説明します。

7.2サードパーティのセキュリティツールの使用

Linuxには多くの優れたセキュリティツールがあります。例えば:Tripwire, SSH, Sudo, Tcpdump, nmap, nessus, snort, sniffit… …これらの非常に実用的なセキュリティツールについては、専用のトピックで具体的に説明します。

7.3参考ウェブサイト

Patches: http://www.redhat.com/apps/support/updates.html

Exploits:http://darknet.securityinfos.com/os/linux/redhat/index.html

タグ: linux セキュリティ システム管理 ファイアウォール ネットワークサービス

8月2日 14:18 投稿