Iptables防火牆

来源:http://www.cnblogs.com/ywqbj/archive/2016/08/19/5787220.html
-Advertisement-
Play Games

1 位置 使用vim /usr/sysconfig/iptables 2 啟動、關閉、保存 service iptables stop service iptables start service iptables restart service iptables save 3 結構 iptable... ...


1 位置

使用vim /usr/sysconfig/iptables

2 啟動、關閉、保存

  • service iptables stop
  • service iptables start
  • service iptables restart
  • service iptables save

3 結構

iptables –> tables –> chains –>rules

3.1 iptables的表與鏈

iptables具有FilterNATMangleRaw四種內建表

3.1.1 Filter表

filter表示iptables的預設表,它具有三種內建鏈:

  • input chain   - 處理來之外部的數據
  • output chain - 處理向外發送的數據
  • forward chain- 將數據轉發到本機的其它網卡上

3.1.2 NAT表

NAT有三種內建的鏈:

  • prerouting   - 處理剛到達本機併在路由轉發前的數據包,它會轉換數據包中的目標IP地址(destination ip address),通常用於DNAT(destination NAT)。
  • postrouting - 處理即將離開本機數據包,它會轉換數據包中的源目標IP地址(source ip address),通常SNAT(source NAT)
  • output        - 處理本機產生的數據包

3.1.3 Mangle表

Mangle表用於指定如何處理數據包,它能改變TCP頭中的Qos位,Mangle表具有5個內建鏈

  • prerouting
  • output
  • forward
  • input
  • postrouting

3.1.4 Raw表

raw表用戶處理異常,它具有2個內建鏈

  • prerouting chain
  • output chain

3.2 Iptables規則(Rules)

  • rules包括一個條件和一個目標(target)
  • 如果滿足條件就執行目標target中規則或者特定值
  • 如果不滿足條件,就判斷下一條Rules

3.2.1 目標值

  • accept - 允許防火牆接收數據包
  • drop    - 防火牆丟棄數據包
  • queue  - 防火牆將數據包移交到用戶空間
  • return  - 防火牆停止執行當前鏈中的後續rules規則,並返回到調用鏈(the calling chain)

4 命令

#iptables -t filter -L   查看filter表

#iptables -t nat  -L    查看nat表

#iptables -t mangel -L 查看mangel表

#iptables -t raw  -L 查看Raw表

例如 以下例子表明在filter表的input鏈, forward鏈, output鏈中存在規則:

# iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

欄位說明

num:編號

target:目標

prot:協議

source:數據包的源IP地址

destination:數據包的目標地址

4.1 清空所有的規則 

#iptables –flush

4.2 追加命令

iptables -A命令追加新規則,其中-A表示append,一般而言最後一條規則用於丟棄(drop)所有數據包,並且使用-A參數添加新規則,那麼就是無用的。

4.2.1 語法

iptables –A chain firewall-rule

  • -A chain 指定要追加的規則的鏈
  • firewall-rule 具體規則的參數
4.2.2 基本參數

用於描述數據包的協議,源地址、目的地址、允許經過的網路介面,以及如何處理這些數據包。

  • 協議 –p (protocol)
    如tcp,udp,icmp等,可以使用all來指定所有協議
    不指定-p參數,預設值是all,
    可以使用協議名(tcp,udp),或者協議值(6代表tcp),映射關係可以查看/etc/protocols
  • 源地址 –s (source)
    指定數據包的源地址,參數可以使用IP地址、網路地址、主機名,不指定-s參數,就是代表所有地址。
    例如:-s 192.168.1.101 具體的IP地址
    例如:-s 192.168.1.10/24 指定網路地址
  • 目的地址 –d  (destination)
    指定目的地址,參數和-s相同
  • 執行目標 –j (jump to target)
    -j代表了當與規則(Rule)匹配時如何處理數據包,可能的值是accept、drop、queue、return,還可以指定其他鏈(chain)作為目標
  • 輸入介面 –i (input interface)
    指定了要處理來自哪個介面的數據包,這些數據包進入input、forward、prepoute鏈,不指定將處理進入所有介面的數據包
    例如:-i eth0 指定了要處理eth0進入的數據
    可以取反  !-i eth0,指eth0以外。
    可以匹配  -i eth+ 指以eth開頭的
  • 輸出介面 –o (out interface)
    數據包有那個介面輸出,類似於 –i
  • 源埠 –sport
    例如 –sport 22
    例如 –sport 22:100指定埠範圍
  • 目的埠 –dport
    類似於-sport
  • TCP標誌
  • ICMP類型

5 實例分析

例如:接收目標埠為22的數據包

iptables –A INPUT –i etho –p tcp –dprot 22 –j ACCEPT

例如:拒絕所有其他數據包

