目次


dhcpdでのログローテートでの注意事項

ISC製のdhcpd(多分ほぼ全部のLinuxに入っている?)でのログローテートの際、"kill -HUP"が効かないため、サービスでrestartする必要性がある。

Linuxでのルータ設定

RedHat系では普通にセットアップ後、/etc/sysctl.conf にてnet.ipv4.ip_forward == 1 に変更する。

※備考
フォワーディングとは、
他のネットワーク宛に届いたパケットを、
もう1枚のネットワークカードを使って別のネットワークに転送することです。
インターネットではデータ-をバケツリレー方式で転送しますが、
このリレーを行うのがフォワーディング


grep

grep -C -5 0857

0857を含む前後5行を表示

grep -A -5 0857

0857を含む後5行を表示

grep -B -5 0857

0857を含む前5行を表示

grep -o

上記オプションはリファレンスにのってない。"-o"オプションはマッチした箇所だけ出力される。

tar.gz,gz圧縮、解凍

tar.gz解凍

tar -xzvf package.tar.gz

gz解凍方法

gunzip filename

tar圧縮方法(zをつけるとgzip)

tar czvf hogehoge-1.1.tar.gz hogehoge/


tarで特定ディレクトリを除く圧縮

chageコマンド

chage op date User
chage -E 2008/04/17 i_kaori

アカウント有効期間の表示(検索用:有効期間、有効期限)

chage -l アカウント

crontabの書き方

crontab [ -u ユーザ名 ] { -l | -r | -e }

時間の設定は以下。

シェルの強制中断 ( Ctl + Z )

シェルの強制中断を行ったとき、実行状態のままとまっている。
それを確認するには、

jobs

と打つ。

出力例
[1]+ Stopped	aaa.sh


これをとめるには

ps aux | grep aaa

とかでプロセス番号を指定する。たくさんあってめんどくさいときは出力例の中にある「[*]」の*部を引数にして下記コマンドでとめることができる。

kill %*


これをしたあと、jobsで見ると、終了しましたと表示され、プロセスを正常に終わらせることができる。

splitコマンド(分割、cut)

IPv6におけるPing連打

ping6 IPv6Address -I eth1 -i 0.01 -c 1000 -s 480

-Iでインターフェース指定
-iで送信間隔指定
-cで送信回数指定
-sでサイズ指定


grepを再帰的に行う

grep -r パターン パス


sortコマンド

sortの書式

sort [オプション] ファイル名

ディレクトリ以下を検索

検索にヒットした行そのものや行数を知りたい

find ディレクトリ名 -type f -exec grep -c 検索パターン {} /dev/null \; | grep -v ^/dev/null

1行に複数マッチした場合もカウントしたい

find ディレクトリ名 -type f -exec awk '{count +== gsub(/検索パターン/, "")} END {print FILENAME " : " count}' {} \;


bashrcを即反映==

source ~/.bashrc


tcpdumpでssh以外のパケットキャプチャ

tcpdump -w test.pcap "not port(22)"

インタフェイスを指定するときは

tcpdump -D

で確認後、

tcpdump -i 1

等で指定。

tcpdump使い方基本

tcpdump -s 1600 -w out.pcap
-sはサイズ。16進の部分を多く表示させるため


10メガごとに分割

tcpdump -C 10 -s 1600 -w out.pcap
-Cで設定する。


垂れ流し

echo 'Date Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg';while [ 0 ]; do echo -n `date +'%F %T'` ' ';netstat -i | grep eth0; sleep 1;done


帯域制御(帯域制限)コマンド

tc

全部1秒遅延させる (追加と削除)

追加:tc qdisc add dev eth0 root netem delay 1000ms
削除:tc qdisc delete dev eth0 root netem delay 1000ms


その他

http://www.playing-engineer.com/?p==222


PostfixにおけるIPv6設定

デフォルトではipv6に対応していないため、main.cfにipv6対応するよう追記する

main.cf

mynetworksに追加したいipv6の範囲を追加する。今回はリンクローカルを追加する例。

mynetworks == 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24 [fe80::]/64


inet_protocolsにipv6の表記を記載(追記)する

inet_protocols == ipv4, ipv6


最後にpostfixの再起動を行い完了。

opensslによるCA構築

★CA構築

cd /etc/pki/tls/misc/
./CA ?newca

でCA構築完了。
構築されたCAは/etc/pki/CAに作成される。
構築したCAを削除するには、

