320 likes | 600 Views
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH. KHOA: CÔNG NGHỆ THÔNG TIN. Quản Trị Unix. TIỂU LUẬN NHÓM. ĐỀ TÀI: IPTables Firewall. Giảng viên hướng dẫn : Đặng Thanh Bình Mã lớp học phần : 210117301. Danh sách nhóm. IPTables Firewall. I. IPTABLES là gì ?
E N D
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH KHOA: CÔNG NGHỆ THÔNG TIN QuảnTrị Unix TIỂU LUẬN NHÓM ĐỀ TÀI: IPTables Firewall Giảngviênhướngdẫn: ĐặngThanhBình Mãlớphọcphần: 210117301
IPTables Firewall I.IPTABLES làgì? II.ChứcnăngIptables: III.Cácbảng IPTABLES vàcácchuỗiluật - CHAINS: IV.Cơchếlọcvàxửlýgói: V.Càiđặtiptables: VI.Targetsvà Jumps: VII.Cúphápiptables: VIII.Cácthamsốdònglệnhcủaiptables:
IPTABLES làgì? IPtableslàmộtchươngtrìnhchạy ở khônggianngườidùng, chophépngườiquảntrịhệthốngcóthểcấuhìnhcácbảngcủatườnglửatrongnhân Linux (đượccàiđặttrongcác Module Netfilterkhácnhau) vàlưutrữcácchuỗi, luật. Các Module nhânvàchươngtrìnhkhácnhauđượcápdụngchotừnggiaothức; iptablescho IPv4, ip6tables cho IPv6,..
IPTables Firewall Làmộtbứctườnglửaứngdụnglọcgóidữliệurấtmạnh. Netfilter/Iptablesgồm 2 phần: • Netfilter ở trongnhân Linux đểđẩycácluậtcủangườidùngvàochoNetfilerxửlí • Iptablesnằmngoàinhân. chịutráchnhiệmgiaotiếpgiữacácngườidùng
ChứcnăngIptables: Iptables do Netfilter organization viếtrađểtăngtínhnăngbảomậttrênhệthống Linux. Iptablescungcấpcáctínhnăngsau: • Tíchhợptốtvới kernel của Linux. • Cókhảnăngphântích package hiệuquả. • Lọc package dựavào MAC vàmộtsốcờhiệutrong TCP Header. • Cungcấp chi tiếtcáctuỳchọnđểghinhậnsựkiệnhệthống. • Cungcấpkỹthuật NAT • Cókhảnăngngănchặnmộtsốcơchếtấncôngtheokiểutừchốidịchvụ (denial of service (DoS) attacks)
Cácbảng IPTABLES vàcácchuỗiluật - CHAINS: IPTABLES gồm 3 bảngchínhsau: Filter Table, NAT table,Mangle table
Cácbảng IPTABLES vàcácchuỗiluật - CHAINS: 1. Filter Table: đúngnhưtêngọinódùngđểlọccácgói tin gồmcác build-in chain • Forward chain: lọcnhữnggói tin đi qua hệthống (đivàomộthệthốngkhác). • Input chain: lọcnhữnggói tin đivàohệthống. • Output chain: nhữnggói tin điratừhệthống.
Cácbảng IPTABLES vàcácchuỗiluật - CHAINS: 2. NAT table: sửađịachỉgói tin gồmcác build-in chain • Pre-routing: sửađịachỉđíchcủagói tin trướckhinóđược routing bởibảng routing củahệthống (destination NAT hay DNAT). • Post-routing: ngượclạivới Pre-routing, nósửađịachỉnguồncủagói tin saukhigói tin đãđược routing bởihệthống (SNAT).
Cácbảng IPTABLES vàcácchuỗiluật - CHAINS: 3. Mangle table: dùngđểchỉnhsửaQoS(qulity of service) bit trongphần TCP Header củagóitin • Mỗi rule màbạntạoraphảitươngứngvớimột chain, table nàođấy. Nếubạnkhôngxácđịnh tables nàothìiptablescoimặcđịnhlàchobảng FILTER.
Cơchếlọcvàxửlýgói: • Cácgói tin từngoàiđivàosẽđượckiểmtrabởicác Pre-routing chain đầutiênxemxemnócócần DNAT không, sauđógói tin được routing. Nếugói tin cầnđitớimộthệthốngkhác ( protected network ) nósẽđượclọcbởicác FORWARD chain củabảng FILTER vànếucầnnócóthểđược SNAT bởicác Post-routing chain trướckhiđếnđượchệthốngđích. • Nếugói tin đượcđịnhhướngđivàotrongbứctườnglửacủachínhnó, nósẽđượcxửlýbởicác INPUT chain vànếukhôngbịlọcbỏnósẽđượcxửlýbởimộtdịchvụ ( System Service ) nàođóchạytrênhệthống. Khihệthốnggửitrảlời, gói tin mànógửiđiđượcxửlýbởicác OUTPUT chain vàcóthểđượcxửkýbởicác Post-routing chain củabảng FILTER vàbảng MANGLE nếunócần SNAT hay QoS
Càiđặtiptables: Iptablesđượccàiđặtmặcđịnhtronghệthống Linux, package củaiptableslàiptablesversion. • Red Hat: $ rpm -ivhiptables-version.rpm • Debian: $ apt-get install i iptables • Khởiđộngiptables: service iptables start • Tắtiptables: service iptables stop • Táikhởiđộngiptables: service iptables restart • Xácđịnhtrạngtháiiptables: service iptables status
Targets và Jumps: Targetslàcơchếhoạtđộngtrongiptablesdùngđểnhậndiệnvàkiểmtrapacket. Jumplàcơchếchuyểnmột packet đếnmột target nàođóđểxửlýthêmmộtsốthaotáckhác. Danhsáchcác target đượcxâydựngsẳntrongiptables: • ACCEPT:iptableschấpnhậnchuyển data đếnđích. • DROP:iptableskhóanhững packet.
Targets và Jumps: • LOG:Thông tin của packet sẽgởivào syslog daemon, iptablestiếptụcxửlýluậttiếptheotrongbảngmôtảluật. Nếuluậtcuốicùngkhông match thìsẽ drop packet. Vớitùychọnthôngdụnglà--log-prefix=”string”,tứciptablessẽghinhậnlạinhững message bắtđầubằngchuỗi“string”. • REJECT:Ngănchặn packet vàgởithôngbáocho sender. Vớitùychọnthôngdụnglà-- reject-with qualifier, tức qualifier chỉđịnhloại reject message sẽđượcgởilạichongườigởi. Cácloạiqualifersau: icmp-port-unreachable (default), icmp-net-unreachable, icmp-host-unreachable, icmp-proto-unreachable, …
Targets và Jumps: • DNAT:Thayđổiđịachỉđíchcủa packet (rewriting the destination IP address of the packet). Tùychọnlà--to-destination ipaddress • SNAT:Thayđổiđịachỉnguồncủa packet. Tùychọnlà--to-source[- address][:-] • MASQUERADE:Đượcsửdụngđểthựchiệnkỹthuật NAT ( giảmạođịachỉnguồnvớiđịachỉcủa firewall’s interface của firewall) . Tùychọnlà[--to-ports [-]], chỉđịnhdãy port nguồnsẽánhxạvớidãy port ban đầu • REDIRECT: chuyểnhướngcủagói tin tớimột port kháctrênmáy local.
Cúphápiptables: iptables–t table –A chain [match] [target] -t: table filter (default), nat, mangle -j: Nhảyđếnmột target chain khi packet thỏaluậthiệntại -p: Môtảcác protocol baogồm: icmp, tcp, udp … -s: Chỉđịnh source IP address -d: Chỉđịnh destination IP address -i: Chỉđịnh “input” interface nhận packet -o: Chỉđịnh “output” interface
Cúphápiptables: -A chain: thêmmột rule mới. -D chain: xóamột rule. -I chain number: chènmột rule vàodòng [number]. -R chain number: thaythếmột rule ở dòng [number]. -L chain: xemcác rule đãcó. -F chain: xóamọi rule hiệncó. -N chain: địnhnghĩamột chain mới. -E [old_chain] [new_chain]: đổitên chain (chỉcóthểthayđổivớinhững chain do ngườidùngtạora).
Cúphápiptables: [target]: ACCEPT, DROP, LOG.. [match]: -p [!] name: chọnnhững packet dựatrên protocol. Protocol cóthểlàtênhoặc port tươngứngtrong file /etc/protocols. -s [!] address[/mask]:chọnnhững packet dựatrênđịachỉnguồn. Address cóthểlà hostname hoặcđịachỉ IP. -d [!] address[/mask]: cũnggiốngtrườnghợptrênnhưnglàđịachỉđíchcủa packet.
Cúphápiptables: -i name: chọn packet đượcnhậntừ interface name (input). -o name: chọnnhững packet đượcgửitừ interface name (output). [!] –f: chọnnhữnggói tin bịphânmảnh (từmảnhvụnthứhai). --sport [!] [port][:port]: chọnnhững packet có port nguồnxácđịnhnhưtrên --dport [!] [port][:port]: chọnnhững packet có port đíchxácđịnhnhưtrên.
Cúphápiptables: -p tcp --sport :xácđịnh port nguồncủagói tin TCP. Cóthểlàmộtgiátrịhoặcmộtchuỗicódạngstart-port-number:end-port-number -p tcp --dport :xácđịnh port đíchcủagói tin TCP.Cóthểlàmộtgiátrịhoặcmộtchuỗicódạngstart-port-number:end-port-number -p udp --sport :xácđịnh port nguồncủagói tin UDP.Cóthểlàmộtgiátrịhoặcmộtchuỗicódạngstart-port-number:end-port-number
Cúphápiptables: -p udp --dport : xácđịnh port đíchcủagói tin UDP.Cóthểlàmộtgiátrịhoặcmộtchuỗicódạngstart-port-number:end-port-number --syn : xácđịnhgói tin cóphảilàmộtyêucầutạomộtkếtnối TCP mớikhông. --icmp-type :xácđịnhloạigóiicmp (echo-reply hay echo-request).
Cúphápiptables: --mac-source [!] address: chọnnhững packet cóđịachỉ MAC nguồnlà address.Address viếtdướidạng 00:60:08:91:CC:B7 --limit rate: giớihạntầnsuấtcủa packet, đượcchỉđịnhbằng 1 con sốvàđằngsaulà /second, /minute, /hour, /day. Default là 3/hour. --limit-burst [number]:xácđịnhsốlượng packet tốiđađượcchấpnhận. Default là 5.
Cúphápiptables: -m --state < state >: chọngói tin cótrạngtháilà 1 trongcáctrạngtháiđượcliệtkê ở states Mộtsốtrạngtháithôngdụng: ESTABLISHED: đãthiếtlậpkếtnối. NEW: bắtđầuthiếtlậpkếtnối. RELATED: thiếtlậpkếtnốithứ 2 (FTP data transfer, hoặc ICMP error). INVALID: Góidữliệukhôngnhậndạngđược. Nguyênnhânlà do việcthiếutàinguyênhệthốnghoặclỗi ICMP khôngtrùngvớidữliệucósẵn.
Sauđâylàmộtsố rule vídụ minh hoạ: • iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP -j ACCEPT: chấpnhậnnhữnggói tin từmọiđịachỉip (-s 0/0) đivàotừ eth0, gửiđếnhệthốngcóđịachỉ 192.168.1.1 • iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP \--sport 1024:65535 --dport 80 -j ACCEPT: chophépnhữnggói tin từmọiđịachỉipđivàotừ eth0 đira eth1 đểđếnhệthốngcóđịachỉ 192.168.1.58, giátrị port nguồncủacácgói tin trongphạm vi 1024 đến 65535 vàgiátrị port đíchlà 80 ( www/http).
Cácthamsốdònglệnhcủaiptables: • Gọitrợgiúp $ man iptables hay $ iptables -help • Tạo chain mới: iptables -N <tên_chain> • Xóahếtcácluậtđãtạotrong chain: iptabies -X <tên chain> • Reset bộđếm packet về 0: iptables -Z <tên_chain>
Cácthamsốdònglệnhcủaiptables: • Đặtchínhsáchchocá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ấpnhậncác packet vào chain INPUT • Liệtkêcácluậtcótrong chain: iptables -L <tên_chain>