初次設定iptables
以下可以直接寫入rc.local,開機時自動執行
如果是Debian系統的請寫到 /etc/rcS.d/xxxx.sh 裡面囉。
#touch這一行可與/var/run的pid結合,用來判斷系統的服務執行狀況
附帶一提,有時會用到一大個區段,加入方法例如 12.104.192.0/255.255.240.0即可touch /var/lock/subsys/local /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -P INPUT DROP /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT #ACCEPT-lo /sbin/iptables -A INPUT -i lo -p all -j ACCEPT #ACCEPT-連進來的dns服務,不想只用真實ip來記位置就開吧 /sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 53 -j ACCEPT #DROP-eth0-ping /sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP #允許哪一個ip在哪一個網卡過來的可以通過,不設定又忘記開服務port,用遠端的人就斷線啦~ /sbin/iptables -A INPUT -i eth0 -s XXX.XXX.XXX.XXX -p all -j ACCEPT #ssh /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT #http /sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT #vsftp,看自己開什麼port,如果是學鳥哥那邊的就是照抄 /sbin/iptables -A INPUT -p TCP --dport 21 -j ACCEPT /sbin/iptables -A INPUT -p TCP --dport 65400:65410 -j ACCEPT
底下是加入nat功能,以內部四個網段為例:
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/iptables -F -t nat /sbin/iptables -X -t nat /sbin/iptables -Z -t nat #意思就是在路由判斷之前的都Accpet /sbin/iptables -t nat -P PREROUTING ACCEPT #從內部位置出去的,一般都設定為寬鬆的全部通過 /sbin/iptables -t nat -P OUTPUT ACCEPT #意思就是在路由判斷之後的都Accpet /sbin/iptables -t nat -P POSTROUTING ACCEPT echo "1" > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.0/24 -j MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.102.0/24 -j MASQUERADE
題內話:如果想要將router的功能順便寫進去,記得順便寫下底下的指令
/sbin/route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.101.254
--------/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.101.254 /sbin/route add -net 192.168.102.0 netmask 255.255.255.0 gw 192.168.101.254
iptables設定說明
1.觀看現有的設定:
iptables -L (觀看時以服務的名稱方式顯示)
例: Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- anywhere anywhere tcp dpt:ftp
iptables -L -n (觀看時以ip和port的方式顯示)
例:
Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
2.重要基本概念!
(1)放在iptables裡面的IP位址可以是單 一一個(例如:192.168.0.250/32或以另一種192.168.0.250/255.255.255.0表示皆可。),也可以是一整個區段 (例如上面提到的:12.104.192.0/255.255.240.0)。 (2)基本上iptables可以接受一些例如--dport www之類的表示法,甚至可以接受www.xxx.ooo這種網址,不過不建議,乖乖用數字比較安心啦~ 3. 參數說明(詳細來源請參看鳥哥的網站 http://linux.vbird.org/linux_server/0250simple_firewall.php、以及這邊 http://163.26.161.130/~kv/iptables.htm、個人比較過後覺得Netman大神的這篇架設NAThttp://www.study-area.org/linux/servers/linux_nat.htm最清楚)
* 建立一個新的(自定)鏈 ( -N )。
* 刪除一個空的(自定)鏈 ( -X )。 * 改變一個內建鏈的原則 ( -P )。 * 列出一個鏈中的規則 ( -L )。 * 清除一個(內建)鏈中的所有規則 ( -F )。 * 歸零( zero ) 一個鏈中所有規則的封包字節(byte) 記數器( -Z )。 * 在一個鏈的最後面新增( append ) 一條規則 ( -A )。 * 在鏈內某個位置插入( insert ) 一條新規則( -I )。 * 在鏈內某個位置替換( replace ) 一條規則 ( -R )。 * 在鏈內某個位置刪除( delete ) 一條規則 ( -D )。 * 刪除(delete) 鏈內第一條符合的規則 (-D)。
> iptables [-AI 鏈] [-io 網路介面] [-p 協定] [-s 來源IP/網域] [-d 目標IP/網域] -j [ACCEPT|DROP]
-A :新增一條規則,該規則增加在最後面,例如原本已經有四條規則, 使用 -A 就可以加上第五條規則! -I :插入一條規則,如果沒有設定規則順序,預設是插入變成第一條規則, 例如原本有四條規則,使用 -I 則該規則變成第一條,而原本四條變成 2~5 INPUT :規則設定為 filter table 的 INPUT 鏈 OUTPUT :規則設定為 filter table 的 OUTPUT 鏈 FORWARD:規則設定為 filter table 的 FORWARD 鏈 -i :設定『封包進入』的網路卡介面,封包所進入的那個網路介面,例如 eth0, lo 等介面。需與 INPUT 鏈配合; -o :設定『封包流出』的網路卡介面,封包所傳出的那個網路介面,需與 OUTPUT 鏈配合; interface :網路卡介面,例如 ppp0, eth0, eth1.... -p :請注意,這是小寫呦!封包的協定啦! tcp :封包為 TCP 協定的封包; upd :封包為 UDP 協定的封包; icmp:封包為 ICMP 協定、 all :表示為所有的封包! -s :來源封包的 IP 或者是 Network ( 網域 );若規範為『不許』時,則加上 ! 即可,例如: -s ! 192.168.100.0/24 表示不許 192.168.100.0/24 之封包來源;
--sport:來源封包的 port 號碼,也可以使用 port1:port2 如 21:23
同時通過 21,22,23 的意思 -d :目標主機的 IP 或者是 Network ( 網域 );與s的差別在於一個是來源一個是目標 --dport:目標主機的 port 號碼;特別注意,此時-p參數要指定為對應的tcp等協定,不然就會看到像
iptables v1.4.4: unknown option --dport'
這種錯誤訊息產生-j :動作,可以接底下的動作; ACCEPT :接受該封包 DROP :丟棄封包 LOG :將該封包的資訊記錄下來 (預設記錄到 /var/log/messages 檔案)
各個規則鏈的預設政策可獨立自主的設定,不必受其它鏈的影響。
iptables [-AI 鏈] [-io 網路介面] [-p 協定] [-s 來源IP/網域] [-d 目標IP/網域] -j [ACCEPT|DROP]
|
沒有留言:
張貼留言