Tải bản đầy đủ (.docx) (39 trang)

Đề tài an toàn và bảo mật trên hệ điều hành linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (459.97 KB, 39 trang )

Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 1

Giớithiệu
Ngày nay,trên mạng Internetkỳ diệu,ngườita đang thực hiện hàng
tỷđô la giao dịch mỗingày(trên dưới2 ngàn tỷUSD mỗinăm).
Mộtkhốilượnghànghoávàtiềnbạckhổnglồđangđượctỷtỷcácđiện tử tíhon
chuyển đivà nó thựcsự là miếng mồibéo bở cho những tay ăn trộm hay
khủng
bố


“trithức”.
Sự
pháttriển
nhanh
chóng
củamạngmáytínhlàđiềutấtyếu.Hàngngàycókhôngbiếtbaonhiêu
ngườitham gia vào hệ thống thông tin toàn cầu mà chúng ta gọilà
Internet.Những công ty lớn,các doanh nghiệp,các trường đạihọc cùng
như cáctrường phổ thông ngày càng tăng và hơn cả thế có rất rấtnhiều
ngườiđang nốimạng trực tuyến suốt24/24 giờ mỗingày, bảyngàytrong
tuần.Trong bốicảnh mộtliên mạng toàn cầu vớihàng chụctriệu ngườisử
dụng như Internetthìvấn đềan toàn thông tin trở nên phứctạp và cấp
thiếthơn.Do đó mộtcâu hỏikhông mấy dễ chịu đặtralà:liệu mạng
máytính củachúng tasẽphảibịtấn công bấtcứ lúc nào?
Sự bảovệcủabấtkỳmạng máytí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ồikếtthúc.Việcgiữ an toàn mộthệ thống kéo theo chúng
taphảicónhưng kiến thứctốtvềhệđiều hành,mạng TCP/IPcơsởvà quản
trịdịch vụ.Cùng vớisự gợiý của giá viên hướng dẫn và tầm quan trọng


của việcan toàn thông tin liên mạng,ở đây chúng tôichỉ
trìnhbàymộtcáchtổngquannhữngvùngnơiLinuxcóthểvàcầnphải đượcgiữ
an toàn,những thêm vào đó là cáclệnh cơ bản,những kinh ngiệm
trongnguyêntắcantoànvàbảovệhệthốngmạng.
Nhóm sinhviênthựchiện:
- NguyễnHuyChương
- LêThịHuyềnTrang

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 2

I.

An toàn cho cácgiao dịch trên mạng

Có rấtnhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thứcvăn bản
không mã hoá,như TELNET,FTP,RLOGIN,HTTP,POP3.Trong các giao dịch giữa
ngườidùng vớimáy chủ,tấtcả cácthông tin dạng góiđượctruyền qua mạng dưới
hìnhthứcvănbảnkhôngđượcmãhoá.Cácgóitinnàycóthểdễdàngbịchặnvàsao
chép
ởmộtđiểm nàođótrên đường đi.Việcgiảimãcácgóitin nàyrấtdễdàng,cho phép lấy được
các thông tin như tên ngườidùng,mậtkhẩ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ảimã thông tin trở nên khó

hơn

giúp
bạn
giữ
an
toàn
cácthông
tin
quan
trọng.Cáckỹ
thuậtthôngdụnghiệnnaylàIPSec,SSL,TLS,SASLvàPKI.
Quản trịtừ xa là mộttính năng hấp dẫn của cáchệ thống UNIX.Ngườiquản trị
mạngcóthểdễdàngtruynhậpvàohệthốngtừ bấtkỳnơinàotrên mạngthôngqua cácgiao
thứcthông dụng như telnet,rlogin.Mộtsố công cụ quản trịtừ xa đượcsử dụng rộng
rãinhư linuxconf,webmin cũng dùng giao thứckhông mã hoá.Việcthay thếtấtcảcácdịch
vụ mạngdùnggiaothứckhôngmãhoábằnggiaothứccómãhoá là rấtkhó.Tuy nhiên,bạn nên
cung cấp việctruy cập cácdịch vụ truyền thống như HTTP/POP3thôngquaSSL,cũngnhư
thaythếcácdịchvụtelnet,rloginbằngSSH.
Nguyên tắcbảo vệ hệ thống mạng
1. Hoạchđịnhhệthốngbảovệmạng
Trong môitrường mạng,phảicó sự đảm bảo rằng những dữ liệu có tính bí
mậtphảiđượccấtgiữ
riêng,saochochỉcóngườicóthẫm
quyền
mớiđượcphéptruy
cậpchúng.Bảomậtthôngtinlàviệclàm quantrọng,vàviệcbảovệhoạtđộngmạng cũngcótầm
quantrongkhôngkém.
Mạng máy tính cần đượcbảo vệ an toàn,tránh khỏinhững hiểm hoạ do vô tình
hay cố ý.Tuy nhiên mộtnhà quản trịmạng cần phảibiếtbấtcứ cáigìcũng có mức

độ,không nên tháiquá.Mạng không nhaats thiếtphảiđược bảo vệ quá cẩn
mật,đếnmứcngườidùngluôngặpkhókhănkhitruynhậpmạngđểthựchiệnnhiệm
vụ
của
mình.Không nên để họ thấtvọng khicố gắng truy cập cá tập tin của chính
mình.Bốnhiểm hoạchínhđốivớisự anninhcủamạnglà:
o Truynhậpmạngbấthợppháp
o Sự canthiệpbằngphươngtiệnđiệntử o
Kẻtrộm
o Taihoạvôtìnhhoặccóchủý
Mức độ bảo mật :Tuỳ thuộc vào dạng môitrường trong đó
mạngđanghoạtđộng
Chính sách bảo mật : Hệ thống mạng đòihỏimột tập hợp nguyên
tắc,điều luậtvà chính sách nhằm loạitrừ mọirủiro.Giúp hướng dẫn vược qua các thay
đổivà những tình huống không dự kiến trong quá trình pháttriển mạng.
Sự đềphòng:đềphòngnhữngtruycậpbấthợppháp
Sự chứng thực:trước khitruy nhập mạng,bạn gõ đúng tên đăng nhập và
passwordhợplệ.
Đàotạo:Ngườidùng mạng đượcđàotạo chu đáo sẽcóítkhả
năngvôýpháhuỷmộttàinguyên
An toàn chothiếtbị:Tuỳthuộcở:quymôcông ty,độbímật dữ
liệu,cáctàinguyên khảdụng.Trong môitrường mạng nganghàng,cóthểkhông

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương



Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 3
có chính sách bảo vệ phàn cứng có tổ chứcnào.Ngườidùng chịu trách nhiệm đảm
bảoantoànchomáytínhvàdữ liệucủariêngmình.
2. Môhìnhbảomật Haimôhình bảomậtkhácnhau đãpháttriển,giúp bảovệan toàn
dữ liệu và
tàinguyênphầncứng:
Bảo vệ tàinguyên dùng chung bằng mậtmã:gắn mậtmã cho
từngtàinguyêndùngchung
Truycập khiđượcsự cho phép :là chỉđịnh mộtsố quyền nhất định
trên cơ sở ngườidùng,kiểm tra truy nhập tàinguyên dùng chung căn cứ vào
CSDL user-access trên máy server
3. Nângcaomứcđộbảomật
Kiểm toán :Theodõihoạtđộng trên mạnh thôngquatàikhoản
ngườidùng,ghilạinhiều dạng biến cố chọn lọc vào sổ nhậtký bảo mậtcủa máy
server.Giúp nhận biếtcáchoạtđộng bấthợp lệhoặckhô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àinguyên nhấtđịnh,và cần quyếtđịnh phícủa những tàinguyên nàytheo cách
thứcnàođó.
Máy tính không đĩa:Không có ổ đĩa cứng và ổ mềm.Có thể thi
hành mọiviệnhư máytính thôngthường,ngoạitrừ việclưu trữ dữ liệutrên đĩacứng hay đĩa
mềm cụcbộ.Không cần đĩa khởiđộng.Có khả năng giao tiếp vớiservervà đăng nhập nhờ
vào mộtcon chip ROM khởiđộng đặcbiệtđượccàitrên card mạng. Khibậtmáy tính không
đĩa,chip ROM khởiđộng pháttín hiệu cho serverbiếtrằng nó muốn khởiđộng.Servertrả
lờibằng cácn tảiphần mềm khởiđộng vào RAM của máytính không đĩa vàtự đọng hiển
thịmàn hình đăng nhập .Khiđómáytính được kếtnốivớimạng.
Mãhoádữ liệu: Ngườitamãhoáthông tin sang dạng mậtmã bằng
mộtphương pháp nào đó sao cho đảm bảo thông tin đó không thể nhận biết đượcnếu
nơinhận
không

