トップページ > インフォメーション

自宅サーバ構築MY HOME SERVER

セキュリティー設定 ファイアウオール(IP Filter) ルータポート開放について ポート開放テスト ウイルスソフト(Clam AntiVirus)

- セキュリティー設定 -

自宅サーバを外部公開する場合、セキュリティに留意する必要があります。外部からの不正アクセス、乗っ取られて踏み台にされる、ウイルス感染、 データの改ざん等に対する対策を講じる必要があります。Linux系OSは普及率がWindowsに比べて断然低いことから、攻撃対象とされる可能性が低い です。しかし不特定多数を相手に公開する場合、やはりセキュリティ対策を講じて置かないと、自宅サーバばかりでなく外部ネットワークに対して も被害を及ぼすことになります。 不正進入対策としてパケットフィルタリングは上位層にルータがある場合、ルータに任せます。サーバ側のIP Filterを有効にする場合は、下記設定 を参照してください。 ウイルス対策としてアンチウイルスソフト(ClamAV)の導入をします。



- ファイアウオール(IP Filter) -

FeeBSDをインストール完了した時点では、ファイアウオール(IP Filter)が無効になっています。ただし、ルータ側のポート開放 の設定などをしていない限り、ルータ側のファイアウォールが外部からの進入を防いでいます。

サーバ設定に際して、ルータ及びサーバー側のIP Filterの両方のポートを開放する作業がどうしても必要になってきます。

iplモジュールをロードします。
    
[root@hoge123 ~]# kldload ipl
[root@hoge123 ~]# vi /boot/loader.conf ← 新規作成します。

下記内容を追記します。
ipl_load="YES"

[root@hoge123 ~]# kldstat
Id Refs Address    Size     Name
 1    3 0xc0400000 e9ec64   kernel
 2    1 0xc86c7000 37000    ipl.ko ← 確認します。 

[root@hoge123 ~]# vi /etc/rc.conf

最終行に追記します。
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES"
ipmon_flags="-D /var/log/ipflog"
[root@hoge123 ~]# perl /usr/share/examples/ipfilter/mkfilters | grep -v inet6 > /etc/ipf.rules.sample ← 1行になっています。
[root@hoge123 ~]# cat /etc/ipf.rules.sample
#
# The following routes should be configured, if not already:
#
#
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short
pass out on bge0 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
pass in on bge0 all head 100
block in from 127.0.0.0/8 to any group 100


フィルタリングルールを新規作成します。
    
[root@hoge123 ~]# vi /etc/ipf.rules

下記内容を貼り付けます。赤文字の部分は環境に合わせます。他にもポート開放が
必要な場合、ルールに追記してください。
 
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short

# 外部からの入力(グループ 100)
pass in on bge0 all head 100

# アドレス偽装防止
block in from 127.0.0.0/8 to any group 100
block in from 192.168.0.10/32 to any group 100

# UDP パケットはデフォルトで拒否
block in proto udp all group 100

# 接続が確立されたパケットの通過を許可
pass in quick proto tcp all flags A/A group 100

# IDENT には答えない
block return-rst in quick proto tcp from any to any port = 113 group 100

# SSH
pass in quick proto tcp from any to any port = 22 flags S/SA group 100

# SMTP
pass in quick proto tcp from any to any port = 25 flags S/SA group 100

# DNS 
pass in quick proto tcp from any to any port = 53 flags S/SA group 100
pass in quick proto udp from any to any port = 53 group 100

# HTTP
pass in quick proto tcp from any to any port = 80 flags S/SA group 100

# POP3
pass in quick proto tcp from any to any port = 110 flags S/SA group 100

# IMAP
pass in quick proto tcp from any to any port = 143 flags S/SA group 100

# HTTPS
pass in quick proto tcp from any to any port = 443 flags S/SA group 100

# SMTPS
pass in quick proto tcp from any to any port = 465 flags S/SA group 100

# IMAPS
pass in quick proto tcp from any to any port = 993 flags S/SA group 100

# POP3S
pass in quick proto tcp from any to any port = 995 flags S/SA group 100

# FTP PASV
pass in quick proto tcp from any to any port 4000 >< 4029 flags S/SA keep state group 100

# それ以外の外部からの TCP 接続を拒否し、ログに残す
block in log quick proto tcp all flags S/SA group 100

# 外部の DNS に問い合わせた帰りのパケット
pass in proto udp from any port = 53 to any group 100

# 外部NTPサーバからの帰りは許可
pass in proto udp from any port = 123 to any group 100

# 内部から外部への ping は許可
block in log quick proto icmp all group 100
pass in log quick proto icmp all icmp-type 0 group 100

