An toàn và bảo mật trên hệ điều hành Linux - Pdf 15



Đề 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

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

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 đó


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.


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

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 Firewall này
không khôn khéo. Firwall giao vận làm việc bởi khảo sát TCP hoặc UDP. Firewall yêu
cầu sự can thiệp người dùng sửa đổi những thủ tục. Firewall ứ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 firewall cho
yêu cầu của mỗi loại ứng dụng. Caci bất tiện trong firewall là người quản trị cần định
hình triển khai theo dõi, và bảo trì quá trình firewall 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 firewall tại
tất cả ba tầng để tránh sự tổn thương. Firewall 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 Firewall 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


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

nhận thông tin từ shell 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 shell 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à shell 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 shell.

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

Linux IP Firewalling 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/firewall 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

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 firewalls, 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 : http://www.insecure.org
.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 ([email protected], 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


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

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

/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.
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 cổng 22 88), sport :80 (các cổng <=80), sport 22: (các cổng >=22)
- chỉ định cổng đích: dport <cổng_đích>, 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 <tên_chain>
- xóa hết các luật đã tạo trong chain: iptables -X <tên_chain>
- đặt chính sách cho các chain `built-in` (INPUT, OUTPUT & FORWARD): iptables -P
<tên_chain_built-in> <tên policy (DROP hoặc ACCEPT)>, 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 <tên_chain>
- xóa các luật có trong chain (flush chain): iptables -F <tên_chain>
- reset bộ đếm packet về 0: iptables -Z <tên_chain>
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

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

# 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ụ W eb
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
`forward` 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

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/firewall.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

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 "

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

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:

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)
<swap> 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


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status