biếtcách
giảimã.Mộtngườisử
dụng
haymộthostcó
thể
sử
dụngthôngtinmàkhôngsợảnhhưởngđếnngườisử dụnghaymộthostkhác.
Chốngvirus:
- Ngănkhôngchovirushoạtđộng
- Sữachữahư hạiởmộtmứcđộnàođó
- Chặnđứngvirussaukhinóbộcphát
Ngăn chặn tình trạng truy cập bấthợp pháp là mộttrong những giảipháp hiệu
nhiệm nhấtđểtránh virus.Dobiện pháp chủ yếu làphòng ngừa,nên nhàquản
trịmạngphảibảođảm saochomọiyếutốcầnthiếtđềuđãsẵnsàng:
- Mậtmãđểgiảm khảnăngtruycậpbấthợppháp
- Chỉđịnhcácđặcquyềnthíchhợpchomọingườidùng
- Cácprofile để tổ chứcmôitrường mạng cho ngườidùng có
thểlập cấu hình và duytrìmôitrường đăng nhập,bao gồm các
kếtnốimạng và những khoản mục chương trình khi
ngườidùngđăngnhập.
- Mộtchínhsáchquyếtđịnhcóthểtảiphầnmềm nào.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux

Page 4

Kiến trúcbảo mậtcủa hệthống mạng
1) Cácmứcantoànthôngtintrênmạng

Không có điều gìgọilà hoàn hảo trong việc an toàn hệ thống mạng như
Linux.Nó đượcthiếtkếđểlà mộthệđiều hành nốimạng và sự pháttriển mạnh mẽ
củanóchỉđểtập trungvàosự an toàn.Hệđiều hành mãnguồn mởlàcáigìmàcho phép
ngườiquản trịmạng và những ngườipháttriển,những ngườidùng triền miên theo dõivà
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ậtlàtốtnếu như cáctàinguyên đượcbảo mậtvà đượcbảo vệtốt trướcbấtkỳsự xâm
phạm vôtìnhhaycốý.
Antoànhaybảomậtkhôngphảilàmộtsảnphẩm,nócũngkhôngphảilàmột
phần
mền.Nólàmộtcách nghĩ.Sự an toàn cóthểđượckhởiđộng vàdừng như một dịch vụ.Bảo
mậtlà cách an toàn.Tàiliệu bảo mậtlà tư liệu mà những thành viên
củatổchứcmuốnbảovệ.Tráchnhiệm củaviệcbảomậtlàngườiquảntrịmạng.
Sự an toànmạngcóvaitròquan trọngtốicao.Antoàn phảiđượcđảm bảotừ những
nhân tố bên ngoàikernel,tạiphần cốtlõicủa Linux server.Cơ chế bảo mật cần phảibao
gồm cấu hình mạng của Server,chu viứng dụng của tổ chứcmạng và thậm chícủa
những clienttruy nhập mạng từ xa.Có vàicách mà ta cần phảixem xét:
o Sự antoànvậtlý
o Antoànhệthống o
Antoànmạng
o Antoàncácứngdụng
o Sự truynhậptừ xavàviệcchầpnhận
1. Sự antoànvậtlý
Điều nàylà cơ bản và giám sátđượctốtkhía cạnh an toàn của hệ điều hành
Linux.Sự an toàn vậtlý bắtđầu vớimôitrường xung quanh vídụ như đốivớicác nhà cung
cầp dịch vụ hãm hại?Có nên khoá cáckhốidữ liệu lại? Những ngườinào đượcchấp nhận

đượcvào
trung
tâm
dữ
liệu.Việcbảo
vệthích
hợp
làphảithựchiện
lạikhimuốnxâydựngmộtcàiđặtmớihaydichuyểndữ liệuđếnmộtvịtrímới.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 5
2. Antoànhệthống
Sự an toàn hệthống baoquanh việcchọn phân phốihệđiều hành Linux,xây dưng
kernel,tớisự an toàn tàikhoản ngườidùng,chophép truycập thư mụctập tin, mã hoá
syslog và filesystem.Cáctácvụ này đượchoàn thành trướckhidịch vụ nối vào
Internet.Việc chọn mộtphân phốinà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ộttiêu chuẩn để chọn một phân phốinhưng
nókhông thuộcphạm vicủabàinày.Việcxâydựng mộtkernelsẵn cócóhailợithế:
o Nhữngoption an toàn củanhân đượcxácđịnhbởingườiquản trịmạng và
ngườiquản trịmạng biếtcáigìđượcxácđịnh vào trong kernelvà từ đây có thể đồng
thờinhận ra nếu điều đó nếu có.Phần nềm nguồn mở nóichung và hệ điều hành
Linuxnóiriêng,đặcbiệtcónhững

cảitiến
đểdễdàng
chongườisử
dụng
vàcó
nhữngtiệníchdễứngdụng.ChỉcầnupdatetrongRedHat.
o
Sự
antoàncáctàikhoảngngườidùngcóvaitròtolớn.Cónhữngvùng
đượcvôhiệu hoá,những tàikhoảng không hoạtđộng,vôhiệu hoáviệctruycập đến NFS lên
gốc,hạn chếnhững đăng nhập vàotrong môitrường điều kiển hệthống.Mã hoá file hệ
thông sử dụng kỹ thuậtmã hoá mà thường là phòng thủ cuốicùng cho mạng.
Có haicách tiếp cận chung:Hệ thống file mã hoá (CFS) và Practical Privacy Disk
Driver(PPDD).Hệ thống có thể đượctheo dõivà trong Linux,hệ thống logging được
logged trong tiện ích syslog.Công cụ theo dõibao gồm swatch và logcheck. Swatch có
công cụ thông báo thờigian thực,trong khilogcheck cung cấp mộtcông cụ mà phátsinh
những báo cáo định kỳ.Kiểm toán Password cũng có vaitrò sống còn trong việcan
toàn,bảo mậthệthống trong khimốiliên kếtyếu nhấttrong việc antoànmạnglàngườisử
dụngvàviệclựachọncácmậtkhẩupassword.

3. An toàn mạng
Ở đây liên quan đến việ kếtnốitừ Linux servervào mạng.Cấu hình dịch vụ mạng
vớisự an toàn ngàycàng khókhăn chonhững nhàquản trịmạng. The xinetd daemon
cầnphảiđượcđịnhhìnhtổchứcbảomật.Lệnhnetstat
Làmộttiệníchmạnh
cho
phép
ngườiquả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ệcan toàn.Điều nàyđảm bảo rằng cơ chếan toàn đã đượcthựchiệ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ấtsẽtrongvaitròcủangườilàm phiền.Cónhữngcôngcụkiểm địnhcơ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ậnnăm 1995,nóđượccôngnhậnđôngđảobởimãnguồnmở.
SAINT mạnh hơn SANAN,trong khiSARA là mộtmodulackage,tương tácvới Nmap
và Samba.Những cảitiến gần đây nhấtlà công cụ Nessus.Nessus là miễn phí,nguồn
mở,đầy đủ nổibật,công cụ kiểm toàn vẫn đượchỗ trợ cảitiến cảitiến tích
cực.Nessusđivào 2 thành phần :- Client(nessus)và server(nesssus).Công cụ Nmap cho
ngườiquản
trịgiàu
kinh
nghiệm.MặtkhácNmap

sức
mạnh,công
cụ
quétchongườicókinhnghiệm.Nóđượcsử dụngtốttrongmạngLAN.
TARA(TigerAuditorsResearch Assistant)là mộtvídụ cho công cụ kiểm toán cơ sở

host.Theo dõimạng dướimộtsự tấn công.Công cụ đểtheo dõiđó là PortSentry và
Ethereal.PortSentry quéttrong chế độ ngầm định.Bảo mậtmạng như mộttrò
chơigiữamèovàchuột,củatrítuệvàmáyđếm trítuệ.Trongkhimạngkiểm toánlà mộtphần
củamạngbình thường,mạngtheodõicần phảiđượcưu tiêncaohơn.Việc

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 6
bảomậtbaogồm việckiểm toán chính xácvàcảviệccónên đểnhư thếhaykhông.
PortSentry là mộtvídụ của công cụ theo dõithờigian thựcđượcthiếtkế để quét
pháthiệnrahệthống,vàcókhảchobạnnhữnghồiđáp.
4. Cácứngdụngantoàn
MộtvàideamonschuẩntrongviệcphânphốiLinuxhiệnthờilànhữngứngdụng
đầy đủ mà nó có cấu trúcfile phứctạp.Web,file,mailserversử dụng những giao
thứcphứctạp.An toàn có thể đượcthựchiện bởicácđặctính bảo mậtcủa việccác
đạilýchophép(MTA‟s)như Sendmail,QmailvàPostfix.
WebServercóthểcũngđượcgiữ
an
toàn
bởicácmodulchophép:mod_auth,
mod_auth_dbm,mod_auth_db,….Việccho phép Open SS hỗ trợ cho Apachesẽcũng
công tácvớiweb server.Samba có thể làm an toàn bởiviệcđọccácthông số đang
chạy.Bướcđầu tiên sẽ đượcbảo vệ bởicông cụ quản trịweb Samba (SAT)vớiSLL
nêncáclệnhquảnlýSambađượcbảovệ.

