2019年10月現在のスキルシートについて

おもむろにスキルシートを置いておきますね。excel版とpdf版を置いておきます。

スキルシート作成時に気をつけたこと

A4一枚に収まるようにしました。また、大事な部分は色付けして少し字を大きくし、ハイライトしました。これは、お客様も見やすいし、僕としても説明が楽になるためです。
今までのゆうき少年は、過去の職務経歴をひたすらにだらだらと3ページくらいにわたって記載していました。その際の面談担当者は、全部のページを読んでいませんでした。
そこで、読みやすさと、口頭での解説のしやすさを求めた結果、A4一枚に収めることとなりました。

スキルシートで記載しきれなかった情報は口頭で伝える

これは、自己アピールとしても有効ですし、スキルシートぷらすαの価値をもたらすことが可能です。相手からしてみれば、スキルシートには記載されてないけど、そういうことも出来るんだ~となります。

まだまだスキルシート作成については勉強中です

ここをこうすれば…なんて意見は山程出てくるかと思います。個人事業主をやっているなかで、最大限重要視されるのスキルシートです。最新のIT技術を磨くのも大事ですが、自己アピールの能力も伸ばしていく必要があることを肝に銘じておく必要があります。

なんだか、そこらのブログに書いてありそうな一般的な内容になってしまいました。突出したアピール力があるわけではないので、地道に行くしか無いかなと思ってます。。。

Cisco ASA5520のconfig

自分がブログ検索で思い出せるよう、Cisco ASA5520のconfigをメモっておきます。CCNA Security取得時にごちゃごちゃいじったっきり、ほとんど触ってないので設定ぐちゃってます。logging hostが2つも設定されてたり、DNSサーバの指定がgoogleだったり宅内に設置した古いDNSサーバだったり、config自体も古いです。無駄な設定も多数入っています。
が、この設定で外部からVPN接続出来ています。。疎かな設定ですがご容赦ください。
※中古で購入した機器ですが、機器の特定を防ぐため、念の為シリアル番号やMACアドレスは伏せてます。

show version

asa5520# show version

Cisco Adaptive Security Appliance Software Version 8.2(1)
Device Manager Version 7.5(2)153

Compiled on Tue 05-May-09 22:45 by builders
System image file is "disk0:/asa821-k8.bin"
Config file at boot was "startup-config"

asa5520 up 15 days 11 hours

Hardware:   ASA5520, 512 MB RAM, CPU Pentium 4 Celeron 2000 MHz
Internal ATA Compact Flash, 256MB
BIOS Flash M50FW080 @ 0xffe00000, 1024KB

Encryption hardware device : Cisco ASA-55x0 on-board accelerator (revision 0x0)
                             Boot microcode   : CN1000-MC-BOOT-2.00
                             SSL/IKE microcode: CNLite-MC-SSLm-PLUS-2.03
                             IPSec microcode  : CNlite-MC-IPSECm-MAIN-2.04
 0: Ext: GigabitEthernet0/0  : address is 001c.5826.XXXX, irq 9
 1: Ext: GigabitEthernet0/1  : address is 001c.5826.XXXX, irq 9
 2: Ext: GigabitEthernet0/2  : address is 001c.5826.XXXX, irq 9
 3: Ext: GigabitEthernet0/3  : address is 001c.5826.XXXX, irq 9
 4: Ext: Management0/0       : address is 001c.5826.XXXX, irq 11
 5: Int: Not used            : irq 11
 6: Int: Not used            : irq 5

Licensed features for this platform:
Maximum Physical Interfaces  : Unlimited
Maximum VLANs                : 150
Inside Hosts                 : Unlimited
Failover                     : Active/Active
VPN-DES                      : Enabled
VPN-3DES-AES                 : Enabled
Security Contexts            : 2
GTP/GPRS                     : Disabled
SSL VPN Peers                : 2
Total VPN Peers              : 750
Shared License               : Disabled
AnyConnect for Mobile        : Disabled
AnyConnect for Linksys phone : Disabled
AnyConnect Essentials        : Disabled
Advanced Endpoint Assessment : Disabled
UC Phone Proxy Sessions      : 2
Total UC Proxy Sessions      : 2
Botnet Traffic Filter        : Disabled

