歡迎您光臨本站 註冊首頁

安全安裝REDHAT並介紹Bastille(下)

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  86123檢查和備份

把系統備份在兩盤磁帶中,一盤放在安全的地方(最好是刻盤)。

在這階段,我們需要對安裝的文件使用安全的hashing(散列)演算法進行完整性檢查,
初始化它的資料庫並運行合格的檢查以便來監視以後的改變。如果可能,把主數據
庫存放在離線的另外一台機器上,或者寫入一次性媒質上。

對於數據完整性的我們需要那些項目?

--下面的意思是RPM可以用來報告文件的改變(但本人有點對這句英文不理解,
所以只好貼上原文,慚愧):
The RPM commands also be used to report changes to rpm installed
files "poor man's tripwire":
for file in $(rpm -qa); do rpm -V $file; done > rpm_changes
它可以列印出一列表,指示Size, MD5 hash, Links, Time (mtime),
Device, User, Group, Mode (permissions)等是否改變:

S.5....T c /etc/host.conf
S.5....T c /etc/hosts.allow
S.5....T c /etc/motd
S.5....T c /etc/securetty
S.5....T c /etc/services
S.5....T c /etc/localtime
S.5....T c /etc/nsswitch.conf
.M...... /usr/sbin/rpcinfo

你可以存儲一份拷貝並在以後作為對比的基準。

--Tripwire [5]:此程序有商業和免費兩種版本。REDHAT X86是唯一正式使用
商業信息的的LINUX:
--免費的版本如果使用適當可以工作的不錯,但存在一些BUG,提供源
代碼,在很大的磁碟上出現過崩潰現象。
--商業版本相對來說比較貴,報告也相對來說比較冗長(你需要使用過濾
的腳本來查找你所需的東西),提供多個配置樣板文件,相對於免費版本較穩定。
可以在UNIX和NT平台上很好的運行,通過一些政策化和配置化的文件提高安全性。
但售後支持不是很好(即使你付了不少錢,呵呵)。
--兩個版本在定義方針化規則時都不支持正常表達式,如你不能為
"/home/*/www/cgi-bin"下的文件特定一規則。

--也可以使用PGP,通過對文件的簽名來得到保護的作用,並寫一有效腳本來
檢查有效正確的簽名。但PGP的不好之處是對文件的許可權,連接,位元組和修改的
日期等改變不能進行檢驗。

--MD5簽證也可以作為文件效驗,如果要更好的保護MD5,最好使用PGP簽名或者
使用其他方法加密。

--在OPENBSD中可以使用mtree工具。或許這個工具不久會在LINUX上搭帶。

--Aide是一新的GPL效驗工具,可能不久的將來將會代替tripwire.

下面是使用免費Tripwire v1.2的例子:

--在x86存在RPM包,在SPARC中的RPM已經被編譯了,下載[5]並安裝RPM工具包。

--安裝后Tripwire兩進位程序在/usr/sbin目錄下,配置文件位於/etc/tw.config,
並且其通過/etc/cron.daily/tripwire.verify由cron進行每天的檢測。資料庫存放
在/var/spool/tripwire下,也可以使用MAN查看使用方法:tripwire(8), twconvert(8),
tw.config(5).

--在安裝后,需要保存系統的初始化狀態("initial state"),可以使用下面的方法:
/usr/sbin/tripwire -initialise
上面的命令會在/var/spool/tripwire下建立一新的資料庫。

--要通知Tripwire你所改變的文件或者整個目錄,可以使用下面的方法:
/usr/sbin/tripwire -update [path]

--可以由cron或者手工來每天進行系統檢查:
/etc/cron.daily/tripwire.verify

--使用帶"-i 2"的選項來運行Tripwire可以增加其檢查速度(此選項關閉了
一個檢驗演算法snerfu,但SHA1和MDS5還是繼續使用)。

