iptablesファイアウォールの概要

1つは、iptablesの概要です

Linuxシステムファイアウォール:IP情報パケットフィルタリングシステム。実際には、netfilterとiptablesの2つのコンポーネントで構成されています。主にネットワーク層で作業し、IPデータパケットを目指します。パケット内のIPアドレスやポートなどの情報の処理に反映されます。

2、netfilter / iptablesの関係

  • netfilter:「カーネルスペース」(カーネルスペース、カーネルスペースとも呼ばれます)に属するファイアウォール機能システム。
    これはカーネルの一部であり、いくつかのパケットフィルタリングテーブルで構成されています。これらのテーブルには、パケットフィルタリングの処理を制御するためにカーネルが使用する一連のルールが含まれています。

  • iptables:「ユーザースペース」(ユーザースペース、ユーザースペースとも呼ばれます)に属するファイアウォール管理システム。
    これは、Linuxファイアウォールを管理するために使用されるコマンドプログラムであり、パケットフィルタリングテーブルのルールを簡単に挿入、変更、および削除できます。通常、/ sbin / iptablesディレクトリにあります。

  • Netfilter / iptablesは、後でiptablesと省略されました。iptablesは、raw、mangle、nat、filterの4つの組み込みルールテーブルを備えたカーネルベースのファイアウォールです。テーブル内のすべてのルールが構成されると、サービスを再起動せずにすぐに有効になります。

3、4つの時計と5つのチェーン

  • ルールテーブルの役割:さまざまなルールチェーンに対応する
  • ルールチェーンの役割:さまざまなファイアウォールルールに対応する
  • 概要:テーブルにはチェーンがあり、チェーンにはルールがあります

(1)4つのテーブル

  • rawテーブル:パケットのステータスを追跡するかどうかを決定します。OUTPUTとPREROUTINGの2つのルールチェーンが含まれています。
  • マングルテーブル:トラフィックシェーピングに使用されるデータパケットの内容を変更し、データパケットにマークを設定します。INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTINGの5つのルールチェーンが含まれています。
  • natテーブル:ネットワークアドレス変換を担当し、データパケットの送信元および宛先IPアドレスまたはポートを変更するために使用されます。OUTPUT、PREROUTING、POSTROUTINGの3つのルールチェーンが含まれています。
  • フィルタテーブル:データパケットのフィルタリングと、データパケットを渡すかどうかの決定(フィルタリング)を担当します。INPUT、FORWARD、OUTPUTの3つのルールチェーンが含まれています。

注:iptablesの4つのルールテーブルの中で、mangleテーブルとrawテーブルのアプリケーションは比較的少ないです。

(2)5つのチェーン

  • 入力:着信データパケットを処理し、宛先IPをこのマシンのデータパケットと照合します。
  • 出力:アウトバウンドデータパケットを処理します。通常、このチェーンでは構成しません。
  • 転送:データパケットを処理および転送し、マシンを流れるデータパケットを照合します。
  • PREROUTINGチェーン:ルーティングの前にデータパケットを処理し、宛先アドレスを変更するために使用され、DNATに使用されます。これは、内部ネットワークサーバーのIPとポートをルーターの外部IPとポートにマッピングすることと同じです。
  • POSTROUTINGチェーン:ルーティング後、データパケットが処理され、送信元アドレスの変更に使用されます。SNATに使用されます。これは、ルーターNAT変換機能を介した内部ネットワークに相当し、パブリックIPアドレスを介してインターネットにアクセスする内部ネットワークホストを実現します。

パケットがファイアウォールに到着すると、ルールテーブル間の優先順位:raw> mangle> nat> filter
ここに写真の説明を挿入

(3)ルールチェーン間の一致順序

1.ホストタイプのファイアウォール:

  • インバウンドデータ(外部からのデータパケット、宛先アドレスはファイアウォールローカルマシン):PREROUTING-> INPUT-> native application
  • アウトバウンドデータ(ファイアウォールから外部アドレスに送信されるデータパケット):マシンのアプリケーション->出力->ポストルーティング

2.ネットワークタイプのファイアウォール:

  • データの転送(ファイアウォールを介して転送する必要があるパケット):PREROUTING-> FORWARD-> POSTROUTING

3.ルールチェーン内の一致順序:

  • 上から順にチェックし、一致するルールが見つかったら停止します(関連するログを記録することを意味するLOGポリシーを除く)。チェーンに一致するルールが見つからない場合は、チェーンのデフォルトポリシーに従って処理されます(変更された条件では、デフォルトのポリシーが許可されます)
    ここに写真の説明を挿入

第四に、iptablesのインストール

Centos 7はデフォルトでfirewalldファイアウォールを使用します。iptablesファイアウォールを使用する場合、iptablesはインストールされません。iptablesをインストールする前に、firewalldをオフにする必要があります。

systemctl stop firewalld.service
systemctl disable firewalld.service
yum -y install iptables  iptables-services
systemctl start iptables.service

(1)iptablesファイアウォールの構成方法:

1.iptablesコマンドラインを使用します。
2.system-config-firewallを使用します

(2)、iptablesコマンドライン構成方法:

