日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iptables 防火墙(上)

發布時間:2024/4/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iptables 防火墙(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iptables 防火墻(上)

1. 防火墻概述

1.1 概念與作用

網絡中的防火墻是一種將內部網絡和外部網絡分開的方法,是一種隔離技術。防火墻在內網與外網通信時進行訪問控制,依據所設置的規則對數據包作出判斷,最大限度地阻止網絡中的黑客破壞企業網絡,從而加強企業網絡安全。

1.2 防火墻分類

1.2.1 硬件防火墻

如思科的ASA防火墻,H3C的Sepath防火墻等。

1.2.2 軟件防火墻

如iptables等。

按架設的位置,可以分為主機防火墻,網關防火墻

1.3 iptables防火墻

Linux操作系統中默認內置一個軟件防火墻, 即iptables防火墻

1.3.1 netfilter

位于Linux內核中的包過濾功能體系,稱為Linux防火墻的“內核態”

1.3.2 iptables

位于/sbin/iptables,用來管理防火墻規則的工具,稱為Linux防火墻的“用戶態”

1.4 包過濾的工作層次

主要是網絡層,針對IP數據包,體現在對包內的IP地址,端口等信息的處理上。

2. iptables規則鏈

2.1 規則鏈

  • 規則的作用:對數據包進行過濾或處理
  • 鏈的作用:容納各種防火墻規則
  • 鏈的分類依據:處理數據包的不同時機

2.2 默認包括5種規則鏈

  • INPUT:處理入站數據包
  • OUTPUT:處理出站數據包
  • FORWARD:處理轉發數據包
  • POSTROUTING:在進行路由選擇后處理數據包
  • PREROUTING:在進行路由選擇前處理數據包

3. iptables規則表

3.1 規則表

  • 表的作用: 容納各種規則鏈
  • 表的劃分依據:防火墻規則的動作相似

3.2 默認包括4個規則表

  • raw表:確定是否對該數據包進行狀態跟蹤
  • mangle表:為數據包設置標記
  • nat表:修改數據包中的源、目標IP地址或端口
  • filter表:確定是否被放行該數據包(過濾)

3.3 鏈表結構關系圖

4. iptables匹配流程

4.1 規則表之間的順序:

raw--->mangle--->nat--->filter

4.2 規則鏈之間的順序:

  • 入站: PREROUTING--->INPUT
  • 出站: OUTPUT--->POSTROUTING
  • 轉發: PREROUTING--->FORWARD--->POSTROUTING

4.3 規則鏈內的匹配順序

  • 按順序依次檢查,匹配即停止(LOG 策略例外)
  • 若找不到相匹配規則,按該鏈的默認策略處理

5. iptables命令

5.1 語法構成

iptables[-t表名]選項[鏈名] [條件] [j控制類型]


注意事項:

  • 不指定表名時,默認指filter 表
  • 不指定鏈名時,默認指表內的所有鏈
  • 除非設置鏈的默認策略,否則必須指定匹配條件
  • 選項、鏈名、控制類型使用大寫字母,其余均為小寫

5.2 數據包的常見控制類型

  • ACCEPT: 允許通過
  • DROP: 直接丟棄,不給出任何回應
  • REJECT: 拒絕通過,必要時會給出提示
  • LOG: 記錄日志信息,然后傳給下一條規則繼續匹配

5.3 命令簡介

5.3.1 查看規則

[root@iptables01 /]# iptables -L -nv #查看規則(默認查看filter表) Chain INPUT (policy ACCEPT 97 packets, 7567 bytes)pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 59 packets, 6728 bytes)pkts bytes target prot opt in out source destination [root@iptables01 /]# iptables -t nat -L #指定查看nat表 Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

5.3.2 清空規則

[root@iptables01 /]# iptables -F #清空規則 [root@iptables01 /]# service iptables stop #清空的更徹底

5.4 項目小實戰(一)

項目要求:查出xshell的連接鏈

5.4.1 已知現表規則

[root@iptables01 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

5.4.2 禁掉轉發鏈FORWARD

[root@iptables01 /]# iptables -P FORWARD DROP [root@iptables01 /]# [root@iptables01 /]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

xshell依據存活,說明它的連接跟FORWARD沒關系

5.4.3 禁掉進站鏈INPUT(或出站鏈OUTPUT)

[root@iptables01 /]# iptables -P INPUT DROP [root@iptables01 /]# Socket error Event: 32 Error: 10053. Connection closing...Socket close.Connection closed by foreign host.Disconnected from remote host(iptables01) at 15:26:29.Type `help' to learn how to use Xshell prompt. [C:\~]$ Reconnecting in 3 seconds. Press any key to exit local shell. ...

xshell掉了,說明它的連接直接與進站鏈(出站鏈)有關

  • 重啟iptables即可恢復連接

5.5 命令演練

5.5.1 DROP

[root@iptables01 ~]# iptables -I INPUT -p icmp -j DROP #禁掉ping的本機IP

[root@iptables01 ~]# iptables -F #清空鏈規則 #清空規則后,本機IP又可以ping的通了

5.5.2 REJECT

[root@iptables01 ~]# iptables -I INPUT -p icmp -j REJECT #禁掉ping的本機IP(但是有提示)

[root@iptables01 ~]# iptables -F #清空鏈規則 #清空規則后,本機IP又可以ping的通了

小結:由此可以看出DROP與REJECT的區別,DROP無回復,REJECT拒絕,但有回復

6. 常用選項

6.1 增加新的規則

  • A:在鏈的末尾追加一條規則
  • I:在鏈的開頭(或指定序號)插入一條規則

6.2 實戰演練

[root@iptables01 ~]# iptables -A INPUT -p icmp -j ACCEPT [root@iptables01 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@iptables01 ~]# iptables -I INPUT -p tcp -j ACCEPT [root@iptables01 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere #在這里 ACCEPT icmp -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@iptables01 ~]# iptables -I INPUT 2 -p udp -j ACCEPT [root@iptables01 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere ACCEPT udp -- anywhere anywhere #在這里 ACCEPT icmp -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

6.3 查看規則列表

  • L: 列出所有的規則條目
  • n: 以數字形式顯示地址、端口等信息
  • V: 以更詳細的方式顯示規則信息
  • line-numbers: 查看規則時,顯示規則的序號。-line 與之同效

6.4 刪除、清空規則

  • D: 刪除鏈內指定序號(或內容)的一條規則
  • F: 清空所有的規則
[root@iptables01 ~]# iptables -D INPUT 3 [root@iptables01 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere ACCEPT udp -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

6.5 修改、替換規則

R: 修改替換規則

6.6 設置默認規則

P:為指定的鏈設置默認規則

6.7 項目小實戰(二)

項目要求:在三條鏈都DROP的情況下,如可保證xshell的正常連接

[root@iptables01 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@iptables01 ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT #設置tcp協議22端口 [root@iptables01 ~]# iptables -P INPUT DROP [root@iptables01 ~]# [root@iptables01 ~]# #xshell正常工作 [root@iptables01 ~]# [root@iptables01 ~]# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

需要注意的是:若要設置filter 表中INPUT鏈或者OUTPUT鏈的默認規則為DROP時,要先設置tcp協議22端口(ssh 遠程連接)為ACCEPT,否則通過遠程操控的主機將斷開連接,若在真實生產環境中,需要到服務器所在機房重新設置才可以,造成不必要的麻煩。

7. 規則的匹配類型

7.1 通用匹配

  • 可直接使用,不依賴與其他條件或擴展
  • 包括網絡協議、IP 地址、網絡接口等條件

7.2 隱含匹配

  • 要求以特定的協議匹配作為前提
  • 包含端口、TCP標記、ICMP 類型等條件

7.3 顯式匹配

  • 要求以“-m擴展模塊”的形式明確指出類型
  • 包括多端口、MAC地址、IP 范圍、數據包狀態等條件

7.4 常用管理選項匯總表

8. 常見的通用匹配條件:

8.1 協議匹配: -p 協議名


上圖為:除了icmp協議,其他都丟棄

8.2 地址匹配:-s 源地址,-d 目的地址

8.3 接口匹配: -i入站網卡、-0出站網卡

9. 項目實戰

項目要求:三臺主機,要求其中兩臺主機可以在不同網段下互ping,其中一臺模擬網關轉換

9.1 部署環境

主機名主機IP(1)主機IP(2)網卡模式(1)網卡模式(2)主機網關
iptables01192.168.200.99NET8192.168.200.100
iptables02192.168.200.100192.168.100.100NET8NET1(僅主機)
iptables03192.168.100.110NET8192.168.100.100

9.2 部署網卡配置文件

9.2.1 iptables01的網卡配置文件

[root@iptables01 network-scripts]# pwd /etc/sysconfig/network-scripts [root@iptables01 network-scripts]# cat ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.200.99 #本主機的IP NETMASK=255.255.255.0 GATEWAY=192.168.200.100 #本主機的網關,iptables02第一個網卡的IP

9.2.2 iptables02的網卡配置文件

[root@iptables02 network-scripts]# pwd /etc/sysconfig/network-scripts [root@iptables02 network-scripts]# cat ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.200.100 #本主機的IP,iptables01的網關 NETMASK=255.255.255.0[root@iptables02 network-scripts]# cat ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.100.100 #本主機的IP,iptables03的網關 NETMASK=255.255.255.0

9.2.3 iptables03的網卡配置文件

[root@iptables03 network-scripts]# pwd /etc/sysconfig/network-scripts [root@iptables03 network-scripts]# cat ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.100.110 #本主機的IP NETMASK=255.255.255.0 GATEWAY=192.168.100.100 #本主機的網關,iptables02第二個網卡的IP

9.3 修改iptables02轉發的配置

[root@iptables02 /]# sed -n '7p' /etc/sysctl.conf net.ipv4.ip_forward = 1 #修改成1

9.4 實驗如下

[root@iptables01 /]# ping 192.168.100.110 PING 192.168.100.110 (192.168.100.110) 56(84) bytes of data. 64 bytes from 192.168.100.110: icmp_seq=1 ttl=63 time=62.5 ms 64 bytes from 192.168.100.110: icmp_seq=2 ttl=63 time=0.851 ms 64 bytes from 192.168.100.110: icmp_seq=3 ttl=63 time=0.935 ms ^C --- 192.168.100.110 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2585ms rtt min/avg/max/mdev = 0.851/21.430/62.504/29.043 ms [root@iptables03 /]# ping 192.168.200.99 PING 192.168.200.99 (192.168.200.99) 56(84) bytes of data. 64 bytes from 192.168.200.99: icmp_seq=1 ttl=63 time=0.473 ms 64 bytes from 192.168.200.99: icmp_seq=2 ttl=63 time=2.37 ms 64 bytes from 192.168.200.99: icmp_seq=3 ttl=63 time=0.880 ms ^C --- 192.168.200.99 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2316ms rtt min/avg/max/mdev = 0.473/1.242/2.373/0.816 ms

轉載于:https://www.cnblogs.com/ywb123/p/11219633.html

總結

以上是生活随笔為你收集整理的iptables 防火墙(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。