iptablesルール整理

17713 ワード

一、iptablesコマンドヘルプ情報
1.1実際の試験iptables規則1.1.1 iptables状態/etc/initを起動して表示する.d/iptables start iptables-L-nまたはiptables-L-n-v-xインスタンスのデモ1:
[root@xiaorui ~]# iptables -V
iptables v1.4.7
[root@xiaorui ~]# iptables -h
iptables v1.4.7

Usage: iptables -[ACD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)

Commands:
Either long or short options are allowed.
  --append  -A chain            Append to chain
  --check   -C chain            Check for the existence of a rule
  --delete  -D chain            Delete matching rule from chain
  --delete  -D chain rulenum
                                Delete rule rulenum (1 = first) from chain
  --insert  -I chain [rulenum]
                                Insert in chain as rulenum (default 1=first)
  --replace -R chain rulenum
                                Replace rule rulenum (1 = first) in chain
  --list    -L [chain [rulenum]]
                                List the rules in a chain or all chains
  --list-rules -S [chain [rulenum]]
                                Print the rules in a chain or all chains
  --flush   -F [chain]          Delete all rules in  chain or all chains
  --zero    -Z [chain [rulenum]]
                                Zero counters in chain or all chains
  --new     -N chain            Create a new user-defined chain
  --delete-chain
            -X [chain]          Delete a user-defined chain
  --policy  -P chain target
                                Change policy on chain to target
  --rename-chain
            -E old-chain new-chain
                                Change chain name, (moving any references)
Options:
[!] --proto     -p proto        protocol: by number or name, eg. `tcp'
[!] --source    -s address[/mask][...]
                                source specification
[!] --destination -d address[/mask][...]
                                destination specification
[!] --in-interface -i input name[+]
                                network interface name ([+] for wildcard)
 --jump -j target
                                target for rule (may load target extension)
  --goto      -g chain
                              jump to chain with no return
  --match       -m match
                                extended match (may load extension)
  --numeric     -n              numeric output of addresses and ports
[!] --out-interface -o output name[+]
                                network interface name ([+] for wildcard)
  --table       -t table        table to manipulate (default: `filter')
  --verbose     -v              verbose mode
  --line-numbers                print line numbers when listing
  --exact       -x              expand numbers (display exact values)
[!] --fragment  -f              match second or further fragments only
  --modprobe=<command>          try to insert modules using this command
  --set-counters PKTS BYTES     set the counter during insert/append
[!] --version   -V              print package version.

iptables-F//すべてのルールをクリアし、デフォルトのルールは処理されません.iptables-X//ユーザー定義チェーンを削除します.iptables-Z//チェーンのカウンタクリア.例2:
[root@xiaorui ~]# iptables -F
[root@xiaorui ~]# iptables --flush
 : 
[root@xiaorui ~]# iptables -X
[root@xiaorui ~]# iptables --delete-chain
 : 
[root@xiaorui ~]# iptables -Z
[root@xiaorui ~]# iptables --zero
 : 