コマンド形式:

iptables  [-t 表名]  管理选项  [链名]   [匹配条件]   [-j 控制类型]

予防:

  • テーブル名が指定されていない場合、デフォルトでフィルターテーブルを参照します
  • チェーン名が指定されていない場合、デフォルトでテーブル内のすべてのチェーンを参照します
  • チェーンのデフォルトポリシーが設定されていない限り、一致条件を指定する必要があります
  • オプション、チェーン名、およびコントロールタイプは大文字を使用し、残りは小文字です

(3)一般的に使用される制御タイプ:

  • ACCEPT:データパケットの通過を許可します。
  • ドロップ:応答情報を提供せずに、すべてのデータパケットを直接ドロップします。
  • REJECT:通過するデータパケットを拒否すると、応答メッセージがデータ送信者に送信されます。
  • SNAT:データパケットの送信元アドレスを変更します。
  • DNAT:データパケットの宛先アドレスを変更します。
  • MASQUERADE:固定されていないパブリックIPアドレスを装っています。
  • LOG:ログ情報を/ var / log / messagesファイルに記録してから、データパケットを次のルールに渡します。LOGは単なる補助アクションであり、実際にはデータパケットを処理しません。

(4)一般的な管理オプション

-A:在指定链的末尾追加(--append)一条新的规则
-I:在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R:修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
-P:设置指定链的默认策略(--policy)
-D:删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
-F:清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L:列出(-1ist)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n:使用数字形式(--numeric)显示输出结果,如显示IP地址而不是主机名
-v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers:查看规则时,显示规则的序号

(5)新しいルールを追加する

iptables -t filter -A INPUT -p icmp -j REJECT   #拒绝Ping通,其中-t指定表名,-p指定协议,-j指定控制类型
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT  #不加-t默认指定filter,2为指定序号为2,--dport指定目的端口号

(6)ルールのリストを表示する

iptables [-t 表名]-n -L [链名] [--line-numbers]
或
iptables  -[vn]L   #注意:不可以合写为-Ln
iptables  -n -L --line-numbers

(7)デフォルトの戦略を設定する

iptables [-t 表名] -P <链名> <控制类型>

iptables -A INPUT -p TCP --dport 22 -j ACCEPT #允许所有数据包通过
iptables -P INPUT DROP      #拒绝所有数据包,注意设置该策略之前一定要先设置通过策略,否则将与服务器断开连接 
iptables -P FORWARD DROP
#一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单

(8)ルールの削除

iptables -D INPUT 2                        #按规则序号删除
iptables -t filter -D INPUT -p icmp -j REJECT     #按规则名删除

注:
1。ルールリストに同一のルールが複数ある場合は、コンテンツの一致によりシーケンス番号が最も小さいもののみが削​​除されます
。2 番号の一致により削除する場合は、ルール番号が既存のルールの数以下であることを確認してください。そうでない場合はエラーが報告されます
。3 コンテンツによる番号を照合して削除するときは、ルールが存在することを確認してください。存在しない場合、エラーが報告されます

(9)明確なルール

iptables [-t 表名] -F [链名]

iptables -F INPUT
iptables -F

注:
1. -Fのみチェーンにルールをクリアし、-Pで設定されたデフォルトのルールには影響しませんデフォルトのルールを手動で変更する必要があります。。
2. DROPが-Pにセットされた後-F使用する際、気をつけて!
リモート可能防止を接続の関連ルールがクリアされた後、ホストはリモートで接続できません。ルールが保存されていない場合、ホストを再起動して問題を解決できます。3。
テーブル名とチェーン名が書き込まれていない場合、フィルターテーブル内のすべてのチェーンのすべてのルールがデフォルトでクリアされます。

(10)ルールのマッチング

1.ユニバーサルマッチングは直接使用でき、ネットワークプロトコル、IPアドレス、ネットワークインターフェイスなどの条件を含む他の条件や拡張機能に依存しません。

  • プロトコルの一致:-pプロトコル名
  • アドレスマッチング:-s送信元アドレス、-d宛先アドレス(IP、ネットワークセグメント、ドメイン名、空(任意のアドレス)の場合があります)
  • インターフェイスマッチング:-iインバウンドネットワークカード、-oアウトバウンドネットワークカード
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.80.11 -j DROE
iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROE

2.暗黙的なマッチング

ポート、TCPタグ、ICMPタイプなどの条件を含む、特定のプロトコルの一致が前提条件として必要です。

ポートマッチング:–sport送信元ポート、–dport宛先ポート

#可以是个别端口、端口范围
--sport 1000       匹配源端口是1000的数据包
--sport 1000:3000  匹配源端口是1000-3000的数据包
--sport:3000       匹配源端口是3000及以下的数据包
--sport 1000:      匹配源端口是1000及以上的数据包

注:-sportおよび--dportは、-p <プロトコルタイプ>とともに使用する必要があります

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP

TCPフラグの一致:-tcp-flagsTCPフラグ

iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN, RST, ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包

ICMPタイプのマッチング:-icmp-typeICMPタイプ

