1.Lời nói đầu:
1.1 Những nguy cơ an ninh trên linux
1.2 Xem xột chớnh sỏch an ninh
2 Giới thiệu chung:
2.1 Ai đang phá hoại hệ thống
2.2 Những kẻ xõm nhập vào hệ thống của ta như thế nào
2.3 Tại sao kẻ xâm nhập có thể vào được hệ thống của chúng ta
2.3.1 Những lỗi phần mềm
2.3.2 Cấu hỡnh hệ thống
2.3.3 Password cracking
3 Giải phỏp an ninh
3.1 Mật khẩu :
3.1.1 Bảo mật BIOS - Đặt mật khẩu khởi động:
3.1.2 Chọn một mật khẩu (password) đúng:
3.1.3 Default password
3.1.4 Mó hoỏ - Tăng tính an toàn củamật khẩu
3.1.5 Các mối đe doạ khác và các giải pháp
3.1.6 Cỏc cụng cụ kiểm tra pass
3.2 Cấu hỡnh hệ thống
3.2.1 Tài khoản root
3.2.2 Tập tin "/etc/exports"
3.2.3 Vô hiệu hóa việc truy cập chương trỡnh console
3.2.4 Tập tin "/etc/inetd.conf"
3.2.5 TCP_WARPPERS
3.2.6 Tập tin "/etc/host.conf"
3.2.7 Tập tin "/etc/services"
3.2.8 Tập tin "/etc/securetty"
3.2.9 Các tài khoản đặc biệt:
3.2.10 Ngăn chặn bất kỳ người sử dụng nào chuyển thành root bằng lệnh "su".
3.2.11 Securing Files
3.2.12 Bảo vệ thư mục trên web server
3.2.13 XWindows Security
3.2.14 Tăng cường an ninh cho KERNEL
3.2.15 An toàn cho cỏc giao dịch trờn mạng
3.2.16 Open SSH
3.3 Theo dừi và phõn tớch logfile
3.4 Cài đặt và nâng cấp hệ thống
3.4.1 Linux OpenSSL Server
3.4.2 LINUX FIREWALL
3.4.3 Linux Intrusion Detection System (LIDS)
3.4.4 Dựng cụng cụ dũ tỡm và khảo sỏt hệ thống
3.4.5 Phỏt hiện sự xõm nhập qua mạng
3.4.6 Cụng cụ snort:
3.4.7 Cụng cụ giỏm sỏt - Linux sXid
3.4.8 Cụng cụ giỏm sỏt - Portsentry
3.5 Đối phó khi hệ thống bị tấn công
4 Một số lỗi bảo mật cơ bản
4.1 Attack From Inside Unix
4.2 Bacdoor trong Unix
4.3 Buffer Overflow (Tràn bộ đệm)
4.5 DoS
4.6 Cỏc lỗ hổng bảo mật của Sendmail
5 Thiết kế thử nghiệm một trỡnh tiện ớch bảo mật cho Linux
74 trang |
Chia sẻ: huong.duong | Lượt xem: 1612 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đề tài An toàn và bảo mật thông tin trên linux hệ thống bảo mật và phát hiện xâm nhập mạng (nids), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g.2 /var/adm/lastlog.3
mv /var/adm/lastlog.1 /var/adm/lastlog.2
cp /var/adm/lastlog /var/adm/lastlog.1
Nếu khụng quen dựng lệnh bạn cú thể sử dụng "mc" (midnight commander). Nú sẽ giỳp thực hiện cụng việc này một cỏch dễ dàng hơn. Việc này sẽ đảm bảo nội dung của lastlog được thụng suốt trong vũng 6 giờ. Nếu cú thể bạn nờn làm cụng việc sao lưu mỗi ngày. Ở cỏc Server lớn thường sử dụng ổ băng (tape) để lưu trữ dữ liệu đề phũng khi dữ liệu trục trặc vỡ giỏ thành lưu trữ của ổ băng thường rẻ hơn nhiều so với ổ cứng.Khi đó lưu giữ được lastlog bạn cần phải đọc được thụng tin của nú một cỏch toàn diện, bao quỏt. Bạn cú thể sử dụng đoạn Script Perl dưới đõy để thực hiện cụng việc đú.
#!/usr/local/bin/perl
$fname = (shift || "/var/adm/lastlog");
$halfyear = 60*60*24*365.2425/2; # pedantry abounds
setpwent;
while (($name, $junk, $uid) = getpwent) {
$names{$uid} = $name;
}
endpwent;
open(LASTL, $fname);
for (uid = 0; read(LASTL, $record, 28); $uid++) {
( $time, $line, $host) = unpack('l A8 A16', $record);
next unless $time;
$host = "($host)" if $host;
($sec, $min, $hour, $mday, $mon, $year) = localtime($time);
$year += 1900 + ($year < 70 ? 100 : 0);
print $names{$uid}, $line, "$mday/$mon";
print (time - $time > $halfyear) ? "/$year" : " "$hour:$min";
print " $hostn";
}
close LASTL;
Lưu ý: /var/adm/lastlog : Đõy là vị trớ file lastlog trờn cỏc hệ thống Unix. Bạn cú thể sửa đổi lại sao cho nú phự hợp với vị trớ trờn hệ thống của bạn. Đoạn Script này bắt đầu bằng việc kiểm tra cỏc dũng lệnh, nếu khụng khả thi, nú sẽ sử dụng chế độ mặc định. Tiếp đú nú sẽ tớnh toỏn số giõy trong nửa năm, để xỏc định được khuụn dạng của đầu ra thụng tin (để in màn hỡnh những thụng tin đăng nhập 6 thỏng trước đõy. Kế đến nú sẽ xõy dựng một mảng UIDS tới những tờn đăng nhập. Sau sự khởi tạo trờn, đoạn Script sẽ đọc một phần bản ghi trong file lastlog, cỏc bản ghi binaries sẽ được mở ra và giải mó và sau đú nú được in ra màn hỡnh. Lastlog chỉ ghi lại thời gian đăng nhập chứ nú khụng ghi lại lại chi tiết quỏ trỡnh chi tiết sử dụng acc. File log wtmp sẽ thực hiện việc này.
utmp và wtmp
Unix theo dừi cỏc hoạt động của người dựng bởi file log cú tờn là /etc/utmp. Đõy là file nhị phõn cho đứa đựng một bản ghi cho mỗi hàng tty. File log thứ 2 là /var/amd/wtmp cú nhiệm vụ ghi lại tất cả cỏc quỏ trỡnh đăng nhập lần thoỏt ra ngoài. Trong một sụ phiờn bản Unix của Berkeley thỡ trong utmp và wtmp thường chứa đựng:
- Tờn của của cỏc thiết bị đầu cuối được sử dụng để đăng nhập.
- Tờn đăng nhập.
- Hostname mà kết nối bắt đầu từ, nếu đăng nhập được thực hiện qua 1 mạng.
- Thời gian mà người dựng đăng nhập.
Trong một số hệ thống V Unix, file wtmp được đặt ở /etc/wtmp và được dựng cho mục đớch kiểm toỏn. Trờn hệ thống AT&T V.3.2 thỡ nú chứa đựng cỏc thụng tin:
- Tờn truy nhập.
- Số hiệu dũng cuối.
- Tờn thiết bị.
- Quỏ trỡnh ID của login shell.
- Code biểu thị kiểu mục.
- Thoỏt khỏi tỡnh trạng của tiến trỡnh.
- Thời gian mà mỗi mục được thực hiện.
Phần mở rộng wtmpx được sử dụng bởi Solaris, IRIX và cỏc hệ thống SRV4 Unix chứa đựng những thụng tin sau:
- Tờn truy nhập (cú thể lờn đến tối đa 32 ký tự thay vỡ 8 ký tự).
- inittab id.
- Tờn của thiết bị đầu cuối (cú thể lờn đến tối đa 32 ký tự thay vỡ 12 ký tự).
- Process ID của tiến trỡnh đăng nhập.
- Thoỏt khỏi tỡnh trạng của tiến trỡnh.
- Thời gian mà mỗi mục được thực hiện.
- Session ID.
- Remote host name (cho những sự đăng nhập bắt nguồn qua một mạng)
Lệnh "ps" đưa cho bạn một vài thụng tin về tài khoản chớnh xỏc hơn của người dựng hiện thời sử dụng hệ thống của bạn hơn là những lệnh: who, whodo, users và finger. Vỡ trong một vài trường hợp nhưng người dựng cú thể cho phộp những quỏ trỡnh chạy mà khụng cú tờn sử dụng của họ xuất hiện bờn trong /etc/utmp và /var/adm/wtmp.
Tuy nhiờn who, finger, users lại cú một vài lợi thế hơn ps:
- Chỳng cho khuụn dạng thụng tin đầu ra dễ đọc hơn ps.
- Đụi khi chỳng đưa ra thụng tin hữu hiệu hơn so với ps như tờn của những remote host từ xa.
- Đặc biệt là chỳng chạy nhanh hơn ps một cỏch đỏng kể.
Quyền hạn (Permission) trờn file /etc/utmp đụi khi cú thể được ghi bởi bất kỳ người dựng nào trờn hệ thống. Điều này thật nguy hiểm, bởi cỏc file log sẽ bị sửa đổi lung tung với mục đớch khụng tốt. Bạn cần thiết lập lại quyền hạn (Permission) một cỏch an toàn hơn.
rwx-rw-r (Owner-Group-Other)
Ta sử dụng dũng lệnh sau:
root@localhost#: chmod 755 file_log
Last Program
Mỗi thời gian người dựng đăng nhập được ghi vào Log. Unix sẽ tạo một bản ghi trong wtmp. Last program sẽ trỡnh bày nội dung của file trong một mẫu dạng cú thể hiểu được. Nú sẽ trỡnh bày tất cả cỏc quỏ trỡnh đăng nhập, thoỏt ra trờn mỗi thiết bị. Cuối cựng nú sẽ trỡnh bày toàn bộ nội dung của file. Bạn cú thể ngừng tiến trỡnh này bằng cỏch nhấn CTRL + C.
localhost@#: last
dpryor ttyp3 std.com Sat Mar 11 12:21 - 12:24 (00:02)
simsong ttyp2 204.17.195.43 Sat Mar 11 11:56 - 11:57 (00:00)
simsong ttyp1 204.17.195.43 Sat Mar 11 11:37 still logged in
dpryor console Wed Mar 8 10:47 - 17:41 (2+06:53)
devon console Wed Mar 8 10:43 - 10:47 (00:03)
simsong ttyp3 pleasant.cambrid Mon Mar 6 16:27 - 16:28 (00:01)
dpryor ftp mac4 Fri Mar 3 16:31 - 16:33 (00:02)
dpryor console Fri Mar 3 12:01 - 10:43 (4+22:41)
simsong ftp pleasant.cambrid Fri Mar 3 08:40 - 08:56 (00:15)
simsong ttyp2 pleasant.cambrid Thu Mar 2 20:08 - 21:08 (00:59)
Trờn một vài hệ thống SVR4 bạn cú thể sử dụng lệnh "who -a" để xem nội dung của file wtmp. Trong màn hỡnh này bạn cú thể theo dừi cỏc phiờn đăng nhập từ ngày 7/3: simsong, dpryor, devon, dpyror (again), and simsong (again), 2 người dựng là dpryor và devon đăng nhập tới Console. Ngoài ra log cũn cho ta biết dpryor và devon cũng đó sử dụng FTP, tờn của những trạm đầu cuối cũng được xuất hiện ở đõy. Ngoài ra last cũn cú thể cho ta thụng tin chi tiết về một người dựng hoặc một thiết bị đầu cuối ra màn hỡnh. Nếu bạn cung cấp một người dựng thỡ nú sẽ hiển thị chi tiết thụng tin đăng nhập và thoỏt ra của người đú. Hoặc tương tự bạn cung cấp cho nú tờn một thiết bị đầu cuỗi thỡ nú sẽ hiển thị thụng tin đăng nhập và thoỏt ra riờng cho thiết bị đầu cuối đú.
root@localhost#: last dpryor
dpryor ttyp3 std.com Sat Mar 11 12:21 - 12:24 (00:02)
dpryor console Wed Mar 8 10:47 - 17:41 (2+06:53)
dpryor ftp mac4 Fri Mar 3 16:31 - 16:33 (00:02)
dpryor console Fri Mar 3 12:01 - 10:43 (4+22:41)
dpryor ftp mac4 Mon Feb 27 10:43 - 10:45 (00:01)
dpryor ttyp6 std.com Sun Feb 26 01:12 - 01:13 (00:01)
dpryor ftp mac4 Thu Feb 23 14:42 - 14:43 (00:01)
dpryor ftp mac4 Thu Feb 23 14:20 - 14:25 (00:04)
dpryor ttyp3 mac4 Wed Feb 22 13:04 - 13:06 (00:02)
dpryor console Tue Feb 21 09:57 - 12:01 (10+02:04)
Tinh chỉnh wtmp File log wtmp sẽ tiếp tục tăng kớch thước rất nhanh trờn ổ cứng chớnh vỡ vậy rất khú theo dừi nội dung của nú. Do đú cú rất nhiều Shell Unix được viết ra để tinh chỉnh wtmp (theo tuần hoặc theo thỏng). Hầu hết chỳng được thực thi một cỏch tự động bởi Cron. Chẳng hạn như đoạn Script sau:
#!/bin/sh
# zero the log file
cat /dev/null >/var/adm/wtmp
Bạn muốn sao chộp wtmp, để cú thể tham chiếu với những lần đăng nhập bờn trong thỏng trước đõy. Để thực hiện việc này bạn cần Add thờm những dũng lệnh dưới đõy vào Shell Script ở trờn:
# make a copy of the log file and zero the old one
rm /var/adm/wtmp.old
ln /var/adm/wtmp /var/adm/wtmp.old
cp /dev/null /var/adm/wtmp.nul
mv /var/adm/wtmp.nul /var/adm/wtmp
Tương tự! để thực hiện việc này với last sẽ cú dũng lệnh sau:
root@localhost#: last -f /var/adm/wtmp.old
Tuy nhiờn cú thể last khụng ch phộp bạn chỉ rừ một file wtmp khỏc để tỡm kiếm thụng qua. Nếu muốn kiểm tra lần sao chộp file log trước đõy và bạn đang sử dụng một trong cỏc hệ thống này thỡ ta sẽ phải thiết lập file wtmp sau (đó sao chộp và cập nhật) vào trong nguyờn bản của nú. Bạn cú thể sử dụng Shell Script sau để thực hiện việc đú:
#!/bin/sh
mv /var/adm/wtmp /var/adm/wtmp.real
mv /var/adm/wtmp.old /var/adm/wtmp
last $*
mv /var/adm/wtmp /var/adm/wtmp.old
mv /var/adm/wtmp.real /var/adm/wtmp
Bất kỳ người dựng nào đăng nhập hay thoỏt ra đều sẽ được ghi vào file log wtmp.old khi lệnh được thực hiện.
Loginlog file
Trờn một vài hệ thống V Unix (Solaris). Cỏc quỏ lần đăng nhập thất bại sẽ được ghi vào file log /var/adm/loginlog. Tuy nhiờn trờn một số hệ thống lại khụng cú. Ta cú thể tạo nú bằng cỏc lệnh sau:
root@localhost#: touch /var/adm/loginlog
root@localhost#: chmod 600 /var/adm/loginlog
root@localhost#: chown root /var/adm/loginlog
Sau khi được khởi toạ nú sẽ ghi lại những lần đăng nhập khụng thành cụng. Thường đõy là những lần đănh nhập với mục đớch xấu (cú thể kẻ tấn cụng đang cố gắng bẻ khoỏ để đăng nhập vào hệ thống). Cỏc hệ thống V Unix sẽ tự động ngăn chặn một đăng nhập trong một khoảng thời gian nếu như sau 5 lần mà vẫn khụng thành cụng (để đề phũng trường hợp tấn cụng bằng Brute Force). Tất nhiờn Unix sẽ ghi lại chi tiết 5 lần đăng nhập khụng thành cụng này.
root@localhost#: cat /var/adm/loginlog
simsong:/dev/pts/8:Mon Nov 27 00:42:14 2001
simsong:/dev/pts/8:Mon Nov 27 00:42:20 2001
simsong:/dev/pts/8:Mon Nov 27 00:42:26 2001
simsong:/dev/pts/8:Mon Nov 27 00:42:39 2001
simsong:/dev/pts/8:Mon Nov 27 00:42:50 2001
3.4 Cài đặt và nõng cấp hệ thống
3.4.1 Linux OpenSSL Server
Tổng quan:
Hầu hết cỏc phần mềm như IMAP&POP, Samba, OpenLDAP, FTP, Apache và những phần mềm khỏc đều yờu cầu cụng việc kiểm tra tớnh xỏc thực (authentication) của người sử dụng trước khi cho phộp sử dụng cỏc dịch vụ này. Nhưng mặc định việc truyền tải sự xỏc minh thụng tin người sử dụng và mật khẩu (password) ở dạng văn bản thuần tỳy nờn cú thể được đọc hoặc thay đổi bởi một người khỏc. Kỹ thuật mó húa như SSL sẽ đảm bảo tớnh an toàn và nguyờn vẹn của dữ liệu, với kỹ thuật này thụng tin truyền trờn mạng ở dạng điểm nối điểm được mó húa. Một khi OpenSSL đó được cài đặt trờn Linux server, ta cú thể sử dụng nú như một cụng cụ thứ ba cho phộp cỏc ứng dụng khỏc dựng tớnh năng SSL.
Sự diễn giải về OpenSSL:
Dự ỏn OpenSSL là một kết quả của sự cộng tỏc nhằm phỏt triển một kỹ thuật bảo mật dạng thương mại, đầy đủ cỏc đặc trưng và là bộ cụng cụ mó nguồn mở thực thi cỏc giao thức như Secure Sockets Layer (SSL v2/v3) và Transport Layer Security (TSL v1) với những thuật toỏn mó húa phức tạp. Dự ỏn được quản lý bởi hiệp hội những người tỡnh nguyện trờn thế giới, sử dụng Internet để trao đổi thụng tin, lập kế hoạch và phỏt triển cụng cụ OpenSSL và cỏc tài liệu liờn quan khỏc.
Sự thuận lợi của việc mó húa:
Những lợi ớch chớnh thu được khi sử dụng cụng nghệ mó húa như sau:
Sự tin cẩn dữ liệu.
Khi một thư tớn (message) được mó húa, văn bản thuần tỳy đưa vào được biến đổi bởi một thuật toỏn thành dạng văn bản được mó húa, dạng văn bản này che dấu ý nghĩa của message và cú thể được gởi thụng qua mạng Internet hoặc Intranet. Quỏ trỡnh này đũi hỏi một khúa riờng (secret key), khúa này dựng để mó húa dữ liệu và sau đú giải mó dữ liệu. Khụng cú secret key, việc mó húa dữ liệu là vụ nghĩa.
Tớnh toàn vẹn dữ liệu.
Một sự kiểm tra tổng thể mật khẩu được gọi là mó kiểm tra tớnh xỏc thực thụng điệp (Message Authentication Code) mà trong kỹ thuật mó húa được gọi là MAC, cú thể được tớnh toỏn tựy ý trờn văn bản người sử dụng cung cấp để bảo vệ tớnh toàn vẹn của dữ liệu. Kết quả (văn bản và MAC) sau đú được gởi tới người nhận, người nhận kiểm tra nội dung của MAC kốm theo message bằng cỏch tớnh toỏn lại MAC cho message nhận được, sử dụng khúa riờng (secret key) thớch hợp và kiểm tra giỏ trị MAC cú bằng chớnh xỏc MAC nhận được hay khụng.
Sự xỏc thực (Authentication).
Việc xỏc minh cỏ nhõn là một cỏch mó húa khỏc, ở đõy người dử dụng/người gởi biết một secret key, cỏi mà cú thể được dựng để chứng thực nhận dạng của anh ấy/cụ ấy.
Chữ ký điện tử (Electronic Signature).
Một chữ ký điện tử đảm bảo người gởi và người nhận rằng message là đỏng tin cậy và chỉ cú người chủ sở hữu của khúa cú thể sinh ra chữ ký điện tử cho người đú.
Việc sỏng chế (Patents).
Một vài vấn đề hợp lý sẵn cú cho cụng nghệ SSL. Nếu bạn cú ý định sử dụng OpenSSL cho mục đớch thương mại bạn cần cú một sự cho phộp từ tổ chức sỏng chế RSA về việc sử dụng cỏc thư viện RSA.
Đõy là đoạn một đoạn trớch trong tập tin README của OpenSSL.
Cỏc cụng ty khỏc nhau nắm giữ cỏc bằng sỏng chế khỏc nhau cho những thuật toỏn khỏc nhau trong những vị trớ khỏc nhau trong những vị trớ khỏc nhau trờn thế giới. Bạn phải chịu trỏch nhiệm đảm bảo rằng việc sử dụng bất kỳ thuật toỏn nào của bạn là hợp lệ bằng cỏch kiểm tra nếu cú bất kỳ bằng sỏng chế nào trong quốc gia của bạn hay khụng. Tập tin này chứa đựng một vài bằng sỏng chế mà chỳng tụi biết hoặc theo lời giới thiệu sẵn cú. Đõy khụng phải là danh sỏch cuối cựng.RSA Data Security nắm giữ bằng sỏng chế phần mềm trờn những thuật toỏn RSA và RC5. Nếu những thuật toỏn của họ được dựng bờn trong USA và Japan thỡ phải liờn hệ với RSA Data Security cho cỏc điều kiện được phộp sử dụng. Trang Web của RSA Data Security cú thể truy cập theo địa chỉ RC4 là nhón hiệu đăng ký của RSA Data Security như vậy việc sử dụng thuật toỏn này phải được phộp của RSA Data Security.Thuật toỏn IDEA cú bằng sỏng chế bởi Ascom ở Áo, Phỏp, Đức, í, Nhật, Hà Lan, Tõy Ban Nha, Thụy Điển, Thụy Sĩ, Anh và Mỹ. Họ sẽ được liờn hệ nếu thuật toỏn được sử dụng. Tham khảo trang web theo địa chỉ
Hướng dẫn cài đặt.
Cỏc dũng lệnh thỡ tương ứng với Unix. Đường dẫn nguồn sẽ là "/var/tmp" (cũng cú thể chọn những đường dẫn khỏc). Việc cài đặt được thử nghiệm trờn Red Hat Linux 6.1 và 6.2. Tất cả cỏc bước trong việc cài đặt sẽ xảy ra với người sử dụng cú quyền cao nhất trong hệ thống (root). Phiờn bản OpenSSL là 0.9.5a. Dạng lưu trữ Tarballs. Trước hết bạn hóy tạo ra danh sỏch cỏc tập tin trờn hệ thống trước và khi cài đặt OpenSSL, sau đú so sỏnh chỳng dựng lệnh "diff" để tỡm ra cỏc tập tin nào là được đặt ở đõu. Đơn giản chạy lệnh "find /* > OpenSSL1" trước và "find /* > OpenSSL2" sau khi bạn cài đặt phần mềm, và sử dụng lệnh "diff OpenSSL1 OpenSSL2> OpenSSL-Installed" để lấy một danh sỏch cỏc thay đổi nào đú.
Cỏc gúi cần thiết (Packages).
OpenSSL Homepage Site:
Bạn phải đảm bảo là tải về gúi: openssl-0.9.5a.tar.gz.
Sự biờn dịch.
Giải nộn tập tin dạng tarball (tar.gz).
[root@deep /]# cp openssl-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf openssl-version.tar.gz
Biờn dịch và tối ưu.
Chuyển vào thư mục OpenSSL mới và gừ những lệnh sau:
Bước 1:
Hiệu chỉnh tập tin c_rehash (vi +11 tools/c_rehash) và thay đổi dũng.
DIR=/usr/local/ssl Trở thành DIR=/usr
Dũng được thay đổi ở trờn sẽ xõy dựng và cài đặt OpenSSL trong vị trớ mặc định "/usr".
Bước 2:
Mặc định những tập tin nguồn OpenSSL cho rằng thư mục chương trỡnh Perl được đặt dưới thư mục "/usr/local/bin/perl". Ta phải thay đổi dũng "#!/usr/local/bin/perl" trong tất cả cỏc tập tin script với thư mục perl tương ứng với thư mục perl trờn Red Hat Linux "/usr/bin"
[root@deep openssl-0.9.5a]# perl util/perlpath.pl /usr/bin (Chứa chương trỡnh perl).
Bước 3:
OpenSSL cần phải biết ở đõu cú thể tỡm những thư viện nguồn OpenSSL để biờn dịch chớnh xỏc những tập tin yờu cầu của chỳng. Với những lệnh dưới đõy chỳng ta đặt đường dẫn biến mụi trường tới thư mục mặc định, ở đú chỳng ta đó giải nộn cỏc tập tin nguồn OpenSL.
[root@deep openssl-0.9.5a]# export LD_LIBRARY_PATH='pwd'
Bước 4:
Bõy giờ chỳng ta phải cấu hỡnh OpenSSL cho hệ thống của chỳng ta
CC="egcs" \
./Configure linux-elf -DSSL_FORBID_ENULL \
--prefix=/usr \
--openssldir=/etc/ssl
Chỳ ý: Tựy chọn ".DSSL_FORBID_ENULL" yờu cầu khụng được phộp mó húa rỗng cho những lý do bảo mật.
Bước 5:
Hiệu chỉnh tập tin Makefile.ssl (vi +50 Makefile.ssl) và thay đổi dũng sau:
CC=gcc
Trở thành:
CC=egcs
Hiệu chỉnh tập tin Makefile.ssl (vi +52 Makefile.ssl) và thay đổi những dũng sau:
CFLAG= -DTHREADS -D_REENTRANT -DSSL_FORBID_ENULL -DL_ENDIAN -DTERMIO -O9 -funroll-loops-ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions-Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
Hiệu chỉnh tập tun Makefile.ssl (vi +79 Makefile.ssl) thờm những giỏ trị sau cho bộ vi xử lý Pentium Pro.
PROCESSOR = 686
Chỳ ý: Cả ba sự thay đổi chỳng ta đó làm ở trờn sẽ đặt cờ tối ưu cho sự biờn dịch của phần mềm OpenSSL trờn server. Với sự thay đụiư thứ 3 ở trờn (PROCESSOR=), nếu bạn đang chạy OpenSSL trờn mỏy Pentium thỡ hóy đặt giỏ trị 586, nếu Pentium Pro / II / III đặt giỏ trị 686 cũn nếu bạn đang chạy trờn mỏy 486 thỡ giỏ trị sẽ là 486.
Bước 6:
Hiệu chỉnh tập tin Makefile.ssl (vi +161 Makefile.ssl) và thay đổi dũng như dưới đõy:
MANDIR=$(OPENSSLDIR)/man
Trở thành:
MANDIR=/usr/man
Bước này thỡ cần thiết để thiết đặt thư mục mà chỳng ta sẽ cài đặt những trang man của OpenSSL. Với sự thay đổi nayg chỳng ta sẽ cài đặt chỳng trong thư mục "/usr/man".
Bước 7:
Bõy giờ chỳng ta sẽ biờn dịch và cài đặt OpenSSL trờn server:
[root@deep openssl-0.9.5a]# make -f Makefile
[root@deep openssl-0.9.5a]# make test
[root@deep openssl-0.9.5a]# make install
[root@deep openssl-0.9.5a]# mv /etc/ssl/misc/* /usr/bin/
[root@deep openssl-0.9.5a]# rm -rf /etc/ssl/misc/
[root@deep openssl-0.9.5a]# rm -rf /etc/ssl/lib
[root@deep openssl-0.9.5a]# rm -f /usr/bin/CA.pl
[root@deep openssl-0.9.5a]# rm -f /usr/bin/CA>sh
[root@deep openssl-0.9.5a]# install -m 644 libRSAglue.a /usr/lib/
[root@deep openssl-0.9.5a]# install -m 644 rsaref/rsaref.h /usr/include/openssl/
[root@deep openssl-0.9.5a]# strip /usr/bin/openssl
[root@deep openssl-0.9.5a]# mkdir -p /etc/ssl/crl
Lệnh "make -f" sẽ xõy dựng những thư viện OpenSSL (libcrypto.a và libssl.a) và tập tin nhị phõn OpenSSL "openssl". Cỏc thư viện sẽ được xõy dựng trong thư mục gốc của OpenSSL và tập tin nhị phõn sẽ được xõy dựng trong thư mục "apps" của thư mục gốc của OpenSSL. Sau khi xõy dựng thành cụng, "make test" sẽ kiểm tra những thư viện, và cuối cựng "make test" sẽ tạo thư mục cài đặt và cài đặt OpenSSL trờn server. Lệnh "mv" sẽ chuyển tất cả cỏc tập tin trong thư mục "/etc/ssl/misc/" tới thư mục "/usr/bin/". Cỏc tập tin này là cỏc tập tin dạng nhị phõn (binary) và phải được đặt trong thư mục "/usr/bin". Mặc dự trong hệ thống, tất cả cỏc tập tin nhị phõn đều được giữ trong thư mục này. Khi đặt cỏc tập tin trong thư mục này sẽ giữ chỳng trong biến mụi trường của chỳng ta. Lệnh "rm" sẽ gỡ bỏ cỏc thư mục "/etc/ssl/misc/" và thư mục "/etc/ssl/lib/" từ hệ thống của chỳng ta, trước đõy những tập tin được đặt trong những thư mục này thỡ bõy giờ nú được đặt trong nơi khỏc. Cũng như vậy nú sẽ gỡ bỏ cỏc tập tin "CA.pl" và "CA.sh", chỳng là những tập tin script nhỏ được sử dụng để tạo cỏc chứng nhận điện tử sở hữu cho chớnh mỡnh (CA certificate). Những tập tin script này liờn quan đến lệnh "openssl ca" với nhiều yờu cầu phức tạp, và mặc định OpenSSL cấu hỡnh khụng cho phộp một ai dễ dàng sử dụng trực tiếp "openssl ca". Vỡ vậy chỳng ta sẽ tạo tập tin script "sign.sh" để thay thế cho chỳng.
Chỳ ý: Package bc- 1.05a-4.i386.rpm hoặc cao hoen phải được cài đặt sắn trờn Linux Server hoặc sẽ nhận ra một thụng bỏo lỗi trong suốt quỏ trỡnh kiểm tra thư viện của OpenSSL.
Dọn dẹp sau khi cài đặt:
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf openssl-version/ openssl-version.tar.gz
Lệnh "rm" sẽ gỡ bỏ tất cả cỏc tập tin nguồn chỳng ta sử dụng để biờn dịch và cài đặt OpenSSL. Nú cũng sẽ gỡ bỏ tập tin dạng nộn OpenSSL trong thư mục "/var/tmp/".
Cấu hỡnh
- Chạy OpenSSL server, những tập tin theo sau được yờu cầu phải tạo mới hoặc được copy tới những thư mục thớch hợp trờn server. Sao chộp tập tin openssl.cnf vào thư mục "/etc/ssl/". Sao chộp tập tin scriptstign.sh vào thư mục "/usr/bin/". Ta thu được những tập tin cấu hỡnh được liệt kờ dưới đõy từ tập tin dạng nộn floppy.tgz. Sao chộp những tập tin này từ việc giải nộn tập tin floppy.tgz tới những nơi thớch hợp hoặc copy tới tập tin cú liờn quan.
Tập tin "/etc/ssl/openssl.cnf" là tập tin cấu hỡnh chung cho chương trỡnh OpenSSL, ở đú ta cú thể cấu hỡnh ngày hết hạn của khúa, tờn của cụng ty hoặc tổ chức, địa chỉ ...etc. Những tham số cú thể thay đổi ở trong [CA_default] và đặc biệt phần [reg_distinguished_name] Hiệu chỉnh tập tin openssl.cnf (vi /etc/ssl/openssl.cnf) và thờm hoặc thay đổi :
# OpenSSL example configuration file. This is mostly being used for generation of certificate requests.
RANDFILE = $ENV::HOME/.rnd
oid_file = $ENV::HOME/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the "openssl x509" utility, name here the section containing the X.509v3 # # extensions to use: extensions = (Alternatively, use a configuration file that has only X.509v3 extensions in its main [= default] #section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca' and 'req'.Add a simple OID like this: testoid1=1.2.3.4 Or use config file substitution #like this: testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = /etc/ssl # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/ca.db.index # database index file.
new_certs_dir = $dir/ca.db.certs # default place for new certs.
certificate = $dir/certs/ca.crt # The CA certificate
serial = $dir/ca.db.serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/ca.key # The private key
RANDFILE = $dir/ca.db.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs so this is commented out by default to leave a V1 #CRL. crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days = 30 # how long before next CRL
default_md = md5 # which md to use.
Preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look For type CA, the listed attributes must be the same, and the #optional and supplied fields are just that
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy At this point in time, you must list all acceptable 'object' types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CA
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Quebec
localityName = Locality Name (eg, city)
localityName_default = Montreal
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Open Network Architecture
# we can do this but it is not needed normally 1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Internet Department
commonName = Common Name (eg, YOUR name)
commonName_default = www.openna.com
commonName_max = 64
emailAddress = Email Address
emailAddress_default = admin@openna.com
emailAddress_max = 40
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request. This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted the certificate can be used for anything *except* object signing.
# This is OK for an SSL server. nsCertType = server For an object signing certificate this would be used. nsCertType = objsign
# For normal client use this is typical nsCertType = client, email and for everything including object signing: nsCertType = client, #email, objsign This is typical in keyUsage for a client certificate. keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdent
Các file đính kèm theo tài liệu này:
- P0033.doc