hiroaki のすべての投稿

Linuxのメモリ使用量の計算方法

Linuxのメモリ使用量の計算は単純にusedではなく
メモリ使用量=total - (free + buffers + cached) と計算するようです。

そこでmrtgのメモリ部分の設定を以下のように変更しました。

Target[memory]: 1.3.6.1.4.1.2021.4.5.0&1.3.6.1.4.1.2021.4.3.0:public@localhost
- 1.3.6.1.4.1.2021.4.6.0&1.3.6.1.4.1.2021.4.4.0:public@localhost
- 1.3.6.1.4.1.2021.4.14.0&1.3.6.1.4.1.2021.4.1.0:public@localhost
- 1.3.6.1.4.1.2021.4.15.0&1.3.6.1.4.1.2021.4.1.0:public@localhost

これでバッファやキャッシュを引いた実メモリの使用量が正しく表示されるようです。

アタックに対処するルールを追加

特定のポートに自動で繰り返しアクセスしIDやPASSを盗もうとする行為が日常的に起きています。
これは気付かなくてもネットに繋いでいる以上はどなたも経験されていることです。
通常利用ではルーター経由であればフォワーディングの宛先が無いのでパケットが破棄され特に問題はありません。
(偽装パケットだと問題になります)

ここで問題になるのはサーバーを公開されている方です。
サーバーをルーターの外側に設置するのはもちろんですが
静的NATで特定のポートを公開している場合も注意が必要です。

試しにsshのポートを開けてみるとかなりのアタックがあることがログから分かると思います。
IPフィルターでアタックの多い国のアクセスを遮断すればかなり減りますが
それでもアタックの形跡はログに残ったりします。

これらのアタックをiptablesでブロックするのが今回の目的です。

時間当たりのアクセス回数で制限する為にiptablesのrecent機能を使います。

※以下のサイトを参考に設定しました。
Netfilter Extensions HOWTO: New netfilter matches

基本的な構文は以下のように書くようです。

# iptables -A FORWARD -m recent --name badguy --rcheck --seconds 60 -j DROP
# iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name badguy --set -j DROP

オプションの説明を読んでみると色々と説明が書いてありますね。
自分の環境に合わせて書き換えてみましょう。

iptables -A INPUT -p tcp -i eth1 --dport 22 -m recent --name SSH -m state --state NEW --set
iptables -A INPUT -m recent --name SSH -i eth1 -p tcp --dport 22 -m state --state NEW --update --seconds 60 --hitcount 6 --rttl -j DROP

この設定内容はeth1デバイスのTCP22番ポートへ60秒間に6回以上アクセスがあったホストを拒否するようになっています。

--name SSH ルールの名前は他のルールと重複しない名前ならなんでも良いようです。
-iオプションのeth1と書いてある部分は自分の環境のWAN側に接続されているデバイスに書き換えます。
--dport 22 の22は規制の対象とするポートを指定します。
--seconds 60 最後のアクセスからログをさかのぼる秒数の範囲を指定します。つまり「○秒間の間に」となります。
--hitcount 6 上の--secondsで設定した時間ログの中に何回以上ヒットするものを対象にするかを指定します。

これは一度実行してもrebootすると設定は消えてしまいます。
他のiptablesの設定と同じように起動時等に実行されるように設定を行って下さい。
※個人的には起動時にスクリプトで読み込んでますがiptablesの設定を一括して
  iptables-save、iptables-restoreなどで行っても良いと思います。

最後に・・・
この機能ではゆっくりと繰り返されるアタックには対応出来ません。
他の機能と組み合わせてセキュリティを高めることで高い効果を発揮出来る機能だと思います。

LinuxでWake On Lanしてみる。

Linuxから他のマシンをWake On Lanで起動してみましょう。
(残念ながらLinkstation自身を他のマシンから起動させることは無理なようです・・・)

まずWake On Lanのクライアントソフトをインストールします。

apt-get install wakeonlan

インストールが終わったらコマンドを実行するだけです。

wakeonlan XX:XX:XX:XX:XX ←XXの部分は起動したいPCのNICが持っているMACアドレスです。

これだけで指定したPCが起動します。
簡単ですね~。

※起動されるPCは予めWake On Lanで起動出来るように設定する必要があります。

DynamicDNS更新をLinkstationで行う!