--為了增強安全性和自動檢查多個系統,你可以把Tripwire存放在一絕對安全
的主機,拷貝Tripwire和它的資料庫到安全主機並使用SSH遠程的進行維護。在效驗
某一主機后,刪除目標機上的資料庫,這可以讓攻擊者不輕易發現你在使用tripwire
進行系統檢驗。另外,立即更新tripwire資料庫,這樣可以在連續運行的情況下
知道與原來的不同之處。你可以查看下面的
Trip_linux.sh
的腳本。如果使用這個腳本,你需要使用下面的方法來關閉本地檢測功能:
mv /etc/cron.daily/tripwire.verify /etc/cron.daily/.tripwire.verify
--拷貝一份備份的配置文件和資料庫到軟盤或者一次性介質。

8,安裝,測試和更嚴格控制應用程序

綜述

--根據伺服器所需的相應功能,而採用相應的應用程序如ftpd,BIND,proxy等。
WEB SERVER和防火牆更特別,需要很複雜和小心的配置,下面是server/application
需要遵守的規則列表:
--對於重要應用程序考慮安裝在獨立的分區,這分區在安裝和測試階段
需要安裝為讀寫狀態,但在這些過程后最好需要把屬性改變為只讀屬性。
--在應用程序啟動或者之前使用umask設置嚴格的屬性,如(022)。
--檢查應用程序是否以最低許可權的非ROOT用戶運行?其本身的密碼是否
"禁用"並對其設置/dev/null類的SHELL。如果確實需要使用其本身密碼來運行,
是不是把其密碼的標準設置為最小為8個字元並是字母,數字和符號混合的類型。
--如果某應用程序以ROOT的身份,綁定一個低點的埠,要清楚其是否
可以立即派生(fork)出一沒有特權的用戶來最小化減低危險程序?
--應用程序有關的所有文件的許可權是否設置正確,即四否只有應用程序
可以讀寫,檢查是否有全局可讀寫的文件,檢查並正確設置。
--檢查應用程序寫LOG記錄的許可權是否安全?檢查應用程序是否把有關的
密碼寫入LOG記錄(這樣的事情很多)。
--是否可以把應用程序設置CHROOT環境?

FTP服務(ftpd)

--如果你使用Washington University的wu-ftpd,它的LOG記錄和訪問控制及
其他特徵有一定的獨特程序,但必須要參考一些以前的BUG(請參看http://www.cert.org/
站點的關於wu-ftpd的安全建議:advisories CA-93:06, CA-94:07, CA-95:16和
Auscert AA-97.03 和 AA-1999.02). 必須使用V2.6.0以上的版本。
--在/etc/ftpusers(相當於黑名單)中加入系統帳號,使這些系統帳號不能
用來FTP(如你要求ROOT不允許FTP,你把"root"加入到/etc/ftpusers文件中)。
在一個全新的系統中,你可以使用下面的方法把所有系統帳號加入到ftpusers:
awk -F: '{print $1}' /etc/passwd > /etc/ftpusers
--可以先把全部帳號加入到/etc/ftpusers中,在把需要FTP的帳號挑選出來,
在進行相應設置(必須在ftpusers去掉相應的帳號)。或者使用下面的技巧:對於
那些沒有FTP訪問的用戶,給他們一個不是標準的SHELL(如tcsh),並不要把這個
新的SHELL加入到/etc/shells中去,FTP的訪問就會被拒絕,如果想要正常工作就
必須在/etc/shells裡面加入相應的SHELL。
--FTP可以使用IP地址或者主機名來控制,請看/etc/hosts.allow和/etc/hosts.deny.
--如果需要匿名FTP,必須非常小心,你必須使用chroot環境,Bastille可以為
你設置這方面的環境。
--如果使用正常的"user ftp",推薦使用chroot。
--把FTP的數據存放在一個獨立的分區並把起安裝為nosuid.


DNS 服務

使用最新版本的BIND(Berkeley Internet Name Server),請查看下面的站點:
http://www.isc.org/products/BIND
是喲功能8.2.2-P5或者更新的版本,在zone transfers文件中限制次級的IP地址
(在/etc/named.conf)。

可以使用Bastille來設置DNS伺服器,它會自動設置下面的配置:
--建立一"dns"用戶和組並使用"named -u dns"來啟動DNS,這樣BIND可以派生
(fork)和改變身份為dns用戶。必須提供dns用戶可以讀BIND配置文件的權利(
然而它們原屬於ROOT)。
--把BIND設置在chrooted的環境中(/home/dns)。

