YAMAHAルータでワンタイムパスワードを設定してみた

2020/11/24 YAMAHA, 技術系 投稿者:

はじめまして、ネットワーク事業部の渡邉です。
最近は働き方改革や新しい生活様式の一環として、テレワークを実施している企業が増えています。
そのようにテレワークを行う際は、リモートVPNを利用して社内ネットワークに接続するという手法があります。
しかし、その際にはセキュリティに十分気を配りたいところです。
そこで今回は、YAMAHAのルータのLuaスクリプト機能を利用したL2TP/IPsecのワンタイムパスワードの設定についてご紹介します。

ルータの設定

今回はYAMAHAのRTX830を使用します。
前提として、ルータにはPPPoE接続とL2TP/IPsecの設定が既にされているものとします。
L2TP/IPsecの設定についてはこちらの記事を参考にしてください。
下記は今回使用するルータの設定例です。

login password *
administrator password *
ip route default gateway pp 1
ip lan1 address 192.168.1.1/24
ip lan1 proxyarp on
pp select 1
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan2
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname 接続ID パスワード
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp secure filter in 200003 200020 200021 200022 200023 200024 200025 200030 200032 200100 200101 200102 200103
 ip pp secure filter out 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
 ip pp nat descriptor 1000
 pp enable 1
pp select anonymous
 pp bind tunnel1-tunnel2
 pp auth request mschap-v2
 pp auth username PPPユーザ名1 パスワード1
 pp auth username PPPユーザ名2 パスワード2
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp remote address pool 192.168.1.151-192.168.1.180
 ip pp mtu 1258
 pp enable anonymous
tunnel select 1
 tunnel encapsulation l2tp
 ipsec tunnel 1
  ipsec sa policy 1 1 esp aes-cbc sha-hmac
  ipsec ike keepalive use 1 off
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 text 事前共有鍵
  ipsec ike remote address 1 any
 l2tp tunnel disconnect time off
 ip tunnel tcp mss limit auto
 tunnel enable 1
