Vim Bootstrapを使ってお手軽にvimrcを強化
はじめに
vimを使っているけど, vimrcをあんまり頑張ってメンテしてない人向けの記事です.
素のvimでコーディングをするのは正直しんどいです. それならIDEを使ったほうが絶対良い.
自分でvimrcをイチから書き起こすのはメンドイけど, vimを使いやすくしたい!という人にお勧めなのが Vim Bootstrapです.
インストール方法
Vim Bootstrapを見ると分かりますが, 複数の言語に最適化されたvimrcを作ることができます.
普段自分が使っている言語をココでは選んで, Generate!ボタンを大クリックしてください.
そうすると generate.vim というファイルがダウンロードできます.
このファイルを ~/.vimrc に名前を変更をし, 以下のコマンドを実行します.
vim +PlugInstall +qall
詳しいインストール方法はここを参考に.
こんな感じになりました
まとめ
ソードアートオンライン トップアルバム & ソング には 131曲も収録されていますが, 特におすすめは以下の曲です. 胸アツになること間違い無し.
- swordland
- in your past
- light your sword
- we have to defeat it
- gracefully
- a tiny love
※ ちなみにアフィコードは含まれていませんので, 気にせずクリックしてください.
Amazon LinuxにハニーポットCowrieを入れてみる
はじめに
最近suzuki.sh に刺激されたのもあり, 2013年からhatena diaryの更新が完全停止していたが, hatena blog にインポートをして再度開始してみることに. 今年の夏/冬と"とあるイベント"があり, そこでSSHハニーポットを入れて遊ぶことがあったので, それの備忘録をここで残してみます. ただその時は, kippoを利用して構築したので, 今回は前々から気になっていたCowrieを利用する.
ハニーポットってなに?
元来は「蜜(の詰まった)壷」の意味で、何らかの有益そうな情報や資源がありそうな場所を用意して、それにつられた者を観察したり、肝心な部分で被害を出さないために目をそらせたり、コンピュータ・フォレンジックスを行うための証拠を集めたりする、一種のおとり手法に使われる。 手法そのものをハニーポットと呼ぶこともある。
ハニーポット - Wikipediaからの引用によると上記のように示されている.
ここではsshハニーポットを利用するので, 通常22番ポートでsshdがListenしているが, そこを全く別のモノに置き換えてしまい, ダミーのsshdで受け付けてしまおうという事である.
今回目指す構成
上にも書いたが, 22番ポートでListenしたい. ただ Cowrieを起動するにはrootユーザではなく一般ユーザにしたいので, その場合は通常だと1024番ポート未満ではListen出来なくなる.
なので今回はiptablesのNATテーブルを利用して, 22番ポートに来たリクエストを CowrieのListenポートにリダイレクトする事にした.
まとめるとこんな感じ
- sshdのポートは22番から2754番に変更
- Cowrieは2222番ポートでListenさせる
- iptablesのNATを利用して, 22番ポートへのアクセスを2222番ポートにリダイレクトさせる
まずはインストール
必要なパッケージをインストールする
必要なパッケージは以下に記載されている
cowrie/requirements.txt at master · micheloosterhof/cowrie · GitHub
$ sudo yum -y install gcc git python-setuptools python-devel python-crypto libffi-devel openssl-devel gmp-devel $ sudo easy_install pip $ sudo easy_install PyCrypto pyasn1 $ sudo pip install twisted==15.2.1 cryptography configparser pyopenssl tftpy
※ twistedのバージョンが 15.3以上の場合, 起動しなかったためバージョンを15.2.1に指定しています.
Cowrieの起動用アカウントの作成
$ sudo adduser cowrie
ここから先は cowrieユーザにswitchして作業をしていきます.
$ sudo su - cowrie
Cowrieのダウンロードと設定
$ git clone http://github.com/micheloosterhof/cowrie $ cd cowrie/ $ cp cowrie.cfg.dist cowrie.cfg
今回は設定はデフォルトのままでいきます. listenポートを変更したり, ホスト名を変更したい場合はここを適宜触ってください.
ダミーユーザの追加
以下のファイルを編集/追加することで, ダミーユーザの作成ができます.
今回はこのまま利用するので, rootのパスワードは!rootです.
$ cat data/userdb.txt root:x:!root root:x:!123456 root:x:* richard:x:* richard:x:fout
Cowrie を起動する
$ ~/cowrie/start.sh
このままだと, 2222番ポートでListenしているだけですが, 以下のように接続をしてテストをしてみます.
$ ssh root@localhost -p 2222 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@svr04:~#
こんな風に返ってきたらOKです.
Cowrieを停止したい場合は以下のコマンドで停止することができます.
$ ~/cowrie/stop.sh
ポート番号を変更していく
ここからは適宜rootで実行していくので sudoを利用しています.
sshdのポート番号を変更
$ sudo vi /etc/ssh/sshd_config
# If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # # Port 22 Port 2754 <- ここを追加
変更をしたら設定を再読込させます.
$ sudo service sshd reload
iptablesの設定
必要最低限の設定だけをここではします.
sudo vim /etc/sysconfig/iptables
*nat :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222 COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # filter settings here... COMMIT
$ sudo service iptables start
これで 22番ポートで ssh接続をすると 2222番ポートに転送されるようになりましたね.
ログの出力と確認
リアルタイムに見たい場合はこんな感じで.
$ tail -f ~/cowrie/log/cowrie.log
セッションごとにどんなコマンドが実行されたのかを見る場合は, 以下のコマンドでみれます.
$ ~/cowrie/bin/playlog ~/cowrie/log/tty/YYYYDDMM-AAAAAA-BBBBBBB-xx.log
このコマンドを実行すると, そのセッションでの出来事を再現してくれるので面白いですね.
まとめ
今回は遊び用で入れたものを書いているので, これをそのまま実運用に使わないでください.
マジメにやる場合は, CowrieよりもT-Pot: A Multi-Honeypot Platformのほうが可視化もされて良さそうですね.
3年半ぶりともなると, なかなか投稿が進みませんでしたが, SAOのサウンドトラックのお陰で最後まで書ききる事ができました.
Ruby2.0.0 を CentOS6.4, OS X に 入れてみる
仕事ではここ数年ずっとPHPなので, プライベートではRubyにしようと.
PHPは別に嫌いじゃないですが, Rubyは書いてて気持ちがいいですね.
ということで, そろそろ2.0に移行しようと思って, 久々に環境構築をしたのでその備忘録です.
1. 前提条件
2. rbenv + ruby-build + ruby のインストール
OS X (Mountain Lion) の場合
(1) rbenv + ruby-build
$ brew update $ brew upgrade $ brew install rbenv ruby-build $ cat << EOF >> ~/.zshrc export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" EOF $ source ~/.zshrc
(2) ruby を入れるのに必要なパッケージをインストール
$ brew install openssl $ brew link openssl --force $ brew install readline $ brew link readline --force $ brew install libyaml $ brew link libyaml --force
- --force を付けないと warning が出たのでつけています
(3) ruby 2.0 を インストール
$ ruby-build --definitions : : 1.9.3-rc1 2.0.0-p195 2.1.0-dev : : $ CONFIGURE_OPTS="--with-opt-dir=/usr/local/" rbenv install 2.0.0-p195 $ rbenv rehash $ rbenv versions * system (set by /Users/kopug/.rbenv/version) 2.0.0-p195 $ rbenv global 2.0.0-p195 $ ruby -v ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
CentOS 6.4 の場合
(1) yum で 依存パッケージをインストール
$ sudo yum -y install git zlib zlib-devel readline readline-devel openssl openssl-devel curl curl-devel
(2) rbenv + ruby-build
# cd /usr/local # git clone git://github.com/sstephenson/rbenv.git rbenv # git clone https://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
# cat << EOF >> /etc/profile.d/rbenv.sh export RBENV_ROOT="/usr/local/rbenv" export PATH="/usr/local/rbenv/bin:$PATH" eval "$(rbenv init -)" EOF
# source /etc/profile.d/rbenv.sh
(3) ruby 2.0 を インストール
# rbenv install --list : : 1.9.3-rc1 2.0.0-p353 2.1.0-dev : : # rbenv install 2.0.0-p353 # rbenv rehash # rbenv versions * 2.0.0-p353 (set by /usr/local/rbenv/version) $ rbenv global 2.0.0-p353 $ ruby -v ruby 2.0.0-p353 (2013-05-14 revision 40734) [x86_64-linux]
3. Bundler の インストール
※ ~/.gemrc にある "custom_shebang directive" を削除してから以下を実行すること(途中でエラーになるため)
$ rbenv exec gem update --system $ rbenv exec gem install bundler $ rbenv exec gem install rbenv-rehash $ rbenv exec gem list *** LOCAL GEMS *** bigdecimal (1.2.0) bundler (1.3.5) io-console (0.4.2) json (1.7.7) minitest (4.3.2) psych (2.0.0) rake (0.9.6) rdoc (4.0.0) test-unit (2.0.0.0) $ rbenv exec gem which bundler /Users/kopug/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb
4. Railsのローカルインストール及びプロジェクト作成
$ cd ~/Work/projects $ cat << EOF > Gemfile source "http://rubygems.org" gem "rails", "バージョン(省略可能. その場合は最新版)" EOF
一時的にrailsプロジェクトを作成するために --path で指定した箇所に railsで必要なgemをインストール
$ bundle install --path vendor/bundle $ bundle list
プロジェクト名は example(適当), --skip-bundle を指定しておかないと, project作成時に勝手に bundle install が走って, global 環境にgemがインストールされてしまう
$ bundle exec rails new example --skip-bundle
プロジェクトが作成できたら, 以下は不要なので削除
$ rm -rf Gemfile Gemfile.lock .bundle vendor
ここでプロジェクトに必要なgem をプロジェクト配下にインストールをする
$ cd example/ $ bundle install --path vendor/bundle
git の管理からgemを外す
$ echo '/vendor/bundle' >> .gitignore
Rails Server 起動
$ bundle exec rails server
Ruby on Rails(RoR) 開発環境を構築する
久々の更新です。(毎回言っているが…^_^;)
Railsの開発環境を急遽構築したという事もあり, 備忘録がてらに残します.
1. 最新のパッケージに更新をする
$ sudo yum -y update
2. 必要なパッケージをインストールしておきます
$ sudo yum -y install gcc kernel-devel zlib-devel openssl-devel readline-devel curl-devel libyaml-devel sqlite-devel
3. Rubyのインストールをする
普段ならrpmでインストールをしようとするのですが, ebenvを使ってrubyのバージョン(環境)管理をします.
$ sudo git clone git://github.com/sstephenson/rbenv.git /usr/local/share/rbenv $ vi /etc/profile.d/rbenv.sh
export PATH="/usr/local/share/rbenv/bin:$PATH" export RBENV_VERSION="1.9.3-p327" export RBENV_DIR=/usr/local/share/rbenv export RBENV_ROOT=/usr/local/share/rbenv eval "$(rbenv init -)"
$ source /etc/profile.d/rbenv.sh
zsh を使っていると /etc/profile.d 配下を読み込まないので,以下を /etc/zprofileに追加
for i in /etc/profile.d/*.sh ; do [ -r $i ] && source $i done
ruby-build をインストールして, rubyをいれる
$ sudo git clone git://github.com/sstephenson/ruby-build.git /usr/local/src/ruby-build $ cd /usr/local/src/ruby-build $ sudo ./install.sh
rubyをインストール
$ sudo rbenv install 1.9.3-p327 $ sudo rbenv rehash $ sudo rbenv global 1.9.3-p327 $ sudo gem install bundler
$ sudo gem install rails unicorn
1. さくらVPS CentOS6.2で基本設定をする
久々の更新です。
最近サーバ構築するのもスクリプトを流して終了…というのが多かったですが、久々に手動で構築したので備忘録として残します。
2. etckeeper を入れて /etc配下をgitで管理
epel リポジトリが初めから入っていたのですんなり入った。
# yum -y install etckeeper # etckeeper init
3. 作業用ユーザの作成
rootで毎回作業するのは怖いので、作業用のユーザを作成して sudo権限を付けておく
# adduser kopug # passwd kopug # usermod -G wheel kopug
# visudo
# 以下のコメントを外す ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
作業用ユーザのSSH公開鍵を置いておく
※ ここからは作業用ユーザで繋ぎ直してから作業を行う
4. SSHの設定
4-1) デフォルトのポート番号を変更
$ sudo sed -i 's/^#Port 22/Port 10022/' /etc/ssh/sshd_config
4-2) rootでの接続をNG
$ sudo sh -c 'echo "PermitRootLogin no" >> /etc/ssh/sshd_config'
4-3) パスワードなしでのログインNG
$ sudo sh -c 'echo "PermitEmptyPasswords no" >> /etc/ssh/sshd_config'
4-4) 鍵認証必須
$ sudo sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
4-5) 設定反映
$ sudo /sbin/service sshd restart
※ ~/.ssh/authorized_keys に公開鍵を設定しておくこと
5. iptablesの設定
管理用のポートと, sshとweb以外は閉じておく
# /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSH, HTTP -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
あとはiptablesを再起動させ、デフォルト起動するようにしておく。
$ sudo /sbin/service iptables restart $ sudo /sbin/chkconfig iptables on
6. root宛のメールを受け取るようにする
メールアドレスの部分は置き換えてください(^_^;
$ sudo sudo sed -i '/^root:/d' /etc/aliases $ sudo sh -c "echo 'root: user@example.com' >> /etc/aliases" $ sudo newaliases
6. パッケージを最新版にする
$ sudo yum upgrade -y
7. etckeeper でcommitをしてサーバを再起動
$ sudo etckeeper commit $ sudo reboot
さくらVPSのカスタムOSインストールでUbuntuを入れてみる #1
今までCentOSを使っていたけど、2011年からはUbuntuを使うことにする。
※ Mac OS X(10.6.6)のChrome(8.0.552.237)を使ってインストールをしようとしたところ、
VNCコンソールが正常に起動しなかったため、Firefox(3.6.13)を使用しました。(´・ω・`)
さくらインターネットVPSのコントロールパネルより、
OS再インストール > カスタムOSインストールへ のリンクを押下する。
1. この画面でOSの選択が可能になるので、ここでは"Ubuntu 10.04 amd64"を選択し、確認ボタンを押下
2. IPアドレス等の情報がでてくるので閉じないようにし、VNCコンソールを起動する
3. 以下のマニュアルを参考にしながらインストールを行う
カスタムOSインストールガイド : Ubuntu 10.04
4. インストールが完了したら、コントロールパネルよりサーバを起動させ、Ubuntuのバージョンを10.10にアップグレードする
$ sudo sed -i 's/^Prompt=lts/Prompt=normal/g' /etc/update-manager/release-upgrades $ sudo do-release-upgrade $ sudo reboot
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 10.10 Release: 10.10 Codename: maverick
5. バージョンが10.10 になっているのを確認したら、パッケージのフルアップデートをします。
$ sudo aptitude full-upgrade $ sudo aptitude install build-essential
$ sudo locale-gen ja_JP.UTF-8 $ sudo /usr/sbin/update-locale LANG=ja_JP.UTF-8
7. sshの設定
$ mkdir ~/.ssh $ vi ~/.ssh/authorized_keys "自分の公開鍵を貼り付ける" $ chmod 600 ~/.ssh/authorized_keys $ chmod 700 ~/.ssh
$ sudo vi /etc/ssh/sshd_config
Port 22** PermitRootLogin no PasswordAuthentication no
$ sudo /etc/init.d/ssh restart
8. 適当に見繕ってパッケージをインストールする
$ sudo aptitude install zsh git-core git-svn subversion vim screen
9. iptables の設定
$ sudo ufw allow 22** <- ssh port $ sudo ufw allow 80 $ sudo ufw default deny $ sudo ufw enable $ sudo iptables -L <- ポリシーの確認
10. shellの変更
$ chsh -s /usr/bin/zsh
後は自分の好みで、.screenrc .vimrc .zshrc を配備する感じ。
参考