最初の目標 Webサーバー FTPサーバー DHCPサーバー WINDOWSファイルサーバー ↑を立ち上げる もちろん、セキュリティ面も、それなりに 理由 サーバーなんかを立ち上げて、自己満足しようという、身勝手で 無意味なことが、目的になっております。 ついでに、色々な知識が身につけば良いとも思っています。 PC環境 Profileページにあります、Gatewayマシン、「usi」です このマシンはすでに引退いたしました。 ここ 現在は、自作静音マシン、「wolf」です ここ
CodoRed対策 いや、わかってる 別にログが肥大化するだけで、影響はないけど・・・ ログが見難い・・・醜いのだ それに、完全にアクセス制限はできないけど・・・ 8割方のアクセスは制限できるし、ならばやるでしょう ってことで、調べた所99%CodeRedUであり 自分のIPアドレス61.201.***.***に近い 61.***.***.***から来ていること判明 それ以外も僅かながらにあるが、1〜2割だし、勘弁 マイサーバーにアクセスする同じプロバのぴか君のアドレスも自分も 61.201.***.***なので そのまま61.201.***.***は許可し 61.***.***.***は拒否・・・破棄?しようということで なんか調べるうちに、ipchainsでやろうということにしました。 いや、他のやり方がイマイチわからぬ、、、 hosts.allowとかhosts.denyとかあるにはあるけど (なんか調べたものと比べると違う気がするんだよね・・・ RedHatって、所々他のディストリビューションと違う?から?) そのうちルータ君とおさらばしたらこのマシンがルータになるかもしれない ってことで、今からちょっとくらい弄っておいても良いじゃない? である # vi /etc/sysconfig/ipchains すでに -A input -s 0/0 -d 0/0 80 -p tcp -y -j ACCEPT と、すべてのtcpプロトコルのオート80へのアクセスを許可しているので その行の前に -A input -s 61.201.0.0/16 -d 0/0 80 -p tcp -y -j ACCEPT -A input -s 61.0.0.0/8 -d 0/0 80 -p tcp -y -j DENY の2つをを適当な場所に追加してあげてみた。まぁつまり -A input -s 61.201.0.0/16 -d 0/0 80 -p tcp -y -j ACCEPT -A input -s 61.0.0.0/8 -d 0/0 80 -p tcp -y -j DENY -A input -s 0/0 -d 0/0 80 -p tcp -y -j ACCEPT って感じにしてあげる。 もちろん自分のプロバイダによってこのIPの設定は変わるので注意<将来を見越して # /etc/init.d/ipchains restart で、とりあえず確認するために $ ipchains -L とすると、動作状況を見ることができる あと、自動起動にもなっていないっぽいので # ntsysv にてipchainsのチェックを入れてあげる とりあえず、access_logを見るのが楽しみである。
フィルタリング&IPマスカレード(iptables) 当初、ipchainsを使おうとしていました。 IPマスカレードは問題なく使えますが ftpとか、モジュールが必要なものについて カーネル2.4では、ipchainsのモジュールがサポートされないことが判明 ってことで、iptablesに乗り換えることにしました。 まず、転送を有効にします。 # vi /etc/sysconfig/network で中の下の行をyesにし FORWARD_IPV4=yes さらに # vi/etc/sysctl.conf で、下の部分を1にする。 net.ipv4.ip_forward=1 次に # ntsysv にて ipchainsのチェックを外し、iptablesにチェックし、OK とりあえず再起動しておこう さらに各モジュールを、、インストール?ロードか? # modprobe ip_conntrack # modprobe ip_nat_ftp # modprobe ip_nat_irc # modprobe ip_conntrack_ftp # modprobe ip_conntrack_irc 起動時にロードされるように設定するためには /etc/rc.d/rc.local の最後に modprobe ip_conntrack modprobe ip_nat_ftp modprobe ip_nat_irc modprobe ip_conntrack_ftp modprobe ip_conntrack_irc を追加しておけばよいはず・・・ 次にマスカレードの設定&フィルタリング設定 まずユーザーの設定を保存するためのファイルを作成 # touch /etc/sysconfig/iptables 順に マスカレードの設定eth0から出て行くパケットをマスカレードする INPUTポリシー、DROP<破棄だっけ?不許可? FORWARDポリシー、DROP webサーバー公開のため、ポート80は許可 FTPサーバー公開のため、ポート21許可 SSHでのログインのため、ポート22許可 eth0からの1024ポート以上のINPUT許可 eth0からのDHCPサーバーからのパケットと、 ローカル側からDHCPへの接続許可のためポート67〜68許可 DNS、ドメインのデータ?のINPUT許可 <--DNSサーバー立ててないので(^^;;; マシン内のローカルループバックすべて許可 eth1(ローカルネットワーク側)からはすべて許可 eth0からでるパケットはすべて転送(ローカルから 宛先がローカルアドレスへのパケットはすべて転送 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT # iptables -A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT # iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT # iptables -A INPUT -i eth0 -p tcp -m tcp --dport 1024: -j ACCEPT # iptables -A INPUT -i eth0 -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT # iptables -A INPUT -i eth1 -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT # iptables -A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT # iptables -A INPUT -i lo -j ACCEPT # iptables -A INPUT -i eth1 -j ACCEPT # iptables -A FORWARD -o eth0 -j ACCEPT # iptables -A FORWARD -d 192.168.0.0/16 -j ACCEPT 上記をファイルに保存 # iptables-save > /etc/sysconfig/iptables
DHCPサーバー設定 やっぱりローカルマシンは固定IPを与えたいし ルータとして、GatewayとDNSサーバーアドレスを 自動的に与えたいということです。 まず、dhcpdの設定ファイル編集 # vi /etc/dhcpd.conf [new file] server-identifier ローカルドメイン; option domain-name "DNSサーバードメイン"; option domain-name-servers 192.168.1.*; #割り当てるDNSサーバーアドレス default-lease-time 6000; #リースタイム(適当で) max-lease-time 10000; #最大リースタイム(これも適当でOKかな?) subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.20 192.168.0.40; #自動で貸し出すIPの範囲 option routers 192.168.0.1; #ルータのアドレス(linuxマシン) option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; } # 以下、固定アドレス指定 host pc_1 { hardware ethernet **:**:**:**:**:**; #マシンのLANカードのMACアドレス fixed-address 192.168.0.10; #割り当てるIPアドレス } ・ ・ ・ host pc_4 { hardware ethernet **:**:**:**:**:**; #マシンのLANカードのMACアドレス fixed-address 192.168.0.14; #割り当てるIPアドレス } で保存する # touch /var/lib/dhcp/dhcpd.leases [new file] としてファイルを作る(元からある場合もあるみたい) 起動 # dhcpd eth1 でいけるが、これは僕の環境の場合で、通常そのままの状態でdhcpdを起動しようとすると eth0とeth1の両方に対して監視しようとするが、eth0は192.168.1.0なので問題があるし eth0の方はルータから各情報を貰ってる関係上エラーがでる。 dhcp機能をeth1のみに絞るためにeth1を加える。 自動起動する際にもやり方が異なる。 # vi /etc/rc.d/init.d/dhcpd の中の daemon /usr/sbin/dhcpd の行の最後に、eth1を付け加え daemon /usr/sbin/dhcpd eth1 にし、 # ntsysv にて、dhcpdにチェックを入れる。 top DynamicDNS自動更新 サーバーを公開する場合、専用線とか、固定IPではないので<普通 IPアドレスは常時接続であっても、たまには変わってしまうものです。 それにIPで接続するのはやっぱり面倒だし、覚えにくい ということで、DynamicDNSサービスというのを使っています。 しかし、これも各サービスを提供しているサーバーのHPにアクセスし ブラウザから更新作業をするか、WindowsでDiCE(僕の知る限り)というソフトで更新するか・・・ ということで、結構面倒なもの・・・そこで探してみればLinux上で自動的にやってくれる というソフトがあることを発見、以降の説明はとあるHPでの説明を自分用に・・・簡単に ソフトはddclientというもので、ここからDLできるみたいです。 http://members.home.net/ddclient/ ちなみに、このソフトは、DiCEと違い、サポートしてるDDNSサーバーが少ないみたいで dyndns.org、zoneedit.com、easydns.com、hn.org・・・くらいかな?<現在 ってことで、僕はdyndns.orgに新たにアカウントを作成しました。 では、作業に入る。 適当な場所にDLしたファイルを解凍する所から・・・ # tar xvzf ddclient-3.5.4.tar.gz まぁ、一瞬ですわ んで、ディレクトリ移動 # cd ddclient-3.6.1 そこにあるddclientを /usr/sbin/へコピー # cp ddclient /usr/sbin/ ddclient.confというファイルを、sample-etc_ddclient.conf からコピーし、/etc/に置く # cp sample-etc_ddclient.conf /etc/ddclient.conf ddclient.confを編集します。 # vi /etc/ddclient.conf #use=web, web=checkip.dyndns.org/, fw-skip='IP Address' # found after IP Address という行のコメントアウトを解除し・・・ うちのプロバイダの場合、プロクシ通されてるので、正確なグローバルアドレスが "checkip.dyndns.org/"では取れないので、友達に頼んで専用のスクリプト?を置いてもらってます で、以下のような感じにしました。 例: use=web, web=****.***.jp/getip.cgi, 次 #login=your-login # default login #password=test # default password #mx=mx.for.your.host # default MX #backupmx=yes|no # host is primary MX? #wildcard=yes|no # add wildcard CNAME? これらの必要な部分のコメントアウトを解除して、DDNSサービスのログインネーム等、入れます。 次 僕の場合、dyndns.orgの、dynamic addressesなので その部分 ## ## dyndns.org dynamic addresses ## ## (supports variables: wildcard,mx,backupmx) ## # server=members.dyndns.org, \ #ここと # protocol=dyndns2 \ #ここと # your-dynamic-host.dyndns.org #ここの#を取って 一番下の部分に、自分の取得したddnsのホストとドメインを入れる。 例: server=members.dyndns.org, \ protocol=dyndns2 \ linux.dyndns.org 以上で編集終了 次に、起動ファイルコピー # cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient 起動時に自動的にプログラムが読み込まれるようする。 # /sbin/chkconfig --add ddclient 起動 # /etc/rc.d/init.d/ddclient start 確認・・・ # ddclient -daemon=0 -debug -verbose -noquiet 処理を終え、最後に SUCCESS: updating ***.dyndns.org: good: IP address set to **.***.**.*** と出れば、成功です。 ・・・ちなみに全部受け売りです。詳しい事はなんとなくしか分かりません。 理論は良いからやってみる、って感じです。 top ntpd(タイムサーバー) とりあえず、設定ファイルを弄る # vi /etc/ntp.conf server 133.100.9.2 fudge 133.100.9.2 stratum 10 コメントアウトされてたら#を取る どこだったか、どこでもいいが、どこかのタイムサーバーのアドレスを入れる ドメインでも良いんだっけ? まぁ、探せばいくらでも出てくるし、探しても良しhttp://jjy.crl.go.jp/ あとは、ntsysvにて、ntpdにチェック入れて自動起動するようにする # /etc/init.d/ntpd start で、起動する、数分後には同期されて実用化可能なはずです # ntpq -p するとわかるらしい remote refid st t when poll reach delay offset jitter ============================================================================== *clock.nc.fukuok .GPS. 1 u 263 1024 177 125.144 -103.78 112.595 行頭に*がついてると同期してる・・・らしい ので、ローカルPCの時刻を合わせるサーバーに Linuxマシンのアドレスを指定すればOK top WebDav(Webフォルダ) まず、WebDavを使うには、webサーバー、アパッチが必要です。 そして、apacheのモジュールmod_davが必要 モジュールがインストールされているか確認をする rpm -q mod_dav RH7.2だと最初から入っていました。 次に、日本語ファイル名などを使うために、encoding.soというモジュール? を入れます、これは個人的に作られたものらしく、まだ不完全だそうで 最新ヴァージョンが出たらすぐに入れなおした方が良いらしいです。 実際、日本語表示はされたが、すぐおかしくなったりもしました。 mod_encodingはここから頂きました。 mod_encoding-1.1.tar.gz # tar fxvpz mod_encoding-1.1.tar.gz # cd mod_encoding-1.1 # ./configure # make # make install mod_encodingを無事インストールすると /etc/httpd/conf/httpd.confに モジュールをロードするための記述が追加されますが 記述されている場所が違っているので、正しい場所に直します。 LoadModule python_module modules/mod_python.so LoadModule encoding_module lib/apache/mod_encoding.so となっている、mod_encoding.soの行を LoadModule dav_module modules/libdav.so LoadModule encoding_module modules/mod_encoding.so のように、libdav.soの下に移動させ パスをlib/apache/からmodules/・・・に直します。 同じように AddModule mod_python.c AddModule mod_encoding.c のmod_encoding.cの行を AddModule mod_dav.c AddModule mod_encoding.c のように移動します。 で、とりあえず、モジュールに関してのことは終了 次に、WebDavで使うためのディレクトリと ロックファイル用のディレクトリを作る RH7.2ではアパッチを動かしているユーザーはapacheなので WebDavのディレクトリのユーザーとグループは、apacheにする # mkdir /hoge/WebDav # chown -R apache.apache /hoge/WebDav # chmod -R 770 /hoge/WebDav # mkdir /var/lock/apache # chown -R apache.apache /var/lock/apache # chmod -R 770 /var/lock/apache 次に再びDavを使うためにhttpd.confを編集します。 適当な個所に以下を追加します。 # # *************** WebDav setting ************* # <IfModule mod_encoding.c> EncodingEngine On SetServerEncoding UTF-8 AddClientEncoding UTF-8 "Microsoft-WebDAV-MiniRedir/" AddClientEncoding SJIS "Microsoft .* DAV 1\.1$" AddClientEncoding UTF-8 "Microsoft .* DAV$" AddClientEncoding SJIS "xdwin9X/" AddClientEncoding EUC-JP "cadaver/" </IfModule> <IfModule mod_dav.c> DAVLockDB /var/lock/apache/DAVLock #ロックファイルへのパスは、先ほど作った任意の場所を指定 DAVMinTimeout 600 Alias /WebDav /hoge/WebDav #http://***/Dav/にアクセスした時に #/hoge/WebDavというディレクトリにアクセスする #パスは、先ほど作った任意の場所 <Location /WebDav> DAV On <Limit HEAD OPTIONS GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> #↑すべての命令?を、許可したユーザーだけに制限する AuthType Basic AuthName "WebDav Security" AuthUserFile /etc/httpd/DAVusers #認証ファイルの場所 Require valid-user </Limit> Options Indexes </Location> </IfModule> 最後に、WebDavを使うユーザーを作ります WebDavは、Linuxユーザーとは無関係にユーザーを作る事ができます。 あくまで認証のためだけのもので、実際にディレクトリにアクセスするのは apacheなので、自由に作る事ができます。 # cd /etc/httpd/ # htpasswd -c DAVusers ユーザー名 2人目以降を作る場合は-cを付けないように つけると、最初に登録したユーザーが消えるらしいです。 ってか、実際試しました。 これで、あとは、Win9x系なら、IE5などのインストールの時に Webフォルダを有効にして、Webフォルダから追加 Win2000なら、ネットワークプレースの追加で http://****/WebDav/ として、ユーザー名、パスワードを入れれば完了 なはず top SETI@home seti@home、知ってる人は結構いると思いますが サーバーに誰もアクセスしない時とか、折角だからCPUパワーを使おう! ということで、Linuxにseti入れてみました。 まずsetiのページから適当なtarファイルを落としてくる。 自分の場合は、↓の辺のらしかったので、、、 i386-pc-linux-gnu-gnulibc2.1.tar しかしVIAのC3ってi686だったからそっちのでも良かったかな〜 でも、どこかのページに書いてあったが、staticって方は いけないとか・・・ さて、DLしたモノを適当な場所に置いて 解凍します $ tar xvf setiathome-3.03.i386-pc-linux-gnu-gnulibc2.1.tar 解凍されたらそのまま使えるみたいで、ただ僕は/etc/seti/ に移動させました。 あとはsetiのディレクトリに移動して実行 $ cd /etc/seti/ ./setiathome すると、名前、e-mailアドレスとかを聞いてくるから 入力する。 パスワードとか色々あったと思うけど、国の番号も 日本は106 全部入れると計算するためのデータをDLし始めます。 計算が始まると Beginning analysis... (This is the last message displayed while the client works. To see progress messages between now and completion of processing, operate the client with the -verbose option. You can also see the progress of the client by looking at the 'prog=' line in the state.sah file. 見たいな風に表示される。 作業を続ける場合、一度EnterすればOK 次回マシン起動時に自動的に開始するには /etc/rc.d/rc.local の最後に cd /etc/seti/(setiathomeの任意のディレクトリ) ./setiathome -nice 19 & と記述すれば良し CPUの使用率とか見るとほぼ常に98〜99.5%くらいですが 他の作業が重く感じる事は無いです。 top |