iptables –A INPUT –j DROP

6 修改預設策略

上例僅對接收的數據包進行過濾,而對於要發出的數據包卻沒有任何限制。

使用iptables –L查看防火牆配置時,發現所有的鏈旁邊都有(policy ACCEPT)標註,這表明當前鏈的預設策略為ACCEPT

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

這種情況下,如果沒有明確添加DROP規則,那麼預設情況下採用ACCEPT策略進行過濾。

6.1 添加DROP規則

iptables –A INPUT –j DROP

iptables –A OUTPUT –j DROP

iptables –A FORWARD –j DROP

6.2 SSH

允許接收遠程主機的SSH請求

iptables –A INPUT –i eth0 –p tcp –dport 22 –m state  --state NEW,ESTABLISHED –j ACCEPT

允許發送本地主機的SSH響應

iptables –A OUTPUT –o eth0 –p tcp –sport 22 –m state  --state ESTABLISHED –j ACCEPT  

註意這幾個參數

  • -m state:啟用狀態匹配模塊(state matching module)
  • -- state:狀態匹配模塊的參數,當ssh客戶端第一個數據包到達伺服器時,狀態欄位為NEW,建立連接後數據包的狀態欄位都是ESTABLISHED

6.3 HTTP

允許接收遠程主機的http請求

iptables –A INPUT –i eth0 –p tcp   --dport 80 –m state   --state NEW ,ESTABLISHED –j ACCPET

允許發送本地主機的Http響應

iptables –A OUTPUT –i eth0 –p tcp  -- sport 80 –m  state  --state ESTABLISHED  -j ACCPET

6.4 完成的配置步驟

6.4.1 刪除現有的規則

iptables -F

6.4.2 配置預設策略

iptables –P INPUT DROP

iptables –P FORWARD DROP

iptables –P OUTPUT DROP

6.4.3 允許遠程主機進行SSH連接

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6.4.4 允許本地主機進行SSH連接

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6.4.5允許http請求

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這篇文章主要從 SQLite 資料庫的使用入手,介紹如何合理、高效、便捷的將這個桌面資料庫和 App 全面結合。避免 App 開發過程中可能遇到的坑,也提供一些在開發過程中通過大量實踐和數據對比後總結出的一些參數設置。整篇文章將以一個個具體的技術點作為講解單元,從 SQLite 資料庫生命周期起始講... ...
  • 本文針對 Python 操作 MySQL 主要使用的兩種方式講解: 原生模塊 pymsql ORM框架 SQLAchemy 本章內容: pymsql 執行 sql 增\刪\改\查 語句 pymsql 獲取查詢內容、獲取自增 ID pymsql 游標 pymsql 更改 fetch 數據類型 pyms... ...
  • Docker提供了輕量級的虛擬化,它幾乎沒有任何額外開銷。 提供了一個從開發到上線均一致的環境。 開發效率:一是我們想讓開發環境儘量貼近生產環境 二是我們想快速搭建開發環境 基於docker研發小組 qq群:108636195 概要: 1、只在資料庫初始化與資料庫遷移使用,普通迭代還是走提交增量腳本 ...
  • 概述 MongoDB 是一款跨平臺、面向文檔的資料庫。用它創建的資料庫可以實現高性能、高可用性,並且能夠輕鬆擴展。MongoDB 的運行方式主要基於兩個概念:集合(collection)與文檔(document)。 資料庫 資料庫是集合的實際容器。每一資料庫都在文件系統中有自己的一組文件。一個 Mo ...
  • 第一篇:屌炸天實戰 MySQL 系列教程(一) 生產標準線上環境安裝配置案例及棘手問題解決 第二篇:屌炸天實戰 MySQL 系列教程(二) 史上最屌、你不知道的資料庫操作 第三篇:屌炸天實戰 MySQL 系列教程(三)你不知道的 視圖、觸發器、存儲過程、函數、事物、索引、語句 第四篇:屌炸天實戰 M ...
  • 對makefile文件的要點作了總結,包括變數、表達式、函數、規則等方面,並介紹了make命令的相關用法。 ...
  • 參考:www.cnblogs.com/forstudy/archive/2012/04/05/2433853.html 一 進程與線程 進程: 系統中程式執行和資源分配的基本單位 每個進程有自己的數據段、代碼段和堆棧段 在進行切換時需要有比較複雜的上下文切換 線程: 線程有獨立的棧段/errno/線 ...
  • Tomcat需要JDK的支持,所以安裝Tomcat前先安裝JDK。 一、首先到JDK官網下載與自己機器相應的JDK。註意機器位數,Linux系統的話可以用uname -a命令查看系統信息,如果是Ubuntu的系統,下載尾碼為.tar.gz的就行。 我64位的機器下的是這個JDK:wget http: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...