Tài liệu An toàn và bảo mật trên hệ điều hành Linux: Luận văn: An toàn và bảo mật
trên hệ điều hành Linux
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 1
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Giới thiệu
Ngày nay, trên mạng Internet kỳ diệu, người ta đang thực hiện
hàng tỷ đô la giao dịch mỗi ngày( trên dưới 2 ngàn tỷ USD mỗi năm).
Một khối lượng hàng hoá và tiền bạc khổng lồ đang được tỷ tỷ các điện
tử tí hon chuyển đi và nó thực sự là miếng mồi béo bở cho những tay
ăn trộm hay khủng bố có có “ tri thức”. Sự phát triển nhanh chóng
của mạng máy tính là điều tất yếu. Hàng ngày có không biết bao nhiêu
người tham gia vào hệ thống thông tin toàn cầu mà chúng ta gọi là
Internet. Những công ty lớn, các doanh nghiệp, các trường đại học
cùng như các trường phổ thông ngày càng tăng và hơn cả thế có rất
rất nhiều người đang nối mạng trực tuyến suốt 24/24 giờ mỗi ngày,
bảy ngày trong tuần. Trong bối cảnh một liên mạng toàn cầu với hàng
chục triệu người sử dụng ...
36 trang |
Chia sẻ: hunglv | Lượt xem: 2542 | Lượt tải: 2
Bạn đang xem trước 20 trang mẫu tài liệu An toàn và bảo mật trên hệ điều hành Linux, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Luận văn: An toàn và bảo mật
trên hệ điều hành Linux
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 1
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Giới thiệu
Ngày nay, trên mạng Internet kỳ diệu, người ta đang thực hiện
hàng tỷ đô la giao dịch mỗi ngày( trên dưới 2 ngàn tỷ USD mỗi năm).
Một khối lượng hàng hoá và tiền bạc khổng lồ đang được tỷ tỷ các điện
tử tí hon chuyển đi và nó thực sự là miếng mồi béo bở cho những tay
ăn trộm hay khủng bố có có “ tri thức”. Sự phát triển nhanh chóng
của mạng máy tính là điều tất yếu. Hàng ngày có không biết bao nhiêu
người tham gia vào hệ thống thông tin toàn cầu mà chúng ta gọi là
Internet. Những công ty lớn, các doanh nghiệp, các trường đại học
cùng như các trường phổ thông ngày càng tăng và hơn cả thế có rất
rất nhiều người đang nối mạng trực tuyến suốt 24/24 giờ mỗi ngày,
bảy ngày trong tuần. Trong bối cảnh một liên mạng toàn cầu với hàng
chục triệu người sử dụng như Internet thì vấn đề an toàn thông tin trở
nên phức tạp và cấp thiết hơn. Do đó một câu hỏi không mấy dễ chịu
đặt ra là : liệu mạng máy tính của chúng ta sẽ phải bị tấn công bất cứ
lúc nào?
Sự bảo vệ của bất kỳ mạng máy tính nào đầu tiên cũng là firewall
và phần mền nguồn mở như Linux. Và câu chuyện về an toàn mạng
không có hồi kết thúc. Việc giữ an toàn một hệ thống kéo theo chúng
ta phải có nhưng kiến thức tốt về hệ điều hành, mạng TCP/IP cơ sở và
quản trị dịch vụ. Cùng với sự gợi ý của giá viên hướng dẫn và tầm
quan trọng của việc an toàn thông tin liên mạng, ở đây chúng tôi chỉ
trình bày một cách tổng quan những vùng nơi Linux có thể và cần phải
được giữ an toàn, những thêm vào đó là các lệnh cơ bản, những kinh
ngiệm trong nguyên tắc an toàn và bảo vệ hệ thống mạng.
Nhóm sinh viên thực hiện:
- Nguyễn Huy Chương
- Lê Thị Huyền Trang
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 2
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
I. An toàn cho các giao dịch trên mạng
Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thức văn bản
không mã hoá, như TELNET, FTP, RLOGIN, HTTP, POP3. Trong các giao dịch giữa
người dùng với máy chủ, tất cả các thông tin dạng gói được truyền qua mạng dưới
hình thức văn bản không được mã hoá. Các gói tin này có thể dễ dàng bị chặn và sao
chép ở một điểm nào đó trên đường đi. Việc giải mã các gói tin này rất dễ dàng, cho
phép lấy được các thông tin như tên người dùng, mật khẩu và các thông tin quan
trọng khác. Việc sử dụng các giao dịch mạng được mã hoá khiến cho việc giải mã
thông tin trở nên khó hơn và giúp bạn giữ an toàn các thông tin quan trọng. Các kỹ
thuật thông dụng hiện nay là IPSec, SSL, TLS, SASL và PKI.
Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX. Người quản trị
mạng có thể dễ dàng truy nhập vào hệ thống từ bất kỳ nơi nào trên mạng thông qua
các giao thức thông dụng như telnet, rlogin. Một số công cụ quản trị từ xa được sử
dụng rộng rãi như linuxconf, webmin cũng dùng giao thức không mã hoá. Việc thay
thế tất cả các dịch vụ mạng dùng giao thức không mã hoá bằng giao thức có mã hoá
là rất khó. Tuy nhiên, bạn nên cung cấp việc truy cập các dịch vụ truyền thống như
HTTP/POP3 thông qua SSL, cũng như thay thế các dịch vụ telnet, rlogin bằng SSH.
Nguyên tắc bảo vệ hệ thống mạng
1. Hoạch định hệ thống bảo vệ mạng
Trong môi trường mạng, phải có sự đảm bảo rằng những dữ liệu có tính bí
mật phải được cất giữ riêng, sao cho chỉ có người có thẫm quyền mới được phép truy
cập chúng. Bảo mật thông tin là việc làm quan trọng, và việc bảo vệ hoạt động mạng
cũng có tầm quan trong không kém.
Mạng máy tính cần được bảo vệ an toàn, tránh khỏi những hiểm hoạ do vô
tình hay cố ý.Tuy nhiên một nhà quản trị mạng cần phải biết bất cứ cái gì cũng có
mức độ, không nên thái quá. Mạng không nhaats thiết phải được bảo vệ quá cẩn
mật, đến mức người dùng luôn gặp khó khăn khi truy nhập mạng để thực hiện nhiệm
vụ của mình. Không nên để họ thất vọng khi cố gắng truy cập cá tập tin của chính
mình.Bốn hiểm hoạ chính đối với sự an ninh của mạng là:
o Truy nhập mạng bất hợp pháp
o Sự can thiệp bằng phương tiện điện tử
o Kẻ trộm
o Tai hoạ vô tình hoặc có chủ ý
x Mức độ bảo mật :Tuỳ thuộc vào dạng môi trường trong đó
mạng đang hoạt động
x Chính sách bảo mật : Hệ thống mạng đòi hỏi một tập hợp
nguyên tắc, điều luật và chính sách nhằm loại trừ mọi rủi ro. Giúp hướng dẫn vược
qua các thay đổi và những tình huống không dự kiến trong quá trình phát triển
mạng.
Sự đề phòng: đề phòng những truy cập bất hợp pháp
Sự chứng thực: trước khi truy nhập mạng, bạn gõ đúng tên đăng nhập và
password hợp lệ.
x Đào tạo: Người dùng mạng được đào tạo chu đáo sẽ có ít khả
năng vô ý phá huỷ một tài nguyên
x An toàn cho thiết bị: Tuỳ thuộc ở: quy mô công ty, độ bí mật
dữ liệu, các tài nguyên khả dụng. Trong môi trường mạng ngang hàng, có thể không
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 3
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
có chính sách bảo vệ phàn cứng có tổ chức nào. Người dùng chịu trách nhiệm đảm
bảo an toàn cho máy tính và dữ liệu của riêng mình.
2. Mô hình bảo mật
Hai mô hình bảo mật khác nhau đã phát triển, giúp bảo vệ an toàn dữ liệu và
tài nguyên phần cứng:
x Bảo vệ tài nguyên dùng chung bằng mật mã: gắn mật mã cho
từng tài nguyên dùng chung
x Truy cập khi được sự cho phép : là chỉ định một số quyền nhất
định trên cơ sở người dùng, kiểm tra truy nhập tài nguyên dùng chung căn cứ vào
CSDL user-access trên máy server
3. Nâng cao mức độ bảo mật
x Kiểm toán : Theo dõi hoạt động trên mạnh thông qua tài khoản
người dùng, ghi lại nhiều dạng biến cố chọn lọc vào sổ nhật ký bảo mật của máy
server. Giúp nhận biết các hoạt động bất hợp lệ hoặc không chủ định. Cung cấp các
thông tin về cách dùng trong tình huống có phòng ban nào đó thun phí sử dụng một
số tài nguyên nhất định, và cần quyết định phí của những tài nguyên này theo cách
thức nào đó.
x Máy tính không đĩa:Không có ổ đĩa cứng và ổ mềm. Có thể thi
hành mọi việ như máy tính thông thường, ngoại trừ việc lưu trữ dữ liệu trên đĩa cứng
hay đĩa mềm cục bộ. Không cần đĩa khởi động. Có khả năng giao tiếp với server và
đăng nhập nhờ vào một con chip ROM khởi động đặc biệt được cài trên card mạng.
Khi bật máy tính không đĩa, chip ROM khởi động phát tín hiệu cho server biết rằng
nó muốn khởi động. Server trả lời bằng cácn tải phần mềm khởi động vào RAM của
máy tính không đĩa và tự đọng hiển thị màn hình đăng nhập . Khi đó máy tính được
kết nối với mạng.
x Mã hoá dữ liệu: Người ta mã hoá thông tin sang dạng mật mã
bằng một phương pháp nào đó sao cho đảm bảo thông tin đó không thể nhận biết
được nếu nơi nhận không biết cách giải mã. Một người sử dụng hay một host có thể
sử dụng thông tin mà không sợ ảnh hưởng đến người sử dụng hay một host khác.
x Chống virus :
- Ngăn không cho virus hoạt động
- Sữa chữa hư hại ở một mức độ nào đó
- Chặn đứng virus sau khi nó bộc phát
Ngăn chặn tình trạng truy cập bất hợp pháp là một trong những giải pháp
hiệu nhiệm nhất để tránh virus. Do biện pháp chủ yếu là phòng ngừa, nên nhà quản
trị mạng phải bảo đảm sao cho mọi yếu tố cần thiết đều đã sẵn sàng:
- Mật mã để giảm khả năng truy cập bất hợp pháp
- Chỉ định các đặc quyền thích hợp cho mọi người dùng
- Các profile để tổ chức môi trường mạng cho người dùng có
thể lập cấu hình và duy trì môi trường đăng nhập, bao gồm
các kết nối mạng và những khoản mục chương trình khi
người dùng đăng nhập.
- Một chính sách quyết định có thể tải phần mềm nào.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 4
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Kiến trúc bảo mật của hệ thống mạng
1) Các mức an toàn thông tin trên mạng
Không có điều gì gọi là hoàn hảo trong việc an toàn hệ thống mạng như
Linux. Nó được thiết kế để là một hệ điều hành nối mạng và sự phát triển mạnh mẽ
của nó chỉ để tập trung vào sự an toàn. Hệ điều hành mã nguồn mở là cái gì mà cho
phép người quản trị mạng và những người phát triển, những người dùng triền miên
theo dõi và kiểm toán những gì dễ bị tấn công. Ở đấy không có gì huyền bì về an
toàn thông tin. Thật là tốt nếu như các tài nguyên được bảo mật và được bảo vệ tốt
trước bất kỳ sự xâm phạm vô tình hay cố ý.
An toàn hay bảo mật không phải là một sản phẩm, nó cũng không phải là một
phần mền. Nó là một cách nghĩ. Sự an toàn có thể được khởi động và dừng như một
dịch vụ. Bảo mật là cách an toàn. Tài liệu bảo mật là tư liệu mà những thành viên
của tổ chức muốn bảo vệ. Trách nhiệm của việc bảo mật là người quản trị mạng.
Sự an toàn mạng có vai trò quan trọng tối cao. An toàn phải được đảm bảo từ
những nhân tố bên ngoài kernel, tại phần cốt lõi của Linux server. Cơ chế bảo mật
cần phải bao gồm cấu hình mạng của Server, chu vi ứng dụng của tổ chức mạng và
thậm chí của những client truy nhập mạng từ xa. Có vài cách mà ta cần phải xem
xét:
o Sự an toàn vật lý
o An toàn hệ thống
o An toàn mạng
o An toàn các ứng dụng
o Sự truy nhập từ xa và việc chầp nhận
1. Sự an toàn vật lý
Điều này là cơ bản và giám sát được tốt khía cạnh an toàn của hệ điều hành
Linux. Sự an toàn vật lý bắt đầu với môi trường xung quanh ví dụ như đối với các
nhà cung cầp dịch vụ hãm hại?Có nên khoá các khối dữ liệu lại? Những người nào
được chấp nhận được vào trung tâm dữ liệu. Việc bảo vệ thích hợp là phải thực hiện
lại khi muốn xây dựng một cài đặt mới hay di chuyển dữ liệu đến một vị trí mới.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 5
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
2. An toàn hệ thống
Sự an toàn hệ thống bao quanh việc chọn phân phối hệ điều hành Linux, xây
dưng kernel,tới sự an toàn tài khoản người dùng, cho phép truy cập thư mục tập tin,
mã hoá syslog và file system. Các tác vụ này được hoàn thành trước khi dịch vụ nối
vào Internet. Việc chọn một phân phối nào thì tuỳ thuộc vào những nhu cầunhư
chính sách được phác thảo trong cơ chế an toàn. Có một tiêu chuẩn để chọn một
phân phối nhưng nó không thuộc phạm vi của bài này.Việc xây dựng một kernel sẵn
có có hai lợi thế:
o Những option an toàn của nhân được xác định bởi người quản trị mạng
và người quản trị mạng biết cái gì được xác định vào trong kernel và từ đây có thể
đồng thời nhận ra nếu điều đó nếu có. Phần nềm nguồn mở nói chung và hệ điều
hành Linux nói riêng, đặc biệt có những cải tiến để dễ dàng cho người sử dụng và có
những tiện ích dễ ứng dụng. Chỉ cần update trong Red Hat.
o Sự an toàn các tài khoảng người dùng có vai trò to lớn. Có những vùng
được vô hiệu hoá, những tài khoảng không hoạt động, vô hiệu hoá việc truy cập đến
NFS lên gốc, hạn chế những đăng nhập vào trong môi trường điều kiển hệ thống.Mã
hoá file hệ thông sử dụng kỹ thuật mã hoá mà thường là phòng thủ cuối cùng cho
mạng.
Có hai cách tiếp cận chung: Hệ thống file mã hoá (CFS) và Practical Privacy
Disk Driver(PPDD). Hệ thống có thể được theo dõi và trong Linux, hệ thống logging
được logged trong tiện ích syslog. Công cụ theo dõi bao gồm swatch và logcheck.
Swatch có công cụ thông báo thời gian thực, trong khi logcheck cung cấp một công
cụ mà phát sinh những báo cáo định kỳ. Kiểm toán Password cũng có vai trò sống
còn trong việc an toàn, bảo mật hệ thống trong khi mối liên kết yếu nhất trong việc
an toàn mạng là người sử dụng và việc lựa chọn các mật khẩu password.
3. An toàn mạng
Ở đây liên quan đến việ kết nối từ Linux server vào mạng. Cấu hình dịch vụ
mạng với sự an toàn ngày càng khó khăn cho những nhà quản trị mạng. The xinetd
daemon cần phải được định hình tổ chức bảo mật. Lệnh netstat Là một tiện ích mạnh
cho phép người quản trị kiểm tra tình trạng cấu hình mạng. Kiểm tra mạng là điều
cần thiếtcủa việc an toàn. Điều này đảm bảo rằng cơ chế an toàn đã được thực hiện
có hiêu quả trong việc hoàn thành những yêu cầu bảo mật. Điều đó đạt được bởi
quyền thực hiện đến mạng của bạn. Cách tiếp cận việc kiểm định mạng hiệu quả
nhất sẽ trong vai trò của người làm phiền. Có những công cụ kiểm định cơ sở và host
cơ sở.
SATAN(Security Administrator's Tool for Analysing Networks), SAINT( Security
Administrator's Integrated Network Tool), SARA (Security Auditor's Research
Assistant) là những công cụ tốt để kiểm định cơ bản. SATAN được đầu tiên công
nhận năm 1995, nó được công nhận đông đảo bởi mã nguồn mở.
SAINT mạnh hơn SANAN, trong khi SARA là một modul ackage, tương tác với
Nmap và Samba. Những cải tiến gần đây nhất là công cụ Nessus. Nessus là miễn
phí, nguồn mở,đầy đủ nổi bật, công cụ kiểm toàn vẫn được hỗ trợ cải tiến cải tiến
tích cực.Nessus đi vào 2 thành phần : - Client(nessus) và server( nesssus). Công cụ
Nmap cho người quản trị giàu kinh nghiệm. Mặt khác Nmap có sức mạnh, công cụ
quét cho người có kinh nghiệm. Nó được sử dụng tốt trong mạng LAN.
TARA(Tiger Auditors Research Assistant)là một ví dụ cho công cụ kiểm toán cơ
sở host. Theo dõi mạng dưới một sự tấn công. Công cụ để theo dõi đó là PortSentry
và Ethereal. Port Sentry quét trong chế độ ngầm định. Bảo mật mạng như một trò
chơi giữa mèo và chuột, của trí tuệ và máy đếm trí tuệ. Trong khi mạng kiểm toán là
một phần của mạng bình thường, mạng theo dõi cần phải được ưu tiên cao hơn. Việc
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 6
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
bảo mật bao gồm việc kiểm toán chính xác và cả việc có nên để như thế hay không.
PortSentry là một ví dụ của công cụ theo dõi thời gian thực được thiết kế để quét
phát hiện ra hệ thống, và có khả cho bạn những hồi đáp.
4. Các ứng dụng an toàn
Một vài deamons chuẩn trong việc phân phối Linux hiện thời là những ứng dụng
đầy đủ mà nó có cấu trúc file phức tạp. Web, file, mail server sử dụng những giao
thức phức tạp. An toàn có thể được thực hiện bởi các đặc tính bảo mật của việc các
đại lý cho phép(MTA‟s) như Sendmail, Qmail và Postfix.
Web Server có thể cũng được giữ an toàn bởi các modul cho phép: mod_auth,
mod_auth_dbm, mod_auth_db,….Việc cho phép Open SS hỗ trợ cho Apache sẽ cũng
công tác với web server. Samba có thể làm an toàn bởi việc đọc các thông số đang
chạy. Bước đầu tiên sẽ được bảo vệ bởi công cụ quản trị web Samba (SAT) với SLL
nên các lệnh quản lý Samba được bảo vệ.
5. Chu vi an toàn
Cấp số tự nhiên của cách tiếp cận được sắp từng lớp đến sự an toàn máy tính
ra khỏi lớp từ lớp mạng đến lớp ứng dụng, và từ đó đền lớp chu vi. Đây là vùng được
quan tâm. Firewals là thành phần chính của miền chu vi an toàn, là phần mền mà
chức năng bắt buộc tổ chức bảo mật an toàn bởi bộ lọc, bảo mật, đẩy mạnh, hay yêu
cầu nằm trong Linux server để kết nối đến cả mạng chính và Internet. Fireware có
thể được thực hiện nhiều cách dựa trên các lớp của mô hình OSI: lớp mạng, lớp giao
vận và ứng dụng. Có điểm tích cực và tiêu cực trong việc triển khai fireware tại các
lớp của mạng.Firewal mạng được biết như các packet-filtering gateway, nơi mà
chúng kiểm tra nhữg gói tin IP vào giao diện fireware và hoạt động phù hợp được giữ
lại. hoạt động bao gồm drop, cho phép/ hoặc log. Sự bất lợi là kiểu Firewal này
không khôn khéo. Firwal giao vận làm việc bởi khảo sát TCP hoặc UDP. Firewal yêu
cầu sự can thiệp người dùng sửa đổi những thủ tục. Firewal ứng dụng làm cho các
quyết định truy nhập ở tầng ứng dụng.Nó cho phép người quản trị may firewal cho
yêu cầu của mỗi loại ứng dụng. Caci bất tiện trong firewal là người quản trị cần định
hình triển khai theo dõi, và bảo trì quá trình firewal cho mỗi ứng dụng mà cần truy
nhập điều khiển.
Nó luôn là tôt đẻ thực hiện bảo mật bởi việc sử dụng kết hợp một firewal tại
tất cả ba tầng để tránh sự tổn thương. Firewal không chỉ cản trở những người làm
phiền không hợp pháp vào mạng nhưng phải cho phép người sử dụng truy nhập bên
ngoài vào nguồn tài nguyên, trong khi đó chấp nhận phê chuẩn nhất định những kết
nối sau cho người dùng. Đây là nhận thức dễ nhưng đó là một thách thức khi thi
hành.
o Firewal mạng
Có vài lợi thế trong việc sử dụng Linux như nền tảng fireware. Sự quản lý
đồng bộ, phần cứng, số người dùng, kiểm tra nền tảng, việc thực hiện, giá giữa các
lý do tại sao. Sự loc gói là lợi ích hiệu quả và cách bảo vẩptong phậm vi tránh xâm
nhập. Người sử dụng không cần xác nhận để sử dụng tin cậy những dịch vụ vùng
bên ngoài.
Những giải pháp cho việc lọc gói trong Linux bao gồm ipchains và ipfwadm.
tiện ích của việc lọc gói tin được sử dụng trong nhân từ phiên bản 1.2.1 về trước.
Phiên bản cuối cùng của ipfwadm vào tháng 7/1996, sau đó ipchains thay thế
nó. Những địa chỉ Ipchains là những giới hạn thiếu sót của ipfwadr như đếm 32 bit,
không có khả năng giải quyết cấu thành địa chỉ IP,..v.v. Ipchains chiến thắng các
giới hạn đó bởi việc tận dụng lợi ích của ba kênh riêng biệt hay những quy tắc nối
tiếp để lọc. Ba kênh đó là : INPUT, OUTPUT, và FORWARD.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 7
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Tiện ích Ipchains theo cú pháp:
ipchains command chain rule-specification [options] -j action
Tại đây có thể một trong số kênh INPUT, OUTPUT hoặc FORWARD. Như nhân
2.4 về trước, tính hoạt động một lần của Ipchains được thay thế bởi Netfilter và
khoảng quy tắc Iptables. Netfilter được hỗ trợ bởi công nghệ Watchguard. Ipctables
được phát triển từ tiện ích của Ipchains và nó chỉ chạy trên những phiên bản 2.3 về
trước.
Một ví dụ về lệnh Iptables:
iptables -A INPUT -p tcp –-dport smtp -j ACCEPT.
Hiện nay có những thiết kế firewal bắt được hầu hết các cấu trúc mạng phổ
biến, báo hiệu đơn giản theo yêu cầu kết nối tới những nơi rất phức tạp kéo theo khu
vực được phi quân sự hoá(DMZ).
II. Bảo mật Linux Server
Những kinh nghiệm bảo mật
Hiện nay Linux đang dần trở thành một hệ điều hành khá phổ biến bởi tính
kinh tế, khả năng bảo mật và sự uyển chuyển cao. Thế nhưng, mọi hệ thống dù an
toàn đến đâu cũng dễ dàng bị xâm nhập nếu người dùng(và nhất là người quản trị-
root) không đặt sự bảo mật lên hàng đầu. Sâu đây là một só kinh nghiệm về bảo
mật trên hệ điều hành Red Hat Linux mà chúng tôi muốn chia sẽ cùng các bạn:
1. Không cho phép sử dụng tài khoảng root từ console: Sau khi cài đặt,
tài khoảng root sẽ không có quyền kết nối telnet vào dịch vụ telnet trên hệ thống,
trong khi đó tài khoản bình thường lại có thể kết nối, do nội dung tập tin
/etc/security chỉ quy định những console được phép truy cập bởi root và chỉ liệt kê
những console truy xuất khi ngồi trực tiếp tại máy chủ. Để tăng cường bảo mật hơn
nữa, hãy soạn thảo tập tin /etc/security và bỏ đi những console bạn không muốn
root truy cập.
2. Xoá bớt tài khoảng và nhóm đặc biệt:Người quản trị nên xoá bỏ tất cả
các tài khoảng và nhóm được tạo sẵn trong hệ thống nhưng không có nhu cầu sử
dụng.( ví dụ: lp, syne, shutdown, halt, news, uucp, operator, game, gophẻ…). Thực
hiện việc xoá bỏ tài khoảng bằng lệnh usedel và xoá bỏ nhóm với lệnh groupdel
3. Tắt các dịch vụ không sử dụng: Một điều khá nguy hiểm là sau khi cài
đặt, hệ thống tự động chạy khá nhiều dịch vụ, trong đó đa số là các dịch vụ không
mong muốn, dẫn đến tiêu tốn tài nguyên và sinh ra nhiều nguy cơ về bảo mật. Vì
vậy người quản trị nên tắt các dịch vụ không dùng tới(ntsysv) hoặc xoá bỏ các gói
dịch vụ không sử dụng bằng lệnh rpm
4. Không cho “SU” (Substitute) lên root: Lệnh su cho phép người dùng
chuyển sang tài khoảng khác. Nếu không muốn người dùng “su” thành root thì thêm
hai dòng sau vào tập tin /etc/pam.d/su:
Auth sufficient/lib/security/pam_root ok so debug
Auth required/lib/security/pam_wheel.so group= tên_nhóm_root
5. Che dấu tập tin mật khẩu: Giai đoạn đầu, mật khẩu toàn bộ tài khoảng
được lưu trong tập tin /etc/password, tập tin mà mọi người dùng đều có quyền đọc.
Đây là kẻ hở lớn trong bảo mật dù mật khẩu được mã hoá nhưng việc giải mã không
phải là không thể thực hiện được. Do đó, hiện nay các nhà phát triển Linux đã đặt
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 8
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
riêng mật khẩu mã hoá vào tập tin /ect/shadow chỉ có root mới đọc được, nhưng
yêu cầu phải chọn Enable the shadow password khi cài Red Hat.
6. Luôn nâng cấp cho nhân (kernel) Linux:Linux không hẵn được thiết kế
với tính năng bảo mật chặt chẽ, khá nhiều lỗ hỏng có thể bị lợi dụng bởi tin tặc. Vì
vậy việc sử dụng một hệ điều hành với nhân được nâng cấp là rất quan trọng vì một
khi nhân, phần cốt lõi nhất của hệ điều hành được thiết kế tốt thì nguy cơ bị phá hoại
sẽ giảm đi rất nhiều.
7. Tự động thoát khỏi Shel: Người quản trị hệ thống và kể cả người sử
dụng bình thường rất hay quên thoát ra dấu nhắc shel khi kết thúc công việc. Thât
nguy hiểm nếu có một kẻ nào sẽ có toàn quyền truy suất hệ thống mà chăng tốn
chút công sức nào cả. Do vậy người quản trị nên cài đặt tính năng tự động thoát khỏi
shel khi không có sự truy xuất trong khoảng thời gian định trước bằng cách sử dụng
biến môi trường và gán một giá trị quy định Số giây hệ thống duy trì dấu nhắc,
bạn nên vào tâp tin /ect/ profile để luôn tác dụng trong mọi phiên làm việc.
8. Không cho phép truy nhập tập tin kịch bản khởi động của Linux: Khi hệ
điều hành Linux khởi động, các tập tin kịch bản (script) được đặt tại thư mục
/etc/rc.d/init.d sẽ được gọi thực thi. Vì thế, để tránh những sự tò mò không cần thiết
từ phía người dùng, với tư cách người quản trị, bạn nên hạn chế quyền truy xuất tới
các tập tin này và chỉ cho phép tài khoảng root xử lý bằng lệnh sau:
#chmod –R 700/etc/rc.d/init.d*
9. Giới hạn việc tự ý ghi nhận thông tin từ shel: Theo mặc định, tất cả
lệnh được thực thi tại dấu nhắc shel của tài khoảng đều được ghi vào tập tin
.bash_history( nếu sd bashshel) trong thư mục cá nhân của từng tài khoảng. Điều
này gây nên vô số nguy hiểm tiềm ẩn, đặc biệt đối với những ứng dụng đòi hỏi người
dùng phải gõ thông tin mật khẩu. Do đó người quản trị nên giới hạn việc tự ý ghi
nhận thông tin từ shel dựa vào hai biến môi trường HISTFILESIZE và HISTSIZE:
- Biến môi trường HISTFILESIZE quy định số lệnh gõ tại dấu nhắc shel sẽ
được lưu lại cho lần truy cập sau.
- Biến môi trường HISTSIZE quy định số lệnh sẽ được ghi nhớ trong phiên
làm việc hiện hành.
Vì vậy, ta sẽ phải giảm giá trị của HISTSIZE và cho giá trị HISTFILESIZE bằng
0 để giảm thiểu tối đa những nguy hiểm. Bạn thực hiện việc này bằng cách thay đổi
giá trị hai biến nêu trên trong tập tin /etc/profile như sau:
HISTFILESIZE = 0
HISTSIZE = xx
Trong đó xx là số lệnh mà shel sẽ ghi nhớ, đồng thời không ghi lại bất kỳ một
lệnh nào do người dùng đã gõ khi người dùng thoát khỏi shel.
10. Tắc các tiến trình SUID/SGID : Bình thường, các tiến trình được thực
hiện dưới quyền của tài khoản gọi thực thi ứng dụng đó. Đó là dưới windows, nhưng
Unix/Linux lại sử dụng một kỹ thuật đặc biệt cho phép một số chương trình được
thực hiện dưới quyền của người quản lý chương trình chứ không phải người gọi thực
thi chương trình. Và đây chính là lý do tại sao tất cả mọi người dùng trong hệ thống
đều có thể đổi mật khẩu của mình trong khi không hề có quyên truy xuất lên tập tin
/etc/shadow, đó là vì lệnh passwd đã được gán thuộc tính SUID và được quản lý bởi
root, mà root lại là người dùng duy nhất có quyền truy xuất /etc/shadow.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 9
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Tuy thế, khả năng tiên tiến này có thể gây nên những nguy cơ khá phức tạp vì
nếu một chương trình có khả năng thực thi được quản lý bởi root, do thiết kế tồi hoặc
do được cài đặt cố tình bởi những kẻ phá hoại mà lại được đặt thuộc tính SUID thì
mọi điều “ khủng khiếp” đều có thể xảy ra. Thực tế cho thấy có khá nhiều kỹ thuật
xâm phạm hệ thống mà không có quyền root được thực hiện bằng các kỹ thuật này:
kẻ phá hoại bằng cách nào đó tạo một shel được quản lý bởi root, có thuộc tính
SUID, kế đến mọi truy xuất phá hoại sẽ được thực hiện qua shel vừa tạo vì mọi lệnh
thực hiện trong shel sẽ được thực hiện giống như dưới quyền root.
Thuộc tính SGID cũng tương tự như SUID: các chương trình được thực hiện với
quyền nhóm quản lý chương trình chứ không phải nhóm của người chạy chương
trình. Như vậy người quản trị sẽ phải thường xuyên kiểm tra trong hệ thống có
những ứng dụng nào có thuộc tính SUID hoặc SGID mà không được sự quản lý của
root không, nếu phát hiện được tập tin có thuộc tính SUID/SGID “ ngoài luồng”, bạn
có thể loại bỏ các thuộc tình này bằng lệnh:
#chmod a-s
III. Linux Firewall
An toàn hệ thống luôn luôn là một vấn đề sống còn của mạng máy tính và firewal là
một thành phần cốt yếu cho việc đảm bảo an ninh.
Một firewal là một tập hợp các qui tắc, ứng dụng và chính sách đảm bảo cho người
dùng truy cập các dịch vụ mạng trong khi mạng bên trong vẫn an toàn đối với các kẻ tấn
công từ Internet hay từ các mạng khác. Có hai loại kiến trúc firewal cơ bản là :
Proxy/Application firewal và filtering gateway firewal. Hầu hết các hệ thống firewal hiện
đại là loại lai (hybrid) của cả hai loại trên.
Nhiều công ty và nhà cung cấp dịch vụ Internet sử dụng máy chủ Linux như một
Internet gateway. Những máy chủ này thường phục vụ như máy chủ mail, web, ftp, hay
dialup. Hơn nữa, chúng cũng thường hoạt động như các firewal, thi hành các chính sách
kiểm soát giữa Internet và mạng của công ty. Khả năng uyển chuyển khiến cho Linux thu
hút như là một thay thế cho những hệ điều hành thương mại.
Tính năng firewal chuẩn được cung cấp sẵn trong kernel của Linux được xây dựng từ
hai thành phần : ipchains và IP Masquerading.
Linux IP Firewaling Chains là một cơ chế lọc gói tin IP. Những tính năng của IP
Chains cho phép cấu hình máy chủ Linux như một filtering gateway/firewal dễ dàng. Một
thành phần quan trọng khác của nó trong kernel là IP Masquerading, một tính năng
chuyển đổi địa chỉ mạng (network address translation- NAT) mà có thể che giấu các địa
chỉ IP thực của mạng bên trong. Để sử dụng ipchains, bạn cần thiết lập một tập các luật
mà qui định các kết nối được cho phép hay bị cấm.
Các nguyên tắc Ipchains Thực hiện các chức năng sau:
± Accept: The packet is okay; allow it to pass to the appropriate chain
Cho phép chuyển gói tin qua chain thích hợp
± Deny: The packet is not okay; silently drop it in the bit bucket. Không
đồng ý , bị rớt.
± Reject: The packet is not okay; but inform the sender of this fact via
an ICMP packet. Không đồng ý, nhưng sự việc của người gởiqua gói ICMP
± Masq: Used for IP masquerading (network address translation). Sử
dụng cho IP masquerading ( việc dịch địa chỉ mạng)
± Redirect: Send this packet to someone else for processing. Gởi gói tin
này đến một người khác để sử lý
± Return: Terminate the rule list. Hoàn thành danh sách các quy tắc.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 10
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Chú ý: Các gói Ipfw(ipfilters/iptable) dưới hệ điều hành BSD cung cấp hoạt động
tương tự Ipchains.
Ví dụ:
# Cho phép các kết nối web tới Web Server của bạn
/sbin/ipchains -A your_chains_rules -s 0.0.0.0/0 www -d 192.16.0.100 1024: -j ACCEPT
# Cho phép các kết nối từ bên trong tới các Web Server bên ngoài
/sbin/ipchains -A your_chains_rules -s 192.168.0.0/24 1024: -d 0.0.0.0/0 www -j
ACCEPT
# Từ chối truy cập tất cả các dịch vu khác
/sbin/ipchains -P your_chains_rules input DENY
Ngoài ra, bạn có thể dùng các sản phẩm firewal thương mại như Check Point FireWal-
1, Phoenix Adaptive Firewal, Gateway Guardian, XSentry Firewal, Raptor, ... hay rất
nhiều các phiên bản miễn phí, mã nguồn mở cho Linux như T.Rex Firewal, Dante, SINUS,
TIS Firewall Toolkit, ...
1.DÙNG CÔNG CỤ DÕ TÌM ĐỂ KHẢO SÁT HỆ THỐNG
Thâm nhập vào một hệ thống bất kỳ nào cũng cần có sự chuẩn bị. Hacker phải xác
định ra máy đích và tìm xem những port nào đang mở trước khi hệ thống có thể bị xâm
phạm. Quá trình này thường được thực hiện bởi các công cụ dò tìm (scanning tool), kỹ
thuật chính để tìm ra máy đích và các port đang mở trên đó. Dò tìm là bước đầu tiên
hacker sẽ sử dụng trước khi thực hiện tấn công. Bằng cách sử dụng các công cụ dò tìm
như Nmap, hacker có thể rà khắp các mạng để tìm ra các máy đích có thể bị tấn công.
Một khi xác định được các máy này, kẻ xâm nhập có thể dò tìm các port đang lắng nghe.
Nmap cũng sử dụng một số kỹ thuật cho phép xác định khá chính xác loại máy đang
kiểm tra.
Bằng cách sử dụng những công cụ của chính các hacker thường dùng, người quản trị
hệ thống có thể nhìn vào hệ thống của mình từ góc độ của các hacker và giúp tăng cường
tính an toàn của hệ thống. Có rất nhiều công cụ dò tìm có thể sử dụng như: Nmap,
strobe, sscan, SATAN, ...
Nmap
Là chữ viết tắt của "Network exploration tool and security scanner" . Đây là chương trình
quét hàng đầu với tốc độ cực nhanh và cực mạnh. Nó có thể quét trên mạng diện rộng và
đặc biệt tốt đối với mạng đơn lẻ. NMAP giúp bạn xem những dịch vụ nào đang chạy trên
server (services/ports:webserver,ftpserver,pop3,...), server đang dùng hệ điều hành gì,
loại tường lửa mà server sử dụng, ... và rất nhiều tính năng khác. Nói chung NMAP hỗ trợ
hầu hết các kỹ thuật quét như : ICMP (ping aweep), IP protocol, Null scan, TCP SYN (half
open), ... NMAP được đánh giá là công cụ hàng đầu của các Hacker cũng như các nhà
quản trị mạng trên thế giới.
Quét an toàn Nmap là một trong số công cụ quét an toàn được sử dụng rộng
rãi nhất sẵn có. Nmap là một cổng quét mà chống lại các nhân tố, các cách khác tàn
phá đến mạng của bạn. Nó có thể phát sinh ra nhiều kiểu gói mà thăm dò các ngăn
xếp TCP/IP trên những hệ thống của bạn.
Nmap có thể phát sinh ra một danh sách của những cổng mở dịch vụ trên hệ
thống của bạn,thâm nhập firewals, và cung cấp những tin quấy rầy, không tin cậy
đang chạy trên host của bạn. Nmap security có sẵn tại :
.Dưới đây là một ví dụ sử dụng Nmap:
# nmap -sS -O 192.168.1.200
Starting nmap V. 2.54 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on comet (192.168.1.200):
Port State Protocol Service
7 open tcp echo
19 open tcp chargen
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 11
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
21 open tcp ftp
...
TCP Sequence Prediction: Class=random positive increments
Difficulty=17818 (Worthy challenge)
Remote operating system guess: Linux 2.2.13
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
Tuy nhiên, sử dụng các công cụ này không thể thay thế cho một người quản trị có kiến
thức. Bởi vì việc dò tìm thường dự báo một cuộc tấn công, các site nên ưu tiên cho việc
theo dõi chúng. Với các công cụ dò tìm, các nhà quản trị hệ thống mạng có thể phát hiện
ra những gì mà các hacker có thể thấy khi dò trên hệ thống của mình.
2.PHÁT HIỆN SỰ XÂM NHẬP QUA MẠNG
Nếu hệ thống của bạn có kết nối vào internet, bạn có thể trở thành một mục tiêu bị dò
tìm các lỗ hổng về bảo mật. Mặc dù hệ thống của bạn có ghi nhận điều này hay không thì
vẫn không đủ để xác định và phát hiện việc dò tìm này. Một vấn đề cần quan tâm khác là
các cuộc tấn công gây ngừng dịch vụ (Denial of Services - DoS), làm thế nào để ngăn
ngừa, phát hiện và đối phó với chúng nếu bạn không muốn hệ thống của bạn ngưng trệ.
Hệ thống phát hiện xâm nhập qua mạng (Network Intrusion Detection System - NIDS)
theo dõi các thông tin truyền trên mạng và phát hiện nếu có hacker đang cố xâm nhập
vào hệ thống (hoặc gây gây ra một vụ tấn công DoS). Một ví dụ điển hình là hệ thống
theo dõi số lượng lớn các yêu cầu kết nối TCP đến nhiều port trên một máy nào đó, do
vậy có thể phát hiện ra nếu có ai đó đang thử một tác vụ dò tìm TCP port. Một NIDS có
thể chạy trên máy cần theo dõi hoặc trên một máy độc lập theo dõi toàn bộ thông tin
trên mạng.
Các công cụ có thể được kết hợp để tạo một hệ thống phát hiện xâm nhập qua mạng.
Chẳng hạn dùng tcpwrapper để điều khiển, ghi nhận các dịch vụ đã được đăng ký. Các
chương trình phân tích nhật ký hệ thống, như swatch, có thể dùng để xác định các tác vụ
dò tìm trên hệ thống. Và điều quan trọng nhất là các công cụ có thể phân tích các thông
tin trên mạng để phát hiện các tấn công DoS hoặc đánh cắp thông tin như tcpdump,
ethereal, ngrep, NFR (Network Flight Recorder), PortSentry, Sentinel, Snort, ...
Khi hiện thực một hệ thống phát hiện xâm nhập qua mạng bạn cần phải lưu tâm đến
hiệu suất của hệ thống cũng như các chính sách bảo đảm sự riêng tư.
3.KIỂM TRA KHẢ NĂNG BỊ XÂM NHẬP
Kiểm tra khả năng bị xâm nhập liên quan đến việc xác định và sắp xếp các lỗ hổng an
ninh trong hệ thống bằng cách dùng một số công cụ kiểm tra. Nhiều công cụ kiểm tra
cũng có khả năng khai thác một số lỗ hổng tìm thấy để làm rõ quá trình thâm nhập trái
phép sẽ được thực hiện như thế nào. Ví dụ, một lỗi tràn bộ đệm của chương trình phục vụ
dịch vụ FTP có thể dẫn đến việc thâm nhập vào hệ thống với quyền „root‟. Nếu người
quản trị mạng có kiến thức về kiểm tra khả năng bị xâm nhập trước khi nó xảy ra, họ có
thể tiến hành các tác vụ để nâng cao mức độ an ninh của hệ thống mạng.
Có rất nhiều các công cụ mạng mà bạn có thể sử dụng trong việc kiểm tra khả năng bị
xâm nhập. Hầu hết các quá trình kiểm tra đều dùng ít nhất một công cụ tự động phân
tích các lỗ hổng an ninh. Các công cụ này thăm dò hệ thống để xác định các dịch vụ hiện
có. Thông tin lấy từ các dịch vụ này sẽ được so sánh với cơ sở dữ liệu các lỗ hổng an ninh
đã được tìm thấy trước đó.
Các công cụ thường được sử dụng để thực hiện các kiểm tra loại này là ISS Scanner,
Cybercop, Retina, Nessus, cgiscan, CIS, ...
Kiểm tra khả năng bị xâm nhập cần được thực hiện bởi những người có trách nhiệm
một cách cẩn thận. Sự thiếu kiến thức và sử dụng sai cách có thể sẽ dẫn đến hậu quả
nghiêm trọng không thể lường trước được.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 12
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
4.ĐỐI PHÓ KHI HỆ THỐNG CỦA BẠN BỊ TẤN CÔNG
Gần đây, một loạt các vụ tấn công nhắm vào các site của những công ty lớn như
Yahoo!, Buy.com, E-Bay, Amazon và CNN Interactive gây ra những thiệt hại vô cùng
nghiêm trọng. Những tấn công này là dạng tấn công gây ngừng dịch vụ "Denial-Of-
Service" mà được thiết kế để làm ngưng hoạt động của một mạng máy tính hay một
website bằng cách gửi liên tục với số lượng lớn các dữ liệu tới mục tiêu tấn công khiến
cho hệ thống bị tấn công bị ngừng hoạt động, điều này tương tự như hàng trăm người
cùng gọi không ngừng tới 1 số điện thoại khiến nó liên tục bị bận.
Trong khi không thể nào tránh được mọi nguy hiểm từ các cuộc tấn công, chúng tôi
khuyên bạn một số bước mà bạn nên theo khi bạn phát hiện ra rằng hệ thống của bạn bị
tấn công. Chúng tôi cũng đưa ra một số cách để giúp bạn bảo đảm tính hiệu qủa của hệ
thống an ninh và những bước bạn nên làm để giảm rủi ro và có thể đối phó với những
cuộc tấn công.
Nếu phát hiện ra rằng hệ thống của bạn đang bị tấn công, hãy bình tĩnh. Sau
đây là những bước bạn nên làm:
x Tập hợp 1 nhóm để đối phó với sự tấn công:
o Nhóm này phải bao gồm những nhân viên kinh nghiệm, những người mà
có thể giúp hình thành một kế hoạch hành động đối phó với sự tấn công.
x Dựa theo chính sách và các quy trình thực hiện về an ninh của công ty, sử dụng
các bước thích hợp khi thông báo cho mọi người hay tổ chức về cuộc tấn công.
x Tìm sự giúp đỡ từ nhà cung cấp dịch vụ Internet và cơ quan phụ trách về an ninh
máy tính:
o Liên hệ nhà cung cấp dịch vụ Internet của bạn để thông báo về cuộc tấn
công. Có thể nhà cung cấp dịch vụ Internet của bạn sẽ chặn đứng được cuộc tấn công.
o Liên hệ cơ quan phụ trách về an ninh máy tính để thông báo về cuộc tấn
công
x Tạm thời dùng phương thức truyền thông khác (chẳng hạn như qua điện thoại)
khi trao đổi thông tin để đảm bo rằng kẻ xâm nhập không thể chặn và lấy được thông tin.
x Ghi lại tất cả các hoạt động của bạn (chẳng hạn như gọi điện thoại, thay đổi file,
...)
x Theo dõi các hệ thống quan trọng trong qúa trình bị tấn công bằng các phần mềm
hay dịch vụ phát hiện sự xâm nhập (intrusion detection software/services). Điều này có
thể giúp làm giảm nhẹ sự tấn công cũng như phát hiện những dấu hiệu của sự tấn công
thực sự hay chỉ là sự quấy rối nhằm đánh lạc hướng sự chú ý của bạn(chẳng hạn một tấn
công DoS với dụng ý làm sao lãng sự chú ý của bạn trong khi thực sự đây là một cuộc tấn
công nhằm xâm nhập vào hệ thống của bạn). Sao chép lại tất cả các files mà kẻ xâm
nhập để lại hay thay đổi (như những đoạn mã chương trình, log file, ...)
x Liên hệ nhà chức trách để báo cáo về vụ tấn công.
Những bước bạn nên làm để giảm rủi ro và đối phó với sự tấn công trong tương
lai :
o Xây dựng và trao quyền cho nhóm đối phó với sự tấn công
o Thi hành kiểm tra an ninh và đánh giá mức độ rủi ro của hệ thống
o Cài đặt các phần mềm an toàn hệ thống phù hợp để giảm bớt rủi ro
o Nâng cao khả năng của mình về an toàn máy tính
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 13
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Các bước kiểm tra để giúp bạn bảo đảm tính hiệu quả của hệ thống an ninh
o Kiểm tra hệ thống an ninh mới cài đặt : chắc chắn tính đúng đắn của chính sách
an ninh hiện có và cấu hình chuẩn của hệ thống.
o Kiểm tra tự động thường xuyên : để khám phá sự “viếng thăm” của những hacker
hay những hành động sai trái của nhân viên trong công ty.
o Kiểm tra ngẫu nhiên: để kiểm tra chính sách an ninh và những tiêu chuẩn, hoặc
kiểm tra sự hiện hữu của những lỗ hổng đã được phát hiện (chẳng hạn những lỗi được
thông báo từ nhà cung cấp phần mềm)
o Kiểm tra hằng đêm những file quan trọng: để đánh giá sự toàn vẹn của những file
và cơ sở dữ liệu quan trọng
o Kiểm tra các tài khoản người dùng: để phát hiện các tài khoản không sử dụng,
không tồn tại, ...
o Kiểm tra định kỳ để xác định trạng thái hiện tại của hệ thống an ninh của bạn
Thiết lập tường lửa Iptables cho Linux
Cấu hình Tables
Việc cài đặt Iptables là một phần trong việc cài đặt Red Hat ban đầu. Nguyên
bản khởi tạo tìm kiếm sự tồn tại của file Iptables, rules/etc/sysconfig/iptables, Và
nếu chúng đã tồn tại iptables khởi động với cầu hình đã được chỉ rõ. Một khi server
này là gởi mail và nhận mail, cấu hình Iptables nên cho phép những kết nối từ đầu
vào sendmail đến bất kỳ nơi đâu. Người quản trị hệ thống sẽ chỉ sử dụng shh từ bên
trong các máy, đặc biệt là MIS. Iptables rules sẽ cài đặt để cho phép các kết nối shh
từ 2 MIS. Ping ICMP sẽ cho phép bất kỳ đâu. Không có công nào khác cho phép kết
nối đến người phục vụ này. Đây là mức bổ sung cho việc phòng thủ của server trong
trường hợp Firewal được thoã hiệp. Thêm vào đó là việc bảo vệ cho ssh sẽ được
cung cấp bởi cấu hình các gói tcp bên dưới.
Những quy tắc để thực hiện cấu hình Iptables như sau:
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(1)
/sbin/iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT(2)
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT(3)
/sbin/iptables -A INPUT -p tcp --dport 22 -s 10.100.200.0/24 -j ACCEPT(4)
/sbin/iptables -A INPUT -p tcp --dport 22 -s 10.100.201.0/24 -j ACCEPT(5)
/sbin/iptables -A INPUT -p udp --sport 53 -s 10.100.50.50 -j ACCEPT(6)
/sbin/iptables -A INPUT -p udp -sport 53 -s 10.100.42.42 -j ACCEPT(7)
/sbin/iptables -A INPUT -j LOG(8)
/sbin/iptables -P INPUT DROP(9)
(1) Cho phép những kết nối liên quan và đã thiết lập đến server
(2) Cho phép các host khác ping đến server sendmaid
(3) Cho phép kết nối SMTP đến server
(4), (5) Cho phép kết nối ssh từ 2 MÍ (subnets)
(6), (7) Cho phép người phục vụ tên DNS cho box sendmaid để cung cấp giải pháp
DNS. Nếu bạn có hơn một domain – DNS, thì thêm một dòng cho mỗi DNS.
(8) log bất kỳ kết nối nào cố gắng mà nó không đặc biệt cho phép
(9) Cài dặt chính sách mặc định cho bảng INPUT to DROP
Tất cả các kết nối đặc biệt không cho phép sẽ bị rớt. Chương trình losentry sẽ được
cấu hình để định rằng bất kỳ dòng nào log cũng như sự xâm phạm an toàn. Để giữ
được cấu hình qua reboot, ta phải chạy Iptables- Save. Chạy lệnh như sau:
/sbin/iptables-save > /etc/sysconfig/iptables
Khi hệ thống khởi động lên, file Iptables sẽ được đọc và cấu hình hiệu dụng.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 14
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miễn phí và có sẵn trên
Linux.. Netfilter/Iptables gồm 2 phần là Netfilter ở trong nhân Linux và Iptables nằm
ngoài nhân. Iptables chịu trách nhiệm giao tiếp giữa người dùng và Netfilter để đẩy các
luật của người dùng vào cho Netfiler xử lí. Netfilter tiến hành lọc các gói dữ liệu ở mức
IP. Netfilter làm việc trực tiếp trong nhân, nhanh và không làm giảm tốc độ của hệ thống.
Cách đổi địa chỉ IP động (dynamic NAT)
Trước khi đi vào phần chính, mình cần giới thiệu với các bạn về công nghệ đổi địa chỉ NAT
động và đóng giả IP Masquerade. Hai từ này được dùng rất nhiều trong Iptables nên bạn
phải biết. Nếu bạn đã biết NAT động và Masquerade, bạn có thể bỏ qua phần này.
NAT động là một trong những kĩ thuật chuyển đổi địa chỉ IP NAT (Network Address
Translation). Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau:
NAT Router đảm nhận việc chuyển dãy IP nội bộ 169.168.0.x sang dãy IP mới
203.162.2.x. Khi có gói liệu với IP nguồn là 192.168.0.200 đến router, router sẽ đổi IP
nguồn thành 203.162.2.200 sau đó mới gởi ra ngoài. Quá trình này gọi là SNAT (Source-
NAT, NAT nguồn). Router lưu dữ liệu trong một bảng gọi là bảng NAT động. Ngược lại, khi
có một gói từ liệu từ gởi từ ngoài vào với IP đích là 203.162.2.200, router sẽ căn cứ vào
bảng NAT động hiện tại để đổi địa chỉ đích 203.162.2.200 thành địa chỉ đích mới là
192.168.0.200. Quá trình này gọi là DNAT (Destination-NAT, NAT đích). Liên lạc giữa
192.168.0.200 và 203.162.2.200 là hoàn toàn trong suốt (transparent) qua NAT router.
NAT router tiến hành chuyển tiếp (forward) gói dữ liệu từ 192.168.0.200 đến
203.162.2.200 và ngược lại.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 15
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Cách đóng giả địa chỉ IP (masquerade)
Đây là một kĩ thuật khác trong NAT.
NAT Router chuyển dãy IP nội bộ 192.168.0.x sang một IP duy nhất là 203.162.2.4
bằng cách dùng các số hiệu cổng (port-number) khác nhau. Chẳng hạn khi có gói dữ liệu
IP với nguồn 192.168.0.168:1204, đích 211.200.51.15:80 đến router, router sẽ đổi
nguồn thành 203.162.2.4:26314 và lưu dữ liệu này vào một bảng gọi là bảng
masquerade động. Khi có một gói dữ liệu từ ngoài vào với nguồn là 221.200.51.15:80,
đích 203.162.2.4:26314 đến router, router sẽ căn cứ vào bảng masquerade động hiện tại
để đổi đích từ 203.162.2.4:26314 thành 192.168.0.164:1204. Liên lạc giữa các máy
trong mạng LAN với máy khác bên ngoài hoàn toàn trong suốt qua router
Cấu trúc của Iptables
Iptables được chia làm 4 bảng (table): bảng filter dùng để lọc gói dữ liệu, bảng nat
dùng để thao tác với các gói dữ liệu được NAT nguồn hay NAT đích, bảng mangle dùng để
thay đổi các thông số trong gói IP và bảng conntrack dùng để theo dõi các kết nối. Mỗi
table gồm nhiều mắc xích (chain). Chain gồm nhiều luật (rule) để thao tác với các gói dữ
liệu. Rule có thể là ACCEPT (chấp nhận gói dữ liệu), DROP (thả gói), REJECT (loại bỏ gói)
hoặc tham chiếu (reference) đến một chain khác.
Quá trình chuyển gói dữ liệu qua Netfilter
Gói dữ liệu (packet) chạy trên chạy trên cáp, sau đó đi vào card mạng (chẳng hạn như
eth0). Đầu tiên packet sẽ qua chain PREROUTING (trước khi định tuyến). Tại đây, packet
có thể bị thay đổi thông số (mangle) hoặc bị đổi địa chỉ IP đích (DNAT). Đối với packet đi
vào máy, nó sẽ qua chain INPUT. Tại chain INPUT, packet có thể được chấp nhận hoặc bị
hủy bỏ. Tiếp theo packet sẽ được chuyển lên cho các ứng dụng (client/server) xử lí và
tiếp theo là được chuyển ra chain OUTPUT. Tại chain OUTPUT, packet có thể bị thay đổi
các thông số và bị lọc chấp nhận ra hay bị hủy bỏ. Đối với packet forward qua máy,
packet sau khi rời chain PREROUTING sẽ qua chain FORWARD. Tại chain FORWARD, nó
cũng bị lọc ACCEPT hoặc DENY. Packet sau khi qua chain FORWARD hoặc chain OUTPUT
sẽ đến chain POSTROUTING (sau khi định tuyến). Tại chain POSTROUTING, packet có thể
được đổi địa chỉ IP nguồn (SNAT) hoặc MASQUERADE. Packet sau khi ra card mạng sẽ
được chuyển lên cáp để đi đến máy tính khác trên mạng.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 16
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Các tham số dòng lệnh thường gặp của Iptables
1. Gọi trợ giúp
Để gọi trợ giúp về Iptables, bạn gõ lệnh $ man iptables hoặc $ iptables --help. Chẳng hạn
nếu bạn cần biết về các tùy chọn của match limit, bạn gõ lệnh $ iptables -m limit --help.
2. Các tùy chọn để chỉ định thông số
- chỉ định tên table: -t , ví dụ -t filter, -t nat, .. nếu không chỉ định table, giá
trị mặc định là filter
- chỉ đinh loại giao thức: -p , ví dụ -p tcp, -p udp hoặc -p ! udp để chỉ
định các giao thức không phải là udp
- chỉ định card mạng vào: -i , ví dụ: -i eth0, -i lo
- chỉ định card mạng ra: -o , ví dụ: -o eth0, -o pp0
- chỉ định địa chỉ IP nguồn: -s , ví dụ: -s 192.168.0.0/24 (mạng
192.168.0 với 24 bít mạng), -s 192.168.0.1-192.168.0.3 (các IP 192.168.0.1,
192.168.0.2, 192.168.0.3).
- chỉ định địa chỉ IP đích: -d , tương tự như -s
- chỉ định cổng nguồn: --sport , ví dụ: --sport 21 (cổng 21), --sport 22:88
(các cổng 22 .. 88), --sport :80 (các cổng =22)
- chỉ định cổng đích: --dport , tương tự như --sport
3. Các tùy chọn để thao tác với chain
- tạo chain mới: iptables -N
- xóa hết các luật đã tạo trong chain: iptables -X
- đặt chính sách cho các chain `built-in` (INPUT, OUTPUT & FORWARD): iptables -P
, ví dụ: iptables -P INPUT
ACCEPT để chấp nhận các packet vào chain INPUT
- liệt kê các luật có trong chain: iptables -L
- xóa các luật có trong chain (flush chain): iptables -F
- reset bộ đếm packet về 0: iptables -Z
4. Các tùy chọn để thao tác với luật
- thêm luật: -A (append)
- xóa luật: -D (delete)
- thay thế luật: -R (replace)
- chèn thêm luật: -I (insert)
Mình sẽ cho ví dụ minh họa về các tùy chọn này ở phần sau.
Phân biệt giữa ACCEPT, DROP và REJECT packet
- ACCEPT: chấp nhận packet
- DROP: thả packet (không hồi âm cho client)
- REJECT: loại bỏ packet (hồi âm cho client bằng một packet khác)
Ví dụ:
# iptables -A INPUT -i eth0 --dport 80 -j ACCEPT chấp nhận các packet vào cổng 80 trên
card mạng eth0
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 17
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
# iptables -A INPUT -i eth0 -p tcp --dport 23 -j DROP thả các packet đến cổng 23 dùng
giao thức TCP trên card mạng eth0
# iptables -A INPUT -i eth1 -s ! 10.0.0.1-10.0.0.5 --dport 22 -j REJECT --reject-with tcp-
reset gởi gói TCP với cờ RST=1 cho các kết nối không đến từ dãy địa chỉ IP 10.0.0.1..5
trên cổng 22, card mạng eth1
# iptables -A INPUT -p udp --dport 139 -j REJECT --reject-with icmp-port-unreachable
gởi gói ICMP `port-unreachable` cho các kết nối đến cổng 139, dùng giao thức UDP
Phân biệt giữa NEW, ESTABLISHED và RELATED
- NEW: mở kết nối mới
- ESTABLISHED: đã thiết lập kết nối
- RELATED: mở một kết nối mới trong kết nối hiện tại
Ví dụ:
# iptables -P INPUT DROP đặt chính sách cho chain INPUT là DROP
# iptables -A INPUT -p tcp --syn -m state --state NEW -j ACCEPT chỉ chấp nhận các gói
TCP mở kết nối đã set cờ SYN=1
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT không đóng các
kết nối đang được thiết lập,đồng thời cũng cho phép mở các kết nối mới trong kết nối
được thiết lập
# iptables -A INPUT -p tcp -j DROP các gói TCP còn lại đều bị DROP
Tùy chọn --limit, --limit-burst
--limit-burst: mức đỉnh, tính bằng số packet
--limit: tốc độ khi chạm mức đỉnh, tính bằng số packet/s(giây), m(phút), d(giờ) hoặc
h(ngày)
Mình lấy ví dụ cụ thể để bạn dễ hiểu:
# iptables -N test
# iptables -A test -m limit --limit-burst 5 --limit 2/m -j RETURN
# iptables -A test -j DROP
# iptables -A INPUT -i lo -p icmp --icmp-type echo-request -j test
Đầu tiên lệnh iptables -N test để tạo một chain mới tên là test (table mặc định là
filter). Tùy chọn -A test (append) để thêm luật mới vào chain test. Đối với chain test,
mình giới hạn limit-burst ở mức 5 gói, limit là 2 gói/phút, nếu thỏa luật sẽ trở về
(RETURN) còn không sẽ bị DROP. Sau đó mình nối thêm chain test vào chain INPUT với
tùy chọn card mạng vào là lo, giao thức icmp, loại icmp là echo-request. Luật này sẽ giới
hạn các gói PING tới lo là 2 gói/phút sau khi đã đạt tới 5 gói.Bạn thử ping đến localhost
xem sao?
$ ping -c 10 localhost
Chỉ 5 gói đầu trong phút đầu tiên được chấp nhận, thỏa luật RETURN đó. Bây giờ đã đạt
đến mức đỉnh là 5 gói, lập tức Iptables sẽ giới hạn PING tới lo là 2 gói trên mỗi phút bất
chấp có bao nhiêu gói được PING tới lo đi nữa. Nếu trong phút tới không có gói nào PING
tới, Iptables sẽ giảm limit đi 2 gói tức là tốc độ đang là 2 gói/phút sẽ tăng lên 4 gói/phút.
Nếu trong phút nữa không có gói đến, limit sẽ giảm đi 2 nữa là trở về lại trạng thái cũ
chưa đạt đến mức đỉnh 5 gói. Quá trình cứ tiếp tục như vậy. Bạn chỉ cần nhớ đơn giản là
khi đã đạt tới mức đỉnh, tốc độ sẽ bị giới hạn bởi tham số--limit. Nếu trong một đơn vị
thời gian tới không có gói đến, tốc độ sẽ tăng lên đúng bằng --limit đến khi trở lại trạng
thái chưa đạt mức --limit-burst thì thôi.
Để xem các luật trong Iptables bạn gõ lệnh $ iptables -L -nv (-L tất cả các luật trong tất
cả các chain, table mặc định là filter, -n liệt kê ở dạng số, v để xem chi tiết)
# iptables -L -nv
Chain INPUT (policy ACCEPT 10 packets, 840 bytes)
pkts bytes target prot opt in out source destination
10 840 test icmp -- lo * 0.0.0.0/0 0.0.0.0/0 icmp type 8
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 18
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 15 packets, 1260 bytes)
pkts bytes target prot opt in out source destination
Chain test (1 references)
pkts bytes target prot opt in out source destination
5 420 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 2/min burst 5
5 420 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
# iptables -Z reset counter
# iptables -F flush luật
# iptables -X xóa chain đã tạo
Redirect cổng
Iptables hổ trợ tùy chọn -j REDIRECT cho phép bạn đổi hướng cổng một cách dễ dàng. Ví
dụ như SQUID đang listen trên cổng 3128/tcp. Để redirect cổng 80 đến cổng 3128 này
bạn làm như sau:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
Lưu ý: tùy chọn -j REDIRECT cho có trong chain PREROUTING
SNAT & MASQUERADE
Để tạo kết nối `transparent` giữa mạng LAN 192.168.0.1 với Internet bạn lập cấu hình
cho tường lửa Iptables như sau:
# echo 1 > /proc/sys/net/ipv4/ip_forward cho phép forward các packet qua máy chủ đặt
Iptables
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 210.40.2.71 đổi IP nguồn
cho các packet ra card mạng eth0 là 210.40.2.71. Khi nhận được packet vào từ Internet,
Iptables sẽ tự động đổi IP đích 210.40.2.71 thành IP đích tương ứng của máy tính trong
mạng LAN 192.168.0/24.
Hoặc bạn có thể dùng MASQUERADE thay cho SNAT như sau:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(MASQUERADE thường được dùng khi kết nối đến Internet là pp0 và dùng địa chỉ IP
động)
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 19
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
DNAT
Giả sử bạn đặt các máy chủ Proxy, Mail và DNS trong mạng DMZ. Để tạo kết nối trong
suốt từ Internet vào các máy chủ này bạn là như sau:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination
192.168.1.2
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination
192.168.1.3
# iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination
192.168.1.4
Lập cấu hình Iptables cho máy chủ phục vụ Web
Phần này mình sẽ trình bày qua ví dụ cụ thể và chỉ hướng dẫn các bạn lọc packet vào. Các packet
f`orward` và 'output' bạn tự làm nha. Giả sử như máy chủ phục vụ Web kết nối mạng trực tiếp vào
Internet qua card mạng eth0, địa chỉ IP là 1.2.3.4. Bạn cần lập cấu hình tường lửa cho Iptables đáp
ứng các yêu cầu sau:
- cổng TCP 80 (chạy apache) mở cho mọi người truy cập web
- cổng 21 (chạy proftpd) chỉ mở cho webmaster (dùng để upload file lên public_html)
- cổng 22 (chạy openssh) chỉ mở cho admin (cung cấp shel `root` cho admin để nâng cấp & patch lỗi
cho server khi cần)
- cổng UDP 53 (chạy tinydns) để phục vụ tên miền (đây chỉ là ví dụ)
- chỉ chấp nhận ICMP PING tới với code=0x08, các loại packet còn lại đều bị từ chối.
Bước 1: thiết lập các tham số cho nhân
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_route
tcp_syncookies=1 bật chức năng chống DoS SYN qua syncookie của Linux
tcp_fin_timeout=10 đặt thời gian timeout cho quá trình đóng kết nối TCP là 10 giây
tcp_keepalive_time=1800 đặt thời gian giữ kết nối TCP là 1800 giây
...
Các tham số khác bạn có thể xem chi tiết trong tài liệu đi kèm của nhân Linux.
Bước 2: nạp các môđun cần thiết cho Iptables
Để sử dụng Iptables, bạn cần phải nạp trước các môđun cần thiết. Ví dụ nếu bạn muốn
dùng chức năng LOG trong Iptables, bạn phải nạp môđun ipt_LOG vào trước bằng lệnh #
modprobe ipt_LOG.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 20
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
MODULES="ip_tables iptable_filter ipt_LOG ipt_limit ipt_REJECT ipt_state
for i in $MODULES; do
/sbin/modprobe $MODULES
done
Bước 3: nguyên tắc đặt luật là "drop trước, accept sau"
Đây là nguyên tắc mà bạn nên tuân theo. Đầu tiên hãy đóng hết các cổng, sau đó mở
dần cách cổng cần thiết. Cách này tránh cho bạn gặp sai sót trong khi đặt luật cho
Iptables.
iptables -P INPUT DROP thả packet trước
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT giữ các kết nối hiện
tại và chấp nhận các kết nối có liên quan
iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT chấp nhận các gói vào looback từ IP
127.0.0.1
iptables -A INPUT -i lo -s 1.2.3.4 -j ACCEPT và 1.2.3.4
BANNED_IP="10.0.0.0/8 192.168.0.0/16 172.16.0.0/12 224.0.0.0/4 240.0.0.0/5"
for i in $BANNED_IP; do
iptables -A INPUT -i eth0 -s $i -j DROP thả các gói dữ liệu đến từ các IP nằm trong
danh sách cấm BANNER_IP
done
Bước 4: lọc ICMP vào và chặn ngập lụt PING
LOG của Iptables sẽ được ghi vào file /var/log/firewal.log. Bạn phải sửa lại cấu hình cho
SYSLOG như sau:
# vi /etc/syslog.conf
kern.=debug /var/log/firewall.log
# /etc/rc.d/init.d/syslogd restart
Đối với các gói ICMP đến, chúng ta sẽ đẩy qua chain CHECK_PINGFLOOD để kiểm tra
xem hiện tại đang bị ngập lụt PING hay không, sau đó mới cho phép gói vào. Nếu đang bị
ngập lụt PING, môđun LOG sẽ tiến hành ghi nhật kí ở mức giới hạn --limit $LOG_LIMIT và
--limit-burst $LOG_LIMIT_BURST, các gói PING ngập lụt sẽ bị thả hết.
LOG_LEVEL="debug"
LOG_LIMIT=3/m
LOG_LIMIT_BURST=1
PING_LIMIT=500/s
PING_LIMIT_BURST=100
iptables -A CHECK_PINGFLOOD -m limit --limit $PING_LIMIT --limit-burst
$PING_LIMIT_BURST -j RETURN
iptables -A CHECK_PINGFLOOD -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=PINGFLOOD:warning
a=DROP "
iptables -A CHECK_PINGFLOOD -j DROP
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j CHECK_PINGFLOOD
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
Bước 5: reject quét cổng TCP và UDP
Ở đây bạn tạo sẵn chain reject quét cổng, chúng ta sẽ đẩy vào chain INPUT sau. Đối
với gói TCP, chúng ta reject bằng gói TCP với cờ SYN=1 còn đối với gói UDP, chúng ta sẽ
reject bằng gói ICMP `port-unreachable`
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 21
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
iptables-N REJECT_PORTSCAN
iptables-A REJECT_PORTSCAN -p tcp -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=PORTSCAN:tcp
a=REJECT "
iptables-A REJECT_PORTSCAN -p udp -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=PORTSCAN:udp
a=REJECT "
iptables-A REJECT_PORTSCAN -p tcp -j REJECT --reject-with tcp-reset
iptables-A REJECT_PORTSCAN -p udp -j REJECT --reject-with icmp-port-unreachable
Bước 6: phát hiện quét cổng bằng Nmap
iptables-N DETECT_NMAP
iptables-A DETECT_NMAP -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit $LOG_LIMIT
--limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=NMAP:XMAS a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit
$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=NMAP:XMAS-PSH a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags ALL ALL -m limit --limit $LOG_LIMIT --limit-
burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:XMAS-
ALL a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags ALL FIN -m limit --limit $LOG_LIMIT --limit-
burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:FIN
a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit
$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=NMAP:SYN-RST a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit $LOG_LIMIT
--limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=NMAP:SYN-FIN a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags ALL NONE -m limit --limit $LOG_LIMIT --
limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=NMAP:NULL a=DROP "
iptables-A DETECT_NMAP -j DROP
iptables-A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DETECT_NMAP
Đối với các gói TCP đến eth0 mở kết nối nhưng không đặt SYN=1 chúng ta sẽ chuyển
sang chain DETECT_NMAP. Đây là những gói không hợp lệ và hầu như là quét cổng bằng
nmap hoặc kênh ngầm. Chain DETECT_NMAP sẽ phát hiện ra hầu hết các kiểu quét của
Nmap và tiến hành ghi nhật kí ở mức --limit $LOG_LIMIT và --limit-burst
$LOG_LIMIT_BURST. Ví dụ để kiểm tra quét XMAS, bạn dùng tùy chọn --tcp-flags ALL
FIN,URG,PSH nghĩa là 3 cờ FIN, URG và PSH được bật, các cờ khác đều bị tắt. Các gói
qua chain DETECT_NMAP sau đó sẽ bị DROP hết.
Bước 7: chặn ngập lụt SYN
Gói mở TCP với cờ SYN được set 1 là hợp lệ nhưng không ngoại trừ khả năng là các
gói SYN dùng để ngập lụt. Vì vậy, ở dây bạn đẩy các gói SYN còn lại qua chain
CHECK_SYNFLOOD để kiểm tra ngập lụt SYN như sau:
iptables-N CHECK_SYNFLOOD
iptables-A CHECK_SYNFLOOD -m limit --limit $SYN_LIMIT --limit-burst
$SYN_LIMIT_BURST -j RETURN
iptables-A CHECK_SYNFLOOD -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=SYNFLOOD:warning a=DROP "
iptables-A CHECK_SYNFLOOD -j DROP
iptables-A INPUT -i eth0 -p tcp --syn -j CHECK_SYNFLOOD
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 22
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Bước 8: giới hạn truy cập SSH cho admin
SSH_IP="1.1.1.1"
iptables -N SSH_ACCEPT
iptables -A SSH_ACCEPT -m state --state NEW -j LOG --log-level $LOG_LEVEL --log-
prefix "fp=SSH:admin a=ACCEPT "
iptables -A SSH_ACCEPT -j ACCEPT
iptables -N SSH_DENIED
iptables -A SSH_DENIED -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=SSH:attempt
a=REJECT "
iptables -A SSH_DENIED -p tcp -j REJECT --reject-with tcp-reset
for i in $SSH_IP; do
iptables -A INPUT -i eth0 -p tcp -s $i --dport 22 -j SSH_ACCEPT
done
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -j SSH_DENIED
Bước 9: giới hạn FTP cho web-master
FTP_IP="2.2.2.2"
iptables -N FTP_ACCEPT
iptables -A FTP_ACCEPT -m state --state NEW -j LOG --log-level $LOG_LEVEL --log-
prefix "fp=FTP:webmaster a=ACCEPT "
iptables -A FTP_ACCEPT -j ACCEPT
iptables -N FTP_DENIED
iptables -A FTP_DENIED -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=FTP:attempt
a=REJECT "
iptables -A FTP_DENIED -p tcp -j REJECT --reject-with tcp-reset
for i in $FTP_IP; do
iptables -A INPUT -i eth0 -p tcp -s $i --dport 21 -j FTP_ACCEPT
done
iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW -j FTP_DENIED
Bước 10: lọc TCP vào
iptables -N TCP_INCOMING
iptables -A TCP_INCOMING -p tcp --dport 80 -j ACCEPT
iptables -A TCP_INCOMING -p tcp -j REJECT_PORTSCAN
iptables -A INPUT -i eth0 -p tcp -j TCP_INCOMING
Bước 11: lọc UDP vào và chặn ngập lụt UDP
iptables -N CHECK_UDPFLOOD
iptables -A CHECK_UDPFLOOD -m limit --limit $UDP_LIMIT --limit-burst
$UDP_LIMIT_BURST -j RETURN
iptables -A CHECK_UDPFLOOD -m limit --limit $LOG_LIMIT --limit-burst
$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=UDPFLOOD:warning a=DROP "
iptables -A CHECK_UDPFLOOD -j DROP
iptables -A INPUT -i eth0 -p udp -j CHECK_UDPFLOOD
iptables -N UDP_INCOMING
iptables -A UDP_INCOMING -p udp --dport 53 -j ACCEPT
iptables -A UDP_INCOMING -p udp -j REJECT_PORTSCAN
iptables -A INPUT -i eth0 -p udp -j UDP_INCOMING
Để hạn chế khả năng bị DoS và tăng cường tốc độ cho máy chủ phục vụ web,
bạn có thể dùng cách tải cân bằng (load-balacing) như sau:
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 23
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Cách 1: chạy nhiều máy chủ phục vụ web trên các địa chỉ IP Internet khác nhau.
Ví dụ, ngoài máy chủ phục vụ web hiện tại 1.2.3.4, bạn có thể đầu tư thêm các máy
chủ phục vụ web mới 1.2.3.2, 1.2.3.3, 1.2.3.4, 1.2.3.5. Điểm yếu của cách này là
tốn nhiều địa chỉ IP Internet.
Cách 2: đặt các máy chủ phục vụ web trong một mạng DMZ. Cách này tiết kiệm
được nhiều địa chỉ IP nhưng bù lại bạn gateway Iptables 1.2.3.4 - 192.168.0.254 có
thể load nặng hơn trước và yêu cầu bạn đầu tư tiền cho đường truyền mạng từ
gateway ra Internet.
Bạn dùng DNAT trên gateway 1.2.3.4 để chuyển tiếp các gói dữ liệu từ client đến
một trong các máy chủ phục vụ web trong mạng DMZ hoặc mạng LAN như sau:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-
destination 192.168.0.1-192.168.0.4
IV. Xây dựng hệ thống mạng Linux
Hướng dẫn cài đặt Linux
1.Tạo đĩa boot và tiến trinh boot
Điều đầu tiên cần làm là tạo một đĩa mềm cài đặt cũng được hiểu như đĩa khởi
động . Nếu máy tính của bạn có hỗ trợ boot trực tiếp từ CD ROM thì bạn có thể đi
tiếp dến bước hai ,còn không bạn có thể boot từ đĩa mềm ,bằng cách tạo ra nó như
sau :
Bước 1:
Trước khi tạo đĩa boot , đĩa CD-ROM Red Hat Linux vào trong ổ CD trên máy tính
của bạn đang chạy hệ thống windows . Mở Command Prompt dưới windows .
C:\d:
D:\ cd \ dosutils
D:\ cd \ dosutils> rawrite
Enter disk image source file name :..\images \boot .img
Enter target diskette drive : a:
Please insert a formatted diskette into A drive; nad press Enter
D:\dosutils>
Chương trình rawrite.exe hỏi tên tập tin của disk image (ảnh đĩa):Gỏ vào
boot.img và đưa đĩa mềm vào đĩa A .Sau đó sẽ hỏi đĩa nào sẽ được ghi vào ,gõ
vàp a: bạn dã hoàn thành bước này và bạn có một đĩa mềm với tên là “ Red Hat
boot disk”
Bước 2 : Đưa đĩa boot vào trong đĩa A trên muốn cài đặt Red Hat Linux và khởi
động máy ,sau đó làm các bước sau :
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 24
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
x Chọn ngôn ngữ .
x Chọn kiểu bàn phím
x Chọn kiểu chuột .
Các cách cài đặt và phương pháp của chúng
Red Hat Linux 6.1 và 6.2 có 4 lớp càu đặt khác nhau là;
GNOME Workstation
KDE Workstation
Server
Custom
Cả 3 cách cài đặt trên đều cho bạn sự lựa chọn đơn giản của tiến trình cài đặt , ở đó
máy tính tự động làm hết mọi thứ và bạn mất đi đáng kể tính linh hoạt trong việc
cấu hình mà chúng ta không nên bỏ qua và sẽ đề cập chi tiết trong những bước tiếp
theo . Vì lý do trên mà chúng ta nên cài đặt custom .Cách này cho phép bạn chọn
những dịch vụ nào sẽ được thêm vào và làm thế ào để phân hoạch hệ thống .
Cài đặt đĩa (Disk setup)
Chúng ta giả sữ bạn đang cài đặc server Linux mới trên một ổ đĩa mới không
có hệ điều nào được cìa đặt trước đó .Một chiến lược phân hoạch tốt là tạo từng
partion riêng lẻ cho mỗi hệ thống tập tin chính .Việc này làm tăng khả năng bảo mật
và ngăn chận tấn công hoặc khai thác của những chương trình SUID.
Bước 1:
Để đạt hiệu quả cao , ổn định và an toàn bạn nên tạo các partition như những
partition được liệt kê dưới đây trên máy tính của bạn .Chúng tôi cũng giả sử rằng
thực tế bạn ổ cứng từ 3.2 GB trở lên để phân hoạch và dĩ nhiên bạn chọn kích thước
partition tuỳ theo nhu cầu cần.
Những partition bạn phải tạo trên hệ thống của bạn :
/boot 5MB Tất cả các kernel images thì được lưu giử ở đây .
/usr 512MB Partition này cần phải lớn trước khi tất cả các chương
trình ở dạng binary được cài đặt ở đây .
/home 1146MB Cân đối số người sử dụng bạn có ý định tạo ra trên
máy này.Ví dụ 10MB/người như vậy với 114 người
cần 1140MB.
/chroot 256MB Nếu bạn không muốn cài đặt trong môi trường không
tự do chẳng hạn như DNS tức alf môi trường chỉ có
root mới có quyền thực thi .
/cache 256MB Đây là partition lưu trữ của proxy server(VD Squid)
/var 256MB Chứa đựng những tập tin thay đổi khi hệ thống chạy
bình thường (VD các tập tin log)
128MB Đây là Swap partition được coi như bộ nhớ ảo của hệ
thống ,bạn nên chia kích thước của partition này lớn
hơn hoặc bằng dung lượng Ram hiện có trên máy của
bạn
/tmp 256MB Partition chứa những tập tin tạm thời
/ 256MB Root partition của chúng ta .
Chúng ta có thể tạo nên hai partition đặc biệt là ”/chroot” và “/cache”, partition
/chroot có thể được sử dụng cho DNS server , Apache server và những chương trình
khác theo dạng như DNS và Apache .Partition /cache có thể được sử dụng cho Squid
proxy server .Nếu bạn không có ý định cài đặt Squid proxy server thì bạn không cần
tạo partition /cache.
Đặt /tmp và /home trên các partition riêng biệt thì rất hay và có tính chất bắt
buột nếu người sử dụng cío shel truy cập tới server (sự bảo vệ chống lại những
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 25
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
chương trình SUID) ,ngăn chặn chương trình này vào những partition riêng lẻ và
ngăn cản người sử dụng làm suy yếu hoạt động của bất kỳ hệ thống nào trên server.
Đặt /var và /usr trên các partition riêng lẻ cũng là một ý rất hay vì cách ly partition
/var sẽ làm partition root của bạn không bị tràn đầy .
Trong cấu hình partition chúng ta sẽ dành riêng 256MB đĩa trống cho những
chương trình chuyển đổi root (chrooted program) giống Apache,DNS và những
chương trình khác .Việc này cần thiết vì những tập tài liệu gốc ,những tập tin nhị
phân ,những chương trình liên quan tới Apache sẽ được cìa đặt trong partition này
nếu bạn có ý định chạy Web server Apache trong vùng riêng biệt đó .
Nếu bạn không có ý định cài đặt và sử dụng Apache trên server của bạn ,có thể giảm
bớt kích thước của partition này xuống khoảng 10MB và chỉ sử dụng cho DNS là dịch
vụ luôn cần trong môi trường chroot vì lý do bảo mật.
Các kích thước tối thiểu của các partition
/ 35MB
/boot 5MB
/chroot 10MB
/home 100MB
/tmp 30MB
/usr 232MB
/var 25MB
/swap 50MB
Disk Druid
Disk Druid là chương trình sử dụng để phân chia đĩa cho bạn. Chọn Add để thêm
một partition mới Edit để hiệu chỉnh một partition ,Delete để xoá một partition và
Reset để xác lập partition về trạng thái ban đầu .Khi bạn thêm một partiton mới
,một cửa sổ sẽ xuất hiện trên màn hình và công việc của bạn là chọn những thông số
cho partition đó .Sự khác nhau của các thông số đó là :
Mount Point:vị trí trong hệ thống tập tin bạn muốn mount partition mới của
bạn tới .
Size (Megs) :kích thước của partition mới tính trên megabytes.
Partiton Type: có hai là Linux native dùng cho Linux filesystem và Swap dùng
cho Linux Swap Partiton .
Nếu bạn có đĩa cứng loại SCSI thì tên thiết bị là /dev/sda và nếu bạn có đĩa
cứng kiểu IDE thì tên sẽ là /dev/hda .Nếu bạn cần hệ thống có hiệu quả và độ ổn
định thì SCSI là sự lựa chọn tốt nhất .
Partition Swap được sử dụng để hổ trợ bộ nhớ ảo .Nếu máy tính của bạn có 16 MB
Ram hoặc ít hơn thì bạn phải tạo một partition swap ,ngay cả khi bạn có bộ nhớ lớn
thì bạn cũng nên tạo partition Swap .Kích thước tối thiểu của partition swap nên
bằng hoặc lớn hơn dung lượng Ram có trên máy tính của bạn .Kích thước lớn nhất có
thể sử dụng cho partition swap là 1GB cho nên nếu bạn tạo một partition swap lớn
hơn 1GB thì phần còn lại trở nên vô ích
Sau khi tạo các partition trên hard disk hoàn thành ,bạn sẽ thấy thông tin
partition trên màn hình giống như bảng liệt kê dưới đây :
Mount Point Device Requested Actual Type
/boot sda1 5 MB 5M Linux Native
/usr sda5 512MB 512MB Linux Native
/home sda6 1146MB 1146MB Linux Native
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 26
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
/chroot sda7 256MB 256M Linux Native
/cache sda8 256MB 256M Linux Native
/var sda9 256Mb 256M Linux Native
sda10 128MB 128M Linux Native
/tmp sda11 256MB 256M Linux Native
/ sda12 256MB 256M Linux Native
Drive Geom[C/H/S] Total(M) Free(M) Used(M) Used(%)
Sda [3079/64/32] 3079M 1M 3078M 99%
Chú ý:Chúng ta đang sử dụng một đĩa cứng SCSI bởi vì hai kí tự đầu tiên của thiết
bị là “sd”
Bây giờ chúng ta đang phân chia và chọn mount point cho các thư mục của
bạn ,chọn “ Next “để tiếp tục .Sau khi các partition được tạo ,chương trình cài đặt sẽ
hỏi bạn chọn partition để định dạng (format) .Chọn partition bạn muốn format và
chọn vào ô “ Check for bad blocks during format ) và nhấn “ Next”.Chương trình sẽ
format các partition và làm chúng có hiệu lực khi Linux sử dụng chúng .
Trên màn hình kế tiếp bạn sẽ thấy sự cấu hình LILO , ở đó bạn chọn cài đặt
LILO trên boot record:
Master Boot Record (MBR)
hoặc
First Sector of Boot Partition
Trong trường hợp Linux là hệ điều hành (OS) duy nhất trên máy tính của bạn
,bạn nên chọn “ Master Boot Record”. Kế đó bạn cần cấu hình mạng và giờ trên máy
của bạn .Sau khi hoàn thành việc cấu hình giờ ,bạn cần phải đặt mật khẩu
(password0 cho root và cấu hình việc kiểm tra tính xác thực trên server máy của
bạn .
Khi cấu hình Authetication đừng quên chọn :
.Enable MD5 passwords
.Enable Shadow
2.Sự lựa chọn những package(gói dữ kiệu ) riêng lẻ
Sau khi các partition đã định hình và được chọn đẻ format , bạn chuẩn bị chọn
những gói dữ liệu cho tíên trình cài đặt . Mặt định Linux là một hệ điều hành rất
mạnh có khả năng thực thi nhiều dịch vụ hữu ích .Tuy nhiên có nhiều dịch vụ không
cần thiết thì không đưa vào vì có thể tạo ra những lỗ hỗng trong việc bảo mật hệ
thống .
Một cách lý tưởng là cần cài đặt từng dịch vụ mạng trên máy phục vụ chuyên
biệt. Theo mặt định ,nhiều hệ điều hành Linux được cấu hình để cung ứng một dịch
vụ và ứng dụng rộng hơn những yêu câu cung cấp một dịch vụ mạng riêng biệt ,do
vậy cần cấu hình server để loại bỏ những dịch vụ mạng không cần thiết .Chỉ đưa ra
những dịch vụ chủ yếu trên máy chủ riêng biệt . Có thể tăng khả năng bảo mật trong
server theo một vài phương pháp sau:
Những server khác không thể sử dụng để tấn công máy chủ và làm hư hại và
loại bỏ những dịch vụ như mong muốn.
Những người khác nhau có thể quản lý những server khác nhau .Bằng cách cô
lập các service,mỗi máy chủ và service có thể riêng lẻ một người quản trị ,bạn
có thể giảm đến mức tối thiểu khả năng xung đột giữa các quản trị viên .
Máy chủ có thể được cấu hình cho phù hợp hơn với yêu cầu của từng service
riêng biệt . Những server khác nhau có thể yêu cầu sự cấu hình phần cứng và
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 27
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
phần mềm khác nhau , và những cấu hình đó có thể dẫn đến những tổn hại
không cần thiết hoặc giới hạn service.
Bằng cách giảm bớt những service ,số tập tin log (logfile) và các thư mục ghi
cũng được giảm ,vì thế việc xoá bỏ những thông tin không cần thiết trở nên
dễ dàng hơn .
Một tiến trình cài đặt chính xác của Linux Server chính là bước đầu tiên cho
việc ổn định ,bảo vệ hệ thống của bạn .Trước hết bạn phải chọn những thành phần (
compoment) hệ thống nào bạn muốn cài đặt.Chọn những compoment và sau đó bạn
có thể tiếp tục chọn và không chọn mỗi gói dữ liệu riêng lẻ của mỗi thành phần bằng
cách chọn option ( Select inđiviual packages ) trên màn hình setup Red Hat.
Khi cấu hình một Linux server chúng ta không cần thiết phải cài đặt một
chương trình giao tiếp đồ hoạ ( Xfree86 ) trên máy tính .Việc giảm bớt giao tiếp
đồ hoạ ( graphical interface) có ý nghĩa lớn trong việc tăng các process ,tăng khả
năng xử lý của CPU ,bộ nhớ , giảm sự nguy hiểm trong bảo mật và giảm bớt một
vài bất tiện khác .Giao tiếp đồ hoạ ( Graphical interface) thường chỉ được sử dụng
trên các trạm làm việc (workstation).
Chọn nhứng gói dữ liệu dưới đây cho tiến trình cài đặt của bạn :
. Network Wordstation
. Network Management Workstation
. Utilities
Sau khi chọn những thành phần bạn muốn cài đặt bạn vẫn có thể chọn và
không chọn các gói dữ liệu .
Chú ý: Việc chọn tuỳ chọn ( Select inđiviual package) rất quan trọng trước khi
tiếp tục khả năng chọn và không chọn các gói dữ liệu
Lựa chọn các gói dữ liệu riêng lẻ ( Inđiviual package selection)
Trong phần chỉ dẫn cài đặt dưới tôi đưa ra những nhóm gói dữ liệu đã có trong
Linux , chọn một nhóm dữ liệu nào đó để xem xét.
Ngoài mục đích hướng dẫn cài đặt , trong chương trình này tôi cúng có ý đưa
vài vấn đề bảo mật và tối ưu hoá Linux vào trong tiến trình cài đặt .Những thành
phần được liệt kê dưới đây cần được loại bỏ từ của sổ chọn gói dữ liệu do vấn đề
bảo mật , tối ưu hoá cũng như một vài nguyên nhân khác sẽ được diễn giải dưới
đây.
Applications/File: git
Applications/Internet: finger.ftp,fwhois,ncftp,rsh,rsync,talk,
telnet
Applications/Publishing: ghostscript,ghostscript-fonts,groff-perl,
mpage,pnm2ppa,rhs-printfilters
Applications/System: arwatch,bind-utils,rdate,rdist,screen, ucd-
snmp-utils
Documentation: indexhtml
System Enviroment/Base: chkfontpath, yp-tools
System Enviroment/Daemons: XFree86-xfs,finger-server,lpr,nfs-utils,
pidentd,portmap,rsh-server,rusers,rusers-
server,rwall-server,rwho,talk-server,
telnet-server,tftp-server,ucd-snmp,
ypbind,ypserv
System Enviroment/Libraries: Xfree86-libs,libpng
User Interface/X: urw-fonts
Nếu những chương trình nhày không được cài đạt trên máy server của bạn thì những
tin tặc buộc phải sử dụng những chương trình này từ bên ngoài hoặc thử cài đặt trên
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 28
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
máy server của bạn .Trong những trường hợp này bạn có thể tìm ra dấu vết chúng
nhờ những chương trình giống như Tripwire .
Làm thế nào sử dụng những lệnh RPM
Phần này giới thiệu tổng quan về lệnh RPM, cách sử dụng lệnh RPM trên hệ thống
Linux của bạn
Cài đặt một gói dữ liệu RPM ,sử dụng lệnh :
[root@deep/]# rpm –ivh foo-1.0-2.i386.rpm
Dòng lệnh trên có ý nghĩa cài đặt một gói dữ liệu rpm có tên là foo-1.0-2.i386.rpm
với các thành phần sau :
Tên gói dữ liệu : foo
Version : 1.0
Release: 2
Kiến trúc : i386
Loại bỏ một gói dữ liệu : thay chữ in đậm ở trên bằng e.
Nâng cấp (upgrade) : Uvh
Truy vấn (query):q
Trình bày thông tin:qi
Liệt kê những tập tin trong gói dữ liệu : ql
Kiểm tra một RPM signature gói dữ liệu :checksig
Lệnh kiểm tra chữ ký PGP của gói dữ liệu được chỉ định để đảo bảo tính toàn
vẹn và nguyên gốc của nó .Luôn sử dụng lệnh này đầu tiên trước khi cài đặt
gói dữ liệu RPM mới trên hệ thống của bạn .
Khởi động và dừng những dịch vụ daemon(starting and stopping daemon service)
Chương trình init của linux (cũng được hiểu như khởi tạo việc điều khiển tiến
trình) phụ trách việc khởi động tất cả tiến trình bình thường hoặc được uỷ quyền
chạy lúc khởi động hệ thống . Những tiến trình này có thể bao gồm
APACHE,NETWORK daemon và bất kỳ những tiến trình khác yêu cầu phải chạy khi
server bạn khởi động .Mỗi process này có tập tin script trong thư mục
“/etc/rc.d/init.d”. Bạn có thể thi hành những script vói những dòng lệnh sau :
Ví dụ :
Khởi động httpd Web server bằng tay dưới Linux
:[root@deep/]#/etc/rc.d/init.d/httpd start
Starting http: [OK]
Dừng httpd Web server bằng tay dưới Linux
:[root@deep/]#/etc/rc.d/init.d/httpd stop
Shutting down http: [OK]
Khởi động lại httpd Web server bằng tay dưới Linux
:[root@deep/]#/etc/rc.d/init.d/httpd restart
Shutting down http: [OK]
Starting http: [OK]
Các phần mềm cần phải loại bỏ sau khi tiến trình cài đặt của server hoàn thành
Mặc định một số gói dữ liệu mà hệ thống Red Hat Linux không cho phép bạn
chọn để tháo gỡ suốt tiến trình setup . Vì nguyên nhân này bạn phải loại bỏ chúng
khi tiến trình cài đặt hoàn thành .
Pump kernel-pcmcia-cs kudzu gd
mt-st linuxconf raidtools pciutils
eject getty_ps gnupg rmt
mailcap isapnptools Red Hat-logos
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 29
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
apmd setderial Red Hat-release
Sử dụng lệnh RPM như dưới đây dểd tháo dỡ chúng .
lệnh dùng để tháo gỡ phần mềm là :
[root@deep]#rpm –e
Ở đây là tên của phần mềm bạn muốn tháo gỡ .
Một số chương trình daemon như apmd,kudzu,sendmail dều chạy ở lúc khởi động
máy ,tốt nhất bạn nên dừng chúng trước khi tháo gỡ ra hệ thống của bạn .
Dừng các process với những lệnh :
[root@deep/]# /etc/rc.d/apmd stop
[root@deep/]# /etc/rc.d/sendmail stop
[root@deep/]# /etc/rc.d/kudzu stop
Bây giờ bạn có thể tháo gỡ chúng cùng các gói dữ liệu khác một cách an toàn với
lệnh sau:
Bước 1:
Xoá bỏ những gói dữ liệu được chỉ định .
[root@deep /]# rpm –e –nodeps pump mt-st eject mailcap apmd kernel-pcmcia-cs
linuxconf getty_ps isapntools setserial kudzu raidtools gnupg Red Hat-logos Red
Hat-release gd pciutils mt
Bước 2:
Xoá bỏ các tập tin Linux.conf-instanlled bằng tay:
[root@deep /] # rm –f /ect/conf.linuxconf-instanlled
Chương trình hdparm cần cho các IDE hard dík nhưng không cần vho SCSI hard disk
bạn phải giữ lai chương trình này ,nhưng nếu không có IDE hard disk thì bạn có thể
xoá khỏi hệ thống .
[root@deep /]# rpm –e hdparm
Những chương trình như kbdconfig,mouseconfig,timeconfig,authconfig,ntsysvvà
setuptool theo thứ tự thiết lập loại keyboard ,mouse,time,NIS và shadow password
chúng ít khi thay đổi sau khi cài đặt vì thế bạn có thể tháo dỡ chúng khỏi hệ thống
,nếu trong tương lai bạn cần thay đổi keyboard ,mouse,... thì bạn có thể cài đặt
chúng từ các gói dữ liệu RPM trên đĩa CD-ROM Red Hat
Các phần mềm có phải được cài đặt sau sự cài đặt của server
Để có thể tiện biên dịch những chương trình trên server của bạn .bạn phải cài
đặt những gói dữ liệu RPM sau .
Bước 1:
Đầu tiên chúng ta mount ổ đĩa CD-ROM và chuyển RPMS trên CD-ROM
Mount CD-ROM drive và chuyển tới thư mục RPMS sử dụng những lệnh sau :
[root@deep /]# mount /dev/cdrom /mnt/cdrom/
[root@deep /]# cd /mnt/cdrom/Red Hat/RPMS/
Dưới đây là những gói dữ liệu mà bạn cần biên dịch và cài đặt trên hệ thống Linux :
autoconf-2.13-5,noarch.rpm m4-1.4-12.i386.rpm
automake-1.4-6.noarch.rpm dev86-0.15.0-2.i386.rpm
bison-1.28-2.i386.rpm byacc-1.9-12.i386.rpm
cdecl-2.5-10.i386.rpm cpp-1.1.2-30.i386.rpm
cproto-4.6-3.i386.rpm ctags-3.4-1.i386.rpm
egcs-1.1.2-30.i386.rpm ElectricFence-2.1-3.i386.rpm
flex-2.5.4a-9i386,rpm kernel-headers-2.2.15.0.i386.rpm
glibc-devel-2.1.3-15.i386.rpm make-3.78.1-4.i386.rpm
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 30
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
path-2.5-10.i386.rpm
Bước 2:
Cài đặc những phần mềm cần thiết ở trên với một lệnh RPM:
Lệnh RPM để cài đặt tất cả các phần mềm với nhau là:
[root@deep RPMS]# rpm –Uvh autoconf-2.13-5.noarch.rpm m4-1.4-
12.i386.rpm automake-1.4-6.noarch.rpm dev86-0.150-2.i386.rpm
bison-1.28-2.i386.rpm byacc-1.9-12.i386.rpm cdecl-2.5-10.i386.rpm
cpp-1.1.2-30.i386.rpm cproto-4.6-3.i386.rpm ctags-3.4-1.i386.rpm
egcs-1.1.2-30.i386.rpm ElectricFence-2.1-3.i386.rpm flex-2.5.4a-
9.i386.rpm egcs-1.1.
Bước 3:
Bạn phải thoát khỏi console và login trở lại để tất cả các thay đổi có hiệu lực
x Thoát khỏi console với lệnh:
[root@deep /]# exit
Sau khi đã cài đặt và biên dịch tất cả các chương trình bạn cần trên server của
bạn sẽ là một ý hay nếu bạn xoá bỏ các tập tin object được tạo ra do biên dịch ,các
trình biên dịch ,..., những tập tin mà bạn không còn cần nữa trong hệ thống của
bạn.Một trong những lí do là nếu một tên tin tặc xâm phạm server của bạn hẳn
không thể biên dịch hoặc thay đổi những chương trình nhị phân .Hơn nữa việc này
sẽ giải phóng nhiều khoảng trống và sẽ giúp đỡ việc cải tiến kiểm tra tính toàn vẹn
của những tập tin trên server.
Khi bạn chạy một server bạn sẽ truyền cho nó một công việc đặt biệt
để thực hiện .Bạn sẽ không bao giờ đặt tất cả các service bạn muốn cung cấp trên
một máy hoặc bạn sẽ làm chậm tốc độ ( tài nguyên có sẵn được chia bởi một số
tiến trình đang chạy trên server ) và làm suy yếu khả năng bảo mật của bạn ( với
nhiều service cùng chạy trên cùng một máy ,nếu một tin tặc xâm nhập vào server
này hắn có thể tấn công trực tiếp những gì có sẵn trên đó)
Có nhiều server khác nhau làm những công việc khác nhau sẽ đơn giản hoá
sự trông coi ,quản lý ( bạn biết công việc gì mỗi server sẽ làm ,những service nào có
hiệu lực ,port nào thì được mở cho những client truy cập và port nào thì đóng ,bạn
cũng sẽ biết những gì bạn cần thấy trong các log file...) và đặt cho bạn sự điều
khiển tính linh hoạt trên mỗi server ( server chuyên dành cho mail ,
web,database,backup....)
3.Những chương trình đựơc cài đặt trên server của bạn:
Bước 1:
Do chúng ta chọn tối ưu hoá việc cài đặt hệ thống Linux của chúng ta , đây là
danh sách của tất cả các chương trình cài đặt mà bạn sẽ có sau khi hoàn tất việc cài
đặt Linux .Danh sách này phải so khớp một cách chính xác với nội dung tập tin
instal.log trong thư mục /tmp. Đừng quên cài đặt tất cả các chương trình được liệt
kê trong “ Các phần mềm phải được cài đặt của server “để có thể biên dịch đúng
cách trên server của bạn .
Bước 2:
Sau khi chúng ta tất cả phần mềm cần tháo bỏ sau tiến trình cài đặt của
server và sau khi thêm những gói dữ liệu RPM cần thiết để có thể biên dịch chương
trình những chương trình trên server của chúng ta .Chúng ta kiểm tra lại danh sách
của tất cả các chương trình RPM đã được cài đặc với lệnh sau :
kiểm tra danh sách tất cả gói dữ liệu được cài đặt trên server sử dụng lệnh :
[root@deep /] # rpm –qa >intalled_rpm
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 31
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Tham số “-qa” sẽ truy vấn tất cả các gói dữ liệu RPM được cài đặt trên hệ
thống và ký tự đặt biệt “>” sẽ ghi lại tất cả những gì xuất ra trên màn hình vào tập
tin intalled_rpm
Bước 2 này yêu cầu chúng ta chắc chắn không quên loại bỏ những gói dữ liệu RPM
không cần thiết và thêm vào những gói dữ liệu quan trọng ,những gói này cho phép
bạn biên dịch chương trình trên hệ thống .Nếu kết quả giống như tập tin dưới đây thì
ta có thể yên tâm với server Linux mới này.
Nội dung của tập tin intaled_rpm phải giống dưới đây:
setup-2.1.8-1 findutils-4.1-34 flex-2.5.4a-9
filesytem-1.3.5-1 gawk-3.0.4-2 ncomprocess-4.2.4-15
basesystem-6.0-4 patch-2.5-10 net-tools.54-4
idconfig-1.9.5-16 gdbm-1.8.0-3 newt-0.50.8-2
gbilc-2.1.3-15 bison-1.2.8-2 passwd-0.64.1-1
shadow-utils-19990827-10 glib-1.2.6-3 perl-5.00503-10
mktemp-1.5-2 gmp-2.0.2-13 popt-1.5-0.48
termpcap-10.2.7-9 autoconf-2.13-5 procmail-3.14-2
libtermcap-2.2.8-20 gbm-1.18.1-7 procps-2.0.6-5
bash-1.14.7-22 groff-1.15-8 psmisc-19-2
MAKEDEV-2.5.2-1 gzip-1.2.4a-2 quota-2.00pre3-2
SysVinit-2.5.2-1 inetd-0.16-4 gdb-4.18-11
anacron-2.1-6 initscripts-5.00-1 readline-2.2.2-6
chkconfig-1.1.2-1 ipchains-1.3.9-5 make-3.78.1-4
...............................................................................................................
...............................................................................................................
etcskel-2.3-1 mount-2.10f-1 glibc-devel-2.1.3-15
file-3.28-2
4.Định màu trên terminal của bạn
Đặt một vài màu trên terminal của bạn có thể giúp cho bạn phân biệt các thư
mục ,file ,thiết bị ,các liên kết và các tập tin thực thi (executable file ).Quan điểm
của tôi là những màu sẽ giúp giảm bớt những lỗi va sự định hướng nhanh trong hệ
thống . Đây là một vấn đề quan trọng và cần thiết chỉ cho Red Hat Linux 6.1 và
những version cũ hơn ,kể từ Red Hat Linux 6.2 đặc trưng này luôn có bởi mặc định
Hiệu chỉnh tập tin /etc/profile và thêm vào những dòng sau:
#Enable Colour Is
eval‟dircolors /etc/DIR_COLORS-b„
export LS_OPTION=‟-s –F –T 0 –color=yes‟
Hiệu chỉnh tập tin /etc/bashrc và thêm dòng :
alias Is=‟Is –color=auto‟
Sau đó logout va login lại . Đến lúc này ,biến môi trường COLORS mới được
thiết đặt và hệ thống sẽ chấp nhận điều này
Xin nhắc lại đặc trưng này chỉ cần cho Red Hat Linux 6.1và cũ hơn
Cập nhật phần mềm mới nhất
Chúng ta nên giữ và cập nhật tất cả các phần mềm (đặc biệt là phần mềm
mạng) với những version mới nhất .Chúng ta nên kiểm tra những trang đính chính ở
.Những trang này có lẽ là
tài nguyên tốt nhất vì đã sũa chữa gần 90% những vấn đề chung với Red Hat. Thêm
nữa các giải pháp về sữa chữa các lỗ hổng bảo mật cũng sẽ được đưa lên sau 24 giờ
Red Hat được thông báo ,bạn nên luôn kiểm tra web site này.
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 32
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Phụ lục Các phần mền bảo mật
Linux sXid
Các tập tin SUID/SGID có thể trở thành một mối nguy cho vấn đề bảo mật và
an toàn của hệ thống . Để giảm các rủi ro này ,trước đây chúng ta đã remove các bit
„s‟ từ các chương trình được sở bởi root mà sẽ không yêu cầu nhiều quyền sử dụng
,nhưng tương lai các tập tin tồn tại khác có thể cài đặt với „s‟ bit được bật lên khi
không có sự thông báo của bạn .sXid là một chương trình theo dỏi hệ thống suid/sgid
được thiết kế chạy từ cron trên một nguyên lý cơ bản .
Cơ bản là nó theo dõi bất kỳ sự thay đổi nào trong các thư mục và các tập tin
s[ug]id của bạn .Nếu có bất kỳ một điều gì mới trong các thư mục hay tập tin ,các
thư mục và tập tin này sẽ thay đổi bit hoặc các mode khác sau đó sẽ tự độnng thực
hiện việc tìm kiếm tất cả suid/sgid trên máy server của bạn và thông báo về chúng
cho bạn .
Linux Logcheck
Một công việc quan trọng trong thế giới bảo mật và an toàn là phải kiểm tra
thường xuyên các tập tin xuất ra các kết quả theo dõi hệ thống (log file). Thông
thường các hoạt động hằng ngày của người quản trị hệ thống không cho phép anh ta
co thời gian để thực hiện những công việc này và có thể mang đến nhiều vấn đề .
Giải thích tính trưu tượng của logcheck:
Kiểm tra theo dõi và ghi nhận các sự kiện xãy ra thì rất quan trọng ! Đó là
những người quản trị của hệ thống nhận biết được các sự kiện này do vậy có thể
ngăn chặn các vấn đề chắc chắn xãy ra nếu bạn có một hệ thống kết nối với internet
.Thật không may cho hầu hết logfile là nó không có ai kiểm tra vá log đó ,mà nó
thường được kiểm tra khi có sự kiện nào đó xãy ra . Điều này logcheck sẽ giúp đỡ
cho bạn
Linux PortSentry
Bức tường lủa (firewal) giúp đỡ chúng ta bảo vệ mạng khỏi những xâm nhập
bất hợp pháp từ bên ngoài .Với firewal chúng ta có thể chọn những ports nào chúng
ta muốn mở và những port nào chúng sẽ đóng.Thông tin trên được giữ một cách bí
mật bởi những người chịu trách nhiệm đến firewal.Tuyệt đối không người nào từ bên
ngoài biết thông tin này , tuy nhiên các hackers (tintặc ) cũng như các spammers
biết một vài cách tấn công bạn ,họ có thể sử dụng một chương trình đặc biệt để quét
tất cả các ports trên server của bạn nhặt thông tin quí giá này (ports nào mở ,ports
nào đóng )
Như được giải thích trong lời giới thiệu của phần PortSentry
Một chương trình quét port là một dấu hiệu của một vấn đề lớn đang đến với
bạn .Nó thường là tiền thân cho một sự tấn công và là một bộ phận nguy hiểm trong
việc bảo vệ hữu hiệu tài nguyên thông tin của bạn .PortSentry là một chương trình
được thiết kế để phát hiện ra và phản hồi tới các port quét nhằm chồng lại một host
đích trong thời gian chúng ta thực hiện quét port và có một số tuỳ chọn để phát hiện
ra các port quét .Khi nó tìm thấy một port quét nó có thể phản ứng lại những cách
sau:
Một logfile lưu các sự việc xảy qua thông qua syslog( )
Tên host mục tiêu tự động được bỏ vào trong tập tin “/etc/hosts.deny” cho
những trình bao bọc TCP
Host nội bộ tự động cấu hình lại để hướng tất cả các lưu thông tới host mục
tiêu trỏ tới một host không hoạt động ( deal host ) làm hệ thống mục tiêu
biến mất
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 33
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Local host tự động cấu hình lại để loại bỏ tất cả các gói thông tin từ host mục
tiêu thông qua bộ lọc local host
Mục đích của PortSentry là để giúp người quản trị mạng có được công cụ khảo
sát kỹ lưỡng hệ thống của mình
Linux OpenSSH Clien/Server
Như được minh hoạ trong chương 2 ,”Sự cài đặt Linux Server”, rất nhiều dịch
vụ mạng được đưa vào ,nhưng không có hạn chế các dịch vụ như rsh ,rlogin, hoặc
rexec không bị xâm nhập với kiểu mà các tin tặc thường dùng như nghe trộm điện
tử.Như một hệ quả ,bất kỳ ai ,người mà đã truy cập tới bất kỳ máy tính nào đã được
kết nối vào mạng đều có thể lắng nghe trên đường truyền giao tiếp của họ và lấy về
mật khẩu của bạn ,và cũng như việc lấy bất kỳ thông tin riêng tư nào khác thông
qua đường mạng ở dạng văn bản .Hiện tại Telnet là chương trình rất cần thiết cho
công việc quản trị hằng ngày ,nhưng nó không an toàn khi nó truyền mật khẩu của
bạn ở dạng văn bản ( plain text ) thông qua mạng và cho phép bất kỳ trình lắng
nghe nào ( listener) ,theo cách này tin tặc sử dụng tài khoản của bạn đẻ làm bất kỳ
công việc phá hoại nào mà hắn ta muốn . Để giải quyết vấn đề này chúng tìm ta một
cách khác ,hoặc một chương trình để thay thế nó .Thật may mắn OpenSSH là một
dịch vụ thật sự vững chắc và bảo mật có thể thay thế cho cách cũ ,các chương trình
login từ xa không an toàn và cổ xưa chẳng hạn như telnet , rlogin, rsh,rdist hay rcp.
Thông qua tập tin README chính thức của OpenSSH :
Ssh ( Secure Shel ) là một chương trình để log vào một máy tính khác thông
qua một hệ thống hệ thống mạng , để thi hành các lệnh trong một máy tính ở xa ,và
để chuyển các tập tin từ một máy này tới một máy khác .Nó cung cấp tính năng xác
nhận hợp lệ “ authentication” và bảo mật sự trao đổi thông tin qua các kênh truyền
dẫn không an toàn .Nó cũng được dự trù để thay thế cho các chương trình rlgoin ,rsh
và rdist.
Trong việc cấu hình ,chúng ta phải cấu hình OpenSSH hỗ trợ tcp-wrappers (
inetd super server) để cải tiến việc bảo mật cho chương trình bảo mật sẵn có và luôn
tránh việc phải chạy chương trình daemon của nó theo kiểu background trên máy
server .Theo cách này ,chương trình sẽ chỉ chạy khi máy khách ( client ) kết nối đến
và sẽ tái thiết lập lại chúng thông qua trình daemon TCP-WRAPPERS cho việc xác
minh tính đúng đắn và cho phép trước khi được phép kết nối tới máy server
.OpenSSHthì miễn phí , một sự thay thế và cải tiến của SSH1 với tất cả các cản trở
của các giả thuật sáng tạo được công nhận bị xoá bỏ ( và trở thành các thư viện
được mở rộng ra bên ngoài ), tất cả các lỗi được nhận biết đã được sữa chữa , các
đặc trưng mới được giới thiệu và rất nhiều trình dọn dẹp rác ( clean-up) khác . Điều
được khuyên là bạn dùng phiên bản SSH ( miễn phí và các lỗi đã được sửa) thay cho
bản SSH1 ( miễn phí ,còn lỗi và lỗi thời ) hay SSH2 mà có nguồn gốc là được miễn
phí nhưng hiện nay đã trở thành một phiên bản thương mại . Đối với tất cả mọi người
mà dùng SSH2 như công Datafelows ,chúng tôi sẽ cung cấp trong quyển sách này cả
hai phiên bản ,và bắt đầu với OpenSSH ,và xem nó như là một chương trình SSh mới
mà mọi ngươiì sẽ phải chuyển sang sử dụng nó trong tương lai.
Linux Tripwire 2.2.1
Một tiến trình cài đặc Red Hat Linux Server tiêu biểu xử lý khoảng 30.400 tập
tin .Vào thời điểm bận rộn nhất của chúng ,các nhà quản trị hệ thống không thể
kiểm tra tính toàn vẹn của tất cả các tập tin ,và nếu một kẻ tấn công nào đó truy cập
máy server của bạn ,thì họ có thể cài đặt hay hiệu chỉnh các tập tin mà bạn không
de4ẽ nhận biết những điều này .Do khả năng của sự cố trên mà một số các chương
trình được tạo ra để đáp ứng loại vấn đề này .
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 34
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Tripwire làm việc ở tầng cơ bản nhất ,bảo vệ các máy server và các máy trạm
làm việc mà chúng được cấu thành mạng hợp nhất .Tripwite làm việc bằng cách
trước tiên là quét một máy túnh và tạo một cơ sở dữ liệu của các tập tin của hệ
thống ,một dạng số hoá “snapshot “ của hệ thống trong hệ thống bảo mật đã biết
.Người sử dụng có thể cấu hình Tripwire một cách rất chính xác ,chỉ rõ tập tin và thư
mục sở hưu riêng cho mỗi máy để theo dõi ,hay tạo một dạng mâux chuẩn mà nó có
thể sử dụng trên tất cả các máy trong mạng .
Một khi cơ sở dữ liệu tạo ra ,một người quản trị hệ thống có thể dùng Triwire
để kiểm tra toàn vẹn của hệ thống ở bất kỳ thời điểm nào .Bằng cách quét một hệ
thống hiện hành và so sánh thông tin với dữ liệu lưu trữ trong cơ sở dữ liệu ,Triwire
phát hiện và báo cáo bất kỳ việc thêm vào hay xoá bớt ,hay thay đổi tới hệ thống
bên ngoài các ranh giới bên ngoài được chỉ định . Nếu việc thay đổi là hợp lệ thì quản
trị hệ thống có thể cập nhật cơ sở dữ liệu biên với thông tin mới . Nếu các thay đổi cố
tình làm hại được tìm thấy ,thì người quản trị hệ thống sẽ biết ngay các phần nào
của các thành phần của mạng đã bị ảnh hưởng .
Phiên bản Tripwire này là một sản phẩm có các phần được cải tiến đáng kể so
với phiên bản Tripwire trước đó .
Server Linux DNS và BIND
Một khi chúng ta đã cài đặt tất cả phần mềm bảo mật cần thiết trên Linux
server , đây là thời điểm để cải tiến và điều chỉnh phần mạng ( netword ) của server
của chúng ta . DNS là một trong những dịch vụ quan trọng nhất cho sự trao đổi
thông tin trên mạng IP ,và vì lí do này , tát cả các máy Linux client sẽ được cài đặt
những chức năng lưu giữ (caching) ở một mức độ tối thiểu nào đó .Việc cài đặt một
caching server cho các máy client nội bộ sẽ làm giảm bớt tải trên các máy primary
server . Mọt Caching chỉ rõ tên máy chủ sẽ tìm kiếm trả lời cho những tên ghi nhớ và
phần đáp án này để khi nào chúng ta cần , nó đáp ứng ngay không cần mất nhiều
thời gian vô ích
Vì những nguyên nhân bảo mật , điều rất quan trọng là DNS không tồn tại
sẵn giữa các máy trên mạng và máy bên ngoài . Để tăng tính năng an toàn hơn ,
đơn giản dùng các địa chỉ IP kết nối với những máy bên ngoài từ bên trong mạng và
ngược lại
Trong cấu hình cà cài đặt ,chúng ta sẽ chạy chương trình BIND/DNS với user
không phải root và trong một môi trường chrooted. Chúng tôi sẽ cung cấp cho bạn
ba cấu hình khác nhau : một cái chỉ đơn giản lưu tên máy (client ) , cái thứ hai la cho
slave (secondary server) và cái thứ ba là cho master name server ( primary server ).
Cấu hình thứ nhất simple caching name server sẽ được dùng cho máy chủ của
bạn mà không hoạt động như master hoặc slave name server , cấu hình của slave và
master sẽ được dùng cho máy chủ của bạn mà hoạt động như master và slave name
server .Thường thường ,cấu hình sẽ bao gồm : một cái sẽ hoạt động như master , cái
khác như slave và cái còn lại như simple caching client server
Đề tài: An toàn và bảo mật trên hệ điều hành Linux
Page 35
GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện:
Lê Thị Huyền Trang
Nguyễn Huy Chương
Mục lục
I. An toàn cho các giao dịch trên mạng.....................2
II. Bảo mật Linux Server............................................7
III. Firewall.................................................................9
IV. Xây dựng hệ thống mạng Linux........................23
Phụ lục Các phần mền bảo mật...........................31
Các file đính kèm theo tài liệu này:
An toàn và bảo mật trên hệ điều hành Linux.pdf