読者です 読者をやめる 読者になる 読者になる

ポートスキャン対策にsshポートを隠してみる。-AWS環境の踏み台(Bastion)サーバの初期設定

【スポンサーリンク】

参考: d.hatena.ne.jp

AWS EC2のサーバ基本設定をする。

  1. タイムゾーンUTCからJSTに変更する。
    $ sudo cp -i /usr/share/zoneinfo/Japan /etc/localtime
    2016年  1月 24日 日曜日 23:06:23 JST
  2. 日本語設定に変更する。
    $ sudo vi /etc/sysconfig/i18n
    LANG=ja_JP.UTF-8
  3. Amazon Linuxのデフォルトのセキュリティ設定を確認する。 Amazon Linuxでは、ファイアーウォールなどセキュリティ設定は、 基本にSecurityGroups側で行うもののため、SELinux、iptableはデフォルトで無効化されている。
    • SELinuxが無効化されていることを確認する。
      $ getenforce
      Disabled
    • iptablesも無効化されていることを確認する。 (chkconfig上は自動起動するようになっている)
      $ sudo /etc/init.d/iptables status
      iptables: ファイアウォールが稼働していません。
      
      $ chkconfig iptables --list
      iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
  4. すべてのソフトウェアパッケージを最新の状態にする。
    $ sudo yum update -y

踏み台(bastion)サーバのsshポートを隠す。

セキュリティ対策としてのポートスキャン対策。踏み台サーバのsshポートを変更し外部からのポートスキャン時に見つからないような設定をしてみる。

  1. ポートスキャン対策として、ssh用ポート番号を変更する。
    $ sudo vi /etc/ssh/sshd_config
    #Port 22
    Port 9100
  2. 設定ファイルの構文をチェック。エラーが表示されなければOK。
    $ sudo sshd -t
  3. sshの設定を反映する。
    $ sudo service ssh restart
    Stopping sshd:                                   [  OK  ]
    Starting sshd:                                   [  OK  ]
  4. セキュリティグループから22(ssh)用を除いて、tcpの9100を加える。 f:id:nyasu0123:20160515140736p:plain ここまでの状態で、nmapでスキャンすると以下のような感じに。 22でOpenしてるように見えるがセキュリティグループで除かれているので接続できない。
    $sudo nmap -n -P0 -sS -p 22-23 xxx.xxx.xxx.xxx
    Starting Nmap 7.11 ( https://nmap.org ) at 2016-05-01 22:29 JST
    Nmap scan report for xxx.xxx.xxx.xxx
    Host is up (0.012s latency).
    PORT   STATE    SERVICE
    22/tcp open     ssh
    23/tcp filtered telnet
    9100も元々プリンタポート用のため、nmapでスキャンされた時にsshとして見えないので、攻撃側を惑わせる可能性がある。
    $ sudo nmap -n -P0 -sS -p 9099-9100 xxx.xxx.xxx.xxx
    Starting Nmap 7.11 ( https://nmap.org ) at 2016-05-01 23:49 JST
    Nmap scan report for xxx.xxx.xxx.xxx
    Host is up (0.0089s latency).
    PORT     STATE    SERVICE
    9099/tcp filtered unknown
    9100/tcp open     jetdirect
    でも以下オプションだと見えちゃうよ
    $ sudo nmap -n -P0 -sV -p 9099-9100 --allports xxx.xxx.xxx.xxx
    Starting Nmap 7.11 ( https://nmap.org ) at 2016-05-01 23:54 JST
    Nmap scan report for xxx.xxx.xxx.xxx
    Host is up (0.010s latency).
    PORT     STATE    SERVICE VERSION
    9099/tcp filtered unknown
    9100/tcp open     ssh     OpenSSH 6.6.1 (protocol 2.0)
    AWS上でペネトレーションテストをする場合は、事前申請が必要なので注意すること! aws.amazon.com
  5. 多段sshの設定を変更する。
    $ vi .ssh/config
    ServerAliveInterval 60
    
    Host wp1bastion
    HostName xxx.xxx.xxx.xxx
    User ec2-user
    Port 9100
    IdentityFile /Users/xxx/wp1-key.pem
  6. 接続確認する。以下でつなげられればOK
    $ ssh wp1bastion
    $ ssh wp1weba

ここまで