Linux防火牆配置詳解

一、iptables基本介紹

iptables是一個重要的Linux內核中網路安全系統,通過設置iptables規則,可以對進入和離開Linux伺服器的數據進行過濾。

iptables規則是一系列指令,用於決定數據包如何轉發和處理,可以將數據包放行或丟棄,還可以修改數據包頭的一些欄位。

以下是一個簡單的iptables規則:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

這條規則表示允許TCP協議的80埠數據包通過輸入方向(即到達伺服器)。

二、iptables基本語法

iptables的命令格式如下:

iptables [-t 表名] 插入規則鏈 操作選項 規則限制條件 -j 動作

其中,選項-t用於指定表名,常用的是filter表,表示過濾器策略。插入規則鏈可以是INPUT、OUTPUT或FORWORD,表示規則作用的方向。操作選項常用的有-A(添加)、D(刪除)、I(插入)和R(替換)。規則限制條件包括協議類型、埠號、源IP和目標IP等。動作包括ACCEPT(接受)、DROP(丟棄)和REJECT(拒絕)等。

三、iptables常用操作

(一)允許或拒絕所有流量

需要在iptables中設置默認規則,以確定如何處理沒有匹配到指定規則的數據包。以下是兩個示例:

iptables -P INPUT ACCEPT
iptables -P INPUT DROP

第一個示例表示允許所有輸入流量,而第二個示例表示禁止所有輸入流量。

(二)開啟和關閉埠

可以使用iptables開啟或關閉服務埠,下面以80埠為例:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

第一條規則表示允許TCP協議的80埠數據包通過輸入方向,而第二條規則表示禁止TCP協議的80埠數據包通過輸入方向。

(三)限制IP訪問

可以使用iptables來阻止特定的IP地址訪問系統,下面以192.168.1.100為例:

iptables -A INPUT -s 192.168.1.100 -j DROP

以上命令表示禁止192.168.1.100的IP地址通過INPUT規則鏈訪問系統。

(四)限制IP段訪問

可以使用iptables來阻止特定的IP地址段訪問系統,下面以192.168.1.0/24為例:

iptables -A INPUT -s 192.168.1.0/24 -j DROP

以上命令表示禁止192.168.1.0/24的IP地址段通過INPUT規則鏈訪問系統。

(五)限制訪問協議

可以使用iptables來阻止特定的協議訪問系統,下面以FTP協議為例:

iptables -A INPUT -p tcp --dport 21 -j DROP

以上命令表示禁止使用FTP協議通過INPUT規則鏈訪問系統。

四、iptables保存和恢復規則

iptables的規則在重啟後會失效,需要手動保存並恢復規則。規則的保存可以使用iptables-save命令將當前iptables規則保存到一個文件中:

iptables-save > /etc/iptables.rules

規則的恢復可以在系統啟動時使用iptables-restore命令,從保存的文件中還原規則:

iptables-restore < /etc/iptables.rules

五、iptables實用技巧

(一)多條規則操作

可以使用分號將多條規則合併在一起,例如:

iptables -A INPUT -s 192.168.1.100 -j DROP;iptables -A INPUT -p tcp --dport 80 -j ACCEPT

(二)規則鏈操作

可以使用自定義規則鏈,以便集合相似的規則。為了避免規則過於複雜,應該盡量將相同的規則放到一起,例如:

iptables -N sshguard
iptables -A sshguard -m recent --name ssh --set --rsource
iptables -A sshguard -m recent --name ssh --rcheck --seconds 60 --hitcount 4 --rttl -j DROP
iptables -A INPUT -p tcp --dport ssh -m state --state NEW -j sshguard

(三)使用ipv6防火牆

Linux內核中也支持IPv6防火牆,稱為ip6tables。ip6tables的語法與iptables相同,只是選項和限制條件略有不同。

以下是一個開啟http服務的IPv6防火牆規則:

ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT

六、總結

本文介紹了Linux防火牆配置的基本概念和iptables常用操作,包括開啟和關閉埠、限制IP訪問、限制IP段訪問、限制訪問協議等。同時提供了實用技巧,如多條規則操作、規則鏈操作和ipv6防火牆的使用。

作為一名全能編程開發工程師,理解和掌握iptables規則和防火牆配置是必不可少的技能。

原創文章,作者:RATJN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/373057.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RATJN的頭像RATJN
上一篇 2025-04-25 15:26
下一篇 2025-04-25 15:26

相關推薦

  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變數

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變數。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用於Linux操作系統的一款照片管理器,它支持多種相機及存儲設備,並提供了一系列強大的工具,讓用戶可以方便地瀏覽、管理、編輯和導出照片。本文將從多個方面對GTKAM進行…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論