Cấu hình FW cho mô hình thử nghiệm

Một phần của tài liệu Tài liệu quản trị hệ thống Linux CMC (Trang 66)

8. Xây dựng hệ Linux Firewall

8.3. Cấu hình FW cho mô hình thử nghiệm

Máy chủ tường lửa (Xây dựng với Iptables)

Về mặt vật lý, máy chủ tường lửa được trang bị 02 card mạng, và giả sử

 eth1: có địa chỉ 203.162.12.125 (địa chỉ Internet); đảm nhận liên lạc với Internet

 eth0: có địa chỉ 192.168.0.5 (địa chỉ IP mạng nội bộ); đảm nhận liên lạc với mạng nội bộ Khi cần định tuyến ra Internet, máy chủ tường lửa sử dụng địa chỉ 203.162.12.126 (eth0 tại router) làm ‘gateway’ Bộ luật đặt lọc #!/bin/sh modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp

INET_GW="203.162.12.126" INET_SRV_NAT="203.162.12.124" INET_SRV_IP="192.168.0.4" FW_PUBLIC_IF="eth1" FW_PUBLIC_IP="203.162.12.125" FW_PUBLIC_IP_NET="203.162.12.120/29" FW_PUBLIC_IP_BROADCAST_1="203.162.12.120" FW_PUBLIC_IP_BROADCAST_2="203.162.12.127" FW_PRIVATE_IF="eth0" FW_PRIVATE_IP="192.168.0.5" FW_PRIVATE_IP_NET="192.168.0.0/24" FW_PRIVATE_IP_BROADCAST_1="192.168.0.255" LOOPBACK_IF="lo" LOOPBACK_IP="127.0.0.1" LOOPBACK="127.0.0.0/8" BROADCAST="255.255.255.255" CLASS_A="10.0.0.0/8" CLASS_B="172.16.0.0/12" CLASS_C="192.168.0.0/16" CLASS_D_MUTICAST="224.0.0.0/4" CLASS_E_RESERVED_NET="240.0.0.0/5" P_PORTS="0:1023" UP_PORTS="1024:65535"

# Cấm các tác vụ mạng trong thời gian ngắn khởi tạo tường lửa echo "0" > /proc/sys/net/ipv4/ip_forward

route del -net 0.0.0.0 netmask 0.0.0.0 route del -host $INET_SRV_IP_NAT # cấm phản hồi với thông tin broadcast

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # cấm ‘icmp redirect’

echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # cấm ‘routed packets’

echo "1" > /proc/sys/net/ipv4/conf/all/accept_source_route # lưu vào nhật ký các gói giả mạo địa chỉ

echo "0" > /proc/sys/net/ipv4/conf/all/log_martians # Xoá mọi luật hiện có

iptables -F iptables -X iptables -Z iptables -t nat -Z iptables -t nat -F # chính sách mặc định: cấm tất iptables -P INPUT DROP

iptables -P FORWARD DROP

# NAT - network address translating; ánh xạ địa chỉ

iptables -t nat -A POSTROUTING -j SNAT -s $INET_SRV_IP --to-source $INET_SRV_IP_NAT iptables -t nat -A PREROUTING -j DNAT -d $INET_SRV_IP_NAT --to-dest $INET_SRV_IP iptables -t nat -A OUTPUT -j DNAT -d $INET_SRV_IP_NAT --to-dest $INET_SRV_IP # bảo vệ kiểu tấn công bằng các gói thông tin gây lụt, tắc nghẽn - synflood iptables -N syn-flood

iptables -A syn-flood -m limit --limit 1/s --limit-burst 10 -j RETURN iptables -A syn-flood -j DROP

# Luật bảo vệ giao tiếp eth1 # chống giả mạo địa chỉ iptables -N public_snoof

iptables -A public_snoof -i $FW_PUBLIC_IF -s $FW_PUBLIC_IP -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -s $CLASS_A -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -s $CLASS_B -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -s $CLASS_C -j DROP

iptables -A public_snoof -i $FW_PUBLIC_IF -s $CLASS_D_MUTICAST -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -s $CLASS_E_RESERVED_NET -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -d $FW_PUBLIC_IP_BROADCAST_1 -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -d $FW_PUBLIC_IP_BROADCAST_2 -j DROP iptables -A public_snoof -i $FW_PUBLIC_IF -d $BROADCAST -j DROP

iptables -A public_snoof -i $FW_PUBLIC_IF -d $LOOPBACK -j DROP

