2012年8月16日 星期四

iptables設定

初次設定iptables

張貼者:2012年8月16日 上午1:13Wei-Chang Lin   [ 已更新 2012年10月26日 上午1:38 ]
以下可以直接寫入rc.local,開機時自動執行
如果是Debian系統的請寫到 /etc/rcS.d/xxxx.sh 裡面囉。
#touch這一行可與/var/run的pid結合,用來判斷系統的服務執行狀況
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
附帶一提,有時會用到一大個區段,加入方法例如 12.104.192.0/255.255.240.0即可
底下是加入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]

沒有留言:

張貼留言

苗栗縣研習直播-youtube直播補充使用說明-取得直播連結

Step1 建立直播影片 Step2 設定直播時間排程,設定後點選"建立直播" Step3 於直播設定畫面,點選畫面右上角"分享"圖示,如下圖,將取得之網址連結隨研習公文或研習公告附上。