読者です 読者をやめる 読者になる 読者になる

うまいぼうぶろぐ

linuxとhttpdとperlのメモ

stunnel でtlsで鍵認証をした上でsshする

linux

ずばり探し求めてたの発見。

wifiなどでoutboundが80,443だけに制限されている場合、
aws上のサーバなどにsshが出来ない。

てっとり早い対応はsshのportを443に変えてしまう。
sshdの設定で鍵認証だけを有効にしていれば、
ポートスキャンや総当たり攻撃をされても基本的に問題はない。

けど、せっかくなのでもう少しマシな接続方法を検討して調べたら
stunnelでtlsでクライアント認証を必須にする方法を発見。

opensslで作った証明書でクライアント認証を必須にしたstunnelの通信を設定
sshはそのstunnelを経由して行う

rsyncはdefaultでcopy時にsparse fileを作らない

liinux

ということを知った。
cpは元がsparse fileならcopy先もsparseになるから
rsyncもそうだと思ってたけど違った。
rsyncは-S(--sparse) を指定しない場合はdefaultでsparseにしない。

古いlinux(fedora core、centos)をp2vする

linux

mdadmを使っているためvmware converterが使えなくて、ssh+tarでp2vする場合の注意点。

参考: http://hogem.hatenablog.com/entry/2016/02/12/233000

inode size

移行先の仮想マシンで何も考えずにmkfsしてinode sizeが256になっていると、
移行元のgrubのバージョンが古いためgrubが入らない。
mke2fsでinode size 128でmkfsしておく。

http://kb.kristianreese.com/index.php?View=entry&EntryID=113

mke2fs -L / -I 128 -F -j -O dir_index /dev/sda1

modprobe

ドライバが古いから/dev/sdaを認識できない場合
http://www.vcdx.nl/2012/11/06/kernel-panic-not-syncing-attempted-to-kill-init/
/etc/modprobe.conf

alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptscsi
alias scsi_hostadapter2 mptscsih
alias scsi_hostadapter3 mptfc
alias scsi_hostadapter4 mptspi
alias scsi_hostadapter5 mptsas

からmkinitrdする。

ansibleで牛がしゃべるようになってた

linux ansible

久々に触ったら突然牛が出てきてうけた。
正確にいうとansibleは何も変わってなくて、サーバにcowsayがinstallされたからだった。

 _____________
< PLAY [hoge] >
 -------------
        \   ^__^
         \  (oo)\_______  
            (__)\       )\/\
                ||----w | 
                ||     || 

cowsayがinstallされていたらdefaultで牛がしゃべる。

さよなら牛さん

エラーのときにこの牛見るとイラっとするので無効にしておいた。

  • /etc/ansible/ansible.cfg
nocows = 1

syslogで受けとったメッセージをアプリケーションで直接読む

linux

久々の更新。
man 5 rsyslog.conf

Named pipes
This version of rsyslogd(8) has support for logging output to named pipes
(fifos). A fifo or named pipe can be used as a destination for log messages
by prepending a pipe symbol (’|’) to the name of the file. This is handy for
debugging. Note that the fifo must be created with the mkfifo(1) command
before rsyslogd(8) is started.

rsylsog.confに直接コマンド書くのかなと思ったけど、そうではなくて名前付きパイプに出力するらしい。
(名前付きパイプはmkfifoで事前に作っておく)
あとはアプリケーションでその名前付きパイプを開けば良い。

big-ip apm IP Geolocation Match memo

bigip

EndPoint Security (Server-Side) - IP Geolocation Match

手動で記述する場合こんなん

expr { [mcget {session.user.ipgeolocation.country_code}] == "JP" || 
       [mcget {session.user.ipgeolocation.country_code}] == "US"

BIG-IP IP Geolocationで地域判別

bigip

AFMやAPMで許可する場合にipではなく地域を使ってアクセス許可/拒否したいときにgeolocation使うけど、Databaseが古いと想定外の地域で判定されてしまう。

どやって判定してるねん?と調べて辿り着いたのがここ

# geoip_lookup 1.1.1.1

DBはこれぽい。

# ls -1 /usr/share/GeoIP/F5GeoIP*
/usr/share/GeoIP/F5GeoIP.dat
/usr/share/GeoIP/F5GeoIPISP.dat
/usr/share/GeoIP/F5GeoIPv6.dat

GeoIP の更新

f5 downloadsからしたらいいらしい。

  • versionにあったip-geolocationをdownload、md5確認
  • zipを展開
  • 出てきたrpm全てをgeoip_update_data -f で指定してinstall
# geoip_update_data -f </path to RPM file and file name>