RealPath:
WebPath:
2017/01/12 22:44 (JST) 更新
ネットワーク関連 >>

iptables

Contents

概要

パケットフィルタと NAT を管理するツール

自分のIPだけ8080を許可。
全体向けに22,80,443,3000,9000は解放。

bash
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -s 127.0.0.1 -d 0.0.0.0/0 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
# iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
# iptables -A INPUT -s 180.43.28.71 -p tcp --dport 8080 -j ACCEPT
# iptables -P INPUT DROP
# service iptables save

一覧

bash
# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  x.x.x.x/29   0.0.0.0/0
2    ACCEPT     tcp  --  x.x.x.x/28     0.0.0.0/0
3    ACCEPT     tcp  --  192.168.0.0/24       0.0.0.0/0           tcp dpt:22
4    ACCEPT     tcp  --  x.x.x.x         0.0.0.0/0
5    ACCEPT     tcp  --  x.x.x.x        0.0.0.0/0
6    ACCEPT     tcp  --  x.x.x.x      0.0.0.0/0
7    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
8    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

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

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

順番について

上の行から順にチェックされる。条件にマッチしたら処理は終了。

どのルールにもマッチしない場合はデフォルトポリシーで処理される。

追加(各種例)

127.0.0.1 からのパケットをすべて許可。

bash
# iptables -A INPUT -s 127.0.0.1 -d 0.0.0.0/0 -j ACCEPT

 
schiphol.2ch.net からのパケットをすべて拒否。

bash
# iptables -A INPUT -s schiphol.2ch.net -d 0.0.0.0/0 -j DROP

 
schiphol.2ch.net からポート80,1080,8080に向けたTCPパケットをすべて拒否。

bash
# iptables -A INPUT -p tcp -s schiphol.2ch.net -d 0.0.0.0/0 -m multiport --dports 80,1080,8080 -j DROP

 
schiphol.2ch.net からポート80に向けたTCPパケットをすべて拒否。

bash
# iptables -A INPUT -p tcp -s schiphol.2ch.net -d 0.0.0.0/0 --dport 80 -j DROP

 
schiphol.2ch.net からポート1~49151に向けたTCPパケットをすべて拒否。

bash
# iptables -A INPUT -p tcp -s schiphol.2ch.net -d 0.0.0.0/0 --dport 1:49151 -j DROP

 
hogehoge.net からポート80~82に向けたTCPパケットをすべて拒否。

bash
# iptables -A INPUT -p tcp --dport 80:82 -s hogehoge.net -d 0.0.0.0/0 -j DROP

 
80,8080へのTCPパケットをぜんぶ拒否。(ただしhogehoge.netからの8080は許す)

bash
# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -p tcp --dport 8080 -s hogehoge.net -j ACCEPT
# iptables -A INPUT -p tcp --dport 8080 -j DROP

 
TCP/UDPの123ポートを許可。

bash
# iptables -A RH-Firewall-1-INPUT -p tcp --dport 123 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -A RH-Firewall-1-INPUT -p udp --dport 123 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

 
TCP/UDPの123ポートを許可。(40番の手前に挿入)

bash
# iptables -I RH-Firewall-1-INPUT 40 -p tcp --dport 123 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 40 -p udp --dport 123 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

 
MySQLポートを止める

bash
# netstat -nl (待ちうけ一覧)
# iptables -A INPUT -s 127.0.0.1 -j ACCEPT (localhostからは全て受け付け)
# iptables -A INPUT -p tcp --dport 3306 -j DROP (mysqlを受け付けない)
# iptables -P INPUT ACCEPT (デフォ)
# iptables -P FORWARD DROP (ACCEPT→DROPに変更)
# iptables -P OUTPUT ACCEPT (デフォ)
# service iptables save

 
111.111.222.222からのssh(22)を許可

bash
# iptables -A INPUT -p tcp --dport 22 -s 111.111.222.222 -d 0.0.0.0/0 -j ACCEPT

 
111.111.222.222からの80を許可

bash
# iptables -A INPUT -p tcp --dport 80 -s 111.111.222.222 -d 0.0.0.0/0 -j ACCEPT

 
111.111.222.222からの443を許可

bash
# iptables -A INPUT -p tcp --dport 443 -s 111.111.222.222 -d 0.0.0.0/0 -j ACCEPT

 
すべての80を許可

bash
# iptables -A INPUT -p tcp --dport 80 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

 
すべての443を許可

bash
# iptables -A INPUT -p tcp --dport 443 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

 
hogehoge.houseからMySQLへの接続を許可

bash
# iptables -I INPUT 2 -p tcp --dport 3306 -s hogehoge.house -j ACCEPT

挿入

bash
# iptables -I INPUT 挿入場所 -s 127.0.0.2 -d 0.0.0.0/0 -j ACCEPT

 
※挿入場所の手前に挿入される。

bash
(プロトコル指定)
# iptables -I INPUT -s 127.0.0.1 -d 0.0.0.0/0 -p tcp -j ACCEPT

(ポート指定)
# iptables -I INPUT -s 127.0.0.1 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT

MasterServer

bash
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 23466 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50005 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 10737 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 10746 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50110 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50111 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50112 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50113 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50114 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50115 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50116 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50117 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50118 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT 38 -p udp --dport 50119 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# service iptables save

削除

bash
# iptables -D INPUT 番号
# iptables -D RH-Firewall-1-INPUT 40

保存

bash
# service iptables save

参考

デフォルトポリシー設定

bash
# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

その他メモ

bash
# iptables -I RH-Firewall-1-INPUT 19 -m state --state NEW -p tcp --dport 3326 -j ACCEPT
# service iptables save