iptablesファイアウォール(3)-ルールのエクスポート/インポート、ファイアウォールスクリプトプログラムの使用|(システムマインドマップ付き)

iptablesファイアウォール(3)-ルールのエクスポート/インポート、ファイアウォールスクリプトプログラムの使用|(システムマインドマップ付き)

本日、パブリックアカウントメッセージ機能がオープンしました!|記事の最後にある新築祝いのメリット

1.
ファイアウォールルールのバックアップと復元ファイアウォールルールのバッチバックアップおよび復元コマンドは、iptables-saveおよびiptables-restoreであり、これらは保存と復元に使用されます。

1.1 iptables-saveコマンド

iptables-saveコマンド:Linuxファイアウォールルールをバッチでエクスポートするために使用されます。

iptables-saveコマンドを直接実行すると、現在有効になっているすべてのルールが表示されます。

# iptables-save
# Generated by iptables-save v1.4.7 on Mon Oct  7 20:09:30 2019
*nat
:PREROUTING ACCEPT [134:12724]
:POSTROUTING ACCEPT [10:645]
:OUTPUT ACCEPT [10:645]
-A PREROUTING -d 192.168.1.4/32 -i eth2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.3.112 
COMMIT
# Completed on Mon Oct  7 20:09:30 2019
# Generated by iptables-save v1.4.7 on Mon Oct  7 20:09:30 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [257:22057]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Mon Oct  7 20:09:30 2019

上記の出力の意味:

サインの冒頭の内容はコメントを示しています。

テーブル名:それが含まれているテーブルを示します。例: nat

:チェーン名のデフォルト戦略:対応するチェーンとデフォルト戦略を示します。特定のルールでは、iptablesコマンド名が省略されています。

COMMIT:以前のルール設定を送信することを意味します。

iptables-saveコマンド:ルールの内容を画面に出力するだけで、固定ファイルとして保存する必要がある場合は、出力をリダイレクトする操作を組み合わせてバックアップを完了します。

現在設定されているすべてのファイアウォールルールをiptables_beifen.txtファイルにバックアップし、次のコマンドを実行します。バックアップが完了したら、バックアップが作成されたパスにファイルが存在するかどうかを確認できます。

# iptables-save > /root/iptables_beifen.txt
# ll | grep iptables_beifen.txt 
-rw-r--r--. 1 root root   782 10月  7 20:26 iptables_beifen.txt

1.2 iptables-restoreコマンド
iptables-restoreコマンド:Linuxファイアウォールルールをバッチでインポートするために使用され、iptables-saveコマンドと組み合わせて、入力をリダイレクトしてバックアップファイルの場所を指定します。

iptables-復元</ root / iptables_beifen.txt

2. iptablesサービスを使用するiptablesサービスで
使用されるルールファイルは、/ etc / sysconfig / iptablesファイルにあります。

iptablesシステムサービスを介して、ファイアウォールルールをすばやく有効にしてクリアできます。

2.1ファイアウォールルール

自動的に有効にするiptables-saveを使用して、デフォルトのルール構成ファイル/ etc / sysconfig / iptablesをバックアップします。このファイルは、iptablesサービスから呼び出すことができます。

現在のファイアウォールルールが保存され、起動するたびに保存されたルールに従って自動的に再構築されるように設定されます。

# iptables-save > /etc/sysconfig/iptables
# chkconfig --level 2345 iptables on
# chkconfig --list iptables
iptables           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
启用 /etc/sysconfig/iptables 文件中的规则设置时,只需要启动 iptables 服务即可。

# service iptables start

2.2すべてのファイアウォールルールをクリア
するさまざまなファイアウォールルールをデバッグするプロセスで、他のルールの干渉を排除するために、いくつかのテーブルのルールをクリアする必要があります。

すべてのテーブルのルールを順番にクリアする必要がある場合は、iptablesサービスを無効にするのが最善の方法です。

