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