2010年9月27日月曜日

携帯機種変更

こんばんわ、Cです。

携帯電話の機種変更をしてきた。
といっても、最新機種はバカみたいに高いので
中古本体を購入しauショップに持ち込んで変更した。

ついに携帯もREDになった。

2010年9月25日土曜日

apache Install

Cです。

ESXi上のCentOS5.5にapacheをインストールする。
Debianではないのでご注意を。

#rpm -qa httpd
何も表示されなければインストールされていない。(パッケージでは)
#yum -y install httpd
#yum -y install mod_ssl
#yum -y install php
#yum -y install php-gd

こんだけインストールする。
initスクリプトはK15httpdとなっており、起動しないようになっている。よい。

apacheの設定 /etc/httpd/conf/httpd.conf
226行目 ServerName サーバネーム:80   サーバネームの指定
329行目 AllowOverride All      /var/www/html(デフォルト)でhtaccessを有効にする

apacheのSSL設定 /etc/httpd/conf.d/ssl.conf
112行目 SSLCertificateFile /etc/pki/tls/certs/localhost.crt httpsdの使用する公開鍵の場所指定
119行目 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key httpsdの使用する秘密鍵の場所指定
134行目 #SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt 上位認証局の証明書保存場所(今使用しないからコメントアウト)
227行目 CustomLog logs/ssl_access_log combined

秘密鍵と証明書の作成
#cd /etc/pki/tls  (しかるべきとこへ移動)
#openssl genrsa -des3 2048 > private/localhost.key (localhost.keyで秘密鍵を作成)
パスフレーズの設定を求められるので、入力したら秘密鍵が作成される 
#openssl rsa -in private/localhost.key -out private/localhost.key
(apacheを起動すると毎回パスフレーズを求められるので、秘密鍵からパスフレーズを削除する)

生成された秘密鍵を使ってサイト証明書を作成する
# openssl req -new -x509 -key private/localhost.key -out certs/localhost.crt -days 3650

-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:URLでのホスト名を指定
Email Address []:

apache自動起動設定
スマートな設定はrc*.dの中のシンボリックリンクのファイル名を変更するのだが、
せっかくchkconfigを勝手に導入してくれているので使おう。
#chkconfig httpd on
#chkconfig --list | grep httpd
onになってたらOK

apacheプロセス起動
#/etc/init.d/httpd start
# ps -ef|grep http
これでhttpdが動いてればOK

あとはiptablesの設定をすれば繋がる。
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

iptables IP spoofing 対抗ルール

さて、Cです。

IP spoofing attack。
送信元IPアドレスを偽装するということ。
送信元IPアドレスを攻撃ターゲット目標に偽装し、
世界のいろんなIPアドレスにパケットを送信することにより、
世界各地から攻撃ターゲットへ向けてパケットの雨が降り注ぐ攻撃など
さまざまな攻撃に使われる。
他にも、フィルタリングで許可されているであろう、プライベートアドレスに
送信元IPアドレスを偽装することによって、内部に到達させちゃおうって攻撃にも使う。。

・外部側のインターフェイスへ送信元IPがプライベートなものが到着したら、
ログに出力して、破棄する。

・受信パケットの送信元IPアドレスが自分のIPアドレスだった場合破棄。

このルールを書く。

内部アドレスは192.168.0.0/24を使っていると仮定。外部IFはeth0。
#$IPTABLES -N ANTISPOOF
#$IPTABLES -A ANTISPOOF -i eth0 -s 127.0.0.0/8 -j LOG --log-prefix "iptables:Spoofed source IP!"
#$IPTABLES -A ANTISPOOF -i eth0 -s 127.0.0.0/8 -j DROP
#$IPTABLES -A ANTISPOOF -i eth0 -s 10.0.0.0/8 -j -j LOG --log-prefix "iptables:Spoofed source IP!"
#$IPTABLES -A ANTISPOOF -i eth0 -s 10.0.0.0/8 -j DROP
#$IPTABLES -A ANTISPOOF -i eth0 -s 172.16.0.0/12 -j LOG --log-prefix "iptables:Spoofed source IP!"
#$IPTABLES -A ANTISPOOF -i eth0 -s 172.16.0.0/12 -j DROP
#$IPTABLES -A ANTISPOOF -i eth0 -s 192.168.0.0/16 -j LOG --log-prefix "iptables:Spoofed source IP!"
#$IPTABLES -A ANTISPOOF -i eth0 -s 192.168.0.0/16 -j DROP
#$IPTABLES -A ANTISPOOF -i eth0 -s 192.168.0.0/24 -j LOG --log-prefix "iptables:Spoofed source IP!"
#$IPTABLES -A ANTISPOOF -i eth0 -s 192.168.0.0/24 -j DROP
#$IPTABLES -A ANTISPOOF -i eth0 -s 自分のIPアドレス -j LOG --log-prefix "iptables:Spoofed source IP!"
#$IPTABLES -A ANTISPOOF -i eth0 -s 自分のIPアドレス -j DROP
#$IPTABLES -I INPUT 1 -j ANTISPOOF
#$IPTABLES -I FORWARD 1 -j ANTISPOOF

ちょっと粋な書き方をしてみた。
最初にANTISPOOFというオリジナルチェインを作成する。
そこへ、各プライベートIPへのLOGを吐き出すルールとDROPルールを記述する。
最後に、作成したANTISPOOFチェインをINPUTとFORWARDの1行目へINSERTする。

パケット転送を有効にしているlinuxであればFORWARDにも追記しておくべきだと思うので
こんな書き方にした。

2010年9月24日金曜日

iptables ループバックインターフェイス

こんばんわ、Cです。

おそらく、全員書くことになるであろうルールです。

・ループバックインターフェイス上に到達した、
あるいは存在するパケットは全て許可してやろう。

という、とても美しいルール。

Linux上で働く、アプリケーションの多くはクライアント/サーバ方式を採用している。
XWindowSystemとか。
そのアプリケーションはループバックインターフェイス経由のTCP/IPスタックで
データを他のプロセスに転送する。
だから、このルールが必要だ。

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
※$IPTABLESの中には/sbin/iptablesなどが入っているつもり

シンプルなルールだな。
モチロンこのルールは各チェーンが DROP になっていることが前提だ。
ACCEPTになってたらこのルール書かなくてもALL ACCEPT。

このルールを、初期化ルールに書き加えてもいいし、
ループバック許可シェルスクリプトとして別にしてもいい。
ただ、コマンドで打ち込んで設定できて満足はしないで欲しい。
何かあったときに莫大なルールを設定しなおすことになるぞ。

iptables initialize

Cです。

netfillterの初期化。

#!/bin/bash
IPTABLES=/sbin/iptables

modprobe ip_tables
modprobe ip_conntrack_ftp

#現在のルールとカスタムテーブルを消しちゃう
$IPTABLES --flush
$IPTABLES --delete-chain

#暗黙のデナイさん参上
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

ip_conntrack_ftpモジュールは
passiveFTPのルールをきれいに書くことができる。

デフォルトではALL ACCEPTに設定されている事が多いです。
Linuxの使い方や状況によってDROPを設定してやろう。

やはりiptablesの設定等はシェルスクリプトにしちゃって、
1コマンドで正常な設定に戻せるようにしておくべきだ。