CentOS Iptables詳解

一、Iptables 簡介

Iptables 是 Linux 自帶的防火牆程序,可以對網絡流量進行管理和過濾,來保障網絡的安全。Iptables 可以被運用於 IPv4/IPv6 網絡,支持網絡地址轉換(NAT)、端口轉發、數據包過濾等功能。

二、安裝與基本概念

1、安裝Iptables

在 CentOS 上,Iptables 防火牆系統默認已安裝。如果沒有,可以通過 yum 命令進行安裝。

yum install -y iptables-services

安裝完成後,通過以下命令啟動 Iptables 服務:

systemctl start iptables.service

2、Iptables 分類

Iptables 有三個分類,分別是表、鏈和規則。

表:一個表就是一個數據結構,可以提供不同的處理方式。Linux 操作系統默認提供了三個表:

  • filter 表: 是默認的表,用於過濾網絡數據包。
  • nat 表:用於網絡地址轉換(NAT)。
  • mangle 表:這個表可以修改報文頭,而不是過濾數據報。比如可以修改某個特定的IP地址,修改TTL值等。

鏈: 鏈是表的組成部分,它能夠執行指定的動作。CentOS 默認選擇了五個主要的鏈。

  • INPUT鏈:用於處理輸入數據報。所有進入到本地計算機的網絡數據包都要進入該鏈。
  • OUTPUT鏈:用於處理輸出數據報。所有發出本地計算機的網絡數據包都要通過該鏈。
  • FORWARD鏈:用於處理轉發數據報。當本地計算機作為路由器或者網關,數據必須經過本機的時候,就走這個鏈。
  • PREROUTING鏈:用於在數據報到達本地計算機之前修改該數據報,能夠修改報文頭中的一些內容。
  • POSTROUTING鏈:用於在數據報將離開本地計算機之前修改該數據報,能夠修改報文頭中的一些內容。

規則: 規則是鏈的組成部分,每個規則定義了 Iptables 命令如何對數據包執行一個動作。 Iptables 命令用一些規則對鏈進行定義,設置這些規則可以限制、轉發、修改、丟棄或允許流量通過這些鏈。

三、Iptables 常用命令與操作

1、查看規則

通過 iptables -L 命令可以查看規則,其中 -L 參數表示查看所有的規則,如果想查看針對某個表的規則,可以加上表的名稱,如下:

# 查看 filter 表內規則
iptables -L -v --line-numbers -t filter 

2、添加規則

下列命令表示:通過實現 DROP 動作,從輸入連接中丟棄所有的 ICMP ,因為所有的 ICMP 連接都來源於外部網絡,我們不能讓外部網絡訪問內部網絡。

iptables -A INPUT -p icmp -j DROP

3、刪除規則

刪除規則可以通過 iptables -D 命令,規則的編號可以從iptables -L中找到。

iptables -D INPUT 2

4、修改規則

修改規則可以先利用 iptables -D 刪除原有規則,再使用 iptables -A 添加新規則。

iptables -D INPUT -p tcp --dport ssh -j DROP
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

5、重置規則

重置規則可以通過下面的命令實現,默認的規則是允許所有的流量通過。

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

四、例子

1、允許 Ping

如何允許 Ping 呢?可以加入下面的規則:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

2、允許SSH

如何允許SSH?可以加入下面的規則:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables-save

上面的命令中,第一條規則代表只有在狀態為 NEW,來源為 TCP,目標端口為22的時候才允許連接通過。

3、設置端口轉發

下面是一些開源服務的 Iptables 配置示例:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

上面的命令是將所有端口 80 的請求轉發到端口 8080 上,如果是本地訪問,則需要在 OUTPUT 鏈進行配置。

4、DDoS 防禦

下面的規則可以防禦基於 SYN 的攻擊:

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

上面的命令表示只有 SYN 請求的 TCP 數據包才被接受,其他的都需要被丟棄。

五、總結

以上就是 CentOS Iptables 的詳解。作為系統安全的重要一環,Iptables 需要具備基本的配置和管理能力,才能保障整個系統網絡的安全性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240784.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:23
下一篇 2024-12-12 12:23

相關推薦

  • CentOS 6如何刪除resolv.conf的DNS

    本文將介紹在CentOS 6操作系統下如何刪除resolv.conf文件中的DNS配置信息。 一、備份resolv.conf文件 在修改resolv.conf文件之前,建議首先備份…

    編程 2025-04-29
  • 使用CentOS配置監控

    本文將介紹如何使用CentOS配置監控,包括如何安裝監控工具、配置監控參數、監控其他服務器等方面。 一、安裝監控工具 要想進行監控,首先需要安裝監控工具。在CentOS系統中,常見…

    編程 2025-04-29
  • 在CentOS上安裝Redis

    Redis是一款非關係型數據庫,它支持多種數據結構,包括字符串、哈希、列表、集合、有序集合等。Redis運行內存內並且支持數據持久化,它還可以應用於緩存、消息隊列等場景。本文將介紹…

    編程 2025-04-28
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

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

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

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

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

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

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

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

    編程 2025-04-25

發表回復

登錄後才能評論