#可以是字符串、数字代码、  目标不可达
"Echo-Request" (代码为8)表示 请求
"Echo-Reply" (代码为0)表示 回显
"Destination-Unreachable" (代码为3)表示 目标不可达
关于其它可用的ICMP协议类型,可以执行"iptables -p icmp -h"命令,查看帮助信息
iptables -A INPUT -p icmp --icmp-type 8 -j DROP    #禁止其它主机ping本机
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT  #允许本机ping其它主机
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT #当本机ping不通其它主机时提示目标不可达
#此时其它主机需要配置关于 icmp 协议的公职类型为REJECT
iptables -A INPUT -p icmp -j REJECT

3.明示的なマッチング

マルチポート、MACアドレス、IP範囲、パケットステータスなどの条件を含め、「-m拡張モジュール」の形式でタイプを明確に示す必要があります。マルチポートマッチング:

-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80, 22, 21, 20, 53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT

IP範囲マッチング-m iprange --src-range IP范围

iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

MACアドレスマッチング-m mac--mac-source MAC地址

iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
#禁止来自某MAC地址的数据包通过本机转发

ステータスの一致-m state --state 连接状态

一般的な接続ステータス:
NEW:どの接続にも関係なく、接続はまだ開始されていません
ESTABLISHED:要求に応答するか、接続が確立されました、接続ステータス
RELATED:既存の接続に関連します(FTPアクティブおよびパッシブモードのデータ接続など)、派生状態。通常、ESTABLISHED
INVALIDと組み合わせて使用​​されます。どの接続がどの接続に属しているか、または状態がないかを識別できません。

iptables -A FORWARD -m state --state NEW-p tcp ! --syn -i DROP
#禁止转发与正常TCP连接无关的非--syn请求数据包(如伪造的网络攻击数据包)

ホストベースのファイアウォールを設定するために必要なコマンド:

iptables -I INPUT -p tcp -m multiport --dport 80, 22, 21, 20, 53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -P INPUT DROP

5、SNATの原則と適用

SNATアプリケーション環境:LANホストはインターネットにアクセスするために単一のパブリックIPアドレスを共有します(プライベート1Pはインターネットで通常ルーティングできません)SNATの原則:データパケットの送信元アドレスを変更します。SNAT翻訳の前提条件:

1. LAN内の各ホストは、IPアドレス、サブネットマスク、およびデフォルトのゲートウェイアドレスを正しく設定しています
。2。Linuxゲートウェイは、IPルーティングと転送を有効にします。

一時的に開いています:

echo 1> /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1

永久に開く:

vim /etc/sysctl.conf
net.ipv4.ip_forward =1      #将此行写入配置文件

sysctl -p                   #读取修改后的配置

SNAT変換1:固定パブリックIPアドレス:

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                    内网IP       出站 外网网卡                      外网IP或地址池

SNAT変換2:固定されていないパブリックネットワークガードのPアドレス(動的IPアドレスを共有):

iptables-t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE

第6に、DNATの原則:データパケットの宛先アドレスを変更する

DNAT変換の前提条件:
1。ローカルエリアネットワーク上のサーバーがインターネットにアクセスできる
2.ゲートウェイの外部ネットワークアドレスに正しいDNS解決レコードがある
3. Linuxがオフになっていて、IPルーティング転送がオンになっている

vim /etc/sysctl.conf
net.ipv4.ip_forward =1

sysctl –p

DNAT変換1:イントラネットWebサービスを公開する

#把从ens33进来的要访问web服务的数据包目的地址转换为192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33-d 12.0.0.1 -p tcp --dport 80 -j DNAT--to-destination 192.168.80.11
	                         入站 外网网卡  外网IP                                              内网服务器IP

iptables -t nat -A PREROUTING -i ens33 -p tcp--dport 80 -j DNAT --to 192.168.80.11-192.168.80.20	                         

DNAT変換2:公開時にターゲットポートを変更する

#发布局域网内部的OpenssH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22

#在外网环境中使用SSH测试
ssh -p 250 [email protected]

#在外网环境中使用SSH测试
ssh -p 250 [email protected]
yum -y install net-tools        #若没有ifconfig命令可提前使用yum进行安装
ifconfig ens33

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

小さな知識の拡張:
ホストベースのファイアウォールは主にINPUTチェーンとOUTPUTチェーンを使用します。ルールを設定するときは、通常、詳細に指定する必要があります。
ネットワークベースのファイアウォールは、主にFORWARDチェーンを使用します。ルールを設定するとき、ポートを指定することはめったにありませんが、通常はIPアドレスまたはインターネットを指定します。セクション

7.ファイアウォールルールのバックアップと復元:

すべてのテーブルのエクスポート(バックアップ)ルール

iptables-save > /opt/ipt.txt

ルールのインポート(復元)

iptables-restore < /opt/ipt.txt

iptablesルールファイルを/ etc / sysconfig / iptablesに保存します。ルールは、iptablesサービスの開始時に自動的に復元されます。

iptables-save > /etc/sysconfig/iptables
systemctl stop iptables   #停止iptables服务会清空掉所有表的规则
systemctl start iptables  #启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

おすすめ

転載: blog.csdn.net/Gengchenchen/article/details/111862250