タグ別アーカイブ: VPSセキュリティ設定

攻撃が激しいのでiptablesで中国・韓国からのアクセスを遮断する

 最近、島問題の影響のようでさくらVPSお名前.com VPS(KVM)のホストにも大陸や半島方面からのDoS的なアクセスがままあってそのたびにホスト制限していたのですが、面倒くさいので、アドレス割り当て情報から大陸と半島からのアクセスを制限するためのiptables設定をしました。

 -Aじゃなくて-Iなのは、許可ルール以前にこのIPを拒否したいため。
 シェル実行してから /etc/init.d/iptables save で保存できる。

 ドロップしたパケットを記録したい場合は、

-N LOGDROP
-A LOGDROP -j LOG –log-prefix “[iptables drop]”
-A LOGDROP -j DROP

みたいに、新しい挙動LOGDROPを定義して、LOGDROP挙同時にはLOGってDROPする動きにする。
 で、従来の-j DROPの代わりに-j LOGDROPにしてやると、messagesログファイルにドロップした情報が記録されるようになる。
 LOGDROPを定義せずにLOGって、DROPしてを繰り返し書いても良いけど、数が多いときはこの方が楽。

(1024)


カテゴリー: サーバ設定 | タグ: , | コメントをどうぞ

お名前.comのVPSとRTX1000の間にOpenswanを使ってIPSec方式のVPNを設定した

 Windows化したさくらVPSサーバー固定IPプロバイダでつないだRTX1000の間にアグレッシブモードメインモードIPSecを張っていたわけだけど、今回はCentOS 6環境のお名前.com VPS(KVM)サーバーとの間にメインモードのIPSec VPNの設定を行った。

 IPSecはオープンな規格であるものの、独自実装が多くて、なかなか相互互換が得られない困ったちゃん。
 特にLinuxのIPSec実装には色々なソフトがあって、つながる組み合わせ、つながらない組み合わせが難しい。
 今回使ったLinuxのIPSec実装であるOpenswanは、CentOS標準パッケージなのでメジャー系ではあるものの、あまり普及しているとはいえず、ネット上で情報収集してもL2TPと組み合わせてスマホを接続するような情報ばかりで、最終的にソースコードを眺めつつ、設定を詰めるのに1週間以上かかってしまったが、何とか構築することが出来たのでメモしておく。

RTX1000の設定

ip route VPSのグローバルIPアドレス gateway tunnel 1 filter 1001 1002 1999

ip filter 1001 reject * * udp * 500
ip filter 1002 reject * * esp
ip filter 1999 pass * *

tunnel select 1
tunnel name VPN2VPS
ipsec tunnel 1
ipsec sa policy 1 1 esp 3des-cbc sha-hmac
ipsec ike always-on 1 on
ipsec ike encryption 1 3des-cbc
ipsec ike esp-encapsulation 1 off
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike local address 1 192.168.0.1
ipsec ike local id 1 192.168.0.1
ipsec ike payload type 1 3
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text 秘密だよ
ipsec ike remote address 1 固定IPだよ
ipsec auto refresh 1 on
ip tunnel tcp mss limit auto
tunnel enable 1

3des-sha1の組み合わせで、ESP有効、MODP1024設定でPFS有効のポリシー(軽いdes-md5を試みたが、yumパッケージ版ではdesはサポートされておらずビルドし直さなければならない)

Openswanの導入は、CentOS標準のyumからの導入でOK(yum install openswan)

Openswanの設定
/etc/ipsec.conf

 auto=startだと起動時に接続にいく。 addにすると、コマンドラインから ipsec auto –up homenetwork のようにコマンドを打つことでリンクアップできる。
 今回は認証がsecret(事前共有鍵)なので、/etc/ipsec.secretsに
: PSK “事前共有鍵”
 のように記述しておく。
 電子証明書認証も出来る。

 VPN接続がうまくいくと、LAN側のPCで”traceroute VPSサーバーの固定IP”とか実行すると、デフォルトゲートウェイVPSサーバーのIPの順で表示される(VPNが無いと、デフォルトゲートウェイ対向ルータインターネットVPSサーバーのIPというように、中間のアドレスが表示される=トンネルモードVPNだと仮想的に1ホップになる)
VPSサーバー側でnetstatを実行すると、VPNで繋がっていないとルータの外側IPが表示されるが、繋がっているとLAN内部のIPがそのまま表示されることでも確認できる。

 VPNを設定しておくと、VPSサーバーからsambaを経由してLAN上のWindowsマシンの共有ストレージを利用したり、LAN上のマシンからPOP3接続したりしたときに、VPSサーバー<=>ルーター間の情報はすべて暗号化されるためセキュアで良い。

参考
参考
RTXのIPSec設定参考
新しいRTXだとこんな事も出来る

(887)


カテゴリー: サーバ設定 | タグ: , , , , , | 1件のコメント

不正アクセス元っぽいIPを集計する – btmpとwtmpを元にVPSセキュリティ設定

 Linuxで不正アクセスっぽいモノを記録するログが

/var/log/btmp

で、こいつはプレーンテキストではないので

lastb

コマンドで中身を確認する。

 セキュリティ対策をしていないサイトだと膨大なログになるのでちょっとフィルタする。
 不正アクセスっぽいモノのIPを抽出するには

lastb -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq

lastbの出力でホスト名ではなくIPで表示して、一番最後にアドレスを出す。 それをsedに流してIP部分を切り出して、ソートして、重複を取り除いている。

 正常なアクセスっぽいモノが記録されるログは

/var/log/wtmp

で、こいつもプレーンテキストではないので

last

コマンドで中身を確認できる。
 不正アクセスっぽいモノ同様に

last -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq

を通すと正常ログイン出来たアドレス一覧が得られる。

 それぞれをリダイレクトして、

lastb -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq > btmp.list
last -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq > wtmp.list

の様にファイルに落として・・・

cat btmp.list wtmp.list|sort|uniq -d > dup.list

-dオプション=重複行のみを出力する
 すると、ログインを成功したり失敗したりしたアドレスのリストが得られるので、このアドレス一覧がセーフかどうか確認する。
>このセーフでないモノがあったら、不正アクセスでログインされている訳で、システム総チェックが必要になる・・・
 このセーフなリストを(safe.listとでもして)保存して

cat btmp.list safe.list|sort|uniq -u

-uオプション=重複していない行のみを出力する
みたいにすると、セーフリストに記載されていない不正アクセスっぽいモノが得られる。
(「失敗リスト」+「成功リスト」に存在するモノから作ったセーフリストを失敗リストから除外すると「失敗リストだけに載っているモノ」+「失敗リスト+成功リストに存在するモノのうちセーフリストに載っていないモノ」が得られる)

この不正っぽいリストをまとめて拒否するなら

cat btmp.list safe.list|sort|uniq -u|sed -e “s/\(.*\)/ALL:\1/” >> /etc/hosts.deny

で、拒否ホストリストに全部突っ込める(但し、最終行にbtmp~と言う行がつくので、これだけ削除する)

 お名前.com VPSさくらのVPSで標準状態だと不正っぽいリストがいっぱい出てくるのでアクセス制限に注意。
 しかし、基本的には、フレッツ光対応、固定IPサービスの「ZOOT NEXT for フレッツ光」みたいな固定IPを契約して、hosts.deny sshd:ALLにして、hosts.allow ALL:固定IPみたいにして接続できるIPを制限しておいた方が安全で良い。

(1086)


カテゴリー: サーバ設定 | タグ: , , , , | コメントをどうぞ