[root@xiaorui ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

1.1.3禁止規則#禁止sshポート
(1)現在の機器のSSHポートを探し出す
[root@xiaorui ~]# netstat -lntup|grep ssh
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2073/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      2073/sshd 

(2)現在のSSHポートは禁止、ここでは22
 :
Usage: iptables -t [table] -[AD] chain rule-specification [options]
 :
[root@xiaorui ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
[root@xiaorui ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP

1、iptables filter , ,
2、 INPUT DROP
3、--jump  -j target
   target for rule(may load target extension)
   :ACCEPT( )、DROP( )、REJECT( )
   :DROP REJECT
4、 ,

(3)先ほど切断したSSH接続を復旧する1)機械室に行ってシステムを再起動するか、ログインして先ほどの禁止規則を削除する2)機械室の人にサーバーを再起動させるか、機械室の人にユーザー名のパスワードを持ってログインさせる3)サーバーの遠隔管理カード管理を通過する4)まず1つの定時任務を書いて、5分ごとにファイアウォールを停止する5)テスト環境テストをして、シナリオを書いて、バッチ実行(4)は-Iと-Aの順序を用い,ファイアウォールのフィルタリングは規則的順序に従う.-Aは、指定されたチェーンの最後にルールを追加します.-Iは、指定されたチェーンの先頭にルールを追加します.挿入位置を指定することもできます.2行目に挿入:[root@xiaorui~]#iptables-I INPUT 2-p tcp--dport 8080-j DROP(5)まとめでルールを削除する方法:1)iptables-D INPUT-p tcp--dport 8080-j DROP 2)iptables-Fすべてのルールを削除3)iptables-D INPUTルール番号4)/etc/init.d/iptables restart(iptablesコマンドラインで構成されたコマンドはすべて一時的に有効)二、知識点整理1、禁止10.0.0.0セグメント接続:iptables-t filter-A INPUT-i eth 0-s 10.0.0.0/24-j DROP
2、ソースアドレスが10.0.0.101個のipではないiptables-t filter-I INPUT-i eth 0の接続禁止!-s 10.0.0.101 -j DROP
3、ソースアドレスが10.0.0.0/24でないセグメントはiptables-t filter-I INPUT-i eth 0に接続できません!-s 10.0.0.0/24 -j DROP
4、ソースアドレスが10.0.0.0/24禁ping iptables-t filter-I INPUT-p icmp--icmp-type 8-i eth 0!-s 10.0.0.0/24 -j DROP
5、3306ポートiptables-A INPUT-p tcp--dport 3306-j DROPを閉じる
6、マッチングルール指定プロトコル以外のすべてのプロトコルiptables-A INPUT-pにマッチ!tcpマッチングホストソースIP iptables-A INPUT-s 10.0.0.14 iptables-A INPUT-s!10.0.0.14整合セグメントiptables-A INPUT-s 10.0.0.0/24 iptables-A INPUT-s!10.0.0.0/24整合単一ポートiptables-A INPUT-p tcp--sport 53 iptables-A INPUT-p udp--dport 53整合指定ポート以外のポートiptables-A INPUT-p tcp--dport!22   iptables -I INPUT -p tcp ! --dport 22-s 10.0.0.123-j DROPマッチングポート範囲iptables-A INPUT-p tcp--sport 22:80 iptables-I INPUT-p tcp-m multiport--dport 21,22,23,24-j ACCEPTiptiptiptables-I INPUT-p tcp--dport 3306:8809-j ACCEPTiptables-I INPUT-p-p tcp--dport 18:80-j DROPマッチングICMPタイプiptables-A INPUT-p icmp--icmp-type 8 iptables 8 iptables 8 iptables 8 iptables s-A INPUT-p icmp--icmp-type 8-jDROP iptables-A INPUT-p icmp-m icmp--icmp-type any-j ACCEPT指定されたネットワークインタフェースにマッチiptables-A INPUT-i eth 0 iptables-A FOrWARD-o eth 0記憶方法:--in-interface-i[!]input name[+]                                network interface name ([+] for wildcard)  --out-interface -o [!] output name[+]network interface name([+]for wildcard)ネットワークステータスに一致-m state--state NEW:新しい接続ESTABLISHED:確立された接続RELATED:新しい接続を開始中INVALID:不正または認識できない
7、企業のファイアウォールを配置する
[root@ipt ~]# iptables -F
[root@ipt ~]# iptables -X
[root@ipt ~]# iptables -Z
[root@ipt ~]# iptables -A INPUT -p tcp  --dport 22 -s 10.0.0.0/24  -j ACCEPT
[root@ipt ~]# iptables -A INPUT -i lo -j ACCEPT
[root@ipt ~]# iptables -A INPUT -o lo -j ACCEPT  
[root@ipt ~]# iptables -A OUTPUT -o lo -j ACCEPT  

合法的なアクセスを許可する:
iptables -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT    
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 8  -j ACCEPT

#others RELATED ftp 
# 
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

