ubuntu防火墻設置(四)——iptables語法與防火墻基礎配置

前面介紹的ufw和firewall-config均為iptables的前端,
分別適合個人用戶和服務器網絡管理
下面介紹底層——ipables

iptables是一個強大的工具,用于配置Linux系統的防火墻。以下是一些基本的使用方法和示例,幫助您入門:

基本語法

1. 查看當前規則

要查看當前的iptables規則,可以使用以下命令:

sudo iptables -L -v -n

2. 添加規則

允許特定端口的流量

例如,允許HTTP(端口80)和HTTPS(端口443)的流量:

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

拒絕特定IP的流量

例如,拒絕來自特定IP地址的流量:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

3. 刪除規則

要刪除特定的規則,可以使用-D選項。例如,刪除剛才添加的HTTP規則:

sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT

4. 保存規則

在Ubuntu中,iptables的規則在重啟后不會自動保存。您可以使用以下命令保存當前規則:

sudo iptables-save > /etc/iptables/rules.v4

要在系統啟動時自動加載這些規則,您可以安裝iptables-persistent

sudo apt install iptables-persistent

在安裝過程中,系統會詢問您是否要保存當前的iptables規則。

5. 清空規則

如果您想清空所有的iptables規則,可以使用以下命令:

sudo iptables -F

6. 設置默認策略

您可以設置默認策略來處理未匹配的流量。例如,設置默認策略為拒絕所有流量:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

7. 其他常用選項

  • -A:添加規則到鏈的末尾。
  • -I:在鏈的開頭插入規則。
  • -D:刪除規則。
  • -F:清空鏈中的所有規則。
  • -P:設置默認策略。
  • -s:指定源IP地址。
  • -d:指定目標IP地址。
  • -p:指定協議(如tcp、udp等)。
  • –dport:指定目標端口。

注意事項

  • 使用iptables時,請小心操作,尤其是在遠程管理服務器時,錯誤的規則可能會導致您失去對服務器的訪問。
  • 在進行更改之前,建議備份當前的iptables規則。

通過這些基本命令,您可以開始使用iptables來管理Linux系統的網絡流量。

基礎配置示例

http(s)服務器的防火墻配置

#檢查是否安裝了iptables
whereis iptables
#安裝iptables
apt-get install iptables
#查看iptables現有規則
iptables -L -n
#先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT
#清空所有默認規則
iptables -F
#清空所有自定義規則
iptables -X
#所有計數器歸0
iptables -Z
#允許來自于lo接口的數據包(本地訪問)
iptables -A INPUT -i lo -j ACCEPT
#開放dhcp客戶端(可刪除)
iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT
#開放995端口(POP3s)
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
#開放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#開放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允許ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#其他入站一律丟棄
iptables -P INPUT DROP
#所有出站一律綠燈
iptables -P OUTPUT ACCEPT
#所有轉發一律丟棄
iptables -P FORWARD DROP
#允許接受本機請求之后的返回數據 RELATED,是為軟件設置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#保存上述規則
service iptables save

服務器內網管理進階配置

#如果要添加內網ip信任(接受其所有TCP請求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#過濾所有非以上規則的請求
iptables -P INPUT DROP
#要封停一個IP,使用下面這條命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一個IP,使用下面這條命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

客戶端基礎配置

  • 非副取其,不用提供http,https,
  • 不遠程登陸,也不用提供ssh,
  • 配置非常簡單
#檢查是否安裝了iptables
whereis iptables
#安裝iptables
apt-get install iptables
#查看iptables現有規則
iptables -L -n
#先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT
#清空所有默認規則
iptables -F
#清空所有自定義規則
iptables -X
#所有計數器歸0
iptables -Z
#允許來自于lo接口的數據包(本地訪問)
iptables -A INPUT -i lo -j ACCEPT
#開放dhcp客戶端(可刪除)
iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT
#其他入站一律丟棄
iptables -P INPUT DROP
#所有出站一律綠燈
iptables -P OUTPUT ACCEPT
#所有轉發一律丟棄
iptables -P FORWARD DROP
#允許接受本機請求之后的返回數據 RELATED,是為軟件設置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
、