This platform has an ASA 5520 VPN Plus license.

Serial Number: XXXXXXXX
Running Activation Key: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
Configuration register is 0x1
Configuration last modified by enable_15 at 09:20:57.132 JST Sat Oct 12 2019
asa5520#

show running-config

asa5520# show running-config
 : Saved
 :
 ASA Version 8.2(1)
 !
 hostname asa5520
 domain-name pine.com
 enable password hogehogehogehoge encrypted
 passwd hogehogehogehoge encrypted
 names
 !
 interface GigabitEthernet0/0
  nameif inside
  security-level 100
  ip address 192.168.0.251 255.255.255.0
 !
 interface GigabitEthernet0/1
  shutdown
  nameif outside
  security-level 0
  no ip address
 !
 interface GigabitEthernet0/2
  shutdown
  no nameif
  no security-level
  no ip address
 !
 interface GigabitEthernet0/3
  shutdown
  no nameif
  no security-level
  no ip address
 !
 interface Management0/0
  no nameif
  no security-level
  no ip address
  management-only
 !
 ftp mode passive
 clock timezone JST 9
 dns domain-lookup inside
 dns server-group DefaultDNS
  name-server 8.8.8.8
  name-server 192.168.0.207
  domain-name pine.com
 same-security-traffic permit intra-interface
 access-list DefaultRAGroup_splitTunnelAcl extended permit ip 192.168.0.0 255.255.255.0 any
 pager lines 24
 logging enable
 logging timestamp
 logging trap warnings
 logging asdm warnings
 logging facility 19
 logging host inside 192.168.0.202
 logging host inside 192.168.0.205
 mtu inside 1500
 mtu outside 1500
 ip local pool Address-pool 192.168.0.110-192.168.0.120 mask 255.255.255.0
 no failover
 icmp unreachable rate-limit 1 burst-size 1
 asdm image disk0:/asdm-752-153.bin
 asdm history enable
 arp timeout 14400
 route inside 0.0.0.0 0.0.0.0 192.168.0.1 1
 timeout xlate 3:00:00
 timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
 timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
 timeout tcp-proxy-reassembly 0:01:00
 dynamic-access-policy-record DfltAccessPolicy
  network-acl DefaultRAGroup_splitTunnelAcl
 aaa authentication ssh console LOCAL
 aaa authentication http console LOCAL
 aaa authentication telnet console LOCAL
 http server enable
 http 192.168.0.0 255.255.255.0 inside
 snmp-server host inside 192.168.0.208 community public version 2c
 no snmp-server location
 no snmp-server contact
 snmp-server community *
 snmp-server enable traps snmp authentication linkup linkdown coldstart
 sysopt connection tcpmss 1300
 no sysopt connection permit-vpn
 crypto ipsec transform-set TRANS-ESP-AES-SHA esp-aes esp-sha-hmac
 crypto ipsec transform-set TRANS-ESP-AES-SHA mode transport
 crypto ipsec security-association lifetime seconds 28800
 crypto ipsec security-association lifetime kilobytes 4608000
 crypto ipsec security-association replay disable
 crypto ipsec security-association replay window-size 1024
 crypto ipsec df-bit clear-df inside
 crypto dynamic-map inside_dyn_map 10 set transform-set TRANS-ESP-AES-SHA
 crypto map inside_map 65535 ipsec-isakmp dynamic inside_dyn_map
 crypto map inside_map interface inside
 crypto isakmp enable inside
 crypto isakmp policy 10
  authentication pre-share
  encryption aes
  hash sha
  group 5
  lifetime 2147483647
 crypto isakmp policy 20
  authentication pre-share
  encryption 3des
  hash sha
  group 2
  lifetime 2147483647
 telnet 192.168.0.0 255.255.255.0 inside
 telnet timeout 5
 ssh 192.168.0.0 255.255.255.0 inside
 ssh timeout 60
 console timeout 0
 management-access inside
 threat-detection basic-threat
 threat-detection statistics port
 threat-detection statistics protocol
 threat-detection statistics access-list
 threat-detection statistics tcp-intercept rate-interval 30 burst-rate 400 average-rate 200
 ntp server 133.243.238.243
 webvpn
 group-policy DfltGrpPolicy attributes
  vpn-tunnel-protocol IPSec l2tp-ipsec svc webvpn
 group-policy L2TP-VPN internal
 group-policy L2TP-VPN attributes
  dns-server value 8.8.8.8 4.4.4.2
  vpn-idle-timeout none
  vpn-session-timeout none
  vpn-tunnel-protocol l2tp-ipsec
  password-storage enable
  split-tunnel-policy tunnelspecified
  default-domain value pine.com
 group-policy Clientless-VPN internal
 group-policy Clientless-VPN attributes
  vpn-tunnel-protocol webvpn
  webvpn
   url-list none
 username arkey22 password hogehogehogehoge nt-encrypted
 tunnel-group DefaultRAGroup general-attributes
  address-pool Address-pool
  default-group-policy L2TP-VPN
 tunnel-group DefaultRAGroup ipsec-attributes
  pre-shared-key *
 tunnel-group DefaultRAGroup ppp-attributes
  authentication ms-chap-v2
 tunnel-group Clientless-VPN type remote-access
 tunnel-group Clientless-VPN general-attributes
  default-group-policy Clientless-VPN
 tunnel-group VPN-Client type remote-access
 tunnel-group VPN-Client general-attributes
  address-pool Address-pool
 tunnel-group VPN-Client webvpn-attributes
  group-alias home enable
  group-alias test disable
 !
 class-map ANY
  match any
 class-map inspection_default
  match default-inspection-traffic
 !
 !
 policy-map type inspect dns preset_dns_map
  parameters
   message-length maximum 512
 policy-map global_policy
  class inspection_default
   inspect dns preset_dns_map
   inspect ftp
   inspect h323 h225
   inspect h323 ras
   inspect rsh
   inspect rtsp
   inspect esmtp
   inspect sqlnet
   inspect skinny
   inspect sunrpc
   inspect xdmcp
   inspect sip
   inspect netbios
   inspect tftp
  class ANY
   set connection decrement-ttl
 !
 service-policy global_policy global
 prompt hostname context
 Cryptochecksum:696bbc96cb06a44de8532147168887ee
 : end
 asa5520#

