Giáo trình Hệ điều hành Linux nâng cao
Trang 1LINUX SECURITY
Trang 2NỘI DUNG
1 GIỚI THIỆU VỀ IPTABLE.
2 CÁC LOẠI BẢNG TRONG TABLE.
3 CÁC LOẠI CHAIN TRONG BẢNG.
4 CÁCH SỬ DỤNG FILTER LÀM FIREWALL.
5 CÁCH SỬ DỤNG BẢNG NAT.
Trang 31 GIỚI THIỆU VỀ IPTABLE.
IPTABLE dùng để tăng tính bảo mật trên hệ thống
Linux.
Cài đặt Iptable :
• Iptable được cài đặt mặc định trong hệ thống Linux, package của Iptable là Iptable-1.2.9-1.0.i386.rpm
Khởi động Iptable :
• #service iptable start
• #service iptable stop
• #service iptable restart
Trang 42 CÁC LOẠI BẢNG TRONG TABLE.
Iptable tổ chức phân lọai dựa theo cách thức xử lý gói tin
Các gói tin này được xử lý qua các Bảng (trong mỗi bảng
có phân biệt dạng gói tin đi vào- INPUT, đi ra- OUTPUT
hoặc chuyển tiếp- Forward hay cách thức biến đổi địa chỉ nguồn, đích- PREROUTING, POSTROUTING,… và người ta gọi nó là chain Trong mỗi chain sẽ có những luật- rule để quyết định xử lý gói tin như thế nào: cho phép-accept, từ chối-reject, bỏ đi-drop,… ) Chủ yếu trong thực tế người ta dùng bảng FILTER và NAT
• FILTER : lọc gói tin vào ra trên Server (đóng vai trò như một firewall)
• NAT : cho ánh xạ 1 địa chỉ IP thành nhiều
• MANGLE : biến đổi Type of Service bits trên header của gói tin TCP
Trang 53 CÁC LOẠI CHAIN TRONG BẢNG.
• INPUT: gói tin đi từ máy bất kỳ nào vào Server
Server (destination)
PC (source)
PC (source)
Trang 6CÁC LOẠI CHAIN (tt).
• OUTPUT: gói tin đi từ Server đến máy bất kỳ nào
Server (source)
PC (destination)
PC (destination)
Trang 7CÁC LOẠI CHAIN (tt).
• FORWARD : gói tin đi vào 1 card mạng này của Server và được
chuyển qua card mạng khác (cũng trên server đó) để đi ra 1 mạng khác
Server forward
PC (source)
PC (destination)
Trang 8CÁC LOẠI CHAIN (tt).
• POSTROUTING: Thực hiện việc NAT sau khi gói tin
đã đi qua bộ định tuyến (routing) của Server Bảng
này còn biết với tên gọi là SNAT (Source NAT).
SNAT còn có 1 trường hợp đặc biệt gọi là
MASQUERADE MASQUERADE dùng trong
trường hợp IP thật thay đổi liên tục (thường là khi ta dùng Dial-up hoặc ADSL)
Trang 9CÁC LOẠI CHAIN (tt).
SNAT (172.29.1.5
203.162.4.54)
Routing
Server đích (destination) một server ở ngoài Internet
203.162.4.1
Máy nguồn
(source)
(172.29.1.5)
Trang 10CÁC LOẠI CHAIN (tt).
• PREROUTING: Thực hiện việc NAT trước khi gói tin
đi qua bộ định tuyến (routing) của Server Bảng này
còn biết với tên gọi là DNAT (Destination NAT)
Trang 11CÁC LOẠI CHAIN (tt).
DNAT
203.162.4.54
172.29.1.8
Routing
Web Server của công ty
(destination) 172.29.1.8
Máy nguồn
(một máy nào đó bên
ngoài Internet muốn
truy xuất vào trang
web của công ty)
IP: 203.25.1.2
Trang 124 CÁCH SỬ DỤNG FILTER LÀM
FIREWALL.
INPUT:
Ví dụ: thêm 1 rule vào chain INPUT trong bảng filter.
Đây là cách thêm rule từ cửa sổ gõ lệnh của Linux Chúng
ta cũng có thể để nó trong file script (/etc/sysconfig/iptables) và thực thi file này bằng lệnh /etc/init.d/iptables restart
iptables –A INPUT –p icmp icmp-type any -j ACCEPT
• -A: thêm 1 rule.
• -p: chỉ ra giao thức sử dụng (icmp, tcp, udp, )
• icmp-type: kiểu icmp (echo-request, echo-reply, all…)
• -j : chuyển hướng tới 1 cách xử lý (ACCEPT, REJECT, DROP,…) hoặc một đích nào đó (1 chain mới, một kiểu NAT: DNAT, SNAT,
…)
Trang 13CÁCH SỬ DỤNG FILTER (tt).
Ví Dụ 1: tham khảo file iptables mẫu
*filter // Dùng bảng filter, nếu muốn dùng bảng nat thì khai báo: *nat
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT – [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT reject-with icmp-host-prohibited
COMMIT
Trang 14CÁCH SỬ DỤNG FILTER (tt).
Ví Dụ 2: thêm 1 rule cấm máy 172.29.1.4 truy xuất Server.
Trước dòng commit ta thêm
-A RH-Firewall-1-INPUT –s 172.29.1.4 –d 192.168.12.210 –j REJECT
Nếu muốn cấm đường mạng 192.168.11.0/24 truy cập Server ta khai báo
-A RH-Firewall-1-INPUT –s 192.168.11.0/24 –d 192.168.12.210 –j REJECT
• -s: là máy/mạng source
• -d: là máy/mạng đích
Server – 192.168.12.210
(destination)
(-d 192.168.12.210) ( dport 80)
PC – 172.29.1.4 (source)
(-s 172.29.1.4) ( sport 1024-6000)
Trang 15CÁCH SỬ DỤNG FILTER (tt).
Ví Dụ 3: thêm 1 rule cấm máy 172.29.1.8 truy xuất đến
dịch vụ web trên Server, nhưng vẫn cho phép truy xuất tất cả các dịch vụ khác
-A RH-Firewall-1-INPUT –s 172.29.1.8 –d
192.168.12.210 –p tcp –m tcp dport 80 –j REJECT
• dport : port của máy đích (máy Server, đối với gói tin đi vào).
• sport : port của máy nguồn (máy trạm, đối với gói tin đi vào server).
Ví Dụ 4: thêm 1 rule cấm máy 172.29.1.8 truy xuất đến
dịch vụ ssh trên Server, nhưng vẫn cho phép truy xuất tất
cả các dịch vụ khác
-A RH-Firewall-1-INPUT –s 172.29.1.8 –d
192.168.12.210 –p tcp –m tcp dport 22 –j REJECT
Trang 16CÁCH SỬ DỤNG FILTER (tt).
Ví Dụ 5: thêm 1 rule cấm máy 172.29.1.9 dùng port từ 1024 đến 5000
truy xuất đến dịch vụ ssh trên Server, nhưng vẫn cho phép truy xuất
đến ssh nếu dùng ngoài dãy port bị cấm
-A RH-Firewall-1-INPUT –s 172.29.1.9 –d 192.168.12.210 –p tcp –m tcp dport 1024:5000 dport 22 –j REJECT
Ví Dụ 6: giả sử trên máy server có 2 card mạng: eth0, eth1 và ta chỉ áp
dụng firewall trên card mạng thứ nhất (eth0) thì khai báo như sau:
-A RH-Firewall-1-INPUT –i eth0 –s 172.29.1.10 –d
192.168.12.210 –j REJECT
Nếu không chỉ rõ dùng card mạng nào (không có –i eth0) thì ngầm địch là áp dụng cho tất cả các card mạng có trên máy server.
Với tham số:
-i để chỉ card mạng đối với hướng dữ liệu đi vào (INPUT)
Ví dụ : -i eth0, -i eth1
-o để chỉ card mạng đối với hướng dữ liệu đi ra (OUTPUT)
Ví dụ : -o eth0, -o eth1
Trang 17CÁCH SỬ DỤNG FILTER (tt).
Ví Dụ 7: Cấm máy tính có ip 172.29.12.2 truy xuất đến server dùng giao
thức UDP, những vẫn cho phép máy này truy xuất những dịch vụ dùng giao thức khác như TCP, ICMP,…
-A RH-Firewall-1-INPUT –s 172.29.12.2 –d 192.168.12.210 –p udp –m udp –j REJECT
Ví Dụ 8: Cấm máy tính có ip 172.29.11.2 truy vấn DNS Server nhưng
vẫn cho phép máy 172.29.11.2 được phép làm secondary (backup dns) cho Server.
-A RH-Firewall-1-INPUT –s 172.29.11.2 –d 192.168.12.210 –p udp –m udp dport 53 –j REJECT
Ví Dụ 9: Cấm máy tính có ip 172.29.11.2 truy vấn DNS Server và không
phép máy 172.29.11.2 được phép làm secondary (backup dns) cho Server.
-A RH-Firewall-1-INPUT –s 172.29.11.2 –d 192.168.12.210 –p udp –m udp dport 53 –j REJECT
-A RH-Firewall-1-INPUT –s 172.29.11.2 –d 192.168.12.210 –p tcp –m tcp dport 53 –j REJECT
Trang 18CÁCH SỬ DỤNG FILTER (tt).
Ví Dụ 10: Cấm máy tính có ip 172.29.11.1 ping tới Server
Trước dòng: -A RH-Firewall-1-INPUT -p icmp icmp-type any -j ACCEPT
Ta khai báo:
-A RH-Firewall-1-INPUT –s 172.29.11.1 -p icmp icmp-type any -j REJECT
Ví Dụ 11: Có thể dùng cách phủ định (! Dấu chấm thang)
trong rule Ví dụ cấm tất cả các máy trừ IP 172.29.11.1 được phép truy cập web
-A RH-Firewall-1-INPUT –s ! 172.29.11.1 -p tcp -m tcp dport www -j REJECT
Trang 195 CÁCH SỬ DỤNG BẢNG NAT.
Trong file (/etc/sysconfig/iptables), ở cuối file khai báo như sau: *nat
sau từ *nat sẽ là các rule của bảng NAT
Lưu ý : Dùng lệnh #sysctl -w net.ipv4.ip_forward=1
hoặc dùng lệnh #echo “1” /proc/sys/net/ipv4/ipforward
Ví Dụ 1: NAT 1 IP thật 203.162.5.2 cho đường
mạng 192.168.10.0/24 được phép đi ra ngoài Internet trực tiếp
-A POSTROUTING -o eth0 -s
192.168.10.0/24 -j SNAT to 203.162.5.2
-o : là card mạng đi ra Internet của Router
Trang 20CÁCH SỬ DỤNG (tt).
Ví Dụ 2: dùng masquerade để nat ip thật thay đổi
(adsl, dialup).
-A POSTROUTING -o ppp0 -j MASQUERADE
ppp0 : là interface của modem hoặc adsl trên router
Ví Dụ 3: NAT 1 IP thật 203.162.5.2 cho máy web
server 172.29.1.2 được phép public.
-A PREROUTING -p tcp dport 80 -i eth0 -j DNAT to 172.29.1.2:80