iptables -A INPUT -i lo -j ACCEPT的作用是什么

  • 這條命令的作用是允許本地回環接口(lo)接收進入的數據包,并將其接受并進行處理。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT的作用是什么

  • 這條規則的作用是允許已建立的連接和相關的連接通過防火墻的INPUT鏈。通過使用RELATED和ESTABLISHED狀態,可以讓服務器響應之前的請求,并且能夠正常進行通信。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT可能會導致與發起連接相關的、但由攻擊者發起的報文攻擊嗎?

  • iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 這條規則的作用是允許已經建立的連接和相關的連接通過防火墻。雖然這條規則本身是為了允許正常的流量,但在某些情況下,它可能會與攻擊者的行為相關聯。
  1. 攻擊者利用已建立連接:如果攻擊者能夠成功建立與目標系統的連接(例如,通過合法的身份驗證),那么后續的流量可能會被這條規則接受。這意味著,如果攻擊者已經獲得了某種形式的訪問權限,他們可以利用這條規則進行進一步的攻擊。

  2. 相關流量:如果攻擊者發起的連接是與某個合法連接相關的(例如,某個應用程序的回調或數據流),那么這條規則也可能允許這些流量通過。

為了降低風險,建議采取以下措施:

  • 限制入站流量:在允許已建立連接的流量之前,先明確允許哪些特定的入站流量(如 SSH、HTTP、HTTPS 等),并拒絕其他所有流量。

  • 使用其他防護措施:結合使用其他安全措施,如入侵檢測系統(IDS)、入侵防御系統(IPS)和應用層防火墻,以監控和防止潛在的攻擊。

  • 定期審查規則:定期審查和更新防火墻規則,以確保它們符合當前的安全需求。

總之,雖然這條規則本身并不會直接導致攻擊,但在不當配置或缺乏其他安全措施的情況下,可能會被攻擊者利用。因此,合理配置防火墻規則和采取綜合的安全措施是非常重要的。

iptables規則保存,用于開機自啟動

  • 有兩種方式

1. iptables-persistent&netfilter-persistent

工具比較

  • iptables-persistent 是一個用于保存和恢復 iptables 規則的工具。它可以在系統啟動時自動加載之前保存的規則。

  • netfilter-persistent 是一個更通用的工具,旨在管理與 Linux 內核中的 Netfilter 框架相關的所有類型的規則,包括 iptables、ip6tables(用于 IPv6)和 arptables(用于 ARP).

  • iptables-persistent通過netfilter-persisitent重新保存和開機加載iptables規則

  • netfilter保存

sudo netfilter-persistent save
  • netfilter加載
sudo netfilter-persistent reload

2. 使用 iptables-saveiptables-restore

您也可以使用 iptables-saveiptables-restore 命令手動保存和加載規則。

  • iptables-save 命令會輸出當前所有的 iptables 規則,包括所有鏈(如 INPUT、OUTPUT、FORWARD)和規則的詳細信息。

  • 同樣,iptables-store 命令會輸出當前所有存儲的 iptables 規則,包括所有鏈(如 INPUT、OUTPUT、FORWARD)和規則的詳細信息。

  • 保存規則

sudo iptables-save > /etc/iptables/rules.v4
  • 加載規則
    在系統啟動時,您可以通過創建一個啟動腳本來加載規則。可以將以下內容添加到 /etc/rc.local 文件中(確保該文件可執行):
#!/bin/sh -e
iptables-restore < /etc/iptables/rules.v4
exit 0

鏈接

  1. 華為云教程:https://bbs.huaweicloud.com/blogs/300487
  2. 大佬的基礎配置:https://blog.csdn.net/weixin_36032459/article/details/125147050
  3. 新奇的防火墻配置:https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-20-04

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62325.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62325.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62325.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【中間件開發】Redis基礎命令詳解及概念介紹

文章目錄 前言一、Redis相關命令詳解及原理1.1 string、set、zset、list、hash1.1.1 string1.1.2 list1.1.3 hash1.1.4 set1.1.5 zset 1.2 分布式鎖的實現1.3 lua腳本解決ACID原子性1.4 Redis事務的ACID性質分析 二、Redis協議與異步方式2.1 Redis協議解析2.1.1 redis pipeline…