# RFC2979
pass in proto icmp all icmp-type 3 group 100

# 内部からの出力(グループ 150)
pass out on bge0 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 192.168.0.10/32 group 150

# ループバックへのルール(グループ 0)
pass in quick on lo0 all
pass out quick on lo0 all
      
      
[root@hoge123 ~]# ipf -Fa -Z -f /etc/ipf.rules ← 設定したルールを反映させます。

bad packets:            in 0    out 0
 input packets:         blocked 0 passed 1485 nomatch 1114 counted 0
output packets:         blocked 0 passed 1089 nomatch 351 counted 0
 input packets logged:  blocked 0 passed 0
output packets logged:  blocked 0 passed 0
 packets logged:        input 0-0 output 0-0


[root@hoge123 ~]# ipfstat -io ← ルールを確認します。

pass out on bge0 all head 150
pass out quick on lo0 all
# Group 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 192.168.0.3/32 group 150
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short
pass in on bge0 all head 100
pass in quick on lo0 all
# Group 100
block in from 127.0.0.0/8 to any group 100
block in from 192.168.0.3/32 to any group 100
block in proto udp from any to any group 100
pass in quick proto tcp from any to any flags A/A group 100
block return-rst in quick proto tcp from any to any port = auth group 100
pass in quick proto tcp from any to any port = ftp-data flags S/SA keep state group 100
pass in quick proto tcp from any to any port = ftp flags S/SA keep state group 100
pass in quick proto tcp from any to any port = ssh flags S/SA group 100
pass in quick proto tcp from any to any port = smtp flags S/SA group 100
pass in quick proto tcp from any to any port = http flags S/SA group 100
pass in quick proto tcp from any to any port = pop3 flags S/SA group 100
pass in quick proto tcp from any to any port = imap flags S/SA group 100
pass in quick proto tcp from any to any port = https flags S/SA group 100
pass in quick proto tcp from any to any port = smtps flags S/SA group 100
pass in quick proto tcp from any to any port = imaps flags S/SA group 100
pass in quick proto tcp from any to any port = pop3s flags S/SA group 100
pass in quick proto tcp from any to any port 4000 >< 4029 flags S/SA keep state group 100
block in log quick proto tcp from any to any flags S/SA group 100
pass in proto udp from any port = domain to any group 100
pass in proto udp from any port = ntp to any group 100
block in log quick proto icmp from any to any group 100
pass in log quick proto icmp from any to any icmp-type echorep group 100
pass in proto icmp from any to any icmp-type unreach group 100

[root@hoge123 ~]# ipf -Fa ← 設定したルールを削除する場合のコマンドです。




- ルータポート開放について -

ルータのポート開放はメーカーなどによって違いますが、静的NATやIPマスカレード等のメニュー表示を選択して開放するポート番号 を入れて設定を保存します。詳細はネット上で、「ポート開放」等の項目で検索してください。

既にウエブサーバ(Apache)の設定済みと仮定して、80番と443番ポートを開放する例で説明します。設定するルータはNTT PR-S300SE です。ルータにアクセスするため、ルータのIPアドレスを調べます。

ウインドウズの「スタート」、「ファイル名を指定して実行」を選択します。「ファイル名を指定して実行」のWindow が出てきたら、cmd と入力します。後は、コマンドプロンプトで確認します。 Win7の場合、検索Windowに cmd と入力します。
C:\Documents and Settings\hogehoge>ipconfig ← ipconfig と入力します。


Windows IP Configuration


Ethernet adapter ローカル エリア接続:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 192.168.0.13
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.0.1 ← ルータのIPアドレスです  

C:\Documents and Settings\hogehoge>exit


IEを開きアドレスに192.168.0.1 を入力します。ルータに既に設定してあるユーザ名、パスワードを入力して「OK」を押します。 不明な場合、ルータのマニュアルを参照してください。

18.jpg(26137 byte)


左メニュから詳細設定を選択します。 19.jpg(70571 byte)

「静的NAT設定」を選択します。 20.jpg(66337 byte)

下図はTCPポート 80番を開け、アクセスを待ち受けているサーバのIPアドレスを入力した例です。入力後、 「設定」を押して保存します。80番が終わったら、ポート443を開ける設定をしますが、下図の例では 変換対象ポートを443にして変更を保存します。
これでルータのポート番号80、 443は開放されました。他のポート番号を開けるときも、まったく同じ方法で 開けます。 21.jpg(64802 byte)



- ポート開放テスト -

外部からサーバのポート開放の状態を確認します。 ここをクリックしてください。
サーバの「ドメイン名」、「確認ポート番号」を入力します。「制約事項」にチェックを入れ「ポートチェック実行」 を押します。

