چهارشنبه, 23 اسفند 1391 بازدید 6768 بار

کنترل بسته های ICMP (قسمت بیست و هفتم)

کنترل بسته های ICMP

 به علاوه، برای اینکه به بسته های ping وICMP قابل دسترسی مقصد اجازه دهید، قوانین INPUT را با فایروال، به عنوان مقصد وارد می کنید. برای فعال کردن عملیات ping، از هر نوع ICMP مثلا echo-reply و echo-request استفاده می نمایید و برای مقصد غیر قابل دسترسی، نوع destination-unreachable را به کار می برید :

iptables -A INPUT -j ACCEPT -p icmp -i eth0 --icmp-type echo-reply -d 10.0.1 
iptables -A INPUT -j ACCEPT -p icmp -i eth0 --icmp-type echo-request -d 10.0.1 
iptables -A INPUT -j ACCEPT -p icmp -i eth0 --icmp-type destination-unreachable \
 -d 10.0.1 

و در انتها، انتقال IP دوباره فعال می گردد : 

echo 1 > /proc/sys/net/ipv4/ip_forward 

لیست کردن قوانین 

 لیستی از این سوئیچ های iptables ، قوانین مختلف برای هر سوئیچ را نشان می دهد، بدین شکل : 

iptables -L 
Chain INPUT (policy DROP)
target port opt source destination 
LOG port --!192.168.0.0/24 anywhere LOG Level warning 
DROP all--!192.168.0.0/24 anywhere
DROP all --192.168.0.0/24 anywhere
DROP all--127.0.0.0/8 anywhere
ACCEPTall-- anywhere anywhere
ACCEPTtcp -- 10.0.0.2 anywheretcp dpt:http
ACCEPTtcp-- 10.0.0.2192.168.0.0/24 state RELATED,STABLISHED tcp spt:http 
ACCEPT!icmp --anywhereanywhere state RELATED,STABLISHED
DROP all --anywhereanywherestate NEW 
ACCEPTicmp --anywhere10.0.0.1 icmp echo-reply
ACCEPTicmp --anywhere10.0.0.1 icmp echo-request
ACCEPTicmp --anywhere10.0.0.1 icmp destination-unreachable
Chain FORWARD (policy ACCEPT)
target port opt source destination 
DROP all --!192.168.0.0/24 anywhere
DROP all --192.168.0.0/24 anywhere
DROP all --127.0.0.1/24 anywhere
DROP all --anywhereanywhere state NEW  
Chain OUTPUT (policy ACCEPT)
target port opt source destination 
DROP tcp -- anywhere192.168.0.0/24 state NEW tcp spt:http 
iptables -t nat -l 
Chain PREROUTING (policy ACCEPT)
target port opt source destination 
Chain POSTROUTING (policy ACCEPT)
target port opt source destination 
MASQUERAED  all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target port opt source destination  

قوانین تعریف شده کاربر 

برای قوانین پیچیده تر، ممکن است بخواهید زنجیر خودتان را ایجاد کنید تا اینکه تکرار را کاهش دهید. یک روش رایج، تعریف یک زنجیر کاربری برای هر دو زنجیر FORWARD و INPUT است، به طوری که در عملیات DROP، تکرار می شوند. به خاطر بسپارید که هر دو عملیات FORWARD و INPUT ممکن است علاوه بر قوانین اشتراکی، قوانین مجاز نیز داشته باشند. در مثال بعد، یک زنجیر تعریف شده توسط کاربر، arriving نامیده شده است. زنجیر با سوئیچ -N در بالای اسکریپت تعریف می شود : 

iptable -n arriving 

یک زنجیر کاربری ابتدا باید تعریف شود، قبل از اینکه بتواند به عنوان یک هدف در قوانین دیگر استفاده شود. بنابراین ابتدا باید تمام قوانین آن زنجیر را تعریف و اضافه کنید و سپس آن را به عنوان یک هدف به کار برید. زنجیر arriving ، ابتدا تعریف گشته است و قوانین آن اضافه شده اند. سپس در انتهای فایل، این زنجیر به عنوان یک هدف برای هر دو زنجیر FORWARD و INPUT استفاده شده است. زنجیر INPUT قوانینی را برای قبول بسته ها لیست می کند، در حالی که زنجیر FORWARD ، یک خط مشی ACCEPT دارد که آنها را به طور پیش فرض می پذیرد. 

iptables -N arriving
iptables -F arriving 
# IP spoofing, deny any packets on the internal network that has an 
#external source address.
iptables -A arriving -j LOG -i eth1 \! -s 192.168.0.0/24
iptables -A arriving -j DROP -i eth1 \! -s 192.168.0.0/24
iptables -A arriving -j DROP \! -i eth1  -s 192.168.0.0/24
..................................
# entries at end of script 
iptables -A INPUT -j arriving
iptables -A FORWARD -j arriving

فهرستی از قوانین مربوطه، در اینجا نشان داده شده است : 

Chain INPUT (policy DROP)
target port opt source destination 
arriving all --0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target port opt source destination 
arriving all --0.0.0.0/00.0.0.0/0
Chain arriving (2 references)
target port opt source destination 
LOG all --!192.168.0.0/24 0.0.0.0/0 LOG flags 0 level 4 
DROP all --!192.168.0.0/24 0.0.0.0/0
DROP all --192.168.0.0/24 0.0.0.0/0

 

برای قوانین که زنجیر ها ممکن است فرق کنند، باز نیاز دارید تا قوانین مجزا وارد نمایید. در اسکریپت myfilter2 ، زنجیر FORWARD دارای یک خط مشی ACCEPT است که به تمام بسته های انتقال یافته به شبکه محلی اجازه می دهد تا در طول فایروال عبود کنند. اگر زنجیر FORWARD ، یک خط مشی DROP داشته باشد ( مثل زنجیر INPUT ) ، سپس احتمالا باید قوانین مجزایی تعریف کنید که تحت آن، زنجیر FORWARD بتوانند بسته ها را بپذیرد. در این مثال ، زنجیر های FORWARD و INPUT دارای قوانین مختلفی برای قبول بسته های دستگاه eth1 هستند. قانون INPUT محدودتر است، برای قادر ساختن شبکه محلی، برای دریافت بسته های انتقال یافته از سریق فایروال می توانید با استفاده از یک قانون مجزای FORWARD ، انتقال را روی دستگاه آن فعال کنید، بدین شکل : 

iptables -A FORWARD -j ACCEPT -p all -i eth1 

زنجیر INPUT ، بسته ها را فقط از میزبانهای شبکه محلی، قبول می کند. 

iptables -A INPUT -j ACCEPT -p all -i  eth1 -s 192.168.0.0/24 
این مورد را ارزیابی کنید
(3 رای‌ها)

پربازدیدترین مطالب

"«قیمتی که در هنگام سفارش مشتري در پیش‌فاکتور منظور گرديده است، معتبر مي‌باشد»."