力扣每日一題 - 999. 可以被一步捕獲的棋子數

題目 還需要你前往力扣官網查看詳細的題目要求 地址 1.給定一個 8 x 8 的棋盤&#xff0c;只有一個 白色的車&#xff0c;用字符 R 表示。棋盤上還可能存在白色的象 B 以及黑色的卒 p。空方塊用字符 . 表示。2.車可以按水平或豎直方向&#xff08;上&#xff0c;下&#xff0c;…

[UVM]在UVM環境中加入C++內存模塊

摘要&#xff1a;要在UVM環境中實現一個內存模塊并存入數據&#xff0c;您可以遵循以下步驟。這里會涉及C的內存建模和UVM的SystemVerilog部分的接口。在高層次上&#xff0c;我們將描述如何在C中實現內存模型并通過UVM的DPI接口訪問它。 一、C內存模型 首先&#xff0c;在C中…

學習記錄,正則表達式, 隱式轉換

正則表達式 \\&#xff1a;表示正則表達式 W: 表示一個非字&#xff08;不是一個字&#xff0c;例如&#xff1a;空格&#xff0c;逗號&#xff0c;句號&#xff09; W: 多個非字 基本組成部分 1.字符字面量&#xff1a; 普通字符&#xff1a;在正則表達式中&#xff0c;大…

Selenium是廣泛使用的模擬瀏覽器運行的庫

簡介 Selenium是廣泛使用的模擬瀏覽器運行的庫&#xff0c;它是一個用于Web應用程序測試的工具。 Selenium測試直接運行在瀏覽器中&#xff0c;就像真正的用戶在操作一樣&#xff0c;并且支持大多數現代 Web 瀏覽器。 環境 安裝 pip install selenium下載Chrome驅動 系統環境…

網絡練級寶典-> UDP傳輸層協議

目錄 傳輸層 端口號 端口號和進程的關系 UDP協議 UDP協議格式 UDP數據封裝&#xff1a; UDP數據分用&#xff1a; 面向數據報 UDP的緩沖區 UDP的缺點 基于UDP的應用層協議 傳輸層 端口號 我們知道端口號對應的其實就是一個進程的pid&#xff0c;在操作系統中二者的…

Redis原理—1.Redis數據結構

大綱 1.Redis的數據結構 2.Redis的SDS 3.Redis的鏈表 4.Redis的字典 5.Redis的跳躍表 6.Redis的整數集合 7.Redis的壓縮列表 8.Redis的對象 9.Redis對象的幾個關鍵屬性 10.Redis的單線程為什么這么快 11.Redis的典型應用場景和說明 12.Redis的相關命令說明 1.Redis…

【Vue3中Router使用】

Vue3中Router使用 1. 安裝vue-router組件2. 建兩個測試頁面2.1 測試頁面Home.vue2.2 測試頁面Category.vue 3. 創建路由對象4. 在入口main.js中引入router把App.vue改成路由頁面5. 測試5.1 關閉檢查解決ESlint報錯5.2 改文件名解決ESlint檢查報錯測試WebHashHistory 和WebHisto…

python拆分Excel文件

按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文檔樣式如下&#xff1a; 結果&#xff1a;紅色是按照Sheet名拆出的&#xff0c;藍色和橙色是某個Sheet按照某列的不同值拆分的。 代碼&#xff1a; # -*- coding: utf-8 -*- """ 拆分excel文件——按照…

交易所 Level-2 歷史行情數據自動化導入攻略

用戶部署完 DolphinDB 后&#xff0c;需要將歷史股票數據批量導入數據庫&#xff0c;再進行數據查詢、計算和分析等操作。DolphinDB 開發了 ExchData 模塊&#xff0c;主要用于滬深交易所 Level-2 行情原始數據的自動化導入&#xff0c;目前已支持的數據源包括&#xff1a; 滬…

開源ISP介紹(2)————嵌入式Vitis搭建