5. Chu vi an toàn
Cấp sốtự nhiên củacách tiếp cận đượcsắp từng lớp đến sự an toàn máytính
rakhỏilớptừ lớpmạngđếnlớpứngdụng,vàtừ đóđền lớpchu vi.Đâylàvùngđược quan
tâm.Firewalslà thành phần chính của miền chu vian toàn,là phần mền mà
chứcnăngbắtbuộctổchứcbảomậtantoànbởibộlọc,bảomật,đẩymạnh,hayyêu cầu nằm
trong Linux serverđể kếtnốiđến cả mạng chính và Internet.Fireware có
thểđượcthựchiện nhiều cách dựatrên cáclớp củamôhình OSI:lớp mạng,lớp giao vận và
ứng dụng.Có điểm tích cựcvà tiêu cựctrong việctriển khaifireware tạicác lớp của
mạng.Firewalmạng được biết như các packet-filtering gateway,nơimà chúngkiểm
tranhữggóitinIPvàogiaodiệnfirewarevàhoạtđộngphùhợpđượcgiữ lại.hoạtđộng bao gồm
drop,cho phép/hoặc log.Sự bấtlợilà kiểu Firewalnày không khôn khéo.Firwalgiaovận
làm việcbởikhảosátTCP hoặcUDP.Firewalyêu cầu sự can thiệp ngườidùng sửa đổinhữ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ườiquản trịmay firewalcho yêu cầu củamỗiloạiứngdụng.Cacibấttiện
trongfirewallàngườiquản trịcần định hình triển khaitheo dõi,và bảo trìquá trình
firewalcho mỗiứng dụng mà cần truy nhậpđiềukhiển.
Nóluôn làtôtđẻthựchiện bảomậtbởiviệcsử dụng kếthợp một firewaltại tấtcả ba
tầng để tránh sự tổn thương.Firewalkhông chỉcản trở những ngườilàm phiền không hợp
pháp vàomạng nhưng phảichophép ngườisử dụng truynhập bên ngoàivàonguồn
tàinguyên,trong khiđóchấp nhận phêchuẩn nhấtđịnh những kết nốisau cho
ngườidùng.Đây là nhận thức dễ nhưng đó là mộtthách thứckhi thi hành.
o Firewalmạng
Có vàilợithế 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ườidùng,kiểm tra nền tảng,việcthựchiện,giá giữa các lý do
tạisao.Sự locgóilà lợiích hiệu quả và cách bảo vẩptong phậm vi tránh xâm
nhập.Ngườisử 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ảipháp cho việclọcgóitrong Linux bao gồm ipchainsvà ipfwadm.
tiệníchcủaviệclọcgóitinđượcsử dụngtrongnhântừ phiênbản1.2.1vềtrước.
Phiên bản cuốicùngcủaipfwadm vàotháng 7/1996,sau đóipchainsthaythế

nó.Những địa chỉIpchainslà những giớihạn thiếu sótcủa ipfwadrnhư đếm 32 bit, không
có khả năng giảiquyếtcấu thành địa chỉIP,..v.v.Ipchains chiến thắng các giớihạn đó
bởiviệctận dụng lợiích của ba kênh riêng biệthay những quy tắcnối
tiếpđểlọc.Bakênhđólà:INPUT,OUTPUT,vàFORWARD.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 7
TiệníchIpchainstheocúpháp:
ipchains command chain rule-specification [options] -j action
Tạiđây có thể mộttrong số kênh INPUT,OUTPUT hoặcFORWARD.Như nhân 2.4 về
trước,tính hoạtđộng mộtlần của Ipchains được thay thế bởiNetfiltervà khoảng quy
tắcIptables.Netfilterđượchỗ trợ bởicông nghệ Watchguard.Ipctables đượcpháttriển từ
tiện ích của Ipchainsvà nó chỉchạytrên những phiên bản 2.3 về trước.
MộtvídụvềlệnhIptables:
iptables -A INPUT -p tcp –-dport smtp -j ACCEPT.
Hiện nay có những thiếtkế firewalbắtđược hầu hếtcác cấu trúc mạng phổ
biến,báohiệuđơngiảntheoyêucầu
kếtnốitớinhữngnơirấtphứctạpkéotheokhu
vựcđượcphiquânsự hoá(DMZ).

AI.

Bảo mậtLinux Server


Những kinh nghiệm bảo mật
Hiện nay Linux đang dần trở thành mộthệ điều hành khá phổ biến bởitính kinh
tế,khả năng bảo mậtvà sự uyển chuyển cao.Thế nhưng,mọihệ thống dù an toàn đến
đâu cũng dễ dàng bịxâm nhập nếu ngườidùng(và nhấtlà ngườiquản trị-root)không
đặtsự bảo mậtlên hàng đầu.Sâu đây là mộtsó kinh nghiệm về bảo
mậttrênhệđiềuhànhRedHatLinuxmàchúngtôimuốnchiasẽcùngcácbạn:
1. Không cho phép sử dụng tàikhoảng roottừ console:Sau khicàiđặt,
tàikhoảng rootsẽ không có quyền kếtnốitelnetvào dịch vụ telnettrê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 đượcphép truycập bởirootvà chỉliệtkê những consoletruy
xuấtkhingồitrựctiếp tạimáychủ.Đểtăng cường bảo mậthơn nữa,hãy soạn thảo tập
tin /etc/security và bỏ đinhững console bạn không muốn roottruycập.
2. Xoábớttàikhoảng vànhóm đặcbiệt:Ngườiquản trịnên xoábỏtấtcả
cáctàikhoả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ệnviệcxoábỏtàikhoảngbằnglệnhusedelvàxoábỏnhóm vớilệnhgroupdel
3. Tắtcácdịch vụ không sử dụng:Mộtđiều khánguyhiểm làsau khicài đặt,hệ
thống tự động chạy khá nhiều dịch vụ,trong đó đa số là cácdịch vụ không mong
muốn,dẫn đến tiêu tốn tàinguyên và sinh ra nhiều nguy cơ về bảo mật.Vì vậy
ngườiquản trịnên tắtcácdịch vụ không dùng tới(ntsysv)hoặcxoá bỏ cácgói
dịchvụkhôngsử dụngbằnglệnhrpm
4. Không cho “SU”(Substitute)lên root:Lệnh su cho phép ngườidùng
chuyển sang tàikhoảng khác.Nếu không muốn ngườidùng “su”thành rootthìthêm hai
dòng sau vàotậptin /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. Chedấutậptinmậtkhẩu:Giaiđoạnđầu,mậtkhẩutoànbộtàikhoảng đượclưu
trong tập tin /etc/password,tập tin màmọingườidùng đều cóquyền đọc. Đâylàkẻhởlớn
trong bảomậtdù mậtkhẩu đượcmãhoánhưng việcgiảimãkhông phảilà không thể

thựchiện được.Do đó,hiện nay cácnhà pháttriển Linux đã đặt

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 8
riêng mậtkhẩu mã hoá vào tập tin /ect/shadow chỉcó rootmớiđọcđược,nhưng
yêucầuphảichọnEnabletheshadow passwordkhicàiRedHat.
6. Luôn nâng cấp chonhân (kernel)Linux:Linuxkhông hẵn đượcthiếtkế
vớitính năng bảo mậtchặtchẽ,khá nhiều lỗ hỏng có thể bịlợidụng bởitin tặc.Vì
vậyviệcsử dụng mộthệđiều hành vớinhân đượcnâng cấp làrấtquan trọng vìmột
khinhân,phầncốtlõinhấtcủahệđiềuhànhđượcthiếtkếtốtthìnguycơbịpháhoại
sẽgiảm
đirấtnhiều.
7. Tự động thoátkhỏiShel:Ngườiquản trịhệ thống và kể cả ngườisử dụng
bình thường rấthay quên thoátra dấu nhắcshelkhikếtthúccông việc.Thât nguy hiểm
nếu có mộtkẻ nào sẽ có toàn quyền truy suấthệ thống mà chăng tốn
chútcôngsứcnàocả.Dovậyngườiquảntrịnêncàiđặttínhnăngtự
độngthoátkhỏi
shelkhikhông cósự truyxuấttrong khoảng thờigian định trướcbằng cách sử dụng biến
môitrường vàgán mộtgiátrịquyđịnh Sốgiâyhệthống duytrìdấu nhắc, bạnnênvàotâptin
/ect/profileđểluôntácdụngtrongmọiphiênlàm việc.
8. KhôngchophéptruynhậptậptinkịchbảnkhởiđộngcủaLinux:Khihệ điều hành
Linux khởiđộng, các tập tin kịch bản (script) được đặt tạithư mục
/etc/rc.d/init.dsẽđượcgọithựcthi.Vìthế,đểtránh nhữngsự tòmòkhôngcần thiết từ