tunnel select 2
 tunnel encapsulation l2tp
 ipsec tunnel 2
  ipsec sa policy 2 2 esp aes-cbc sha-hmac
  ipsec ike keepalive use 2 off
  ipsec ike nat-traversal 2 on
  ipsec ike pre-shared-key 2 text 事前共有鍵
  ipsec ike remote address 2 any
 l2tp tunnel disconnect time off
 ip tunnel tcp mss limit auto
 tunnel enable 2
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.1.0/24 * * * *
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.1.0/24 * * *
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
ip filter 200030 pass * 192.168.1.0/24 icmp * *
ip filter 200031 pass * 192.168.1.0/24 established * *
ip filter 200032 pass * 192.168.1.0/24 tcp * ident
ip filter 200033 pass * 192.168.1.0/24 tcp ftpdata *
ip filter 200034 pass * 192.168.1.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.1.0/24 udp domain *
ip filter 200036 pass * 192.168.1.0/24 udp * ntp
ip filter 200037 pass * 192.168.1.0/24 udp ntp *
ip filter 200099 pass * * * * *
ip filter 200100 pass * 192.168.1.1 udp * 500
ip filter 200101 pass * 192.168.1.1 esp * *
ip filter 200102 pass * 192.168.1.1 udp * 4500
ip filter 200103 pass * 192.168.1.1 udp * 1701
ip filter 500000 restrict * * * * *
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp
nat descriptor type 1000 masquerade
nat descriptor masquerade static 1000 1 192.168.1.1 udp 500
nat descriptor masquerade static 1000 2 192.168.1.1 esp
nat descriptor masquerade static 1000 3 192.168.1.1 udp 4500
nat descriptor masquerade static 1000 4 192.168.1.1 udp 1701
ipsec auto refresh on
ipsec transport 1 1 udp 1701
ipsec transport 2 2 udp 1701
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.2-192.168.1.100/24
dns host lan1
dns server pp 1
dns server select 500001 pp 1 any . restrict pp 1
dns private address spoof on
schedule at 1 */* 00:00:00 * ntpdate ntp.nict.jp syslog
l2tp service on
statistics traffic on

Luaスクリプト

LuaスクリプトはYAMAHAが公開しているものを使用します。
基本的にはそのまま使用できますが、設定値の部分は編集が必要です。

YAMAHA設定例より

--[[

 ●ワンタイムパスワード作成スクリプト
  登録されたユーザーに対するワンタイムパスワードを作成し、メールで通知するスク
  リプトです。ユーザーは複数登録することができます。

 <説明>
 ・このファイルを RTFS か外部メモリに保存してください。
 ・本項目の config の設定では schedule at コマンドで定期的に Lua スクリプトが実
  行されるように設定しています。
 ・ワンタイムパスワードには半角英数字と"?"、"#"、"\"、"'"、"""、"^"、"<"、">"、を
  除いた記号が使用され、文字数は4文字から64文字まで設定することができます。
 ・ワンタイムパスワードは大文字、小文字が区別されますので注意してください。
 ・★マークの付いた設定値は変更可能です。

 <ノート>
 ・メールの送信失敗時、または設定値に誤りがあったときに出力する SYSLOG レベルを指
  定可能です。
  SYSLOG のレベルを指定するには、log_level を設定してください。
  debug レベル、notice レベルの SYSLOG を出力するためには、それぞれ以下の設定
  が必要です。
   debug レベル ・・・ syslog debug on
   notice レベル・・・ syslog notice on
 ・本スクリプトファイルを編集する場合、文字コードは必ず Shift-JIS を使用してく
  ださい。

]]


--------------------------##  設定値  ##--------------------------------
-- 登録するユーザーの一覧(カンマで区切って列挙する)
user_tbl = {                             -- ★
  {
    name = "(PPPユーザー名1)",
    mail_tbl = {
      smtp_address = "(SMTPサーバーアドレス1)",
      from = "(送信元メールアドレス1)",
      to = "(宛先メールアドレス1)"
    }
  },
  {
    name = "(PPPユーザー名2)",
    mail_tbl = {
      smtp_address = "(SMTPサーバーアドレス2)",
      from = "(送信元メールアドレス2)",
      to = "(宛先メールアドレス2)"
    }
  }
}

-- ワンタイムパスワードの文字数 (4 - 64 文字)
digits = (ワンタイムパスワードの文字数)  -- ★

-- メールの送信に失敗した時に出力する SYSLOG のレベル (info, debug, notice)
log_level = "(SYSLOG レベル)"            -- ★

----------------------##  設定値ここまで  ##----------------------------

------------------------------------------------------------
-- 乱数を文字に変換するテーブル                       --
------------------------------------------------------------
wd_tbl = {
  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
  "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
  "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
  "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
  "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
  "!", "$", "%", "&", "(", ")", "*", "+", ",", "-", ".", "/", ":",
  ";", "=", "@", "[", "]", "_", "`", "{", "|", "}", "~"
}

------------------------------------------------------------
-- ワンタイムパスワードを作成する関数                     --
------------------------------------------------------------
function make_pass(name)
  local i
  local pass = ""

  math.randomseed(os.time())
  for i = 1, digits do
    pass = pass .. wd_tbl[math.random(#wd_tbl)]
  end

  cmd = "pp auth username " .. name .. " " .. pass
  rt.command("pp select anonymous")
  rt.command(cmd)
  rt.command("save")

  return pass
end

------------------------------------------------------------
-- メール送信を行う関数                                   --
------------------------------------------------------------
function send_mail(name, pass, mail_tbl)
  local sjct, text

  sjct = name .. " さんの新しいパスワードの通知"
  text = name .. " さんの新しいパスワードは\r\n" .. pass .. "\r\nになります。"
  mail_tbl.preface_of_text = false
  mail_tbl.subject = sjct
  mail_tbl.text = text

  return rt.mail(mail_tbl)
end

------------------------------------------------------------
-- パラメーター確認を行う関数                               --
------------------------------------------------------------
function check_param()
  local i, k, v
  local err = false

  if digits < 4 or 64 < digits then
    err = true
  end

  for i = 1, #user_tbl do
    if user_tbl[i].name == "" then
      err = true
    end
    for k, v in pairs(user_tbl[i].mail_tbl) do
      if v == "" then
        err = true
      end
    end
  end

  return err
end

------------------------------------------------------------
-- メインルーチン                                         --
------------------------------------------------------------
local i, pass, err

if check_param() then
  rt.syslog(log_level, "Parameter Error. (OneTimePass.lua)")
  os.exit(0)
end

for i = 1, #user_tbl do
  pass = make_pass(user_tbl[i].name)
  err = send_mail(user_tbl[i].name, pass, user_tbl[i].mail_tbl)
  if not err then
    rt.syslog(log_level, "failed to send mail to " .. user_tbl[i].mail_tbl.to .. ". (OneTimePass.lua)")
  end
end

Luaスクリプトの動作

今回のLuaスクリプトを実行すると、次のような実行結果になります。

  1. スクリプトに設定されたPPPユーザのパスワードが変更される
  2. 変更後のパスワードを通知するメールが、ユーザ毎に設定した送信先に送られる

また、Luaスクリプトの実行はルータのスケジュール機能を利用する形です。
例えば毎日12時にスクリプトを実行するスケジュールを設定した場合、毎日12時にパスワードが変更されるので、当日12時から翌日の12時までが有効期限のパスワードが発行されるということになります。

「ワンタイムパスワード」というと、「1度きりのパスワード」というイメージを持つかもしれませんが、今回のスクリプトで発行されるパスワードは、次にパスワードが発行されるまでの間はずっと使い続けることになります。

もしかすると、厳密には「ワンタイムパスワード」ではないかもしれませんが、YAMAHAがワンタイムパスワードと言っているので気にしないことにします。

一応、スクリプトの実行スケジュールを1分毎などにすることでワンタイムパスワードらしくなりますが、パスワードの通知がメールである都合上、大量のメールを受け取ることになるのでよく検討しましょう。

設定手順

スクリプトの編集

それでは具体的に設定を進めていきましょう。
まずは上記のLuaスクリプトを編集していきます。
例として下記の内容で設定していきます。

  • PPPユーザ名1:taro
  • PPPユーザ名2:jiro
  • SMTPサーバ:mail.example.jp
  • 送信元アドレス:vpn@example.jp
  • 送信先アドレス1:taro@example.jp
  • 送信先アドレス2:jiro@example.jp

ユーザ情報の部分は下記のようになります。

user_tbl = {                             
  {
    name = "taro",
    mail_tbl = {
      smtp_address = "mail.example.jp",
      from = "vpn@example.jp",
      to = "taro@example.jp"
    }
  }
}

 

ユーザを追加する場合は次のようにカンマ区切りで追加します。
ここは各々の環境に合わせて、必要な分だけ追加してください。
今回は2名分なので、下記のように設定します。

user_tbl = {                             
  {
    name = "taro",
    mail_tbl = {
      smtp_address = "mail.example.jp",
      from = "vpn@example.jp",
      to = "taro@example.jp"
    }
  },
  {
    name = "jiro",
    mail_tbl = {
      smtp_address = "mail.example.jp",
      from = "vpn@example.jp",
      to = "jiro@example.jp"
    }
  }
}

 

ちなみに、YAMAHAが公開しているスクリプトそのままだと認証情報がないので、SMTP認証を使用する場合は下記のようにします。

  {
    name = "(PPPユーザー名)",
    mail_tbl = {
      smtp_address = "(SMTPサーバーアドレス)",
      smtp_port = "587",
      smtp_auth_protocol = "plain",
      from = "(送信元メールアドレス)",
      smtp_auth_name = "(アカウント名)",
      smtp_auth_password = "(パスワード)",
      to = "(宛先メールアドレス)"
    }
  }

 

ワンタイムパスワードの文字数とログについては次のように設定します。
なお、log_levelをdebugなどにした場合、ログを出力させるためにはdebug logをonにする必要があるので、今回はinfoにしておきます。

digits = 16
log_level = "info"

 

これでスクリプトの編集はOKです。
作成したスクリプトファイルはTFTPでルータに転送します。

スクリプトファイルをルータに転送

スクリプトファイルを作成したら、外部メモリに保存してルータに接続しておくか、ルータの内蔵メモリにファイルを保存する必要があります。
今回はルータの内蔵メモリを使用する形で設定していきます。
なお、スクリプトファイルはクライアントPCのCドライブ直下に「onetime.lua」として作成されているものとし、ルータ側に作成したディレクトリ「dir1」に保存するものとします。

ルータ側でTFTPを許可します。

tftp host any

 

ファイル格納用にディレクトリを作成しておきます。

make directory /dir1

 

クライアントPCからファイルを転送します。

cd c:\
tftp 192.168.1.1 put onetime.lua /dir1/onetime.lua/管理パスワード

 

転送ができたらTFTPの許可設定は削除しておきます。

no tftp host any

 

ここまでできたら、あとはルータのスケジュール機能でスクリプトを定期的に実行させればOKです。

schedule at 2 */* 12:00:00 * lua /dir1/onetime.lua

 

