インターネットに接続する前に
(iptablesを使用したフィルタ)


iptablesによるポートのフィルタ設定

 (ここでは設定内容のみ示します。 詳細を知りたい方は「オンラインマニュアル」または各種Webページをご覧ください)

RedHat Linux7.3では標準でipchainsを使用しますので、先ずipchainsを使用しないようにします
(これは、私の趣味の問題でありipchainsの性能には無関係です。 念のため)
 # chkconfig --del ipchains

次に、ブート時に設定させるコンフィグを作成します
/etc/sysconfig/iptables

ファイルの内容 説明
# Generated by iptables-save
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp ! --tcp-flags
   SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 113 -j ACCEPT
-A INPUT -j LOG
-A OUTPUT -d 10.0.0.0/255.0.0.0 -o ppp0 -j DROP
-A OUTPUT -d 172.16.0.0/255.240.0.0 -d ppp0 -j DROP
-A OUTPUT -d 192.168.0.0/255.255.0.0 -d ppp0 -j DROP
-A OUTPUT -s 10.0.0.0/255.0.0.0 -o ppp0 -j DROP
-A OUTPUT -s 172.16.0.0/255.240.0.0 -d ppp0 -j DROP
-A OUTPUT -s 192.168.0.0/255.255.0.0 -d ppp0 -j DROP
COMMIT
# Completed

filterテーブル
ここ↓で指定しない入力パケットは全て廃棄する


loopbackでの使用は制限なし
宅内ネットワークからは制限なし
TCPの割り込みパケットは廃棄
 (この行は実際には上の行の続きです)
ACK付のTCPパケットは許可(Established)
正常なICMPパケットは許可(pingの戻り等)
その他のICMPパケットは廃棄
こちらからの要求への応答UDPパケットは許可
WWW(80)は許可
ssh(22)は許可
imap(143)は許可
SMTP(Email:25)は許可
ident(113)は許可(SMTP送信時の問い合わせ?)
廃棄パケットをsyslogで記録
プライベートアドレス宛のパケットを
 インターネットに流さないようにする設定です

ソースアドレスがプライベートアドレスのパケットは
 インターネットに流さないようにする設定です


上記設定ではicmp(主にecho-request)は初めの3パケットは応答を返しますがその後のパケットは廃棄されます。

xinetdでのアクセス制限

xinetdでは標準でアクセス制限の設定が可能です。
ここでは、コンフィグの例を示します( /etc/xinetd.d/telnet )
# default: on
# description: The telnet server serves telnet
# sessions; it uses unencrypted
# username/password pairs for authentication.
service telnet
{
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    disable = no
    only_from = 192.168.0.0/24 127.0.0.1
}




サービス名 telnetの設定開始


TCP上のサービスです
接続要求時にはforkします
サーバプロセス起動時のユーザ名
サーバプログラム名
接続失敗時には使用されたユーザIDを記録します
このサービスは有効です
192.168.0.0/24とlocalhostからの
要求のみ受け付けます

tripwireによるファイルの改竄(かいざん)検出

RedHat製rpmパッケージをインストールするとtripwireの設定ファイルは/etc/tripwireに置かれます
この中で、重要なファイルはtwpol.txtです。
このファイルは、
  1.どのファイルをチェックするか?
  2.ファイルのどの属性をチェックするか?(タイムスタンプ、サイズ、所有者、ハッシュ値等)
を指定します。

twpol.txtが出来ると、次はこのファイルを暗号化します。 これにより、ポリシ・ファイルが改竄される事を困難にします。
(暗号化するときに指定する”passphrase”が盗まれると改竄は容易に出来ますので、passphraseの扱いには注意しましょう)
 # twadmin -m P /etc/tripwire/twpol.txt

ポリシ・ファイルに応じて必要なデータを保存します
(ここでも、保存するデータは暗号化されます)
 # tripwire -m -i
これで、tripwireの設定は完了しました。
後は、定期的にtripwireを使用してファイルの変更をチェックしましょう。
当然ながら、パッケージのアップデート等を実施した場合にはtripwireの保存データも更新する必要があります。(保存データのアップデートよりも作成し直したほうが楽だと思います)
 # tripwire -m u -r /var/lib/tripwire/report/(レポートファイル名)
 または
 # tripwire -m i

次へ