WindowsサーバーからLS-GLにルーターを変更しDynamicDNSのクライントもLinuxに移行します。
はじめはDiCEを入れてみたのですがEABIなdebianだからなのか起動しませんでした・・・
そこでapt-getでインストール出来るddclientというやつを使用します。

ますはインストールです。
apt-get install ddclient

インストール時に設定画面が表示されると思うので以下のように設定します。

[Choose dynamic DNS service provider]
 www.dyndns.org ←これは自分の環境に合わせてください。

[Your DynDNS fully qualified domain names]
 DDNSに登録したドメイン名

[Username for dynamic DNS service]
 ユーザ名

[Password for dynamic DNS service]
 パスワード

[Interface used for dynamic DNS service]
 eth1 ←これはご自分の環境で設定を。WAN側のデバイスです。(あとで設定し直すので適当でもいいです)

[Run ddclient on ppp connect]
  ←pppで接続している方はyesを選択

[Run ddclient as daemon?]
  ←サービスで動かさない場合はno

[ddclient update interval]
 300 ←デフォルトは5分間隔でIPが変わっていないかチェックします。短くするとCPUパワーを少し多く消費します。

基本的な設定はこれだけです。
ルーターやCTU経由で接続している場合は指定したデバイスはローカルIPなので
設定を変更しないと正常にIP変更を発見してくれませんので変更をします。

vi /etc/ddclient.conf

以下の行をコメントにして新しい設定を書きます。
use=if, if=eth1

↓変更後
#use=if, if=eth1
use=web

変更を保存してサービスをrestartします。
サービスが正常に動くか確認する為にOSの再起動でもいいでしょう。

正しく設定が行われていて正常に動くか確認する為に以下のコマンドを実行します。

ddclient -daemon=0 -verbose

ズラズラと表示されますが最後の行を確認してください。

SUCCESS: (設定したドメイン名): skipped: IP address was already set to (グローバルIP)

SUCCESSと出ていれば正しく更新作業を行ったということになります。

これでDynamicDNSの更新サービスの登録は終了です。

※日頃の動作確認の為のログ確認は/var/log/syslogで確認してください。

2013/05/17 追記
書き忘れていたので、今更ながら追記です・・・

max-intervalの設定は、行間を空けたりせず、個別のサーバー設定等と同じ箇所に書きます。
個別のサーバー設定箇所以外に書くと、global設定として設定されてしまいます。
(confには複数の個別サーバー設定が書けるので、このような仕様になっていると思われる)

設定が個別のサーバー設定として認識しているかは、以下のコマンドで確認可能です。

ddclient -daemon=0 -debug -verbose -noquiet

個別設定は
=== config ====
の下に表示されます。

私のサイトのドメイン(hiro7216.mydns.jp)設定ですと以下のように表示されます。
config{hiro7216.mydns.jp}{max-interval} : 1296000  ←15dが秒で表現されています

上記の様にドメイン設定の箇所に設定した値が表示されればOKです。

DHCPサーバーの構築

最後に残ったDHCPサーバーの構築を行いました。

非常に綺麗に纏めてあるページがあるのでそれを参考に設定しました。

DHCPサーバの構築

これもまたよく纏まっていて書き足すことも無いです(笑)

このページを参考に設定すれば難なく終わると思います。

これで一通りルーター化の設定が完了しました。

私の場合だと基本的なファイアウォールの設定はCTUで行っています。
更にgatewayとしてLS-GLを挟むことでセキュリティのレベルは少しだけ上がったように思います。
今後はCTUで出来ない細かいファイアウォールの設定を随時LS-GLのFilterに追加して強化していく予定です。

これにてLS-GLのルータ化は終了です。

自宅のネットワーク図

自宅のネットワーク図を作成しました。
この環境でセグメント別けの為にLS-GLをルーターとして構築しています。
現在もWindowsサーバーでルーティングしてセグメント別けされているのですが
Athlon64マシンを24時間稼動させていると電気代が・・・(笑)
またバックアップ等をスケジューリングでWindowsサーバーが処理しているので
SMBマウントやバックアップ周りまで設定が終わらないと完全移行は出来そうに無いです。
プリンターは稀にしか使わないのでその時にサーバーの電源入れればいいかなと思ってます。

※点線はセグメントで引いているのではなく部屋で引いてます。
 ファイルサーバーの左隣のWindowsクライアントは更に別の部屋なんですが面倒なので線引きませんでした。

2008/08/21 PS3をネットワーク図に新たに組み込みました。
ネットワーク図