記事ディレクトリ
- 1つは、iptablesの概要です
- 2、netfilter / iptablesの関係
- 3、4つの時計と5つのチェーン
- 第四に、iptablesのインストール
- 5、SNATの原則と適用
- 第6に、DNATの原則:データパケットの宛先アドレスを変更する
- 7.ファイアウォールルールのバックアップと復元:
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中的规则