發現並修補故障(Troubleshooting):
--使用nslookup或者dig來檢查伺服器的配置結果。
--客戶端:如果你有DNS客戶端問題,檢查/etc/nsswitch.conf和/etc/resolv.conf
文件,並使用帶有"-d2"選項的nslookup來獲得調試信息。
--伺服器端:使用debug選項"-d"來啟動named守護程序,並閱讀控制台和LOG
信息,代表性的LOG可以在syslog的"daemon"部分找到。
--下面站點的工具對於測試激活的守護程序有非常大的幫助:
http://www.uniplus.ch/direct/testtool/dnstest.html
--要從name服務中獲得統計信息,可以使用下面的方法:
kill -ABRT `cat /etc/named.pid`
其中的統計文件會存放在/usr/tmp/named.stats文件中。
--最後對named發送HUP信號,使其重新讀取新的配置文件:
kill -HUP `cat /etc/named.pid`

HTTP服務

如果WEB的內容很少改變,把內容存儲在CD-ROM中,這樣可以很簡單的防止黑客很
常見的喜好"篡改站點"。因為HTTPD服務有緩存頁面的能力,必須保證其訪問速度
不依靠CD-ROM的速度。

把"simple read-only"內容的服務從電子商務的伺服器中分離出來。

請查看http://www.ciac.org/公告http://ciac.llnl.gov/ciac/bulletins/j-042.shtml,
其中對怎樣更好的設置INTERNET WEB伺服器做了很好的描述。

使用ServerAdmin設置WEBMASTER的電子郵件,在APACHE設置中不啟用UserDir(
除非用戶確實允許從他們的HOME目錄發布頁面),可以把ServerSignature設置值為
NO,這樣可以避免泄露APACHE版本信息。不起用/manual/alias,除非你確實需要
發布APACHE的文檔信息。不要啟動server-info, server-status 或 perl-status
設置。

RedHat 下apache其設置如下(在RH6.1上是apache 1.3.9):
--配置文件存放在/etc/httpd/conf目錄下
--HTML的目錄根部為/home/httpd/html
--使用nobody運行apache
--伺服器狀態(Server-stats) 和伺服器信息(server-info)連接是關閉的

------------------------------------------------

運行系統

運行整個系統前的準備

考慮安裝一腳本來檢查重要守護程序的運行,安裝
http://www.boran.com/security/sp/linux/monitor_processes.pl腳本文件並
把其加入到cron文件中:
## Check that important processes are running during office hours:
## [If you run 7x24, modify accordingly]
0,30 8-19 * * 1-5 /secure/monitor_processes.pl inetd sshd httpd

在應用程序安裝和測試階段,如果數據分區必須安裝為讀寫狀態,現在考慮是否
安裝為只讀狀態。

重新初始化tripwire(或者類似的完整性檢查軟體)。

把系統備份兩個磁帶中去(即兩份),一份妥善保管。

在系統上運行網路掃描器,保證只有一些自己必須的服務在運行。可以使用商業
工具ISS或者免費免費工具Nessus,nmap或者Satan來進行相應的檢查,列印出結果
並保存結果。

如果可能,盡量使用多個人員來進行最後的測試,以防止忘記某些東西進行設置。
可以測試下面的工作--什麼運行了?什麼禁止了?檢查console/log條目,你的
系統按照你的設想在工作嗎,在系統開頭幾天經常檢查LOG。

開始運轉系統

詳細測試,檢查LOG條目,系統是否正常運行的檢查?

對所有應用程序進行詳細測試,通過不同的人員和不同的觀點和不同的網路來
進行測試。


常規維護