関連リンク(本ブログ内)

バイクって機動力高いなと思いました。

こんばんは。昨日買ってきた米澤穂信さんの『Iの悲劇』を今日、一気に読んでしまいました。人が死なないミステリって本当に好きです。

さて、タイトルの話なんですが、今日ですね、バイクで法務局や銀行に行ってきたんですが、あの辺って一方通行の道が多いんですね。
車で道を間違えた場合に引き返そうとすると、左折を繰り返して迂回したり、気合で転回したりと、かなり大変なんですが、バイクの場合はエンジンを切って降りると法的に歩行者扱いになるので、もし道を間違えてもバイクから降りてバイクを押せばOK!
さらに、Uターンも自動車と比べて旋回半径が小さいので、比較的狭い道でも余裕です。車だと旋回半径的に厳しい右折レーンからのUターンもバイクだと楽勝です。

バイク移動になれちゃうと車での移動が逆に億劫になります。もちろん車は車で、雨の日でも運転出来るとか空調が効いてて快適とかメリットはあるので、要は使い分けですね。
普段は燃費が良くて機動力の高いバイクで移動して、天気の悪い日や荷物が多い日は車で移動、みたいに使い分けています。

歯磨きは洗面台か風呂場でしょ、JK。

テレビとかYoutubeの動画を見てると、タレントさんとか歯磨きしてる場面が写ったりしますよね。それ見てると、みんな歯を磨きながらリビングでテレビを見たり、色々やってるんですけど、僕からしたら考えられなくて。しかも口を閉じて磨いてる!
歯磨きって、口をめちゃくちゃ開けて色んな角度から歯ブラシを当てないと、ちゃんと磨けてない感じしません?
で、口をがーっと開けて歯を磨くと、口から液体がボトボト落ちてくるので、歯を磨ける場所は必然的に洗面台か、風呂場になるんですよね。