下図のように応答があれば、80番ポートは開放されています。

今度は、443を入れて確認します。下図はポートは開放されているけれども、待ち受けるサーバのサービスが起動 していなか、サービスが別のポート番号を使用している事を示します。443はwwwでSSLを用いるときに使用される ポートです。今回は、まだSSLは利用されていないので下記結果が出てきました。ApacheでSSLを利用するには、 モジュールを組み込む必要があります。
ウエブページ暗号化(SSL) の設定が完了していれば、ポート443は「アクセスできました」 に変わります。

もし、下図のような文言が表示された場合、対象ポートがブロックされていることを示します。ルータ及びiptablesの 設定を見直す必要があります。



- ウイルスソフト(Clam AntiVirus) -

Unix系OSはウイルス感染しない、と思っている人がたくさんいます。実際に感染例がほとんどないことから、導入しないで 使用して良いかはサーバ管理者の判断になります。Windowsの場合ユーザが多いことから、セキュリティホールを突いた攻撃をよく受けますが Unixの場合、使用者が少ないことから攻撃されにくいと言うのは事実です。

しかしファイル共有やメールサーバ用途で運用している場合、Windowsで感染するウイルスが入ってくるかもしれません。その場合、Unixでは 感染しなくても、Unixサーバを経由して他のWindowsパソコンへの感染拡大の手伝いをするかもしれません。 その可能性を低くするためにサーバにはウイルスソフトが必要です。

今回は無償提供されているClam AntiVirus をインストールして、定期的に自動更新する設定をします。
      
[root@hoge123 ~]# cd /usr/ports/security/clamav
[root@hoge123 /clamav]# make BATCH=yes install clean
[root@hoge123 /clamav]# rehash
[root@hoge123 /clamav]#  cd
[root@hoge123 ~]# chmod 640 /usr/local/etc/clamd.conf
[root@hoge123 ~]# vi /usr/local/etc/clamd.conf

#LogTime yes
↓ 先頭の#を削除します。 
LogTime yes 

User clamav
↓ 先頭の#を削除します。 
#User clamav 

[root@hoge123 ~]# chmod 640 chmod 640 /usr/local/etc/freshclam.conf
[root@hoge123 ~]# vi /usr/local/etc/freshclam.conf

DatabaseOwner clamav
↓ rootに変更します。 
DatabaseOwner root

DatabaseMirror database.clamav.net
↓ 変更します。 
DatabaseMirror db.jp.clamav.net

[root@hoge123 ~]# vi vi /etc/rc.conf

最終行に追記します。 

clamav_clamd_enable="YES" 
clamav_freshclam_enable="YES"

[root@hoge123 ~]# /usr/local/etc/rc.d/clamav-freshclam start
[root@hoge123 ~]# freshclam ← ウイルス定義ファイルを更新します。
ClamAV update process started at Sat Jul 14 18:55:45 2012
Downloading main.cvd [100%]
main.cvd updated (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Downloading daily.cvd [100%]
daily.cvd updated (version: 15135, sigs: 231396, f-level: 63, builder: guitar)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 188, sigs: 38, f-level: 63, builder: neo)
Database updated (1275821 signatures) from database.clamav.net (IP: XXX.XXX.XXX.175)

[root@hoge123 ~]# /usr/local/etc/rc.d/clamav-clamd start ← Clamavを起動します。


試しにhomeフォルダー内を手動チェックしてみます。
[root@hoge123 ~]# clamscan --log=/var/log/clamav.log --infected --remove --recursive /home/

----------- SCAN SUMMARY -----------
Known viruses: 1270570
Engine version: 0.97.5
Scanned directories: 1
Scanned files: 10
Infected files: 0 ← 感染0 を表示しています。
Data scanned: 0.01 MB
Data read: 0.00 MB (ratio 2.00:1)
Time: 7.879 sec (0 m 7 s)


自動実行するように設定をします。
[root@hoge123 ~]# vi vi /etc/periodic/daily/600.clamscan

- 下記内容を貼り付け・保存します。

#!/bin/sh

/usr/local/bin/clamscan -i -r --remove /home >> /var/log/clamav/clamscan.log 2>&1


[root@hoge123 ~]# chmod 755 /etc/periodic/daily/600.clamscan 
[root@hoge123 ~]# vi /usr/local/etc/logrotate.d/clamav

- 下記内容を貼り付け・保存します。

/var/log/clamav/clamscan.log{
	monthly
	rotate 4
	missingok
}



自宅サーバ構築(FreeBSD9)に戻る


Copyright(C) PCDEMAGIC All Rights Reserved.