10.15 iptables filter表案例, iptables nat表應用

iptables經常使用知識回顧點

  • iptables -I/-A/-D 後緊跟 鏈 ,能夠是INPUT,OUTPUT,FORWARD
  • -I 插入
  • -A 添加
  • -D 刪除
  • iptables -P 用來指定 鏈的默認策略 --------最好不要直接操做,不然會形成遠程的終端斷開

iptables案例

需求:
把80,22,21端口放行,但22端口指定一個IP段,只容許這個IP段的IP訪問的時候,纔可訪問到,其餘段的一律拒絕; 使用腳原本實現
RELATED狀態,這是一個邊緣的一個狀態
好比:客戶端和服務端相互了通訊,創建完鏈接以後,還會有一些額外的連接出來,這時候狀態就變成了RELATED(若牢牢只有ESTABLISHED,而沒有RELATED,頗有可能致使其餘的通訊被禁掉,由於默認策略是INPUT,DROP)
ESTABLISHED狀態, 保持鏈接
有時,在沒有增長-m --state這條規則,致使增長了80或21端口,可是不能正常通訊,加這條規則的目的是爲了讓通訊更加順暢linux

編輯腳本vim

[root@linux-128 ~]# vim /usr/local/sbin/iptables.sh

添加內容:bash

#! /bin/bash
ipt="/usr/sbin/iptables"
#這裏ipt是定義個一個變量(寫腳本的時候,寫全局的路徑,就是絕對路徑,就是後面再加載它,用變量去代替,看着更加簡單)

$ipt -F
#清空以前的規則——>在沒有 -t 指定表的時候,默認的就是filter表
$ipt -P INPUT DROP
#把IPPUT的策略給扔掉

$ipt -P OUTPUT ACCEPT
#把OUTPUT放行

$ipt -P FORWARD ACCEPT
#把FORWARD放行

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#增長規則,-m  --state 指定了狀態,並針對這些狀態放行(-m  --state這種用法並很少見,可是這條規則必須寫進來,目的是讓相關>的數據包放行)

$ipt -A INPUT -s 192.168.1.88/24 -p tcp --dport 22 -j ACCEPT
#把該網段的22端口數據包放行——>這裏的IP段根據本身的IP段來作實驗

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
#把80端口數據包放行

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
#把21端口數據包放行

執行腳本:網絡

[root@linux-128 ~]# sh /usr/local/sbin/iptables.sh
[root@linux-128 ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   30  2148 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       192.168.1.0/24     0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 18 packets, 1816 bytes)
 pkts bytes target     prot opt in     out     source               destination

注意:爲何這裏要用腳本:由於這裏有INPUT DROP,確定要把你的遠程鏈接給斷開,因此須要執行腳本把你的命令批量執行。tcp


icmp示例

  • iptables -I INPUT -p icmp --icmp-type 8 -j DROP
    這個規則會產生一個效果,讓你ping外面的機器能夠ping通,但外面ping本機的時候,就不會通了
[root@linux-128 ~]#iptables -I INPUT -p icmp --icmp-type 8 -j DROP

注意:這裏會發現可ping通外面的網絡,但本身的虛擬機和物理機則沒法鏈接rest

[root@linux-128 ~]# ping www.baidu.com
PING www.a.shifen.com (180.97.33.107) 56(84) bytes of data.
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=1 ttl=128 time=17.4 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=2 ttl=128 time=17.5 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=3 ttl=128 time=17.8 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 17.403/17.614/17.895/0.206 ms

這時用本身的物理機去ping虛擬機,會發現沒法鏈接
輸入圖片說明code

這時,再來刪除這條命令圖片

[root@linux-128 ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP
iptables: Bad rule (does a matching rule exist in that chain?).
  • service iptables restart
    重啓iptables服務
[root@linux-128 ~]# service iptables restart    //重啓iptables服務
Redirecting to /bin/systemctl restart  iptables.service
[root@linux-128 ~]# iptables -nvL      //這裏會看到還沒禁掉以前的規則
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   81  6996 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            

Chain OUTPUT (policy ACCEPT 61 packets, 6060 bytes)
 pkts bytes target     prot opt in     out     source               destination

這裏物理機去ping虛擬機IP,會發現再次ping通 注意:這裏的物理機和虛擬機不通,並非指不能鏈接,這裏僅僅是作了一個禁ping而已(是能夠ping通外網的,但別人沒法ping通你)

相關文章
相關標籤/搜索