そんなことをふと思った2019年10/10(木)の朝でした。おはようございます。

さくらVPSから自宅にVPN接続する

本日の内容はタイトル通りです。 Qiitaに投稿しようか迷ったんですが、ブログの方が残る気がするので、こっちに書こうと思います。半分、自分メモです。
まずは宅内の構成図を見ましょう。

赤線の部分が今回のVPN接続に関係する箇所です。さくらVPSに構築しているCentOS 7.7から、自宅に設置しているASA5520にVPNで接続し、宅内ネットワークに接続します。ASA5520の設定は、その説明を書くだけで膨大な文章になってしまうので、割愛します。CCNA Security程度の知識もしくはググる力があれば十分設定可能です。ASA5520は一般的にはFirewallとして認知されてると思いますが、VPN接続も可能です。
今回はさくらVPS(CentOS)の、接続用シェルスクリプトについてメモります。
ipsecやxl2tpdのインストールやCentOSの設定は済んでいる前提です。ググればインストールから設定まで出来ると思います。ただ実際に接続しようとすると、やれipsecを起動したりxl2tpdを起動したりroute addしたりする必要があって、いちいち一つずつコマンドを叩くのが手間なので、シェルスクリプト化しました。今回は備忘録として、接続・切断・接続確認用のシェルスクリプトについてメモっていきたいと思います。
追記(2019/10/26):スクリプトの一部を修正したので当記事にも反映しました。/etc/resolv.confを書き換える処理を追加しています。また、エラー判定をrcという変数に入れた後にif文でエラーの有無を判定していましたが、直接$?を見ることで判定するようにしました。

VPN接続用スクリプト(vpn_connect.sh)

#!/bin/bash

##---------------------------------------------------------
#
# 変数設定
#
##---------------------------------------------------------

script_name=`/bin/basename $0`
log_file="/var/log/vpn.log"

##---------------------------------------------------------
#
# 関数設定
#
##---------------------------------------------------------
function LOG() {
  /bin/echo -e "`date '+%Y-%m-%d_%H:%M:%S'` ${script_name}: $@" >> ${log_file}
  if [[ `/bin/echo $@ | grep "ERROR"` ]]; then
    /bin/logger -t ${script_name} $@
  fi
}

##---------------------------------------------------------
#
# メイン処理
#
##---------------------------------------------------------

# メイン処理開始宣言
LOG "[INFO] Starting VPN Connection..."
/bin/echo "[INFO] Starting VPN Connection..."

# VPN接続確認
/usr/local/src/vpn_status.sh
if [ $? -eq 0 ];then
  LOG "[INFO] VPN is already established."
  /bin/echo "[INFO] VPN is already established."
  exit 0
fi

# ipsecサービス開始
/bin/systemctl start ipsec
if [ $? -eq 1 ];then
  LOG "[ERROR] ipsec start failed."
  /bin/echo "[ERROR] ipsec start failed."
  exit 1
else
  LOG "[INFO] ipsec started."
  echo "[INFO] ipsec started."
fi

/usr/bin/sleep 1

# xl2tpdサービス開始
/bin/systemctl start xl2tpd
if [ $? -eq 1 ];then
  LOG "[ERROR] xl2tpd start failed."
  /bin/echo "[ERROR] xl2tpd start failed."
  exit 1
else
  LOG "[INFO] xl2tpd started."
  /bin/echo "[INFO] xl2tpd started."
fi

/usr/bin/sleep 1

# VPN接続フェーズ
/sbin/ipsec auto --up vpn-pine > /dev/null 2>&1
if [ $? -eq 1 ];then
  LOG "[ERROR] ipsec connect failed."
  /bin/echo "[ERROR] ipsec connect failed."
  exit 1
else
  LOG "[INFO] ipsec connect started."
  /bin/echo "[INFO] ipsec connect started."
fi

# ppp0インタフェースが存在しない場合のみ追加
/sbin/ip a | /bin/grep ppp0 > /dev/null 2>&1
if [ $? -eq 0 ]; then
  LOG "[INFO] ppp0 exists."
  /bin/echo "[INFO] ppp0 exists."
