Bài 7: BẢO MẬT HỆ THỐNG LINUX• Bảo mật hệ thống mạng bằng Squid Proxy • Bảo mật cho hệ thống Linux bằng Iptables Bảo mật hệ thống bằng squid proxy và iptables... Giải thích được các thôn
Trang 1MH/MĐ: QUẢN TRỊ MẠNG LINUX
Bài 1: TRIỂN KHAI VÀ QUẢN TRỊ HỆ ĐIỀU HÀNH LINUX
Bài 2: QUẢN TRỊ TÀI KHOẢN NGƯỜI DÙNG VÀ LẬP TRÌNH
SHELL
Bài 3: TRIỂN KHAI DỊCH VỤ DNS VÀ DHCP
Bài 4: TRIỂN KHAI DỊCH VỤ SAMBA VÀ NFS
Bài 5: TRIỂN KHAI DỊCH VỤ WEB VÀ FTP
Bài 6: TRIỂN KHAI DỊCH VỤ MAIL
Bài 7: BẢO MẬT HỆ THỐNG LINUX
ÔN TẬP
BÁO CÁO ĐỒ ÁN
THI
Trang 2Bài 7: BẢO MẬT HỆ THỐNG LINUX
• Bảo mật hệ thống mạng bằng Squid Proxy
• Bảo mật cho hệ thống Linux bằng Iptables
Bảo mật hệ thống bằng squid proxy và iptables
Trang 3MỤC TIÊU BÀI HỌC
Trình bày được khái niệm và các đặc điểm của hệ thống
proxy.
Giải thích được các thông số cấu hình của squid.
Cấu hình được squid hoạt động ở chế độ cache và
transparent.
Nhận biết hệ thống firewall dùng iptables.
Giải thích các thông số của iptables.
Cấu trúc lệnh của iptables.
Triển khai firewall dùng iptables.
Trang 4Tầm quan trọng của cache Proxy
Chia sẻ và cân bằng tải.
Sử dụng lại các object đã được lưu trữ trong cache.
Giảm tải truy xuất trên đường truyền.
Cài đặt, cấu hình squid proxy
Trang 5Yêu cầu hệ thống cho cache proxy Server
Tốc độ truy xuất đĩa nhanh
Yêu cầu dung lượng RAM lớn
Trang 6Giới thiệu Squid proxy
Squid là chương trình Internet proxy-caching có vai trò tiếp nhận các yêu cầu từ client và truy vấn đến các Internet Server thích hợp
Trang 7Giao thức được hỗ trợ trên Squid
Squid hỗ trợ những giao thức sau:
HTTP FTP Secure Socket Layer
…
Trang 8Cơ chế cache của Squid
Trang 9Cài đặt Squid Proxy
Cài đặt squid từ package rpm
Cài đặt từ package squid-version.i386.rpm trong CDROM.
Cấu trúc thư mục mặc định của Squid
/usr/sbin: Lưu những thư viện của Squid /etc/squid: Lưu các tập tin cấu hình squid ( /etc/squid/squid.conf ).
/var/log/squid: Lưu các tập tin log của squid /var/spool/squid: lưu trữ squid cache.
Trang 10Cấu hình squid proxy
visible_hostname: Nếu không gán hostname khi đó việc khởi
cache_dir: chỉ định nơi cache data được lưu trữ
cache_dir ufs /var/spool/squid 100 16 256
Trang 11Cấu hình squid proxy(tt) Tuỳ chọn Giải thích
cache_dir Định nghĩa những giá trị của thư mục cache được dùng
cho Squid.
chạy trên Linux
/var/spool/squid Thư mục lưu trữ cache /var/spool/squid.
Trang 12Access List
Định nghĩa access list dùng acl Tag:
acl aclname acltype string1
acl aclname acltype "file"
Các acl phổ biến:
acl aclname src ip-address/netmask acl aclname src addr1-addr2/netmask acl aclname dst ip-address/netmask acl aclname srcdomain foo.com
acl aclname dstdomain foo.com acl aclname url_regex [-i] ^http://
acl aclname urlpath_regex [-i] \.gif$
acl aclname port 80 70 21 acl aclname port 0-1024 acl aclname proto HTTP FTP .
Trang 13Access List(tt)
acl aclname method GET POST .
acl aclname time [ day ] [ h1:m1-h2:m2 ]
Ví dụ:
acl home_network src 192.168.1.0/24
acl business_hours time M T W H F 9:00-17:00 http_access allow/deny home_network bussiness_hours
Trang 14Access List(tt)
http_access: điều khiển việc truy cập đến Squid
icp_port: dùng queries các cache khác
Mặc định: icp_port 8082
cache_peer: chỉ định cache khác theo sự phân cấp
Cú pháp: cache_peer hostname type http_port icp_port
cache_peer proxy2.ispace.edu.vn parent 8080 8082
cache_peer proxy.kcntt.ispace.edu.vn sibling 8080 8082
type :
‘parent’ : proxy cha ở cấp cao hơn
‘sibling’: proxy ngang hàng
Trang 15Cấu hình tối thiểu cho squid server
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
Trang 16Cấu hình tối thiểu cho squid server(tt)
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
For example:
http_access allow home_network business_hours
http_access allow localhost
http_access deny all
Trang 17Theo dõi truy xuất internet thông qua Squid
tail –f /var/log/squid/access_log
Trang 18Khởi động Squid
Để khởi động Squid ta dùng lệnh sau:
#/etc/init.d/squid start|stop|restart
Trang 19Bảo mật Linux
Trang 20Log file
Log file: File log để ghi nhận lại các sự kiện, một số file log chính
trong hệ thống
/var/log/messages /var/log/secure /var/log/wtmp /var/log/utmp
Triển khai bảo mật cơ bản trên Linux
Trang 21Port Based Security
Cho phép thực thi chức năng lọc gói tin (packet filtering)
thông qua iptables
Triển khai hệ thống firewall trên Linux dùng iptables
Trang 22Port Based Security(tt)
Giới thiệu iptables: Iptables do tổ chức Netfilter cung cấp để tăng
tính năng bảo mật trên hệ thống Linux.
Tích hợp tốt với kernel của Linux.
Có khả năng phân tích package hiệu quả.
Lọc package dựa vào MAC và một số cờ hiệu trong TCP header.
…
Cài đặt iptables: iptables được cài đặt mặc định trong hệ thống
Linux.
Trang 23Port Based Security(tt)
Cơ chế và chức năng hoạt động của iptables:
Iptables sẽ kiểm tra tất cả các package khi nó đi qua iptables host, quá trình kiểm tra này được thực hiện một cách tuần tự entry đầu tiên đến entry cuối cùng.
Có 3 loại bảng trong iptables:
Mangle: chịu trách nhiệm biến đổi quality of service bits trong
TCP header Thông thường loại table này được ứng dụng trong SOHO (Small Office/Home Office).
Filter: chịu trách nhiệm thiết lập bộ lọc packet (packet filtering),
có ba loại built-in chains được mô tả để thực hiện các chính sách
về firewall (firewall policy rules).
Forward chain : lọc những gói tin đi qua hệ thống (đi vào một hệ thống khác).
Input chain : lọc những gói tin đi vào hệ thống.
Output chain : lọc những gói tin đi ra từ hệ thống
Trang 24Port Based Security(tt)
NAT: thực thi chức năng NAT (Network Address
Translation), cung cấp hai loại built-in chains sau:
Pre-routing : sửa địa chỉ đích của gói tin trước khi nó được routing bởi bảng routing của hệ thống (destination NAT hay DNAT)
Post-routing : ngược lại với Pre-routing, nó sửa địa chỉ nguồn của gói tin sau khi gói tin đã được routing bởi hệ thống (SNAT)
Chú ý: Mỗi rule mà bạn tạo ra phải tương ứng với một chain, table
nào đấy Nếu bạn không xác định tables nào thì iptables coi mặc
định là cho bảng FILTER
Trang 25Port Based Security(tt)
Sơ đồ sử lý gói tin:
Mangle Table PREROUTING Chain
NAT Table PREROUTING Chain
Routing
Routing OUTPUT Chain Filter Table OUTPUT Chain NAT Table
Mangle Table OUTPUT Chain
Data for the Firewall ?
Local Processing of Data
Filter Table INPUT Chain
Filter Table FORWARD Chain
NAT Table POSTROUTING Chain
NETWORK A
NETWORK B
Packet Out No
Yes
Firewall Reply Packet in
Trang 26Port Based Security(tt)
iptables tiếp tục xử lý gói tin bằng những rules tiếp theo.
REJECT : chức năng của nó cũng giống như DROP tuy nhiên nó
sẽ gửi một error message tới host đã gửi gói tin.
MASQUERADE : cũng là một kiểu dùng để sửa địa chỉ nguồn của gói tin.
Trang 27Port Based Security(tt)
Các tuỳ chọn của iptables:
định là FILTER ).
nghĩa ở trên nếu điều kiện so sánh thoả mãn.
-p tcp sport : xác định port nguồn của gói tin TCP.
-p tcp dport : xác định port đích của gói tin TCP
-p udp sport : xác định port nguồn của gói tin UDP
-p udp dport : xác định port đích của gói tin UDP
Trang 28Port Based Security(tt)
syn : xác định gói tin có phải là một yêu cầu tạo một kết nối TCP mới không.
icmp-type : xác định loại gói icmp (reply hay request).
echo m multiport sport < port, port > : xác định các giá trị port nguồn
-m multiport dport < port, port > : xác định các giá trị port đích.
-m multiport port < port, port > : xác định các giá trị port ( không phân biệt nguồn hay đích ).
-m state < state > : xác định trạng thái kết nối mà gói tin thể hiện gồm:
ESTABLISHED : gói tin thuộc một kết nối đã được thiết lập.
RELATED : gói tin thể hiện một yêu cầu kết nối thứ hai (có liên quan đến kết nối thứ nhất, thường xuất hiện ở những giao
thức FPT hay ICMP)
INVALID : thể hiện một gói tin không hợp lệ
Trang 29Port Based Security(tt)
Cấu trúc lệnh của iptables:
# iptables [ -t < table-name > ] < command > < chain-name >
< parameter-1 > < option-1 > < parameter-n > < option-n >
< table-name >: Cho phép chọn table khác table mặc định là Filter
< command >: Xác định hành động sẽ thực hiện, như appending
< chain-name >: định nghĩa một cặp thông số xác định điều gì sẽ
xảy ra khi các packet thoả các rule.
Trang 30Port Based Security(tt)
Tạo rules firewall
ACCEPT|REJECT}
REJECT}
Ví dụ:
# iptables -A INPUT -p tcp dport 25 -j ACCEPT
# iptables -A OUTPUT -p tcp sport 25 -j ACCEPT
Trang 31Port Based Security(tt)
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP Tạo firewall rule
# iptables append CHAIN selection-criteria jump {DROP|ACCEPT|
REJECT}
# iptables -A CHAIN selection-criteria -j {DROP|ACCEPT|REJECT}
Mở và đóng một port
# iptables -A INPUT -p tcp dport 25 -j ACCEPT
# iptables -A OUTPUT -p tcp sport 25 -j ACCEPT
Trang 32Port Based Security(tt)
Dùng địa chỉ IP nguồn và đích
# iptables -A INPUT -s 172.24.0.0/16 -j DROP
# iptables -A OUTPUT -d 172.24.0.0/16 -j DROP
Lọc bởi interface
# iptables -A INPUT -s 192.168.9.0/24 -i eth0 -j DROP
# iptables -A FORWARD -s 192.168.9.0/24 -i eth0 -j DROP
# iptables -A FORWARD -s !192.168.9.0/24 -i eth1 -j DROP
# iptables -A OUTPUT -s !192.168.9.0/24 -i eth1 -j DROP
Trang 33Port Based Security(tt)
/etc/sysconfig/iptables ta dùng lệnh sau:
#service iptables save
Trang 34Port Based Security(tt)
Load kernel module cần cho iptables
Module ip_conntrack Module ip_conntrack_ftp Module iptable_nat
Module ip_nat_ftp
Có thể mô tả trong file /etc/rc.local
Modprobe ip_conntrack Modprobe ip_conntrack_ftp Modprobe iptable_nat
Modprobe ip_nat_ftp
Trang 35Port Based Security(tt)
Bảo vệ HDH:
Thay đổi trong file /etc/sysctl.conf Net/ipv4/conf/all/rp_filter = 1 Net/ipv4/conf/all/log_martians = 1 Net/ipv4/conf/all/send_redirects = 0 Net/ipv4/conf/all/accept_source_route = 0 Net/ipv4/conf/all/accept_redirects = 0
Net/ipv4/tcp_syncookies = 1 Net/ipv4/icmp_echo_ignore_broadcasts = 1 Net/ipv4/ip_forward = 1
Trang 36Port Based Security(tt)
Khắc phục sự cố trên iptables:
Để cho phép iptables ghi log vào file /var/log/message ta định nghĩa chain cho iptables như sau:
iptables -A OUTPUT -j LOG iptables -A INPUT -j LOG iptables -A FORWARD -j LOG iptables -A OUTPUT -j DROP iptables -A INPUT -j DROP iptables -A FORWARD -j DROP
Chú ý: Khi ta thay đổi cấu hình trên iptables thì ta dùng lệnh
#service iptables save để save lại thay đổi và khởi động lại iptables
#service iptables restart
Trang 37Câu hỏi ôn tập
Trình bày các đặc điểm chính của squid proxy.
Giải thích các thông số cấu hình squid proxy.
Phân biệt cơ chế cache và transparent
Triển khai và cấu hình dịch vụ proxy.
Giải thích các thông số cấu hình iptables.
Các bước triển khai và cấu hình iptables.
Viết các rule cho các dịch vụ thông dụng: www,ftp,smtp,…
Trang 38HỎI - ĐÁP