これで毎日12時にスクリプトが実行され、パスワードの変更と通知が行われます。
ちなみに、VPNの接続中にパスワード変更が実行されても、一旦セッションが切れるまでは接続が途切れることはありません。

ワンタイムパスワードを個別に発行

今回のワンタイムパスワードのスクリプトですが、基本的にはルータに設定されているユーザの数だけ「user_tbl」の部分を追記して使うことになるかと思います。
当然ですが、同じスクリプトに設定されているユーザは同じタイミングでパスワードが変更されます。
しかし、ユーザ毎に別々にスクリプトを用意して、違うスケジュールで実行させることで、ユーザ毎にパスワード変更のタイミングをずらすという使い方ができます。
また、スクリプトで設定されていないユーザのパスワードは変更されないため、これを利用して特定のユーザのパスワードだけ固定しておくということも可能です。

まとめ

今回はYAMAHAルータのLuaスクリプト機能を使用したL2TP/IPsecのワンタイムパスワードの設定についてご紹介しました。
パスワードは定期的に変更することが望ましいですが、ユーザ数が多かったりすると手動で変更するのは手間だと思います。しかし、今回のスクリプトを利用すれば、最初の設定の手間だけで済むので便利な機能と言えるのではないでしょうか。
ただし、パスワードの変更頻度があまり高いと不便になる部分もあるので、週一、月一などで変更されるように設定すると良いかなと思います。

ちなみに、Luaスクリプトについては以前の記事でもいくつか紹介されていますので、興味のある方はぜひご覧ください。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
Wide Netのクラウドバックアップ
クラウド型ファイル共有サービスRushDrive
ワイドオフィス
ネディアのSDGsへの取り組み
健康経営優良法人
IT-commons(ITコモンズ)