else
  LOG "[INFO] create ppp0 interface."
  /bin/echo "[INFO] create ppp0 interface."
  /bin/echo "c vpn-pine" > /var/run/xl2tpd/l2tp-control
fi

/bin/sleep 5

# VPN接続した際のローカルIPアドレスのルーティングを追加
/sbin/ip r | grep 192.168.0.0 > /dev/null 2>&1
if [ $? -eq 0 ]; then
  LOG "[INFO] route to 192.168.0.0/24 exists."
  /bin/echo -e "[INFO] route to 192.168.0.0/24 exists."
else
  LOG "[INFO] route add 192.168.0.0/24 dev ppp0."
  /bin/echo -e "[INFO] route add 192.168.0.0/24 dev ppp0."
  /sbin/ip route add 192.168.0.0/24 dev ppp0
fi

/bin/sleep 1

# DNSサーバのIPアドレスを/etc/resolv.confに追加
/usr/bin/grep '^nameserver 192.168.0.209' /etc/resolv.conf
if [ $? -ne 0 ];then
  /usr/bin/sed -i -e "2i nameserver 192.168.0.209" /etc/resolv.conf
  /usr/bin/sed -i -e "3i search pine.com" /etc/resolv.conf
  if [ $? -eq 0 ];then
    LOG "[INFO] Added DNS server to /etc/resolv.conf."
    /bin/echo -e "[INFO] Added DNS server to /etc/resolv.conf"
  fi
fi

# ルータに疎通確認することでVPN接続の確立を確認
/bin/ping -c 1 router > /dev/null 2>&1
if [ $? -eq 0 ]; then
  LOG "[INFO] VPN connected."
  /bin/echo -e "\e[1;32m [INFO] VPN connected. \e[m"
else
  LOG "[ERROR] VPN not connected."
  /bin/echo -e "\e[1;31m [ERROR] VPN not connected. \e[m"
fi

exit 0

VPN切断用スクリプト(vpn_disconnect.sh)

#!/bin/bash

##---------------------------------------------------------
#
# 変数設定
#
##---------------------------------------------------------

script_name=`/bin/basename $0`
log_file="/var/log/vpn.log"

##---------------------------------------------------------
#
# 関数設定
#
##---------------------------------------------------------
function LOG() {
  /bin/echo -e "`date '+%Y-%m-%d_%H:%M:%S'` ${script_name}: $@" >> ${log_file}
  if [[ `/bin/echo $@ | grep "ERROR"` ]]; then
    logger -t ${script_name} $@
  fi
}

##---------------------------------------------------------
#
# メイン処理
#
##---------------------------------------------------------

# メイン処理開始宣言
LOG "[INFO] Stopping VPN Connection..."
echo "[INFO] Stoopping VPN Connection..."

# 事前処理
echo "d vpn-pine" > /var/run/xl2tpd/l2tp-control

# VPN切断フェーズ
ipsec auto --down vpn-pine  > /dev/null 2>&1
if [ $? -eq 1 ];then
  LOG "[ERROR] ipsec disconnect had failed."
  echo "[ERROR] ipsec disconnect had failed."
  exit 1
else
  LOG "[INFO] ipsec disconnecting."
  echo "[INFO] ipsec disconnecting."
fi

# ipsecサービス停止
systemctl stop ipsec
if [ $? -eq 1 ];then
  LOG "[ERROR] ipsec stop failed."
  echo "[ERROR] ipsec stop failed."
  exit 1
else
  LOG "[INFO] ipsec stopped."
  echo "[INFO] ipsec stopped."
fi
sleep 1

# xl2tpdサービス停止
systemctl stop xl2tpd
if [ $? -eq 1 ];then
  LOG "[ERROR] xl2tpd stop failed."
  echo "[ERROR] xl2tpd stop failed."
  exit 1
else
  LOG "[INFO] xl2tpd stopped."
  echo "[INFO] xl2tpd stopped."
fi
sleep 1