phíangườidùng,vớitư cách ngườiquản trị,bạn nên hạn chếquyền truyxuấttới
cáctậptinnàyvàchỉchophéptàikhoảngrootxử lýbằnglệnhsau:
#chmod –R 700/etc/rc.d/init.d*
9. Giớihạn việctự ý ghinhận thông tin từ shel:Theo mặcđịnh,tấtcả lệnh được
thực thitạidấu nhắc shelcủa tàikhoảng đều được ghivào tập tin
.bash_history(nếu sd bashshel)trong thư mụccá nhân của từng tàikhoảng.Điều
nàygâynên vôsốnguyhiểm tiềm ẩn,đặcbiệtđốivớinhữngứngdụngđòihỏingười dùng
phảigõ thông tin mậtkhẩu.Do đó ngườiquản trịnên giớihạn việctự ý ghi nhậnthôngtintừ
sheldựavàohaibiếnmôitrườngHISTFILESIZEvàHISTSIZE:
- Biến môitrường HISTFILESIZE quy định số lệnh gõ tạidấu nhắc shelsẽ
đượclưulạicholầntruycậpsau.
- Biến môitrường HISTSIZE quy định số lệnh sẽ đượcghinhớ trong phiên làm
việchiệnhành.
Vìvậy,tasẽphảigiảm giátrịcủaHISTSIZEvàchogiátrịHISTFILESIZEbằng 0 đểgiảm
thiểu
tốiđanhững
nguyhiểm.Bạn
thựchiện
việcnàybằng
cách
thayđổi
giátrịhaibiếnnêutrêntrongtậptin/etc/profilenhư sau:
HISTFILESIZE =
0 HISTSIZE = xx
Trongđóxxlàsốlệnhmàshelsẽghinhớ,đồngthờikhôngghilạibấtkỳmột
lệnhnàodongườidùngđãgõkhingườidùngthoátkhỏishel.
10. Tắccáctiến trình SUID/SGID :Bình thường,cáctiến trình đượcthực hiện
dướiquyền của tàikhoản gọithựcthiứng dụng đó.Đó là dướiwindows,nhưng Unix/Linux
lạisử dụng mộtkỹ thuậtđặc biệtcho phép mộtsố chương trình được thựchiện dướiquyền
của ngườiquản lýchương trình chứ không phảingườigọithực thichương trình.Vàđâychính

làlýdo tạisao tấtcả mọingườidùng trong hệthống đều cóthểđổimậtkhẩu củamình trong
khikhông hềcóquyên truyxuấtlên tập tin /etc/shadow,đó là vìlệnh passwd đã đượcgán
thuộctính
SUID

đượcquản
lýbởi
root,màrootlạilàngườidùngduynhấtcóquyềntruyxuất/etc/shadow.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 9
Tuythế,khảnăng tiên tiến nàycóthểgâynên những nguycơkháphứctạp vì
nếumộtchươngtrìnhcókhảnăngthựcthiđượcquảnlýbởiroot,dothiếtkếtồihoặc
do
đượccàiđặtcố tình bởinhững kẻ phá hoạimà lạiđượcđặtthuộctính SUID thì mọiđiều
“khủng khiếp”đều có thể xảy ra.Thựctế cho thấy có khá nhiều kỹ thuật xâm phạm
hệthống màkhông cóquyền rootđượcthựchiện bằng cáckỹthuậtnày: kẻ phá hoạibằng
cách nào đó tạo mộtshelđược quản lý bởiroot,có thuộc tính SUID,kếđến
mọitruyxuấtpháhoạisẽđượcthựchiện
quashelvừatạovìmọilệnh
thựchiệntrongshelsẽđượcthựchiệngiốngnhư dướiquyềnroot.
Thuộctính SGID cũng tương tự như SUID:cácchương trình đượcthựchiện với
quyền nhóm quản lý chương trình chứ không phảinhóm của ngườichạy chương

trình.Như vậy ngườiquản trịsẽ phảithường xuyên kiểm tra trong hệ thống có những
ứng dụng nào có thuộctính SUID hoặcSGID mà không đượcsự quản lý của
rootkhông,nếu pháthiện đượctập tin cóthuộctính SUID/SGID “ngoàiluồng”,bạn
cóthểloạibỏcácthuộctìnhnàybằnglệnh:
#chmod a-s

BI.

Linux Firewall

An toàn hệthống luôn luôn làmộtvấn đềsống còn củamạng máytính vàfirewallà
mộtthànhphầncốtyếuchoviệcđảm bảoanninh.
Mộtfirewallà mộttập hợp cácquitắc,ứng dụng và chính sách đảm bảo cho người
dùngtruycậpcácdịch vụ mạngtrongkhimạng bên trongvẫn an toàn đốivớicáckẻtấn công từ
Internet hay từ các mạng khác. Có hailoạikiến trúc firewalcơ bản là : Proxy/Application
firewalvàfiltering
gatewayfirewal.Hầu
hếtcáchệthống
firewalhiện
đạilàloạilai(hybrid)củacảhailoạitrên.
Nhiều công ty và nhà cung cấp dịch vụ Internetsử dụng máy chủ Linux như một
Internetgateway.Những máy chủ này thường phụcvụ như máy chủ mail,web,ftp,hay
dialup.Hơn nữa,chúng cũng thường hoạtđộng như cácfirewal,thihành cácchính sách kiểm
soátgiữaInternetvàmạngcủacôngty.Khảnănguyểnchuyểnkhiến
choLinuxthu
hútnhư
làmộtthaythếchonhữnghệđiềuhànhthươngmại.
Tính năng firewalchuẩn đượccung cấp sẵn trong kernelcủaLinuxđượcxâydựng từ
haithànhphần:ipchainsvàIPMasquerading.
Linux IP Firewaling Chains là mộtcơ chế lọc góitin IP.Những tính năng của IP

Chainschophép cấu hình máychủ Linuxnhư mộtfiltering gateway/firewaldễdàng.Một thành
phần quan trọng khác của nó trong kernellà IP Masquerading,mộttính năng chuyển đổiđịa
chỉmạng (network addresstranslation- NAT)mà có thể che giấu cácđịa chỉIP thựccủamạng
bên
trong.Đểsử
dụng
ipchains,bạn
cần
thiếtlập
mộttập
cácluật
màquiđịnhcáckếtnốiđượcchophéphaybịcấm.

CácnguyêntắcIpchainsThựchiệncácchứcnăngsau:
Accept: The packet is okay; allow it to pass to the appropriate chain
Chophépchuyểngóitinquachainthíchhợ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
anICMPpacket.Khôngđồngý,nhưngsự việccủangườigởiquagóiICMP
Masq: Used for IP masquerading (network address translation).Sử
dụngchoIPmasquerading(việcdịchđịachỉmạng)
Redirect: Send thispacketto someone else forprocessing.Gởigóitin
nàyđếnmộtngườikhácđểsử lý
Return: Terminate the rule list. Hoàn thành danhsáchcácquytắc.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang

NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 10
Chú ý: Các góiIpfw(ipfilters/iptable) dướihệ điều hành BSD cung cấp hoạtđộng
tươngtự Ipchains.
Vídụ:
# ChophépcáckếtnốiwebtớiWebServercủabạn
/sbin/ipchains -A your_chains_rules -s 0.0.0.0/0 www -d 192.16.0.100 1024: -j ACCEPT
# Chophépcáckếtnốitừ bêntrongtớicácWebServerbênngoà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ốitruycậptấtcảcácdịchvukhác
/sbin/ipchains -P your_chains_rules input DENY
Ngoàira,bạn có thểdùng cácsản phẩm firewalthương mạinhư CheckPointFireWal1,Phoenix Adaptive Firewal,Gateway Guardian,XSentry Firewal,Raptor,...hay rất
nhiềucácphiênbảnmiễnphí,mãnguồnmởchoLinuxnhư T.RexFirewal,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ộthệ thống bấtkỳ nào cũng cần có sự chuẩn bị.Hackerphảixác định ra
máy đích và tìm xem những portnào đang mở trướckhihệ thống có thể bịxâm phạm.Quá
trìnhnày thường đượcthựchiện bởicáccông cụ dò tìm (scanning tool),kỹ thuậtchính để tìm
ra máy đích và các portđang mở trên đó.Dò tìm là bước đầu tiên hackersẽ sử dụng
trướckhithựchiện tấn công.Bằng cách sử dụng cáccông cụ dò tìm như Nmap,hackercó thể
rà khắp cácmạng để tìm ra cácmáy đích có thể bịtấn công. Mộtkhixácđịnh
đượccácmáynày,kẻxâm nhập cóthểdòtìm cácportđang lắngnghe. Nmap cũng sử dụng
mộtsố kỹ thuậtcho phép xác định khá chính xác loạimáy đang kiểm tra.
Bằng cách sử dụng những công cụ củachính cáchackerthường dùng,ngườiquản trị
hệthốngcóthểnhìnvàohệthốngcủamìnhtừ gócđộcủacáchackervàgiúptăngcường tính an toàn
của hệ thống.Có rấtnhiều công cụ dò tìm có thể sử dụng như:Nmap, strobe, sscan, SATAN,

...
Nmap
Làchữ viếttắtcủa"Networkexploration tooland securityscanner".Đâylàchương trình
quéthàngđầuvớitốcđộcựcnhanhvàcựcmạnh.Nócóthểquéttrênmạngdiệnrộngvà
đặcbiệttốtđốivớimạ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ạitườnglửamàserversử dụng,...vàrấtnhiều tính năngkhác.NóichungNMAPhỗtrợ hầu
hếtcáckỹthuậtquétnhư :ICMP(pingaweep),IPprotocol,Null scan, TCP SYN (half
open),...NMAP được đánh giá là công cụ hàng đầu của các Hackercũng như các nhà
quảntrịmạngtrênthếgiới.

Quétan toàn Nmap làmộttrong số công cụ quétan toàn đượcsử dụng rộng
rãinhấtsẵn có.Nmap làmộtcổng quétmàchống lạicácnhân tố,cáccách kháctàn phá đến
mạng của bạn.Nó có thểphátsinh ra nhiều kiểu góimà thăm dò cácngăn
xếpTCP/IPtrênnhữnghệthốngcủabạn.
Nmap cóthểphátsinh ramộtdanh sách củanhữ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
đangchạytrênhostcủabạn.Nmapsecuritycósẵntại:
.Dướiđâylàmộtvídụsử dụngNmap:
# nmap -sS -O 192.168.1.200
Starting nmap V. 2.54 by Fyodor (, www.insecure.org/nmap/)
Interesting ports on comet (192.168.1.200):
Port State Protocol
Service 7 open tcp echo
19 open tcp chargen

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang

NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 11
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áccông cụ này không thể thay thế cho mộtngườiquản trịcó kiến
thức.Bởivìviệcdò tìm thường dự báo mộtcuộctấn công,cácsite nên ưu tiên cho việc
theodõichúng.Vớicáccôngcụ
dòtìm,cácnhàquản
trịhệthốngmạngcóthểpháthiện
ranhữnggìmàcáchackercóthểthấykhidòtrênhệthốngcủamình.
2.PHÁT HIỆN SỰ XÂM NHẬP QUA MẠNG
Nếu hệthống củabạn có kếtnốivàointernet,bạn cóthểtrởthành mộtmụctiêu bịdò tìm
cáclỗhổngvềbảomật.Mặcdùhệthốngcủabạncóghinhậnđiềunàyhaykhôngthì
vẫnkhôngđủđểxácđịnhvàpháthiệnviệcdòtìm này.Mộtvấnđềcầnquantâm kháclà cáccuộctấn
công gây ngừng dịch vụ (DenialofServices- DoS),làm thế nào để ngăn
ngừa,pháthiệnvàđốiphóvớichúngnếubạnkhôngmuốnhệthốngcủabạnngưngtrệ.
Hệthống pháthiện xâm nhập qua mạng (NetworkIntrusion Detection System - NIDS)
theo dõicácthông tin truyền trên mạng và pháthiện nếu có hackerđang cố xâm nhập vào
hệ thống (hoặcgây gây ra mộtvụ tấn công DoS).Mộtvídụ điểnhình là hệ thống theo dõisố
lượng lớn cácyêu cầu kếtnốiTCP đến nhiều porttrên mộtmáy nào đó,do vậy có thể
pháthiện ra nếu có aiđó đang thử mộttácvụ dò tìm TCP port.MộtNIDS có thể chạy trên
máy cần theo dõihoặctrên mộtmáy độc lập theo dõitoàn bộ thông tin trênmạng.
Cáccông cụ có thể đượckếthợp để tạo mộthệ thống pháthiện xâm nhập qua mạng. Chẳng

hạn dùng tcpwrapperđể điều khiển,ghinhận cácdịch vụ đã đượcđăng ký.Các chươngtrình
phântíchnhậtkýhệthống,như swatch,cóthểdùngđểxácđịnhcáctácvụ dò tìm trên hệthống.Và
điều quan trọng nhấtlà cáccông cụ có thểphân tích cácthông tin trên mạng để pháthiệ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, ...
Khihiện thựcmộthệ thống pháthiện xâm nhập qua mạng bạn cần phảilưu tâm đến
hiệusuấtcủahệthốngcũngnhư cácchínhsáchbảođảm sự riêngtư.
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ệcxácđịnh và sắp xếp cáclỗ hổng an ninh
trong hệ thống bằng cách dùng mộtsố công cụ kiểm tra.Nhiều công cụ kiểm tra cũng có
khả năng khaithácmộtsố lỗ hổng tìm thấy để làm rõ quá trình thâm nhập trái
phépsẽđượcthựchiệnnhư thếnào.Vídụ,mộtlỗitrànbộđệm củachươngtrìnhphụcvụ dịch vụ FTP
có thể dẫn đến việc thâm nhập vào hệ thống vớiquyền „root‟.Nếu người quản trịmạng
cókiến
thứcvềkiểm
trakhảnăng
bịxâm
nhập
trướckhinó
xảyra,họcó
thểtiếnhànhcáctácvụđểnângcaomứcđộanninhcủahệthốngmạng.
Córấtnhiều cáccông cụ mạng màbạn có thểsử dụng trong việckiểm trakhảnăng bị xâm
nhập.Hầu hếtcácquá trình kiểm tra đều dùng ítnhấtmộtcông cụ tự động phân tích
cáclỗhổngan ninh.Cáccôngcụ nàythăm dòhệthốngđểxácđịnh cácdịch vụ hiện có.Thôngtin
lấytừ cácdịchvụnàysẽđượcsosánhvớicơsởdữ liệucáclỗhổnganninh đãđượctìm thấytrướcđó.
Cáccông cụ thường đượcsử dụng để thựchiện cáckiểm tra loạinà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ởinhững ngườicó trách nhiệm
mộtcách cẩn thận.Sự thiếu kiến thứcvà sử dụng saicách có thể sẽ dẫn đến hậu quả
nghiêm trọngkhôngthểlườngtrướcđược.


GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 12

4.ĐỐIPHÓ KHIHỆ THỐNG CỦA BẠN BỊTẤN CÔNG
Gần đây,mộtloạtcá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ệthạivô 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ếtkế để làm ngưng hoạtđộng của mộtmạng máy tính hay một website bằng cách gửiliên
tụcvớisố lượng lớn cácdữ liệu tớimụctiê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ùnggọikhôngngừngtới1sốđiệnthoạikhiếnnóliêntụcbịbận.
Trong khikhông thể nào tránh được mọinguy hiểm từ các cuộc tấn công,chúng tôi khuyên
bạn mộtsốbướcmàbạn nên theokhibạn pháthiện rarằnghệthốngcủabạn bị tấn công.Chúng
tôicũng đưa ramộtsố cách để giúp bạn bảo đảm tính hiệu qủacủahệ thống an ninh và
những bướcbạn nên làm để giảm rủiro và có thể đốiphó vớinhững cuộctấncông.
Nếu pháthiện ra rằng hệ thống của bạn đang bịtấn công,hãy bình tĩnh.Sau
đâylà những bướcbạn nên làm:
Tậphợp1nhóm đểđốiphóvớisự tấncông:
o Nhóm này phảibao gồm những nhân viên kinh nghiệm,những ngườimà
cóthểgiúphìnhthànhmộtkếhoạchhànhđộngđốiphóvớisự tấncông.
Dựa theo chính sách và cácquy trình thựchiện về an ninh của công ty,sử dụng
cácbướcthíchhợpkhithôngbáochomọingườihaytổchứcvềcuộctấncông.