Vivado搭建參考前一節Vivado基于IP核的視頻處理框架搭建&#xff1a; 開源ISP介紹&#xff08;1&#xff09;——開源ISP的Vivado框架搭建-CSDN博客 導出Hardware 在vivado中導出Hardware文件&#xff0c;成功綜合—實現—生成比特流后導出硬件.xsa文件。&#xff08;注意導…

Node.js JWT認證教程

Node.js JWT認證教程 1. 項目介紹 JSON Web Token (JWT) 是一種安全的跨域身份驗證解決方案&#xff0c;在現代Web應用中廣泛使用。本教程將詳細講解如何在Node.js中實現JWT認證。 2. 項目準備 2.1 初始化項目 # 創建項目目錄 mkdir nodejs-jwt-auth cd nodejs-jwt-auth# …

109.【C語言】數據結構之二叉樹層序遍歷

目錄 1.知識回顧 2.代碼實現 準備工作 LevelOrder函數 代碼框架 關鍵代碼 3.執行結果 1.知識回顧 層序遍歷參見106.【C語言】數據結構之二叉樹的三種遞歸遍歷方式文章 截取的部分內容 定義:按層的方式遍歷(,設n為樹的深度,h1-->h2-->h3-->...-->hn) 以下面…

Ruby On Rails 筆記2——表的基本知識

Active Record Basics — Ruby on Rails Guides Active Record Migrations — Ruby on Rails Guides 原文鏈接自取 1.Active Record是什么&#xff1f; Active Record是MVC模式中M的一部分&#xff0c;是負責展示數據和業務邏輯的一層&#xff0c;可以幫助你創建和使用Ruby…

安裝部署PowerDNS--實現內網DNS解析

PDNS是PowerDNS的縮寫&#xff0c;是一個開源的DNS服務器軟件。PowerDNS具有高性能、靈活性和可擴展性&#xff0c;可用于搭建各種規模的DNS解析服務。它支持多種后端數據庫&#xff08;如MySQL、PostgreSQL等&#xff09;&#xff0c;提供高度定制化的配置選項&#xff0c;并具…

13.在 Vue 3 中使用OpenLayers加載鷹眼控件示例教程

在 WebGIS 開發中&#xff0c;鷹眼控件 是一個常用的功能&#xff0c;它可以為用戶提供當前地圖位置的概覽&#xff0c;幫助更好地定位和導航。在本文中&#xff0c;我們將基于 Vue 3 的 Composition API 和 OpenLayers&#xff0c;創建一個簡單的鷹眼控件示例。 效果預覽 在最…

Elasticsearch 單節點安全配置與用戶認證

Elasticsearch 單節點安全配置與用戶認證 安全掃描時發現了一個高危漏洞&#xff1a;Elasticsearch 未授權訪問 。在使用 Elasticsearch 構建搜索引擎或處理大規模數據時&#xff0c;需要啟用基本的安全功能來防止未經授權的訪問。本文將通過簡單的配置步驟&#xff0c;為單節…

使用C#基于ADO.NET編寫MySQL的程序

MySQL 是一個領先的開源數據庫管理系統。它是一個多用戶、多線程的數據庫管理系統。MySQL 在網絡上特別流行。MySQL 數據庫可在大多數重要的操作系統平臺上使用。它可在 BSD Unix、Linux、Windows 或 Mac OS 上運行。MySQL 有兩個版本&#xff1a;MySQL 服務器系統和 MySQL 嵌入…

計算機視覺與各個學科融合:探索新方向

目錄 引言計算機視覺與其他學科的結合 與醫學的結合與機械工程的結合與土木工程的結合與藝術與人文的結合發文的好處博雅知航的輔導服務 引言 計算機視覺作為人工智能領域的重要分支&#xff0c;正迅速發展并滲透到多個學科。通過與其他領域的結合&#xff0c;計算機視覺不僅…

SpringBoot期末知識點大全

一、學什么 IoC AOP&#xff1a;面向切面編程。 事物處理 整合MyBatis Spring框架思想&#xff01; 二、核心概念 問題&#xff1a;類之間互相調用/實現&#xff0c;導致代碼耦合度高。 解決&#xff1a;使用對象時&#xff0c;程序中不主動new對象&#xff0c;轉換為由外部提…