UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

iptablesを使ってFirewall設定

iptablesを使ってFirewall設定


0.改訂履歴

  • 2007.10.17 新規作成

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.モジュールの確認

  • iptableのRPMがはいっている事を確認する.
[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]# 
  • 1つづつ内容を確認してみる.
*filter
  • ここからフィルターの定義が開始されるという宣言.
:INPUT ACCEPT [0:0]
  • データ受信をOKとする.
:FORWARD ACCEPT [0:0]
  • データの転送をOKとする.
  • 今回はルータとして使わないので,DROPとしておく.
:OUTPUT ACCEPT [0:0]
  • データ送信をOKとする.
: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)している.
COMMIT
  • フィルタ設定の終了の宣言.
  • 振り返って説明すると,次のようになる.
    • 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]# 
  • この8番のあとに追加する.
[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]# 
  • 80番でアクセスを拒否するために,削除する.
[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]# 
  • これで完了.


広告スペース
Google