Tìm sự giúp đỡtừ nhàcung cấp dịch vụ Internetvàcơquan phụ trách vềan ninh máy
tính:
o Liên hệ nhà cung cấp dịch vụ Internetcủa bạn để thông báo về cuộctấn
công.CóthểnhàcungcấpdịchvụInternetcủabạnsẽchặnđứngđượccuộctấncông.
o
Liên hệ cơ quan phụ trách về an ninh máy tính để thông báo về cuộctấn
công
Tạm thờidùng phương thức truyền thông khác (chẳng hạn như qua điện thoại)
khitraođổithôngtinđểđảm borằngkẻxâm nhậpkhôngthểchặnvàlấyđượcthôngtin.
Ghilạitấtcả cáchoạtđộng của bạn (chẳng hạn như gọiđiện thoại,thay đổifile,
...)
Theodõicáchệthốngquantrọngtrongqúatrình bịtấncôngbằngcácphầnmềm hay dịch
vụ pháthiện sự xâm nhập (intrusiondetection software/services).Điều này có thể giúp làm
giảm nhẹ sự tấn công cũng như pháthiện những dấu hiệu của sự tấn công thựcsự
haychỉlàsự quấyrốinhằm đánh lạchướngsự chúýcủabạn(chẳnghạn mộttấn côngDoS
vớidụngýlàm saolãngsự chúýcủabạntrongkhithựcsự đâylàmộtcuộctấn công nhằm xâm
nhập
vào
hệ
thống
của
bạn).Sao
chép
lạitấtcả
cácfilesmà
kẻ
xâm
nhậpđểlạihaythayđổi(như nhữngđoạnmãchươngtrình,logfile,...)
Liênhệnhàchứctráchđểbáocáovềvụtấncông.
Những bướcbạn nên làm để giảm rủiro và đốiphó vớisự tấn công trong tương lai :

o Xâydựngvàtraoquyềnchonhóm đốiphóvớisự tấncông
o Thihànhkiểm traanninhvàđánhgiámứcđộrủirocủahệthống o
Càiđặtcácphầnmềm antoànhệthốngphùhợpđểgiảm bớtrủiro o
Nângcaokhảnăngcủamìnhvềantoànmáytính

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 13

Cácbướckiể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ớicàiđặt:chắcchắn tính đúng đắn của chính sách
anninhhiệncóvàcấuhìnhchuẩncủahệthống.
o Kiểm tratự độngthườngxuyên:đểkhám phásự “viếngthăm”củanhững hacker
haynhữnghànhđộngsaitráicủanhânviêntrongcôngty.
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 đã đượcpháthiện (chẳng hạn những lỗiđược thôngbáotừ
nhàcungcấpphầnmềm)
o Kiểm trahằngđêm nhữngfilequantrọng:đểđánhgiásự toànvẹn củanhữngfile vàcơsởdữ
liệuquantrọng
o Kiểm tra các tàikhoản ngườidùng:để pháthiện các tàikhoản không sử dụng,
khôngtồntại,...
o Kiểm trađịnhkỳđểxácđịnhtrạngtháihiệntạicủahệthốnganninhcủabạn

Thiếtlập tường lửaIptablescho Linux

Cấu hình Tables
ViệccàiđặtIptableslàmộtphần trong việccàiđặtRed Hatban đầu.Nguyên bản
khởitạo tìm kiếm sự tồn tạicủa file Iptables,rules/etc/sysconfig/iptables, Và nếu chúng
đã tồn tạiiptableskhởiđộng vớicầu hình đã đượcchỉrõ.Mộtkhiserver này là gởimailvà
nhận mail,cấu hình Iptablesnên cho phép những kếtnốitừ đầu vào sendmailđến
bấtkỳnơiđâu.Ngườiquản trịhệthống sẽchỉsử dụng shh từ bên trong
cácmáy,đặcbiệtlàMIS.Iptablesrulessẽcàiđặtđểchophép cáckếtnốishh từ 2 MIS.Ping
ICMP sẽ cho phép bấtkỳđâu.Không có công nào kháccho phép kết nốiđến ngườiphụcvụ
này.Đâylàmứcbổsung choviệcphòng thủ củaservertrong trường hợp Firewalđược thoã
hiệp.Thêm vào đó là việc bảo vệ cho ssh sẽ được cungcấpbởicấuhìnhcácgóitcpbêndưới.
NhữngquytắcđểthựchiệncấuhìnhIptablesnhư 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)Chophépnhữngkếtnốiliênquanvàđãthiếtlậpđếnserver
(2)Chophépcáchostkhácpingđếnserversendmaid
(3)ChophépkếtnốiSMTPđếnserver (4),
(5)Chophépkếtnốisshtừ 2MÍ(subnets)
(6),(7)Cho phép ngườiphụcvụ tên DNS cho box sendmaid để cung cấp giảipháp
DNS.Nếubạncóhơnmộtdomain–DNS,thìthêm mộtdòngchomỗiDNS.
(8)logbấtkỳkếtnốinàocốgắngmànókhôngđặcbiệtchophép
(9)CàidặtchínhsáchmặcđịnhchobảngINPUTtoDROP Tấtcả cáckếtnốiđặcbiệtkhông cho
phép sẽ bịrớt.Chương trình losentry sẽ được cấu hình để định rằng bấtkỳ dòng nào log

cũng như sự xâm phạm an toàn.Để giữ đượccấuhìnhquareboot,taphảichạyIptablesSave.Chạylệnhnhư sau:
/sbin/iptables-save > /etc/sysconfig/iptables
Khihệthốngkhởiđộnglên,fileIptablessẽđượcđọcvàcấuhìnhhiệudụng.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 14
Iptables là mộttường lửa ứng dụng lọc góidữ liệu rấtmạ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.Iptableschịu trách nhiệm giao tiếp giữa ngườidùng và Netfilterđể đẩy các luậtcủa
ngườidùng vào cho Netfilerxử lí.Netfiltertiến hành lọccácgóidữ liệu ở mức IP.Netfilterlàm
việctrựctiếptrongnhân,nhanhvàkhônglàm giảm tốcđộcủahệthống.

CáchđổiđịachỉIPđộng(dynamicNAT)
Trướckhiđivàophầnchính,mìnhcầngiớithiệuvớicácbạnvềcôngnghệđổiđịachỉNAT động vàđóng
giảIPMasquerade.Haitừ
nàyđượcdùng
rấtnhiều
trong
Iptablesnên
bạn
phảibiết.NếubạnđãbiếtNATđộngvàMasquerade,bạncóthểbỏquaphầnnày.
NAT động là mộttrong những kĩthuậtchuyển đổiđịa chỉIP NAT (Network Address
Translation).CácđịachỉIPnộibộđượcchuyểnsangIPNATnhư sau:


NAT Router đảm nhận việc chuyển dãy IP nộibộ 169.168.0.x sang dãy IP mới
203.162.2.x.Khicó góiliệu vớiIP nguồn là 192.168.0.200 đến router,routersẽ đổiIP nguồn
thành 203.162.2.200 sau đómớigởirangoài.Quátrình nàygọilàSNAT (SourceNAT,NATnguồn).Routerlưudữ liệutrongmộtbảnggọilàbảngNATđộng.Ngượclại,khi có mộtgóitừ
liệu từ gởitừ ngoàivào vớiIP đích là203.162.2.200,routersẽ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ớilà 192.168.0.200.Quá trình này
gọilà 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.200vàngượclại.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 15

Cách đóng giả địa chỉIP (masquerade)
ĐâylàmộtkĩthuậtkháctrongNAT.

NAT Routerchuyển dãy IP nộibộ 192.168.0.x sang mộtIP duy nhấtlà 203.162.2.4 bằng
cách dùng cácsốhiệu cổng (port-number)khácnhau.Chẳng hạn khicógóidữ liệu IP vớinguồ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.Khicó
mộtgóidữ liệu từ ngoàivào vớinguồn là 221.200.51.15:80, đích203.162.2.4:26314
đếnrouter,routersẽcăn
cứ