rm -rf /etc/pki/CA

ディレクトリをそのまま削除でよい。

★秘密鍵(Key)の作成

openssl genrsa -out ./key.pem 2048 -> これで確認済み
openssl genrsa -des3 -out ./key.pem 2048
openssl genrsa -des3 -out ./key.pem 1024

★csr作成

openssl req -new -key ./key.pem -out ./csr.pem 

csrと秘密鍵はpostfixで参照するディレクトリで行う(どこでもいい)。
今回の場合は、

/etc/pki/tls/certs

これはpostfixでパスを設定する。

★署名(サーバー証明書作成 -> メールサーバにおいとくやつ)

cd /etc/pki/tls/misc 
openssl ca -out /etc/pki/CA/certs/cert.pem -infiles /etc/pki/tls/certs/csr.pem 


これでサーバー証明書完成。
作成される個所は、

/etc/pki/CA/certs/cert.pem

★メール用証明書作成(SMTPSでの動作確認した/starttlsも)

(cat IP.pem;cat IPkey.pem) > IPmail.pem

で作成する。作成された証明書と秘密鍵をつなげるイメージでおk

★STARTTLS対応

master.cfの下の行をコメントアウトする。

 -o smtpd_tls_wrappermode==yes

★ルート証明書をcer形式出力(ルート証明書 -> iRエージェントやコンパクトサーバーにおいとくやつ)

cd /etc/pki/CA
openssl x509 -inform pem -outform der -in cacert.pem -out ca.der

"l"で確認するとca.derが作成されていることを確認する。
その後、winscpで落として拡張子をcerに変更。
各種デバイスにインストールで完了。

★証明書失効