# các dịch vụ được phép truy nhập từ ngoài vào chính máy chủ tường lửa. Giả sử tại đây chỉ có dịch # vụ DNS

iptables -N public_services

iptables -A public_services -i $FW_PUBLIC_IF -p tcp --dport 113 -j REJECT --reject-with tcp-reset iptables -A public_services -i $FW_PUBLIC_IF -m state --state ESTABLISHED,RELATED -j ACCEPT # DNS

iptables -A public_services -i $FW_PUBLIC_IF -p udp -d $FW_PUBLIC_IP --dport 53 -j ACCEPT # Thông tin dạng icmp đến từ bên ngoài

iptables -N public_icmp

iptables -A public_icmp -i $FW_PUBLIC_IF -p icmp --icmp-type 0 -j ACCEPT iptables -A public_icmp -i $FW_PUBLIC_IF -p icmp --icmp-type 3 -j ACCEPT iptables -A public_icmp -i $FW_PUBLIC_IF -p icmp --icmp-type 12 -j ACCEPT iptables -A public_icmp -i $FW_PUBLIC_IF -p icmp --icmp-type 14 -j ACCEPT iptables -A public_icmp -i $FW_PUBLIC_IF -p icmp --icmp-type 16 -j ACCEPT iptables -A public_icmp -i $FW_PUBLIC_IF -p icmp --icmp-type 18 -j ACCEPT

iptables -A public_icmp -i $FW_PUBLIC_IF -s $FW_PUBLIC_IP_NET -p icmp --icmp-type 8 -j ACCEPT # luật bảo vệ giao tiếp eth0

# chống giả mạo địa chỉ iptables -N private_snoof

iptables -A private_snoof -i $FW_PRIVATE_IF -s $FW_PRIVATE_IP -j DROP iptables -A private_snoof -i $FW_PRIVATE_IF -s $CLASS_A -j DROP

iptables -A private_snoof -i $FW_PRIVATE_IF -s $CLASS_B -j DROP

iptables -A private_snoof -i $FW_PRIVATE_IF -s $CLASS_D_MUTICAST -j DROP iptables -A private_snoof -i $FW_PRIVATE_IF -s $CLASS_E_RESERVED_NET -j DROP iptables -A private_snoof -i $FW_PRIVATE_IF -d $BROADCAST -j DROP

# Các dịch vụ được phép truy nhập từ máy nội bộ: chỉ là DNS iptables -N private_services

# quản trị

iptables -A private_services -i $FW_PRIVATE_IF -s $LOCAL_ADMIN_IP_1 -j ACCEPT iptables -A private_services -i $FW_PRIVATE_IF -s $LOCAL_ADMIN_IP_2 -j ACCEPT iptables -A private_services -i $LOOPBACK_IF -s $FW_PUBLIC_IP -j ACCEPT

iptables -A private_services -i $LOOPBACK_IF -s $FW_PRIVATE_IP -j ACCEPT iptables -A private_services -i $LOOPBACK_IF -s $LOOPBACK_IP -j ACCEPT

iptables -A private_services -i $LOOPBACK_IF -p tcp --dport 113 -j REJECT --reject-with tcp-reset iptables -A private_services -i $FW_PRIVATE_IF -p tcp --dport 113 -j REJECT --reject-with tcp-reset iptables -A private_services -i $LOOPBACK_IF -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A private_services -i $FW_PRIVATE_IF -m state --state ESTABLISHED,RELATED -j ACCEPT # DNS

iptables -A private_services -i $FW_PRIVATE_IF -p udp -d $FW_PRIVATE_IP --dport 53 -j ACCEPT # icmp -> đối với các máy trên mạng nội bộ

iptables -N private_icmp

iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 0 -j ACCEPT iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 3 -j ACCEPT iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 8 -j ACCEPT iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 12 -j ACCEPT iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 14 -j ACCEPT iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 16 -j ACCEPT iptables -A private_icmp -i $FW_PRIVATE_IF -p icmp --icmp-type 18 -j ACCEPT

# Chuyển tiếp - truy nhập từ bên ngoài, qua bức tường lửa tới máy chủ INET_SRV, và chỉ tới # được các dịch vụ: WEB, FTP, eMail

iptables -N forward_services

