ServersMan@VPS Ubuntu 12.04の初期設定

CentOSから Ubuntu 12.04にしてみたので覚書

まずは最初にすべきセキュリティの確保。
以下をする。

  1. 一般ユーザの追加
  2. 一般ユーザでSSH接続可能にする
  3. 一般ユーザでsudoを使ったroot権限作業を可能にする
  4. sshの認証設定とポート番号の変更
  5. sshを使って再ログイン、sudoの確認
  6. rootアカウントを無効にする
  1. 一般ユーザの追加
    root@dti-vps-srvXX:~# adduser xxxxx
    Adding user `xxxxx' ...
    Adding new group `xxxxx' (1000) ...
    Adding new user `xxxxx' (1000) with group `xxxxx' ...
    Creating home directory `/home/xxxxx' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password: <パスワードを入力>
    Retype new UNIX password: <もう一度パスワードを入力>
    passwd: password updated successfully
    Changing the user information for xxxxx
    Enter the new value, or press ENTER for the default
            Full Name []: 
            Room Number []:
            Work Phone []:
            Home Phone []:
            Other []:
    Is the information correct? [Y/n]
    root@dti-vps-srvXX:~# 
    
  2. 一般ユーザでSSH接続可能にする(公開キーの追加)
    root@dti-vps-srvXX:~# su - xxxxx
    xxxxx@dti-vps-srvXX:~$ pwd
    /home/xxxxx
    xxxxx@dti-vps-srvXX:~$ mkdir .ssh
    xxxxx@dti-vps-srvXX:~$ chmod 700 .ssh
    xxxxx@dti-vps-srvXX:~$ cat > .ssh/authorized_keys
    ssh-rsa AAAA....== xxxxx@terminal <必要な公開キーを追加する>
    xxxxx@dti-vps-srvXX:~$ chmod 600 .ssh/authorized_keys
    xxxxx@dti-vps-srvXX:~$ exit
    logout
    
  3. 一般ユーザでsudoを使ったroot権限作業を可能にする
    ※sudoグループへ作成したユーザを追加する。admユーザグループは各種のlogを見る事が出来るgroupなので不要であれば追加しないで良い。

    root@dti-vps-srvXX:~# adduser xxxxx sudo
    Adding user `xxxxx' to group `sudo' ...
    Adding user xxxxx to group sudo
    Done.
    root@dti-vps-srvXX:~# adduser xxxxx adm <logの閲覧権限が不要であればこれは実行しない>
    Adding user `xxxxx' to group `adm' ...
    Adding user xxxxx to group adm
    Done.
    root@dti-vps-srvXX:~#
    
  4. sshの認証設定とポート番号の変更
    root@dti-vps-srvXX:~# vi /etc/ssh/sshd_config
    ....
    # What ports, IPs and protocols we listen for
    Port xxxx <ポート番号を変える>
    ....
    PermitRootLogin yes <認めないのでnoにする>
    ....
    #PasswordAuthentication yes <UsePAMがyesでもパスワード認証を拒否するためにコメントアウトを外し、更にnoにする>
    ....
    root@dti-vps-srvXX:~# service ssh restart
    ssh stop/waiting
    ssh start/running, process XXXXX
    root@dti-vps-srvXX:~#
    
  5. sshを使って再ログイン、sudoの確認
    • sshを使って指定したポートで一般ユーザがログインできる事
    • sshを使ってパスワード認証で一般ユーザがログインできない事
    • sshを使ってrootユーザがログインできない事
    • 一般ユーザはsudoを使ってroot権限が必要な操作ができる事

    rootアカウントの無効化は上が全部できたのを確認してからにする。

  6. rootアカウントを無効にする
    xxxxx@dti-vps-srvXX:~$ sudo usermod -p '!' root
    [sudo] password for xxxxx:
    xxxxx@dti-vps-srvXX:~$
    

ここまでで以下の状態

通常起動時のrunlevelは2

xxxxx@dti-vps-srvXX:/etc$ runlevel
N 2

rc2.dの状態

xxxxx@dti-vps-srvXX:/etc/rc2.d$ ls -l /etc/rc2.d
total 4
-rw-r--r-- 1 root root 677 Jul 27  2012 README
lrwxrwxrwx 1 root root  18 Jun 11 08:05 S10sysklogd -> ../init.d/sysklogd
lrwxrwxrwx 1 root root  18 Jun 11 08:05 S20ajaxterm -> ../init.d/ajaxterm
lrwxrwxrwx 1 root root  24 Jun 11 08:05 S20modules_dep.sh -> ../init.d/modules_dep.sh
lrwxrwxrwx 1 root root  19 Jun 11 08:05 S20saslauthd -> ../init.d/saslauthd
lrwxrwxrwx 1 root root  17 Jun 11 08:05 S20vzquota -> ../init.d/vzquota
lrwxrwxrwx 1 root root  14 Jun 11 08:05 S75sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root  17 Jun 11 08:05 S91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root  18 Jun 11 08:05 S99rc.local -> ../init.d/rc.local
xxxxx@dti-vps-srvXX:/etc/rc2.d$

tcp/udpでlistenしてるプロセス

xxxxx@dti-vps-srvXX:/etc/rc2.d$ sudo netstat -a -n --program
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8022          0.0.0.0:*               LISTEN      334/python
tcp        0      0 0.0.0.0:xxxx            0.0.0.0:*               LISTEN      3129/sshd
tcp6       0      0 :::xxxx                 :::*                    LISTEN      3129/sshd
tcp6       0      0 :::443                  :::*                    LISTEN      404/apache2
tcp6       0      0 :::80                   :::*                    LISTEN      404/apache2

pythonはajaxtermです。

Leave a Reply

Your email address will not be published. Required fields are marked *