8、企業iptables面接問題:カスタムチェーン処理synがiptables-N syn-flood iptables-A INPUT-i eth 0-syn-j syn-flood iptables-A syn-flood-m limit-limit 5000/s-limit-burst 200-j RETURN iptables-A syn-flood-j DROP 9、ローカルエリアネットワーク共有の2つのコマンド方法:方法1:固定外部ネットワークアドレスがある:iptables-t nat-A POSTROOUTING-s 192.168.1.0/24-o eth 0-j SNAT--to-source 10.0.0.7(1)-s 192.168.1.0/24オフィスまたはIDCイントラネットワークセグメントに適している.(2)-o eth 0はゲートウェイの外部ネットワークカードインタフェースです.(3)-j SNAT--to-source 10.0.0.19は、ネットワーク関外ネットワークカードIPアドレスである.方法2:適応変化外部ネットワークアドレス(ADSL):iptables-t nat-A POSTROOUTING-s 192.168.1.0/24-j MASQUERADE偽装.10、複数の外部ネットワークIPインターネットをマッピングするiptables-t nat-A POSTOUTING-s 10.0.0/255.255.255.24.0-o eth 0-j SNAT--to-source 124.42.60.11-124.4.60.11-124.4.660.16 iptables-t nat-A POSTOUTING-s 172.16..0/255.255.255.0-o eth 0-j SNAT--to-source 124.42.603-12.60.111、アクセス10.0.0.7の80ポートを192.168.1.8の9000ポートiptables-t nat-A PREROUTING-d 10.0.0.7-p tcp--dport 80-j DNAT--to-destination 192.168.1.8:900012、iptablesルールを保存iptables-save>/etc/sysconfig/iptables 13、関連するステータスパケット通過を許可する(FTPサービスは特殊で、ステータス接続が必要).#許可関連ステータスパッケージiptables-A INPUT-m state--state ESTABLISHED,RELATED-j ACCEPT iptables-A OUTPUT-m state--state ESTABLISHED,RELATED-j ACCEPT比喩:映画を見てWCに出たり、電話に出たりして、帰っても中に入ることを許可しなければならない.-m limit--limit n/{second/minute/hour}:指定された時間内のリクエストレート「n」をレートとし、後に時間:秒、分、時--limit-burst[n]:同じ時間内に許可されたリクエスト「n」を数字とし、デフォルト5 fg:ネイティブアドレス:172.16.6.14.1を指定せず、172.6.0.0/16ネットワークpingネイティブを許可するが、1分あたりのリクエストが20を超えてはならない.一度に6つのiptables-A INPUT-s 172.16.0.0/16-d 172.16.4.1-p icmp--icmp-type 8-m limit-limit 20/min--limit-burst 6-j ACCEPT iptables-A OUTPUT-s 172.6.14.1-d 172.16.0.0/16-p icmp--icmp-type 0-j ACCEPT 14、Linux上にzebraルーティングを構成することはできません.
client(config)#int eth0
client(config-if)#ip add 10.1.34.81 255.255.255.0
client(config-if)#int eth1
client(config-if)#ip add 110.233.24.96 255.255.255.224
client(config)#ip route 0.0.0.0 0.0.0.0 10.1.32.1
client(config)#ip route 110.233.24.96/27 eth1

15、iptablesの生産常用シーン:1)サーバー自身のファイアウォール機能を実現し、filter表を使用する.2)ローカルエリアネットワークのインターネットゲートウェイを実現し、nat表を使用し、ゲートウェイ上でも同時にfilter表でファイアウォールを作ることができる.3)NAT機能を実現し、例えば外部IPから内部サーバーIP(ポートを含む)にマッピングし、natテーブルを使用する.4)その他...略.16、関連知識参照(1)生産環境が254台より大きい機械ネットワークセグメント区分及びルーティング解決方案詳細解01http://v.youku.com/v_show/id_XNTAyMjAwMzI0.html(2)linux route命令深入浅出と実戦事例精講http://oldboy.blog.51cto.com/2561410/111945317、該当するモジュールをロードするかどうかを確認する
lsmod |egrep "nat|filter"
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state