LoginSignup
0
2

More than 5 years have passed since last update.

自宅サーバ構築の手順 DDNSを使ってVPNを自宅に張る

Last updated at Posted at 2018-05-25

自宅にサーバを作ってみた。

OS CentOS7

OSは入っていて、rootと自分用のアカウントを作った以外には何もしていない状態からサーバからプライベートIPをDDNSに公開して、どこからでもVPNできるようにするまでやる。

僕の記事はしょせん素人なので安心ならんという方向け
https://centossrv.com/
を参照してください。

SSHDを立てる

とりあえず、これでサーバの近くにいなくて済む。

時刻を合わせる

まず今の時刻を確認

$ timedatectl #現在のシステムクロックの確認
#Local time: 金 2018-05-25 23:58:44 JST
#  Universal time: 金 2018-05-25 14:58:44 UTC
#        RTC time: 金 2018-05-25 14:58:44
#       Time zone: Asia/Tokyo (JST, +0900)
#     NTP enabled: no
#NTP synchronized: no
# RTC in local TZ: no
#      DST active: n/a

時刻合わせる前は2日分くらいずれてた。よくわからん。

CentOS7 になってから時刻同期にはNTPではなくてChronyを使うようになったらしい。最初NTPを入れてかつ設定してしまって慌てたが、chronyと同時に建てるとNTPの方がDisbaleになるらしいので、放置する。

NTPを入れたときの参照はこちら。ちなみに参照先の

# ntpd -p これは間違い
ntpq -p #これが正しい

コメントには違うという旨が書かれていたけど、見逃して少し時間を食いました。

話を戻して、chronyのためにここを参照。というか最初からhttps://centossrv.com/を参照していれば何も問題なかった。

最後に、ちゃんとchronyが動いているかを確認するために

systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2018-05-26 00:20:49 JST; 3min 5s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 874 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 822 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 831 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─831 /usr/sbin/chronyd

 5月 26 00:20:49 localhost.localdomain chronyd[831]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +SIGND +ASYNCDNS +IPV6 +DEBUG)
 5月 26 00:20:49 localhost.localdomain chronyd[831]: Could not change ownership of /var/run/chrony : Operation not permitted
 5月 26 00:20:49 localhost.localdomain chronyd[831]: Could not access /var/run/chrony : No such file or directory
 5月 26 00:20:49 localhost.localdomain chronyd[831]: Disabled command socket /var/run/chrony/chronyd.sock
 5月 26 00:20:49 localhost.localdomain chronyd[831]: Frequency 0.000 +/- 1000000.000 ppm read from /var/lib/chrony/drift
 5月 26 00:20:49 localhost.localdomain systemd[1]: Started NTP client/server.
 5月 26 00:21:23 localhost.localdomain chronyd[831]: Selected source 133.243.238.244
 5月 26 00:21:24 localhost.localdomain chronyd[831]: Source 139.162.66.25 replaced with 108.61.223.189
 5月 26 00:22:29 localhost.localdomain chronyd[831]: Selected source 172.105.231.23
 5月 26 00:23:34 localhost.localdomain chronyd[831]: Selected source 133.243.238.244

「Could not ...」言っていて心配になった。ググっても難しそうなところしかでない。https://qiita.com/Pirlo/items/c4c23cc1ba2b1d3c0673を参照。SELinuxをdisableにすれば良いとのこと。その予定だったので、無視する。

ハードウェアクロックの更新

ここを参照して

~]# hwclock --systohc --utc
#次の命令でも同様の効果が得られるらしい
#timedatectl set-local-rtc false #これで上のRTC in local TZをnoにできる。trueならyes

とした。これで、ハードウェアクロックはUTCとして、システムクロックに同期した。定期更新されるか心配だけど、ここには「NTP を使用する場合、ハードウェアクロックは 11 分ごとにシステムクロックに自動的に同期され…」という文があり、これでいいかなという感じ。ずれたらまた手動で直す。

また確認。

$ timedatectl
      Local time: 土 2018-05-26 00:35:19 JST
  Universal time: 金 2018-05-25 15:35:19 UTC
        RTC time: 金 2018-05-25 15:35:19
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

CentOS7初期設定

  • rootになれるユーザーを管理者のみにする
  • パッケージ管理システム設定
  • root宛メールを転送する
  • SELinuxの無効化

https://centossrv.com/centos7-init.shtml
を参考にして、上の内容をこなす。

root宛てにメールを転送してもできない問題。いくら調べてもわからないので放置

EPELレポジトリを導入

セキュリティ系

結局、tripwireもrootkitも定期実行まではしないことにした。悪意のあるユーザに入られたら終了という考え方。
rootkitに至ってはコマンドの退避もしていないので、多分意味がない。

ファイル改竄検知システム導入(Tripwire)

結局これいらない気がしてきた。

installするときに明示的にepelを指定する必要があった。

yum install tripwire --enablerepo=epel

ここも参照
http://think-t.hatenablog.com/entry/20140113/p1

rootkit導入

インストール部分は
https://qiita.com/bezeklik/items/7964ce67f1a1363b694e
参照

以降は
https://centossrv.com/chkrootkit.shtml

iptables導入

sshの公開鍵認証のみの受付

パスワードによる管理は弱いので、公開するにあたり最小限ここは押さえたい。
https://qiita.com/uhooi/items/137de4578534c8e7e7f2

DDNSの設定

#参照先では
#setarch `uname -m` /usr/local/bin/DiCE/diced
#と書かれているが
/usr/local/bin/DiCE/diced
#これで問題なかった

また、DiCEをPC起動時に起動するためのコードとしてetc/rc.d/rc.localにDiCEの起動コマンドを書く箇所があるが、それだけでは起動時には起動してくれないようだ。というのも初期の状態ではetc/rc.d/rc.localに実行権限がないからだ。だから、

chmod +x /etc/rc.d/rc.local

を実行しようとetc/rc.d/rc.localの中に書いてある。

top | grep diced #これで実行しているかを確認できる

VPNの設定

最初はサーバそのものにVPNサーバを立てて、直接入ってVPNを張ろうと画策していたが、よくよく見てみれば、うちのNAT兼ルータ君がVPNの機能を持っていた。既にDDNSにIPはさらしているので、本当にVPNの設定をルータに設定するだけだった。

VPNの設定を終えた後の注意点

  • VPNを張る先と同一のLAN内でVPNは張れないみたい
    • 検査時、スマホでテザリングして一旦外部に出てから繋いでみた
  • VPNの設定で設定できない項目があり詰まった
    • Windows10の場合、設定->ネットワークとインターネット->VPNのように簡単にVPNの設定ができるが、さらに込み入ったプロパティを指定したい場合はコントロールパネル->ネットワークとインターネット->ネットワークと共有センター->アダプターの設定の変更で所望のVPNを右クリックして、プロパティを弄れば良い
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2