# VPN切断
echo "d vpn-pine" > /var/run/xl2tpd/l2tp-control

# DNSサーバのIPアドレスを/etc/resolv.confから削除
/usr/bin/sed -i -e "/^nameserver 192.168.0.209$/d" /etc/resolv.conf
/usr/bin/sed -i -e "/^search pine.com$/d" /etc/resolv.conf
if [ $? -eq 0 ];then
    LOG "[INFO] Deleted DNS server from /etc/resolv.conf."
    /bin/echo -e "[INFO] Deleted DNS server from /etc/resolv.conf"
fi

# VPN切断確認
# ping -c 1 192.168.0.1 > /dev/null 2>&1
/bin/nslookup router > /dev/null 2>&1
if [ $? -ne 0 ]; then
  LOG "[INFO] VPN disconnected."
  echo -e "\e[1;32m [INFO] VPN disconnected. \e[m"
else
  LOG "[ERROR] VPN failed to disconnect."
  echo -e "\e[1;31m [ERROR] VPN failed to disconnect. \e[m"
fi

exit 0

VPN接続確認用スクリプト(vpn_status.sh)

#!/bin/bash

##---------------------------------------------------------
#
# 変数設定
#
##---------------------------------------------------------

script_name=`/bin/basename $0`
log_file="/var/log/vpn.log"
now_time=`date +%s`
l2tp_control_time=`ls -l --time-style='+%s' /var/run/xl2tpd/l2tp-control | cut -d" " -f 6`

# 時刻計算
vpn_time=`/bin/expr ${now_time} - ${l2tp_control_time}`
H=`/bin/expr ${vpn_time} / 3600`
vpn_time=`/bin/expr ${vpn_time} % 3600`
M=`/bin/expr ${vpn_time} / 60`
S=`/bin/expr ${vpn_time} % 60`

##---------------------------------------------------------
#
# 関数設定
#
##---------------------------------------------------------
function LOG() {
  /bin/echo -e "`date '+%Y-%m-%d_%H:%M:%S'` ${script_name}: $@" >> ${log_file}
  if [[ `/bin/echo $@ | grep "ERROR"` ]]; then
    /bin/logger -t ${script_name} $@
  fi
}

##---------------------------------------------------------
#
# メイン処理
#
##---------------------------------------------------------


# VPN接続確認
# ipsec auto --status > /dev/null 2>&1
/bin/ping -c 1 192.168.0.1 > /dev/null 2>&1
if [ $? -eq 0 ];then
  LOG "[INFO] VPN connected."
  /bin/echo -e "[INFO] VPN connected. (${H}:${M}:${S})"
  exit 0
else
  LOG "[INFO] VPN not connected."
  /bin/echo "[INFO] VPN not connected."
  exit 1
fi

exit 0

teratermでさくらVPSからVPN接続・自宅サーバにping・VPN切断してみる

今回はシェルスクリプトを/usr/local/src配下に格納してるのですが、Pathを通していますので、/usr/local/srcにcdしなくても実行可能です。
※ systemctlを使う都合で、root権限で実行する必要があります。

自宅にVPN接続することで何が便利なのか

  • さくらVPSを踏み台にすることで宅内環境(自宅サーバ、Windows、NASなど)に直接潜り込める。
  • さくらVPS以外にもiPhoneやMacBook AirからでもVPNで繋がるので、自宅の環境へアクセスしやすい。
  • 出先の環境で外部への接続がSSH(port 22)のみ許可されている場合、さくらVPSを踏み台としてSSH portforwardingで宅内のWindowsやNASにアクセスが可能。

余談:Cisco ASA5520の管理画面について

ASA5520の設定はコマンドラインからも可能なのですが、Cisco ASDMIDM Launcherを利用することでGUIからも設定が可能です。このランチャーの操作についてはCCNA Securityの問題で頻出するので見方や操作を覚える必要があります。(CCNA Securityの試験は2020年にCCNAとして一本化されるようなので、この画面を見ることは無くなってしまうかもしれませんが…)
画像では、VPN Sessionsの箇所で IPsec:1になっていますが、これはさくらVPSからVPN接続しているためです。