# service iptables stop
iptables:将链设置为政策 ACCEPT:nat filter                [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
# service iptables status
iptables:未运行防火墙。

3.
ファイアウォールスクリプトの構成について質問がある学生もいます。ファイアウォールにはスクリプトアプリケーションがありますか?特定のコンテンツコンポーネントは何ですか?などなど;

ファイアウォールスクリプトの利点:使いやすいシェル変数、プログラム制御ロジック、独立したファイルとして、再利用および移植が必要な場合により便利。

3.1基本変数
定義ファイアウォールのネットワークカード、IPアドレス、LANセグメント、iptablesコマンドのパスなどは、スクリプトプログラムの保守と移植を容易にするための変数として定義されています。

ルールが多い場合、ネットワーク環境に問題が発生した場合は、変数値を変更するだけで使用できます。

# vi /opt/myiptables.sh
#!/bin/bash
#### 3.1 定义基本变量
INET_IF="eth1"                     # 外网接口
INET_IP="192.168.3.111"            # 外网接口地址
LAN_IF="eth2"                      # 内网接口
LAN_IP="192.168.1.4"               # 内网接口地址
LAN_NET="192.168.1.0/24"           # 内网网段
LAN_WWW_IP="192.168.3.112"         # 网站服务器的内部地址
IPT="/sbin/iptables"               # iptables 命令路径
MOD="/sbin/modprobe"               # modprobe 命令路径
CTL="/sbin/sysctl"                 # sysctl 命令路径

変数を設定した後、直接引用することができます。必要なコメントを追加するだけでなく、変数名に特定の意味を持つ文字列を使用することをお勧めします。

3.2カーネルモジュールのロード
iptablesコマンドモジュールは、必要に応じてカーネルに動的にロードでき、個々のモジュールは手動でロードする必要があります。

有効にするルールの数が多い場合、ルール設定の効率を向上させ、ファイアウォールの安定性を維持し、各モジュールを事前にカーネルにロードすることができます。


#### 3.2 加载必要的内核模块
$MOD ip_tables                      # iptables 基本模块
$MOD ip_conntrack                   # 连接跟踪模块
$MOD ipt_REJECT                     # 拒绝操作模块
$MOD ipt_LOG                        # 日志记录模块
$MOD ipt_iprange                    # 支持 IP 范围匹配
$MOD xt_state                       # 支持状态匹配
$MOD xt_multiport                   # 支持多端口匹配
$MOD xt_mac                         # 支持 MAC 地址匹配
$MOD ip_nat_ftp                     # 支持 FTP 地址转换
$MOD ip_conntrack_ftp               # 支持 FTP 连接跟踪

3.3 / procパラメータの調整
/ procは、LinuxまたはUNIXシステムの疑似ファイルシステムメカニズムであり、カーネルの実行構造にアクセスしてカーネル設定を変更するためのリアルタイムデータを提供します。

/ procのデータは、ハードディスクではなくメモリに保存されます。

/ proc / sysは、システムに関連するいくつかの制御可能なパラメーターを格納します。これらのパラメーターは、カーネルの動作を変更するために使用でき、Linuxカーネルチューニングのリアルタイムエントリポイントとして機能します。

echoおよびsysctlコマンドを使用して、関連するパラメーターを変更するか、/ etc / sysctl.confファイルに書き込みます(sysctl -pの実行後に有効)。これには、主にIP転送を有効にするかどうか、ICMPブロードキャストに応答するかどうか、TCPを設定することが含まれます。応答タイムアウトなど;

以下は、最も一般的な/ procパラメーターの調整です。

icmp関連のパラメータ:このマシンに他のホストのpingテストを無視させます。

TCP関連パラメータ:DOSに抵抗するマシンの能力を適切に向上させることができます***;


#### 3.3 Linux 内核控制及调优
$CTL -w net.ipv4.ip_forward=1                     # 打开路由转发功能
$CTL -w net.ipv4.ip_default_ttl=128               # 修改 ICMP 响应超时
$CTL -w net.ipv4.icmp_echo_ignore_all=1           # 拒绝响应 ICMP 请求
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts=1    # 拒绝响应 ICMP 广播
$CTL -w net.ipv4.tcp_syncookies=1                 # 启用 SYN Cookie 机制
$CTL -w net.ipv4.tcp_syn_retries=3                # 最大 SYN 请求重试次数
$CTL -w net.ipv4.tcp_synack_retries=3             # 最大 ACK 确认重试次数
$CTL -w net.ipv4.tcp_fin_timeout=60               # TCP 连接等待超时
$CTL -w net.ipv4.tcp_max_syn_backlog=3200         # SYN 请求的队列长度

3.4特定のiptablesルールを設定して、既存のファイアウォールルールによる干渉

回避するために、既存のルールをクリーンアップします。最初にクリーンアップし、すべてのテーブルのユーザー定義チェーンを削除し、チェーン内のすべてのルールをクリアする必要があります。


#### 3.4 具体的防火墙规则
$IPT -t filter -X                                 # 删除各表中自定义的链
$IPT -t nat -X
$IPT -t filter -F                                 # 清空各表中已有的规则
$IPT -t nat -F

ルールチェーンのデフォルトポリシーの設定
実際の環境では、ファイアウォールフィルタリングルールはデフォルト拒否のポリシーを採用する必要があります。これにより、セキュリティを向上させることができます。

学習プロセス中も、デフォルトで許可されている戦略を採用し、デフォルト戦略のDROPをACCEPTに変更することをお勧めします。


$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT


natテーブルにさまざまなルールを設定するnatテーブルは主にLinuxゲートウェイサーバーで使用され、対応するSNATおよびDNATルールを実際の状況に応じて作成する必要があります。


$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP


フィルタテーブルにさまざまなルールを設定するフィルタテーブルは、主にデータパケットをフィルタリングするために使用されます。

ホストベースのファイアウォールは、主にINPUTチェーンとOUTPUTチェーンを使用します。

ネットワークファイアウォールは主にFORWARDチェーンを使用します。

デフォルトの拒否の場合、共有インターネットアクセスを実現するには、SNATポリシーを設定するだけでなく、DNS、HTTPD、およびその他の関連サービスでイントラネットPCとインターネット間の通信を許可する必要もあります。

注:実際の作業では、実際のネットワーク条件に従って対応するルールを設定し、テスト環境でテストして、ルールが正しいことを確認し、ネットワーク通信の障害を回避することをお勧めします。


$IPT -A FOEWARD -s $LAN_NET -o $INET_IF -p udp 53 -j ACCEPT
$IPT -A FOEWARD -s $LAN_NET -o $INET_IF -p udp 80 -j ACCEPT
$IPT -A FOEWARD -d $LAN_NET -i $INET_IF -m state ESTABLISHED,RELATED -j ACCEPT

実行権限を追加する


# chmod +x /opt/myiptables.sh

/opt/myiptables.shスクリプトファイルを実行します

# /opt/myiptables.sh 
net.ipv4.ip_forward = 1
net.ipv4.ip_default_ttl = 128
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_max_syn_backlog = 3200

ファイアウォールルールを表示する

# iptables -nL FORWARD

起動時に自動的に実行されるように/opt/myiptables.shスクリプトファイルを設定します

# vi /etc/rc.local
/opt/myiptables.sh

おすすめ

転載: blog.51cto.com/15067236/2606418
おすすめ