vàobảngmasqueradeđộnghiệ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 trongmạngLAN
vớimáykhácbênngoàihoàntoàntrongsuốtquarouter
Cấu trúccủa Iptables
Iptables được chia làm 4 bảng (table):bảng filterdùng để lọc góidữ liệu,bảng nat
dùngđểthaotácvớicácgóidữ
liệuđượcNATnguồnhayNATđích,bảngmangledùngđể
thay
đổicácthông số trong góiIP và bảng conntrack dùng để theo dõicáckếtnối.Mỗi tablegồm
nhiều
mắcxích
(chain).Chain
gồm
nhiều
luật(rule)đểthaotácvớicácgóidữ
liệu.RulecóthểlàACCEPT(chấpnhận góidữ liệu),DROP(thảgói),REJECT(loạibỏgói) hoặctham
chiếu(reference)đếnmộtchainkhác.
Quá trình chuyển góidữ liệu qua Netfilter
Góidữ liệu (packet)chạy trên chạy trên cáp,sau đó đivào card mạng (chẳng hạn như
eth0).Đầu tiên packetsẽquachain PREROUTING (trướckhiđịnh tuyến).Tạiđây,packet
cóthểbịthayđổithông
số(mangle)hoặcbịđổiđịachỉIPđích
(DNAT).Đốivớipacketđi
vàomáy,nósẽquachain INPUT.Tạichain INPUT,packetcóthểđượcchấpnhận hoặcbị hủy
bỏ.Tiếp theo packetsẽ đượcchuyển lên cho cácứng dụng (client/server)xử lívà tiếp theo là
đượcchuyển ra chain OUTPUT.Tạichain OUTPUT,packetcó thể bịthay đổi các thông số và

bịlọc chấp nhận ra hay bịhủy bỏ.Đốivớipacketforward qua máy, packetsau khirờichain
PREROUTING sẽ qua chain FORWARD.Tạichain FORWARD,nó cũng bịlọcACCEPT
hoặcDENY.Packetsau
khiqua
chain
FORWARD
hoặcchain
OUTPUT
sẽđến
chainPOSTROUTING (saukhiđịnhtuyến).TạichainPOSTROUTING,packetcóthể được đổiđịa
chỉIP
nguồn
(SNAT)hoặcMASQUERADE.Packetsau
khira
card
mạng
sẽ
đượcchuyểnlêncápđểđiđếnmáytínhkháctrênmạng.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 16

Cáctham sốdònglệnhthườnggặpcủaIptables

