Professional Documents
Culture Documents
- Post-routing chain: NAT từ trong ra ngoài. Quá trình NAT sẽ thực hiện sau khi thực hiện
cơ chế định tuyến. Quá trình này nhằm thay đổi địa chỉ nguồn của gói tin. Kỹ thuật này
được gọi là NAT one-to-one hoặc many-to-one, được gọi là Source NAT hay SNAT.
- OUPUT: Trong loại này firewall thực hiện quá trình NAT.
4. Target và Jumps
Jump là cơ chế chuyển một packet đến một target nào đó để xử lý thêm một số thao
tác khác.
Target là cơ chế hoạt động trong iptables, dùng để nhận diện và kiểm tra packet. Các
target được xây dựng sẵn trong iptables như:
- ACCEPT: iptables chấp nhận chuyển data đến đích.
- DROP: iptables khóa những packet.
- LOG: thông tin của packet sẽ gởi vào syslog daemon iptables tiếp tục xử lý luật tiếp
theo trong bảng mô tả luật. Nếu luật cuối cùng không match thì sẽ drop packet. Với tùy
chọn thông dụng là --log-prefix=”string”, tức iptables sẽ ghi nhận lại những message
bắt đầu bằng chuỗi “string”.
- REJECT: ngăn chặn packet và gởi thông báo cho sender. Với tùy chọn thông dụng là --
reject-with qualifier, tức qualifier chỉ định loại reject message sẽ được gởi lại cho người
gởi. Các loại qualifer sau: icmp-port-unreachable (default), icmp-net-unreachable,
icmp-host-unreachable, icmp-proto-unreachable, …
- DNAT: thay đổi địa chỉ đích của packet. Tùy chọn là --to-destination ipaddress.
- SNAT: thay đổi địa chỉ nguồn của packet. Tùy chọn là --to-source <address>[-
address][:<port>-<port>]
- MASQUERADING: được sử dụng để thực hiện kỹ thuật NAT (giả mạo địa chỉ nguồn
với địa chỉ của interface của firewall). Tùy chọn là [--to-ports <port>[-<port>]], chỉ
định dãy port nguồn sẽ ánh xạ với dãy port ban đầu.
5. Thực hiện lệnh trong iptables
Iptables command Mô tả
Switch
-t <table> Chỉ định bảng cho iptables bao gồm:
filter, nat, mangle tables.
-j <target> Nhảy đến một target chain khi packet
thỏa luật hiện tại.
-A Thêm luật vào cuối iptables chain.
-F Xóa tất cả các luật trong bảng lựa chọn.
-p <protocol-type> Mô tả các giao thức bao gồm: icmp,
tcp, udp và all
-s <ip-address> Chỉ định địa chỉ nguồn
-d <ip-address> Chỉ định địa chỉ đích
Eth0
172.28.24.199
Firewall
(iptables)
Eth1
192.168.1.1
Mạng nội bộ
192.168.1.0/24
# Thực hiện DNAT để đổi địa chỉ đích thành địa chỉ của server
#### mạng nội bộ (192.168.1.2) khi truy cập đến 172.28.24.199
iptables -t nat -A PREROUTING -d 172.28.24.199 -i eth0 \
-j DNAT to-destination 192.168.1.2
## Thực hiện SNAT để đổi địa chỉ nguồn từ 192.168.1.2
######################### 172.28.24.199
iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 \
-j SNAT --to-source 172.28.24.199
## Tương tự như trên, cho phép máy từ LAN truy cập đến các server
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 \
-j SNAT --to-source 172.28.24.199
## Cho phép bên ngoài truy xuất vào server (192.168.1.2)
#####thông qua các port 80, 443, 22
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.1.2 \
-m multiport --dport 80,443,22 -m state --state NEW -j ACCEPT
# Cho phép chuyển tất cả các NEW, ESTABLISHED SNAT connections
#### bắt đầu từ homework và thực sự đã thiết lập trước đó với DNAT connections
iptables -A FORWARD -t filter -o eth0 -m state \
--state NEW, ESTABLISHED, RELATED -j ACCEPT
# Cho phép chuyển tất cả các connections bắt đầu từ internet đã được thiết lập
##########thông qua từ khóa NEW
iptables -A FORWARD -t filter -i eth0 -m state \
--state ESTABLISHED, RELATED -j ACCEPT
Ví dụ 12: Tạo một proxy
########### Cho phép script chạy với sh
#!/bin/sh
INTIF="eth1" ## Gán chuỗi “eth1” vào INTIF
EXTIF="eth0" ## Gán chuỗi “eth0” vào EXTIF
######## Thực hiện lấy địa chỉ ip mà DHCP cấp
EXTIP="`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
###### Load module cần thiết
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
## Cho phép các card mạng có thể forward được với nhau
echo "1" > /proc/sys/net/ipv4/ip_forward
###### Cho phép thực hiện với ip động
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
iptables -P INPUT ACCEPT ## Mặc định INPUT chain là ACCEPT
iptables -F INPUT ## Xóa các luật trong INPUT chain
iptables -P OUTPUT ACCEPT ## Mặc định OUTPUT chain là ACCEPT
iptables -F OUTPUT ## Xóa các luật trong OUTPUT chain
iptables -P FORWARD DROP ## Mặc định FORWARD chain là DROP
iptables -F FORWARD ## Xóa các luật trong FORWARD chain
iptables -t nat -F ## Xóa tất cả các luật của bảng nat
172.28.24.199
Firewall
(iptables)
192.168.1.1
Switch
Mạng nội bộ
192.168.1.0/24
Server
192.168.1.2
Hình 2: Mô hình mạng LAN với server
Kết quả của việc cấu hình proxy trên, như sau:
# Generated by iptables-save v1.2.8 on Thu Nov 9 10:02:42 2006
*nat
:PREROUTING ACCEPT [536:76253]
:POSTROUTING ACCEPT [2:119]
:OUTPUT ACCEPT [15:909]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT