接続時のセキュリティの設定

VPS接続時のセキュリティを高めるため、SSHのポート設定とファイヤーウォールの設定を行います。

1.SSHのポート変更

SSHのポート番号を変更します。
root権限でコンソールに vi /etc/ssh/sshd_config と入力し、Enterキーを押します。

[root@ ~]# vi /etc/ssh/sshd_config (viエディタでファイルを編集)

画面が切り替わり、上から12行目の #Port 22 と記載されている行頭の「#」を削除し、22のポート番号を任意の番号(1024~65535の間)に変更します。ここでは例として、ポート番号を1111に変更します。
変更後、Escキーで編集を終了し、:wqで設定を保存します。

#Port 22

(↓行頭にある「#」を削除、22を任意のポート番号に変更)

Port 1111

編集した内容を反映させるため、sshを再起動させます。
コンソールに /etc/init.d/sshd restart を入力し、Enterキーを押します。

[root@ ~]# /etc/init.d/sshd restart (ssh再起動)

2.ファイヤーウォールの設定

次に、ファイヤーウォールの設定です。
まずは、現在のファイヤーウォールの設定を確認してみます。
root権限のまま iptables -L と入力します。
特にルールが記載されていない場合、下記のとおり表示されます。

[root@ ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

root権限のままコンソール画面にファイヤーウォールの設定を下記コンソール画面の通り入力していきます。
※設定内容について説明しておきます。

  • iptables -P FORWARD DROP 【FORWARDは使用しない】
  • iptables -P INPUT ACCEPT 【一度、全て許可にする】
  • iptables -F 【デフォルト設定を全て削除】
  • iptables -A INPUT -i lo -j ACCEPT 【自らのパケットは全て許可】
  • iptables -A INPUT -p tcp –dport 22 -j ACCEPT 【SSH許可】
  • iptables -A INPUT -p tcp –dport 1111 -j ACCEPT 【先ほど設定したSSHポート番号の許可】
  • iptables -A INPUT -p tcp –dport 20 -j ACCEPT 【FTP接続許可】
  • iptables -A INPUT -p tcp –dport 21 -j ACCEPT 【FTP接続許可】
  • iptables -A INPUT -p tcp –dport 5000:5029 -j ACCEPT 【FTP接続許可(任意のポート番号を設定してある場合)】
  • iptables -A INPUT -p tcp –dport 80 -j ACCEPT 【http接続許可】
  • iptables -A INPUT -p tcp –dport 443 -j ACCEPT 【https接続許可】
  • iptables -A INPUT -p tcp –dport 110 -j ACCEPT 【POP受信メール許可】
  • iptables -A INPUT -p tcp –dport 25 -j ACCEPT 【SMTP送信メール許可】
  • iptables -A INPUT -p tcp –dport 587 -j ACCEPT 【SUBMISSIONポート開放】
  • iptables -A INPUT -p tcp –dport 5432 -j ACCEPT 【PostgreSQLポート開放】
  • iptables -A INPUT -p tcp –dport 53 -j ACCEPT 【DNS関連】
  • iptables -A INPUT -p udp –dport 53 -j ACCEPT 【DNS関連】
  • iptables -A INPUT -p icmp -j ACCEPT 【PING許可】
  • iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 【TCP接続開始と応答、FTPデータ等許可】
  • iptables -P INPUT DROP 【設定以外のパケット拒否】
[root@ ~]# iptables -P FORWARD DROP
[root@ ~]# iptables -P INPUT ACCEPT
[root@ ~]# iptables -F
[root@ ~]# iptables -A INPUT -i lo -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 1111 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 5000:5029 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 587 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
[root@ ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
[root@ ~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@ ~]# iptables -A INPUT -p icmp -j ACCEPT
[root@ ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@ ~]# iptables -P INPUT DROP

最後にファイヤーウォールの設定を反映させます。

[root@ ~]# service iptables save (設定内容の保存)
[root@ ~]# service iptables restart (ファイヤーウォールの再起動)

以上で、SSHのポート設定とファイヤーウォールの設定は完了です。
今後、リモートコンソールからポート番号22では接続できなくなりますので、前項「1.SSHのポート変更」で設定した任意のポート番号をリモートコンソールに入力して接続してください。

【参考サイト】サーバーを作るたびにやる iptables の設定