1.Gọitrợ giúp
ĐểgọitrợgiúpvềIptables,bạngõlệnh$ man iptables hoặc$ iptables --help.Chẳnghạn
nếubạncầnbiếtvềcáctùychọncủa match limit,bạngõlệnh$ iptables -m limit --help.
2.Cáctùychọn đểchỉđịnh thông số
- chỉđịnhtêntable:- t<tên_table>,vídụ- t filter, -t nat,..nếukhôngchỉđịnhtable,giá
trịmặcđịnhlàfilter
- chỉđinhloạigiaothức:- p<têngiaothức>,vídụ- p tcp, -p udp hoặc- p ! udp đểchỉ
địnhcácgiaothứckhôngphảilàudp
- chỉđịnhcardmạngvào:- i<tên_card_mạng_vào>,vídụ:- i eth0, -i lo
- chỉđịnhcardmạngra:- o<tên_card_mạng_ra>,vídụ:- o eth0, -o pp0
- chỉđịnhđịachỉIPnguồn:- s<địa_chỉ_ip_nguồn>,vídụ:- s 192.168.0.0/24 (mạng
192.168.0với24bítmạ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địachỉIPđích:- d<địa_chỉ_ip_đích>,tươngtự như - s
- chỉđịnhcổngnguồn:--sport<cổng_nguồn>,vídụ:--sport 21 (cổng21),--sport 22:88
(cáccổng22..88),--sport :80 (cáccổng<=80),--sport 22: (cáccổng>=22)
- chỉđịnhcổngđích:--dport<cổng_đích>,tươngtự như --sport
3.Cáctùychọn đểthao tácvớichain
- tạochainmới:iptables- N <tên_chain>
- xóahếtcácluậtđãtạotrongchain:iptables- X <tên_chain>
- đặtchínhsáchchocácchain`built-in` (INPUT, OUTPUT & FORWARD): iptables -P
<tên_chain_built-in> <tênpolicy(DROPhoặcACCEPT)>,vídụ:iptables -P INPUT
ACCEPT đểchấpnhậncácpacket vào chain INPUT
- liệtkêcácluậtcótrongchain:iptables- L <tên_chain>
- xóacácluậtcótrongchain(flushchain):iptables- F <tên_chain>
- resetbộđếm packetvề0:iptables- Z <tên_chain>
4.Cáctùychọn đểthao tácvớiluật
- thêm luật:- A (append)
- xóaluật:- D (delete)
- thaythếluật:- R (replace)

- chènthêm luật:- I (insert)
Mìnhsẽchovídụminhhọavềcáctùychọnnàyởphầnsau.

PhânbiệtgiữaACCEPT,DROPvàREJECTpacket

- ACCEPT:chấpnhậnpacket
- DROP:thảpacket(khônghồiâm choclient)
- REJECT:loạibỏpacket(hồiâm choclientbằngmộtpacketkhác) Vídụ:
# iptables -A INPUT -i eth0 --dport 80 -j ACCEPT chấpnhậncácpacketvàocổng80trên
cardmạngeth0

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang


NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 17
# iptables -A INPUT -i eth0 -p tcp --dport 23 -j DROP thảcácpacketđếncổng23dùng
giaothứcTCPtrêncardmạngeth0
# iptables -A INPUT -i eth1 -s ! 10.0.0.1-10.0.0.5 --dport 22 -j REJECT --reject-with
tcp-reset gởigóiTCPvớicờRST=1chocáckếtnốikhôngđếntừ dãyđịachỉIP10.0.0.1..5
trêncổng22,cardmạngeth1
# iptables -A INPUT -p udp --dport 139 -j REJECT --reject-with icmp-portunreachable
gởigóiICMP`portunreachable`chocáckếtnốiđếncổng139,dùnggiaothứcUDP
Phân biệtgiữa NEW,ESTABLISHED và RELATED

- NEW:mởkếtnốimới
- ESTABLISHED:đãthiếtlậpkếtnối
- RELATED:mởmộtkếtnốimớitrongkếtnốihiệntại Vídụ:

# iptables -P INPUT DROP đặtchínhsáchchochainINPUTlàDROP
# iptables -A INPUT -p tcp --syn -m state --state NEW -j ACCEPT chỉchấpnhậncácgói
TCPmởkếtnốiđãsetcờSYN=1
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT khôngđóngcác
kếtnốiđangđượcthiếtlập,đồngthờicũngchophépmởcáckếtnốimớitrongkếtnối đượcthiếtlập

# iptables -A INPUT -p tcp -j DROP cácgóiTCPcònlạiđềubịDROP

Tùychọn --limit, --limit-burst
--limit-burst:mứcđỉnh,tínhbằngsốpacket
--limit:tốcđộkhichạm mứcđỉnh,tínhbằngsốpacket/s(giây),m(phút),d(giờ)hoặc h(ngày)
Mìnhlấyvídụcụthểđểbạndễ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ộtchain mớitên là test(table mặc định là
filter).Tùy chọn - A test (append)để thêm luậtmớivào chain test.Đốivớichain test, mình
giớihạ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ốithêm chain testvào chain INPUT với tùychọn card mạng
vàolàlo,giaothứcicmp,loạiicmp là echo-request.Luậtnàysẽgiới hạn cácgóiPING tớilo là 2
gói/phútsau khiđã đạttới5 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 đượcchấp nhận,thỏa luậtRETURN đó.Bây giờ đã đạt đến
mứcđỉnh là5 gói,lập tứcIptablessẽgiớihạn PING tớilo là 2 góitrên mỗiphútbất chấp
cóbaonhiêu

góiđượcPING
tớilođinữa.Nếu
trongphúttớikhôngcógóinàoPING
tới,Iptablessẽgiảm limitđi2 góitứclàtốcđộđanglà2 gói/phútsẽtănglên4 gói/phút. Nếu trong
phútnữa không có góiđến,limitsẽ giảm đi2 nữa là trở về lạitrạng tháicũ chưađạtđến
mứcđỉnh 5 gói.Quátrình cứ tiếp tụcnhư vậy.Bạn chỉcần nhớđơn giản là khiđã
đạttớimứcđỉnh,tốcđộ sẽ bịgiớihạn bởitham số--limit.Nếu trong mộtđơnvị thờigian tớikhông
cógóiđến,tốcđộsẽtăng lên đúng bằng --limitđến khitrở lạitrạng tháichưađạtmức--limit-burst
thì thôi.
Đểxem cácluậttrong Iptablesbạn gõ lệnh $ iptables- L -nv (-Ltấtcảcácluậttrong tất
cảcácchain,tablemặcđịnh là filter, -nliệtkêởdạngsố,vđểxem chitiế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)

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang


NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 18
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 flushluật
# iptables -X xóachainđãtạo
Redirectcổng
Iptableshổtrợtùychọn - j REDIRECT chophépbạn đổihướngcổngmộtcách dễdàng.Ví dụ như
SQUID đang listen trên cổng 3128/tcp.Để redirectcổng 80 đến cổng 3128 này bạnlàm như
sau:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
Lưuý:tùychọn- j REDIRECT cho có trong chain PREROUTING
SNAT & MASQUERADE

Để tạo kếtnối`transparent` giữa mạng LAN 192.168.0.1 vớiInternetbạn lập cấu hình
chotườnglửaIptablesnhư sau:
# echo 1 > /proc/sys/net/ipv4/ip_forward chophép forward cácpacketquamáychủ đặt
Iptables
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 210.40.2.71 đổiIPnguồn
chocácpacketracard mạng eth0 là210.40.2.71.Khinhận đượcpacketvàotừ Internet,
Iptablessẽ tự động đổiIP đích 210.40.2.71 thành IP đích tương ứng của máy tính trong
mạngLAN 192.168.0/24.
HoặcbạncóthểdùngMASQUERADEthaychoSNATnhư sau:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(MASQUERADEthườngđượcdùngkhikếtnốiđếnInternetlàpp0vàdùngđịachỉIP động)


GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang


NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 19
DNAT

Giảsử bạnđặtcácmáychủProxy,MailvàDNS trongmạngDMZ.Đểtạokếtnốitrong suốttừ
Internetvàocácmáychủnàybạnlànhư sau:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --todestination 192.168.1.2
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --todestination 192.168.1.3
# iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --todestination 192.168.1.4

Lập cấu hình Iptablescho máychủ phụcvụ Web

Phầnnàymìnhsẽtrìnhbàyquavídụcụthểvàchỉhướngdẫncácbạnlọcpacketvào. Các packet
`forward`và'output'bạntựlàm nha.GiảsửnhưmáychủphụcvụWebkếtnốimạngtrựctiếpvào
Internetquacardmạngeth0,địachỉIPlà1.2.3.4.BạncầnlậpcấuhìnhtườnglửachoIptablesđáp
ứngcácyêucầusau:
- cổngTCP80(chạyapache)mởchomọingườitruycậpweb
- cổng21(chạyproftpd)chỉmởchowebmaster(dùngđểuploadfilelênpublic_html)
cổng22(chạyopenssh)chỉmởchoadmin(cungcấpshel`root`choadminđểnângcấp&patchlỗi
choserverkhicần)

- cổngUDP53(chạytinydns)đểphụcvụtênmiền(đâychỉlàvídụ)
- chỉchấpnhậnICMPPINGtớivớicode=0x08,cácloạipacketcònlạiđềubịtừchối.
Bước1:thiếtlậpcáctham sốchonhâ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=1bậtchứcnăngchốngDoS SYN quasyncookiecủaLinux
tcp_fin_timeout=10đặtthờigiantimeoutchoquátrìnhđóngkếtnốiTCPlà10giây
tcp_keepalive_time=1800đặtthờigiangiữ kếtnốiTCPlà1800giây
...
Cáctham sốkhácbạncóthểxem chitiếttrongtàiliệuđikèm củanhânLinux. Bước2:
nạpcácmôđuncầnthiếtchoIptables Đểsử
dụngIptables,bạncầnphảinạptrướccácmôđuncầnthiết.Vídụnếubạnmuốn
dùngchứcnăngLOG trongIptables,bạnphảinạpmôđunipt_LOG vàotrướcbằnglệnh#
modprobe ipt_LOG.

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương


Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux

Page 20
MODULES="ip_tables iptable_filter ipt_LOG ipt_limit ipt_REJECT
ipt_state for i in $MODULES; do
/sbin/modprobe
$MODULES done
Bước3:nguyêntắcđặtluậtlà"droptrước,acceptsau"
Đâylànguyêntắcmàbạnnêntuântheo.Đầutiênhãyđónghếtcáccổng,sauđómở
dầncáchcổngcầnthiết.Cáchnàytránhchobạngặpsaisóttrongkhiđặtluậtcho
Iptables.
iptables -P INPUT DROP thảpackettrước
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT giữ cáckếtnốihiện
tạivàchấpnhậncáckếtnốicóliênquan
iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT chấpnhậncácgóivàoloobacktừ 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ácgóidữ liệuđếntừ cácIPnằm trong
danhsáchcấm BANNER_IP
done
Bước4:lọcICMPvàovàchặnngậplụtPING
LOG củaIptablessẽđượcghivàofile/var/log/firewal.log.Bạnphảisửalạicấuhìnhcho
SYSLOG như sau:

# vi /etc/syslog.conf kern.=debug
/var/log/firewall.log

# /etc/rc.d/init.d/syslogd restart

ĐốivớicácgóiICMPđến,chúng tasẽđẩyquachain CHECK_PINGFLOOD đểkiểm tra xem

hiệntạiđangbịngậplụtPING haykhông,sauđómớichophépgóivào.Nếuđangbị
ngậplụtPING,môđunLOG sẽtiếnhànhghinhậtkíởmứcgiớihạn--limit $LOG_LIMIT và --limitburst$LOG_LIMIT_BURST,cácgóiPING ngậplụtsẽ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 --limitburst $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ước5:rejectquétcổngTCPvàUDP
Ở đâybạn tạo sẵn chain rejectquétcổng,chúng tasẽ đẩyvào chain INPUT sau.Đối
vớigóiTCP,chúngta
rejectbằnggóiTCPvớicờSYN=1
còn
đốivớigóiUDP,chúngtasẽ
rejectbằnggóiICMP`port-unreachable`

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương



Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 21
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ước6:pháthiệnquétcổngbằngNmap
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 --logprefix "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 --logprefix "fp=NMAP:XMAS-PSH a=DROP "
iptables-A DETECT_NMAP -p tcp --tcp-flags ALL ALL -m limit --limit $LOG_LIMIT --limitburst
$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 --logprefix "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 --logprefix "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
ĐốivớicácgóiTCPđến eth0 mởkếtnốinhưngkhôngđặtSYN=1 chúngtasẽchuyển sang chain
DETECT_NMAP.Đâylànhững góikhông hợp lệvàhầu như làquétcổng bằng nmap hoặckênh
ngầm.Chain DETECT_NMAP sẽ pháthiện ra hầu hếtcáckiểu quétcủ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étXMAS,bạn dùng tùy chọn --tcp-flags ALL FIN,URG,PSH nghĩa là 3 cờ FIN,URG và PSH
đượcbật,cáccờ khácđều bịtắt.Cácgói quachainDETECT_NMAPsauđósẽbịDROPhết.
Bước7:chặnngậplụtSYN
Góimở TCP vớicờ SYN đượcset1 là hợp lệ nhưng không ngoạitrừ khả năng là các
góiSYN dùng để ngập lụt. Vìvậy, ở dây bạn đẩy các góiSYN còn lạiqua chain
CHECK_SYNFLOOD đểkiểm trangậplụtSYN như sau:
iptables-N CHECK_SYNFLOOD

iptables-A CHECK_SYNFLOOD -m limit --limit $SYN_LIMIT --limitburst $SYN_LIMIT_BURST -j RETURN
iptables-A CHECK_SYNFLOOD -m limit --limit $LOG_LIMIT --limitburst $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

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang
NguyễnHuyChương



Đềtài:AntoànvàbảomậttrênhệđiềuhànhLinux
Page 22
Bước8:giớihạntruycậpSSH 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 tcpreset 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ước9:giớihạnFTPchoweb-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 tcpreset 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ước10:lọcTCPvà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ước11:lọcUDPvàovàchặnngậplụtUDP
iptables -N CHECK_UDPFLOOD
iptables -A CHECK_UDPFLOOD -m limit --limit $UDP_LIMIT --limitburst $UDP_LIMIT_BURST -j RETURN
iptables -A CHECK_UDPFLOOD -m limit --limit $LOG_LIMIT --limitburst $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ụcvụ web,
bạncóthểdùngcáchtảicânbằng(load-balacing)như sau:

GVHD:NguyễnTấnKhôi

Sinhviênthựchiện:
LêThịHuyềnTrang

NguyễnHuyChương


×