下面的行為必須是每月或者每天,星期或者每小時維護,其頻率依據系統的
安全程度來決定:
--檢查所有新出補丁的情況,更新必須的補丁,注意每個內核補丁(
在沒有應用程序的機器上測試),安裝一些軟體確實需要的補丁,因為大多數
守護程序在主機上是關閉的。
--檢查所有錯誤和不尋常的活動LOG記錄:/var/log/* 和所有的應用程序LOG。
--寫一腳本程序用於報告:重要系統PING不通,一些重要守護程序崩潰。
--經常運行tripwire(或者其他類似完整性檢查)。
--訂閱一些新的漏洞和安全信息的MAILLIST,可以在
http://www.cert.org/;http://www.ciac.org/;http://www.securityfocus.com
站點訂閱。

-------------------------------------------------------------

附加註意信息

上面的文章用於一些系統,當然每一個安全管理員有自己的方式來配置,
也必須要考慮每一個站點的不同來安全配置自己的站點

--RedHat提供一個自動安裝的設備,並提供了一安裝說明的文本,可以
很好的提示用戶來安裝系統,可以在下面的站點找到類似的說明:
http://www.redhat.com/mirrors/LDP/HOWTO/KickStart-HOWTO.html
--Mandrake:Mandrake是一個完全兼容RED HAT的LINUX發行版本,但其中
有自己獨特的地方:
--它提供更好的安裝嚮導,有很好的GUI界面可以使安裝更加
直觀。
--ROOT的密碼必須是8位的長度(應該指的是7.0的版本)。
--Mandrake提供MSEC工具包(Mandrake Security)允許你為
系統設置安全級別,但MSEC有些有趣的地方:
要改變安全級別,運行/et/security/msec/init.sh X,默認狀態
X的級別是3,當我們把其轉變為4的級別後重新啟動 ,系統會詢問一運行
級別的數字,如果輸入3,系統會停止在那裡知道一個關於找不到運行級別錯誤為止,
並且所有其他的TTYS將不可使用。

--MSEC:init.sh可以使用"custom"參數來運行,這樣系統會提示一系列
安全問題並允許你想對什麼樣的安全條目進行安裝。注意這個參數的運行會不允許
ROOT通過串列來進行登錄,如果你確實需要通過ROOT來登錄,你就在/etc/securetty
中加入ttyS0條目。
--Mandrake的硬體適應性:它不支持Sun SuperSPARCs,但支持UltraSPARC
版本已經是BETA版了,另外支持Compaq Alpha BETA版也以支持。
--如果發現某些工具包沒有安裝,可以在/mnt/cdrom/Mandrake/RPMS找到
工具包,並使用rpm -i進行安裝。
--Mandrake提供一個非常漂亮的GUI工具--darkxconf:可以列出所有服務
並可以停止和繼續運行服務。還可以adduserdrake --增加用戶,diskdarke一個
非常優秀的磁碟分區GUI工具,drakesec允許低/中/高安全級別。

--命令行工具chkconfig可以用來啟用/關閉服務,可以使用下面的方法來列
表服務:chkconfig --list ,如chkconfig httpd on 。

--LOG記錄
--除一主要SYSLOG記錄外,你需要保留一份本地的拷貝-以防止syslog
伺服器不正常關閉或者被遭到拒絕服務攻擊而不產生記錄,如果你使用本地LOG
必須確保/var是一個獨立的文件系統,這是為了避免目錄被填滿而是系統提高
停止工作。
--使用性能更高的syslog守護程序來代替原來syslog:
syslog-ng: http://www.balabit.hu/products/syslog-ng
(提供TCP連接,內容過濾,加密,認證等功能)
secure syslog: http://www.core-sdi.com/english/slogging/ssyslog.html
Nsyslogd: coombs.anu.edu.au/~avalon/nsyslog.html
(TCP連接和SSL功能)

--入侵檢測:
--經常使用定製的腳本和工具如logcheck 和swatch 來對LOG文件
進行詳細的分析。
--也可以使用下面的perl腳本:
http://www.boran.com/security/sp/linux/monitor_socket.pl
來對一系列socket進行監聽並通過MAIL來通知管理員,但不需要從inetd
來運行。
--Snort是一個基於網路入侵檢測很好的工具

------------------------------------------------------------------

Bastille可以在下面的站點裡下載:
http://bastille-linux.sourceforge.net/


[火星人 ] 安全安裝REDHAT並介紹Bastille(下)已經有506次圍觀

http://coctec.com/docs/security/show-post-72982.html