# 系統安全:iptables與 ip6tables

## iptables簡單測試：以kvm 架設虛擬機，進行測試

![](https://529150212-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh81JtaIQ84bwQqz_Wh%2F-M0KVyu6WFgD9suD-01z%2F-M0KkNssxOXljl0kRldo%2FScreenshot_ubuntu18.04_2020-02-18_08%3A44%3A13.png?alt=media\&token=627d9c17-88c5-40f2-8661-e72cd66942d0)

在虛擬機中，加入以下規則，進行 192.168.122.247

```
#!/bin/bash
#清理規則
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#建立ICMP chain
iptables -N ICMP

#進行紀錄
iptables -A ICMP -p icmp -j LOG --log-prefix 'Ping:' --log-level alert

#ICMP chain 的規則 ：DROP封包
iptables -A ICMP -p icmp -j DROP

#針對INPUT chain的icmp封包跳到 ICMP chain
iptables -A INPUT -p icmp -j ICMP

```

此時由於任何ping封包都被禁止，所以當由192.168.122.247 ping 192.168.122.1也不通

改善：

```
要禁止的只有type=8,code=0
改指令：

#!/bin/bash
#清理規則
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#建立ICMP chain
iptables -N ICMP

#進行紀錄
iptables -A ICMP -p icmp --icmp-type 8 -j LOG --log-prefix 'Ping Request:' --log-level alert


#ICMP chain 的規則 ：DROP封包
iptables -A ICMP -p icmp --icmp-type 8 -j DROP

#針對INPUT chain的icmp封包跳到 ICMP chain
iptables -A INPUT -p icmp -j ICMP

```

## &#x20;觀察

#### cat /var/log/syslog | grep ICMP

Feb 18 08:34:19 pi-pc kernel: \[ 253.444190] Ping:IN=enp1s0 OUT= MAC=**52:54:00:5d:71:e6**(目的MAC):**52:54:00:a0:9d:cf**(來源MAC):08:00 SRC=192.168.122.1 DST=192.168.122.247 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=9022 DF PROTO=ICMP TYPE=8 CODE=0 ID=3 SEQ=1
