|
iptablesを使ってFirewall設定
iptablesを使ってFirewall設定
0.改訂履歴
1.はじめに
iptables 1.2.8-12.3を使って,Firewall設定を行う. 設定に際し,基本的な設定はGUI?ツールの,redhat-config-securitylevelを使って行い,RH-Firewall-1INPUTチェーンを作成したあとにルールの追加等カスタマイズしていく手順を説明する. また,その後のフィルタルールの追加や削除を実行してみたり,DROPとREJECTの違いの動作確認,nmapを使った検証等も行いつつ,自動起動方法についても記載している.
- モジュールの確認
- 基本的なルール設定
- カスタマイズ設定
- iptablesを起動する
- 設定を確認する方法
- フィルタルールを追加する
- フィルタ設定を削除する
- 特定のサーバ,ポーとからの接続を許可する
- 特定のマシンから接続できないように設定する
- REJECTとDROPの違いを検証する
- iptablesをOS起動時に自動起動する
なお,使用しているOSは,RedHat Linux WS 3上で確認している.
2.モジュールの確認
[root@mars3 root]# rpm -qa | grep iptables
iptables-ipv6-1.2.8-12.3
iptables-1.2.8-12.3
[root@mars3 root]#
|
- インストールされている.
- プロセスが動作しているか確認する.
[root@mars3 root]# ps -ef | grep iptables
root 841 30248 0 10:59 pts/0 00:00:00 grep iptables
[root@mars3 root]#
|
- 動いていない.というか,カーネルの中で動作するので,プロセスは無い.
- Linuxのカーネル2.4では,netfilterというパケット処理フレームワークが在り,それを制御するツールとしてiptablesが用意されている.
- 設定ファイルが在るか,確認する.
[root@mars3 root]# ls -la /etc/sysconfig/iptables
ls: /etc/sysconfig/iptables: No such file or directory
[root@mars3 root]#
|
3.基本的なルール設定
- iptablesの設定ファイルは,/etc/sysconig/iptablesに記述されるが,現在ない状態なので,基本的な設定を簡単に実行できる「セキュリティレベル設定ツール」を使って,設定する.
- ※設定ファイルがすでに存在する場合は,バックアップを取っておく.
- ターミナルを英語モードにする.
[root@mars3 root]# export LANG=C
[root@mars3 root]#
|
[root@mars3 root]# /usr/bin/redhat-config-securitylevel
[root@mars3 root]#
|
- tabキーで移動して,スペースキーで選択する操作となる.
- iptablesを有効にするために,"Enabled"を選択.
- 次に,設定を行うために"Customize"を選択する.
- ※なお,ここで設定して保存しても,Firewal機能は即時有効にはならないので安心する.
- Trusted Devicesのチェックしない
- Trusted Device...つまり,信頼できるネットワークデバイスという事で,ここでチェックされたインタフェイスは,フィルタされない.
- ここでは1枚しかカードがないので,eth0だけとなっていて,外部からアクセスしてくるデバイスはeth0だけなので,チェックしない.
- Allow incomingで,許可するプロトコルを選択する.
- ここでは,SSH(22),HTTP(80),SMTP(25)を許可している.
- その他のポートで許可が必要な場合は,Other Portsで設定する.
- プロトコルの選択が終わったら,tabキーで移動して[OK]を押下する.
- 最初の画面に戻ってくるので,これまで設定した内容でよいならば[OK]を選択してリターンキーを押下する.
3.カスタマイズ設定
[root@mars3 root]# ls -la /etc/sysconfig/iptables
-rw------- 1 root root 883 Oct 16 11:04 /etc/sysconfig/iptables
[root@mars3 root]#
|
[root@mars3 root]# cat /etc/sysconfig/iptables
# Firewall configuration written by redhat-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@mars3 root]#
|
- データの転送をOKとする.
- 今回はルータとして使わないので,DROPとしておく.
:RH-Firewall-1-INPUT - [0:0]
|
-A INPUT -j RH-Firewall-1-INPUT
|
- INPUT(受信データ)を,チェーン(RH-FIrewall-1-INPUT)に適用する.
- RH-FIrewall-1-INPUTの内容は,この後に定義されているものを,上から順番に適用していく事になる.
-A FORWARD -j RH-Firewall-1-INPUT
|
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
|
- この部分は,loインタフェイスを許可している.
- この指定をしたインタフェイスは,フィルタが解除される.
- loはループバックデバイス.
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
|
- この3行では,-pでプロトコル単位で許可をしている.
- ICMPはpingへの反応なので良いとして,50(Remote Mail Checking Protocol)と51( IMP Logical Address Maintenance)は不明. 不要なら削除する.
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
- これは,確率されている接続は,維持をするという宣言.
- この後が,ポート番号毎の許可設定,つまりフィルター設定となる.
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
|
- 上から,ssh(22),SMTP(25),HTTP(80)の接続を許可.
- 4行目が,それ以外は不許可(reject)している.
- フィルタ設定の終了の宣言.
- 振り返って説明すると,次のようになる.
- RH-Firewall-1-INPUTというチェーン(フィルタのグループ)を定義する.
- eth0のデバイスを有効にする.
- 22,25,80を許可して,その他を不許可.
- "-A INPUT -j RH-Firewall-1-INPUT"によって,受信データにチェーンを適用.
4.iptablesを起動する
- 別のサーバから,今回対象となるサーバmars3に対して,ポートが開いているかを確認する.
[root@nmapsvr ujpadmin]# nmap mars3
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on mars3 (123.123.123..248):
(The 1596 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
80/tcp open http
111/tcp open sunrpc
199/tcp open smux
3306/tcp open mysql
Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds
[root@nmapsvr ujpadmin]#
|
- MySQL等のポートが開いている.
- 起動する前に,iptablesの状態を確認する.
[root@mars3 sysconfig]# /sbin/iptables -L
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
[root@mars3 sysconfig]#
|
- 何も動作していない状態.
- iptablesを起動してみる.
[root@mars3 root]# /sbin/service iptables start
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
[root@mars3 root]#
|
[root@mars3 ujpadmin]# /sbin/service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT ipv6-crypt-- anywhere anywhere
ACCEPT ipv6-auth-- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
- フィルタ設定が有効になっている模様.
- 再度,nmapを使って,スキャンしてみる.
[root@nmapsvr ujpadmin]# nmap mars3
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on mars3 (123.123.123..248):
(The 1598 ports scanned but not shown below are in state: filtered)
Port State Service
22/tcp open ssh
25/tcp open smtp
80/tcp open http
Nmap run completed -- 1 IP address (1 host up) scanned in 159 seconds
[root@nmapsvr ujpadmin]#
|
- iptablesを稼働させるまでオープンしていたポート,sunrpc,smux,mysqlが閉じられている事が確認できた.
5.設定を確認する方法
- /sbin/iptablesに-Lオプションをつける事で,リストが取得できる.
[root@mars3 ujpadmin]# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT ipv6-crypt-- anywhere anywhere
ACCEPT ipv6-auth-- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
- チェーン名を指定する事によって,必要なものだけリストが表示される.
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT ipv6-crypt-- anywhere anywhere
ACCEPT ipv6-auth-- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABL
ISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-hos
t-prohibited
[root@mars3 ujpadmin]#
|
6.フィルタルールを追加する
- これまでの設定だに,他らしいフィルタルールを追加する.
- 今回は,NTP(123)を追加する.
- まずは,現在のリストを,番号付きで取得する.
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABL
ISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-hos
t-prohibited
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/iptables -I RH-Firewall-1-INPUT 8 -p udp --dport 123 -j
ACCEPT
[root@mars3 ujpadmin]# /sbin/iptables -I RH-Firewall-1-INPUT 8 -p tcp --dport 123 -j
ACCEPT
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:123
9 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
11 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
- フィルタ番号8番9番が設定されている.
- 設定されたか,別のサーバからポートスキャンしてテストする.
[root@nmapsvr ujpadmin]# nmap mars3
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on mars3 (123.123.123..248):
(The 1597 ports scanned but not shown below are in state: filtered)
Port State Service
22/tcp open ssh
25/tcp open smtp
80/tcp open http
123/tcp closed ntp
Nmap run completed -- 1 IP address (1 host up) scanned in 158 seconds
[root@nmapsvr ujpadmin]#
|
- Firewall的には,ポートは開いている.アプリケーションが反応していない事が判る.
- 設定した無いようでよければ,保存する.
[root@mars3 ujpadmin]# /sbin/service iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
[root@mars3 ujpadmin]#
|
- 保存しないと,消えるので注意する.
- iptablesでは,即時反映する為か,設定した内容は主記憶メモリに読み込まれるのみである.
- よって,iptablesの再起動(OS再起動含む)を行うと,設定が保存前の状態に戻る.
7.フィルタ設定を削除する
- 設定されているフィルタを削除する.
- まずは,現在の設定を確認する.
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:123
9 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
11 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
[root@mars3 ujpadmin]#
|
- この設定の中で,8番と9番を消す.
- まずは,8番を消す.
[root@mars3 ujpadmin]# /sbin/iptables -D RH-Firewall-1-INPUT 8
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
- 先ほどの8番が消されて,9番が8番に繰り上がっている事が確認できる.
- ここでもう1度,8番のルールを消す事で,元も8番9番の削除を実現できる.
[root@mars3 ujpadmin]# /sbin/iptables -D RH-Firewall-1-INPUT 8
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:123
9 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
11 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
8.特定のサーバ,ポートからの接続を許可する
- 通常は80番ポートでのアクセスを許すが,指定したサーバからの80番ポートへのアクセスを拒否する設定を行ってみる.
- まずは,現在の設定を確認する.
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/iptables -D RH-Firewall-1-INPUT 8
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
- これでアクセスできなくなった.
- 接続できない事を,別のサーバで確認する.
[ujpadmin@nmapsvr ujpadmin]$ nmap mars3 -p 80
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap run completed -- 1 IP address (0 hosts up) scanned in 0 seconds
[ujpadmin@nmapsvr ujpadmin]$
|
- 接続できない事が確認できた.
- 次に,特定のマシンから80番でアクセスできるようにフィルタルールを追加する.
[root@mars3 ujpadmin]# /sbin/iptables -I RH-Firewall-1-INPUT 8 -s 123.123.123..244 -p tcp
--dport 80 -j DROP
[root@mars3 ujpadmin]#
|
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 123.123.123..244 0.0.0.0/0 tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
接続許可されたサーバ
[ujpadmin@nmapsvr ujpadmin]$ nmap mars3 -p 80
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on mars3 (123.123.123..248):
Port State Service
80/tcp open http
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
[ujpadmin@nmapsvr ujpadmin]$
|
- 接続が確認できた.
- 許可されていないマシンから接続テストしてみる.
接続されていないサーバ
[root@artemis ujpadmin]# nmap mars3 -p 80
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on mars3 (123.123.123..248):
Port State Service
80/tcp filtered http
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
[root@artemis ujpadmin]#
|
- フィルタされている事が確認できた.
- 元に戻すために,80番ポートで接続できるように設定する.
[root@mars3 ujpadmin]# /sbin/iptables -D RH-Firewall-1-INPUT 8
[root@mars3 ujpadmin]# /sbin/iptables -I RH-Firewall-1-INPUT 8 -p tcp --dport 80 -j ACCEPT
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
9.特定のマシンから接続できないように設定する
- 今回は,指定されたマシン接続できないように設定する.
- 現在の設定を確認する.
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-pro
hibited
[root@mars3 ujpadmin]#
|
- 全ての許可フィルタに一致しないように,順位を確認してをフィルタ設定する.
[root@mars3 ujpadmin]# /sbin/iptables -I RH-Firewall-1-INPUT 5 -s 123.123.123..244 -j DROP
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 DROP all -- 123.123.123..244 0.0.0.0/0
6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
[root@mars3 ujpadmin]#
|
特定のマシンからアクセス禁止の検証
許可されたマシンからアクセス
|
[root@artemis ujpadmin]# nmap mars3 -p 1-100
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on mars3 (123.123.123..248):
(The 97 ports scanned but not shown below are in state: filtered)
Port State Service
22/tcp open ssh
25/tcp open smtp
80/tcp open http
Nmap run completed -- 1 IP address (1 host up) scanned in 16 seconds
[root@artemis ujpadmin]#
|
アクセス拒否マシンからアクセス |
[ujpadmin@nmapsvr ujpadmin]$ nmap mars3 -p 1-100
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap run completed -- 1 IP address (0 hosts up) scanned in 60 seconds
[ujpadmin@nmapsvr ujpadmin]$
|
10.REJECTとDROPの違いを検証する
- アクセス制限をするときに,拒否を設定する場合にDROPとREJECTがあります.
- DROPは,その名の通り到着したパケットを捨てますが,REJECTは,エラーの反応を送信元に返すという違いが在る.
- 実際に,違いを確認する.
- これまでの手順の通りに設定してくると,次のよう特定のマシンがDROPが設定されている.
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 DROP all -- 123.123.123..244 0.0.0.0/0
6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
[root@mars3 ujpadmin]#
|
- この状態で,拒否されているマシンから,接続してみる.
DROPの場合
[ujpadmin@nmapsvr ujpadmin]$ nmap mars3 -p 80
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap run completed -- 1 IP address (0 hosts up) scanned in 60 seconds
[ujpadmin@nmapsvr ujpadmin]$
|
- 反応としては60秒間接続してみて,反応無し. サーバがダウンしている可能性があるという検査結果だった.
- 同じ設定を,DROPからREJECTに置き換える.
[root@mars3 ujpadmin]# /sbin/iptables -R RH-Firewall-1-INPUT 5 -s 123.123.123..244 -j REJECT
[root@mars3 ujpadmin]# /sbin/iptables -L RH-Firewall-1-INPUT -n --line-number
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 REJECT all -- 123.123.123..244 0.0.0.0/0 reject-with icmp-port-unreachable
6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
[root@mars3 ujpadmin]#
|
REJECTの場合
[ujpadmin@nmapsvr ujpadmin]$ nmap mars3 -p 80
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
The 1 scanned port on mars3 (123.123.123..248) is: closed
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
[ujpadmin@nmapsvr ujpadmin]$
|
- 即時反応が在り,closeとレスポンスされている事がわかる.
11.iptablesをOS起動時に自動起動する
- iptablesが,OS起動時に自動起動されるか,確認する.
[root@nmapsvr ujpadmin]# export LANG=C
[root@nmapsvr ujpadmin]# /sbin/chkconfig --list | grep iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@nmapsvr ujpadmin]#
|
[root@nmapsvr ujpadmin]# /sbin/chkconfig --level 345 iptables on
[root@nmapsvr ujpadmin]#
|
[root@nmapsvr ujpadmin]# /sbin/chkconfig --list | grep iptables
iptables 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@nmapsvr ujpadmin]#
|
|
|