openssl ca -gencrl -revoke ./certs/***.pem

crlnumberがないと言われたときは

echo "00" > crlnumber

で作成すればいい。
/etc/pki/CAで行う。

★失効リスト作成

openssl ca -gencrl -out ***.crl

で作成。
index.txtを利用して作成している様子。

◆index error が出たとき

index.txtを削除したあと、
touchコマンドでindexファイルを作成しなおすとうまくいく。
データベースエラー系?

OpenSSLで楕円曲線暗号方式の鍵を作成する方法

環境

仮想環境上(VMPlayer)にインストール

OS : CentOS 5.6
OpenSSL : 1.0.0d


openSSLのバージョン

今回の環境に利用したOS(CentOS5.6)にバンドルされているopensslのバージョンは"openssl-0.9.8e-12.el5_5.7"である。
このバージョンの場合、ECDSAは対応していない。

----------
[root@localhost ssl_Create]# openssl ciphers -v ECDSA
Error in cipher list
18020:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl_lib.c:1188:
[root@localhost ssl_Create]#
----------

そこで現在(20110720)の最新バージョン、"openssl-1.0.0d"を利用するとECDSAが利用できることがわかる

----------
[root@localhost ssl_Create]# /usr/local/ssl/bin/openssl ciphers -v ECDSA
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH     Au=ECDSA Enc=3DES(168) Mac=SHA1
ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-RC4-SHA     SSLv3 Kx=ECDH     Au=ECDSA Enc=RC4(128)  Mac=SHA1
ECDHE-ECDSA-NULL-SHA    SSLv3 Kx=ECDH     Au=ECDSA Enc=None      Mac=SHA1
[root@localhost ssl_Create]#
----------

したがって新規に"openssl-1.0.0d"をインストールする必要があるため、次に手順を記載する

openSSLインストール方法

openSSLのサイト ( http://www.openssl.org/ ) から openssl-1.0.0d.tar.gz をダウンロードする。
ダウンロード後解凍してインストール、「 ./configure make make install 」でインストールできる。
インストールのみではバンドルされたopensslを使用してしまう。

---
[root@localhost ssl_Create]# whereis openssl
openssl: /usr/bin/openssl /usr/lib/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
---

今回は環境変数に登録せず、1.0.0dを利用するときは、フルパスで入力することにした。
したがって、0.9.8eを利用するときは"openssl command"、1.0.0dを利用するときは"/usr/local/ssl/bin/openssl command"で行う。

認証局構築及び認証局の自己証明作成

コマンド

  1. /usr/local/ssl/bin/openssl ecparam -genkey -name prime256v1 -out cakey.pem
  2. /usr/local/ssl/bin/openssl req -new -x509 -days 3650 -sha256 -key cakey.pem -out cacert.cer
  3. /usr/local/ssl/bin/openssl req -new -key cakey.pem -out careq.csr
  4. /usr/local/ssl/bin/openssl x509 -req -in careq.csr -signkey cakey.pem -out cacert.cer -days 3650
  5. echo "newreq.pem"| /usr/local/ssl/misc/CA.pl -newca > /dev/null

コマンド説明

サーバ証明書作成方法]

一応、openssl.cnfをnsCertType = server
としておく
ネットスケープ対応だが、証明書を確認したときにサーバ証明書とわかりやすい
これで動作がおかしい場合は、extensionsでサーバ証明書だと明示する必要があるかもしれない(未確認)
(802.1Xで認証サーバが使用する証明書は明示しないとwindowsXPの場合は認証できないため)

コマンド

  1. /usr/local/ssl/bin/openssl ecparam -genkey -name prime256v1 -out server.pem
  2. /usr/local/ssl/bin/openssl ec -in server.pem -out server.des.pem -des
  3. /usr/local/ssl/bin/openssl req -new -key server.des.pem -out server.req.csr
  4. /usr/local/ssl/bin/openssl ca -policy policy_anything -keyfile cakey.pem -cert cacert.cer -md sha256 -out newcert.pem -infiles server.req.csr
  5. /usr/local/ssl/bin/openssl pkcs12 -export -in newcert.pem -inkey server.des.pem -out server.p12
  6. /usr/local/ssl/bin/openssl pkcs12 -in server.p12 -out server.pem -passin pass:PASSWORD -passout pass:PASSWORD
  7. /usr/local/ssl/bin/openssl x509 -inform PEM -outform DER -in server.pem -out server.der
  8. rm -rf newcert.pem
     

コマンド説明

クライアント証明書作成方法

一応、openssl.cnfをnsCertType = client, email
としておく
ネットスケープ対応だが、証明書を確認したときにサーバ証明書とわかりやすい
これで動作がおかしい場合は、extensionsでクライアント証明書だと明示する必要があるかもしれない(未確認)
(802.1Xでサプリカントが使用する証明書は明示しないとwindowsXPの場合は認証できないため)

コマンド

  1. /usr/local/ssl/bin/openssl ecparam -genkey -name prime256v1 -out client.pem
  2. /usr/local/ssl/bin/openssl ec -in client.pem -out client.des.pem -des
  3. /usr/local/ssl/bin/openssl req -new -key client.des.pem -out client.req.csr
  4. /usr/local/ssl/bin/openssl ca -policy policy_anything -keyfile cakey.pem -cert cacert.cer -md sha256 -out newcert.pem -infiles client.req.csr
  5. /usr/local/ssl/bin/openssl pkcs12 -export -in newcert.pem -inkey client.des.pem -out client.p12
  6. /usr/local/ssl/bin/openssl pkcs12 -in client.p12 -out client.pem -passin pass:PASSWORD -passout pass:PASSWORD
  7. /usr/local/ssl/bin/openssl x509 -inform PEM -outform DER -in client.pem -out client.der
  8. rm -rf newcert.pem

コマンド説明

その他

[root@localhost ~]# /usr/local/ssl/bin/openssl  ecparam -list_curves
 secp112r1 : SECG/WTLS curve over a 112 bit prime field
 secp112r2 : SECG curve over a 112 bit prime field
 secp128r1 : SECG curve over a 128 bit prime field
 secp128r2 : SECG curve over a 128 bit prime field
 secp160k1 : SECG curve over a 160 bit prime field
 secp160r1 : SECG curve over a 160 bit prime field
 secp160r2 : SECG/WTLS curve over a 160 bit prime field
 secp192k1 : SECG curve over a 192 bit prime field
 secp224k1 : SECG curve over a 224 bit prime field
 secp224r1 : NIST/SECG curve over a 224 bit prime field
 secp256k1 : SECG curve over a 256 bit prime field
 secp384r1 : NIST/SECG curve over a 384 bit prime field
 secp521r1 : NIST/SECG curve over a 521 bit prime field
 prime192v1: NIST/X9.62/SECG curve over a 192 bit prime field
 prime192v2: X9.62 curve over a 192 bit prime field
 prime192v3: X9.62 curve over a 192 bit prime field
 prime239v1: X9.62 curve over a 239 bit prime field
 prime239v2: X9.62 curve over a 239 bit prime field
 prime239v3: X9.62 curve over a 239 bit prime field
 prime256v1: X9.62/SECG curve over a 256 bit prime field
 sect113r1 : SECG curve over a 113 bit binary field
 sect113r2 : SECG curve over a 113 bit binary field
 sect131r1 : SECG/WTLS curve over a 131 bit binary field
 sect131r2 : SECG curve over a 131 bit binary field
 sect163k1 : NIST/SECG/WTLS curve over a 163 bit binary field
 sect163r1 : SECG curve over a 163 bit binary field
 sect163r2 : NIST/SECG curve over a 163 bit binary field
 sect193r1 : SECG curve over a 193 bit binary field
 sect193r2 : SECG curve over a 193 bit binary field
 sect233k1 : NIST/SECG/WTLS curve over a 233 bit binary field
 sect233r1 : NIST/SECG/WTLS curve over a 233 bit binary field
 sect239k1 : SECG curve over a 239 bit binary field
 sect283k1 : NIST/SECG curve over a 283 bit binary field
 sect283r1 : NIST/SECG curve over a 283 bit binary field
 sect409k1 : NIST/SECG curve over a 409 bit binary field
 sect409r1 : NIST/SECG curve over a 409 bit binary field
 sect571k1 : NIST/SECG curve over a 571 bit binary field
 sect571r1 : NIST/SECG curve over a 571 bit binary field
 c2pnb163v1: X9.62 curve over a 163 bit binary field
 c2pnb163v2: X9.62 curve over a 163 bit binary field
 c2pnb163v3: X9.62 curve over a 163 bit binary field
 c2pnb176v1: X9.62 curve over a 176 bit binary field
 c2tnb191v1: X9.62 curve over a 191 bit binary field
 c2tnb191v2: X9.62 curve over a 191 bit binary field
 c2tnb191v3: X9.62 curve over a 191 bit binary field
 c2pnb208w1: X9.62 curve over a 208 bit binary field
 c2tnb239v1: X9.62 curve over a 239 bit binary field
 c2tnb239v2: X9.62 curve over a 239 bit binary field
 c2tnb239v3: X9.62 curve over a 239 bit binary field
 c2pnb272w1: X9.62 curve over a 272 bit binary field
 c2pnb304w1: X9.62 curve over a 304 bit binary field
 c2tnb359v1: X9.62 curve over a 359 bit binary field
 c2pnb368w1: X9.62 curve over a 368 bit binary field
 c2tnb431r1: X9.62 curve over a 431 bit binary field
 wap-wsg-idm-ecid-wtls1: WTLS curve over a 113 bit binary field
 wap-wsg-idm-ecid-wtls3: NIST/SECG/WTLS curve over a 163 bit binary field
 wap-wsg-idm-ecid-wtls4: SECG curve over a 113 bit binary field
 wap-wsg-idm-ecid-wtls5: X9.62 curve over a 163 bit binary field
 wap-wsg-idm-ecid-wtls6: SECG/WTLS curve over a 112 bit prime field
 wap-wsg-idm-ecid-wtls7: SECG/WTLS curve over a 160 bit prime field
 wap-wsg-idm-ecid-wtls8: WTLS curve over a 112 bit prime field
 wap-wsg-idm-ecid-wtls9: WTLS curve over a 160 bit prime field
 wap-wsg-idm-ecid-wtls10: NIST/SECG/WTLS curve over a 233 bit binary field
 wap-wsg-idm-ecid-wtls11: NIST/SECG/WTLS curve over a 233 bit binary field
 wap-wsg-idm-ecid-wtls12: WTLS curvs over a 224 bit prime field
 Oakley-EC2N-3:
       IPSec/IKE/Oakley curve #3 over a 155 bit binary field.
       Not suitable for ECDSA.
       Questionable extension field!
 Oakley-EC2N-4:
       IPSec/IKE/Oakley curve #4 over a 185 bit binary field.
       Not suitable for ECDSA.
       Questionable extension field!
[root@localhost ~]#

apache2.2*は楕円曲線の証明書に対応しておらず2.3から対応予定とのこと(未リリース)
nginx0.8も対応せず
lighttpdは対応しているみたいだが、ssl自体の設定がうまくいかない(yumで入るものは未対応の様子、tarからインストール)

yum/wgetのプロキシ設定

yum/wget使用時にプロキシが必要な場合に設定

yum

/etc/yum.confに以下を記載
proxy=http://IP:PORT
proxy_username=username
proxy_password=password

wget

/.wgetrcに以下を記載
http_proxy=http://IP:PORT
proxy_user=username
proxy_password=password

Teratermでのssh接続自動化

複数のサーバーに対してsshするとき、各サーバーのIP、ユーザー名、パスワードの入力が億劫なため、
クリックするだけで自動で接続してくれるようにしてみた。
プラスα、root権限も取得する感じ。
ざっくりとやりかたは、teraterm用マクロを準備してそれを実行する方法。

準備するマクロ

以下を適当な名前付けて*.ttlという名前で保存する

;;;;192.168.1.1 //コメントで接続先IPを記載しておくといいかも
;各種値設定
;接続先ホスト
Host2 = '192.168.1.1'
;ログインするユーザー
User1 = 'user'

;ユーザーパスワードとルートパスワードのファイル指定。初回接続時に作成される。2回目からは自動。
getpassword 'C:\uerpass.dat' 'usrpass' inputstr
getpassword 'C:\pass.dat' 'rootpass' inputstr2

;各種定義
Prompt1 = '$'
PromptPW = 'Password:'
Ini = 'TERATERM_org.INI'
Df = 'df'

;いろんなおまじない
Cmd = ''
strconcat Cmd Host2
strconcat Cmd ' /ssh /1 /auth=password'
strconcat Cmd ' /user='
strconcat Cmd User1
strconcat Cmd ' /passwd='
strconcat Cmd inputstr
strconcat Cmd ' /f='
strconcat Cmd Ini

;接続
connect Cmd
;対話的処理スタート(dfコマンド発行)
wait Prompt1
sendln 'df -h'
wait '$'
sendln 'su -'
wait ':'
sendln inputstr2

バージョン違いのエラーが出たら

strconcat Cmd ' /ssh /1 /auth=password'

の1を

strconcat Cmd ' /ssh /2 /auth=password'

などに変更し、バージョンを合わせる

John The Ripper でのpdf解析方法

pdfに書けたパスワードを解くときに使う。開いた瞬間にパスワードを求められるファイルに対して有効だが、パスワードの文字数によって、解析時間がかなり掛かる。

準備

簡単に行う為に、VirtualBoxを準備して、そこにKaliLinuxをインストールする。
KaliLinuxには解析ソフトが最初からインストールされているため、構築後にすぐに使用出来る。

手順

  1. pdfファイルをハッシュ化するスクリプトを持ってくる
    https://github.com/magnumripper/JohnTheRipper/archive/bleeding-jumbo.zip 
  2. 解凍し任意のディレクトリに置く
  3. コマンド
    pdf2john.py 解析対象の.pdf > Hash.txt
  4. 上記でハッシュファイルが作成される
  5. 一応バックアップをとっておくと確実
    cp hash.txt hash.txt.back
  6. 作成されたハッシュファイルを編集する※重要
    1. viなどで開き、":"を取り除く
    2. ":"前、":"後を削除する
    3. 保存する
      $pdf$4*4*128...(略)...a35eff
      と言った形式にする。前と後ろの":"とファイル名を取り除くイメージ。
  7. この変更を加えたファイルに対して解析をかける
    john hash.txt
  8. KaliLinuxはjohnnyというGUIツールもあり、これを使ってもOK

Ubuntuでのdockerでpull時のプロキシ設定

調べてよくでてくるプロキシ設定では通らなかった時の設定方法。
su前提で行う

一般的な方法

  1. /etc/default/dockerの編集
    vi /etc/default/docker
  2. 追加
    export http_proxy=http://IP:PORT/
    export https_proxy=http://IP:PORT/
  3. 再起動

NGだった

自分の環境での方法

  1. ディレクトリ作成
    mkdir /etc/systemd/system/docker.service.d
  2. ファイル作成
    vi /etc/systemd/system/docker.service.d/http-proxy.conf
  3. 中身
    [Service]
    Environment="HTTP_PROXY=http://IP:PORT"
    Environment="HTTPS_PROXY=http://IP:PORT"
  4. 再起動
    systemctl daemon-reload
    systemctl restart docker
  5. 確認
    docker search linux

リアルタイムでネットワーク監視

現状の通信状態を確認したい時に使用

yum -y install iftop
iftop

で行ける。どれくらい速度が出ているか知りたい時に便利。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS