2011年8月9日火曜日

WEBサーバーの公開まで:iptablesとSELinux

カーネルパラーメタの設定を行う

#vi /etc/sysctr
#pingのブロードキャストに反応しない.
net.ipv4.icmp_echo_ignore_broadcasts = 1

#不正なICMPエラーの無視
net.ipv4.icmp_ignore_bogus_error_responses = 1

#SYN Cookiesの有効化
net.ipv4.tcp_syncookies = 1

#ICMPリダイレクトの無視
net.ipv4.conf.all.accept_redirects = 0

#パケット転送を行わない
net.ipv4.ip_forward = 0

#ソースルーティングパケットの破棄
net.ipv4.conf.default.accept_source_route = 0

上記の設定の有効化.
#sysctl -p

iptablesの設定を考える.
1.pingはローカルエリア内の物のみを受け付ける
2.SSHも同様
3.ローカル外のネットワークからの接続は,HTTP意外は全てDrop
#!/bin/bash

#
#stop iptables
#
service iptables stop


#
#filter reset
#
iptables -F

#
#allow local loop back
#
iptables -A INPUT -i lo -j ACCEPT

#
#1. allow 'ping' command from local net wark
#
iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT

#
#2. allow 'secure shell' from local net word
#
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

#
#3. allow 'http' from word wide web
#
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#
#drop another tcp packets
#
iptables -A INPUT -p tcp --syn -j DROP

#
#save setting
#
service iptables save

#
#start iptables
#
service iptables start


SELinuxの設定
ユーザーを追加して,Apache入れて,CGI許可して,ユーザーディレクトリを許可する

今回は,NFSを使ってディレクトリの共有は行わず,以前の環境のファイル類をrsyncを使って転送した

$rsync -avz -e ssh ~/ server:~/

まあ,こんなことをやったので,.ssh以下もコピーされたりしてちょっと焦ったけどorz

httpdを立ち上げても,403が出て接続不可能.原因はおそらくSELinux,と言うことで一旦無効にしてみる
#setenforce permissive

エラーが解消されることを確認.

# getsebool -a | grep httpd | grep home
httpd_enable_homedirs --> off
# setsebool -P httpd_enable_homedirs 1
# getsebool -a | grep httpd | grep home
httpd_enable_homedirs --> on

最後に,ラベルの張替えを行う
$restorecon -R ~/

これで,接続完了.

SELinuxに関しては(も?)知識が全く足りていない.半分以上「何だかよく分からないけど,動いている」状態.

非常に危険.

今宵は,ここまで.
参考サイト
2done.org Apacheのmod_userdirを使う



----追記----

Wikiのパーミッションの変更に関してちょっと詰まった.

ホームディレクトリのパーミッションを変更しなかったのが原因.

あとは,参考サイトの通りの設定と
/plugin/code
のパーミッションを
755
に,所有者,グループをrootに.

参考サイト
PukiWikiをお引越し


0 件のコメント:

コメントを投稿