iptables -A forward_services -i $FW_PUBLIC_IF -p tcp --dport 113 -j REJECT --reject-with tcp-reset iptables -A forward_services -i $FW_PRIVATE_IF -p tcp --dport 113 -j REJECT --reject-with tcp-reset iptables -A forward_services -i $FW_PUBLIC_IF -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A forward_services -i $FW_PRIVATE_IF -m state --state ESTABLISHED,RELATED -j ACCEPT # WWW

iptables -A forward_services -i $FW_PUBLIC_IF -p tcp -d $INET_SRV_IP --dport 80 -j ACCEPT # FTP

iptables -A forward_services -i $FW_PUBLIC_IF -p udp -d $INET_SRV_IP --dport 21 -j ACCEPT # Chuyển tiếp - từ trong ra Internet: cho phép tất

iptables -A forward_services -i $FW_PRIVATE_IF -j ACCEPT # INPUT chain

iptables -A INPUT -i $FW_PUBLIC_IF -p tcp --syn -j syn-flood

iptables -A INPUT -i $FW_PUBLIC_IF -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -i $LOOPBACK_IF -p tcp --syn -j syn-flood

iptables -A INPUT -i $LOOPBACK_IF -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -i $FW_PRIVATE_IF -p tcp --syn -j syn-flood

iptables -A INPUT -i $FW_PUBLIC_IF -j public_snoof iptables -A INPUT -i $LOOPBACK_IF -j private_snoof iptables -A INPUT -i $FW_PRIVATE_IF -j private_snoof iptables -A INPUT -i $FW_PUBLIC_IF -p icmp -j public_icmp iptables -A INPUT -i $FW_PUBLIC_IF -j public_services iptables -A INPUT -i $LOOPBACK_IF -p icmp -j private_icmp iptables -A INPUT -i $LOOPBACK_IF -j private_services iptables -A INPUT -i $FW_PRIVATE_IF -p icmp -j private_icmp iptables -A INPUT -i $FW_PRIVATE_IF -j private_services # FORWARD chain

iptables -A FORWARD -i $FW_PUBLIC_IF -p tcp --syn -j syn-flood

iptables -A FORWARD -i $FW_PUBLIC_IF -p tcp ! --syn -m state --state NEW -j DROP iptables -A FORWARD -i $FW_PRIVATE_IF -p tcp --syn -j syn-flood

iptables -A FORWARD -i $FW_PRIVATE_IF -p tcp ! --syn -m state --state NEW -j DROP iptables -A FORWARD -i $FW_PUBLIC_IF -j public_snoof

iptables -A FORWARD -i $FW_PRIVATE_IF -j private_snoof iptables -A FORWARD -i $FW_PUBLIC_IF -p icmp -j public_icmp iptables -A FORWARD -j forward_services

# OUTPUT chain

iptables -A OUTPUT -j ACCEPT # Routing

route add -net 0.0.0.0 netmask 0.0.0.0 gw $INET_GW metric 1

route add -net $LINUX_TEAM_NET netmask $LINUX_TEAM_NETMASK gw $LOCAL_GW metric 1 route add -host $INET_SRV_IP_NAT gw $FW_PRIVATE_IP metric 1

echo "1" > /proc/sys/net/ipv4/ip_forward exit 0

Với các máy chủ nội bộ khác sử dụng Linux – chúng ta cũng có thể áp dụng kỹ thuật vừa trình bày với iptables, và cần chú ý tới các điểm sau:

 Một máy chủ nội bộ thông thường sẽ chỉ có 01 netcard (eth0)

 Với máy chủ có 01 netcard chúng ta KHÔNG cần phải thiết lập các luật ‘chuyển tiếp’ (không cần tới FORWARD chain)

 Với một máy chủ khác, khi thiết lập các luật đặt lọc chiều thông tin vào (INPUT chain), cũng cần xác định ra dịch vụ cụ thể sẽ cho phép (LDAP, POP3, ..)

Ghi chú:

 INPUT: Chiều thông tin vào, có đích là chính một máy chủ tường lửa.

 OUTPUT: Chiều thông tin ra, xuất phát từ chính máy chủ tường lửa.

 FORWARD: Chuyển tiếp thông tin: máy nội bộ - (eth0) máy chủ tường lửa (eth1) - thế giới bên ngoài, hoặc theo chiều ngược lại; thế giới bên ngoài - (eth1) máy chủ tường lửa (eth0) - máy nội bộ.

Một phần của tài liệu Tài liệu quản trị hệ thống Linux CMC (Trang 66)

Tải bản đầy đủ (DOC)

(70 trang)
w