接続時のセキュリティの設定(CentOS 6)

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

環境

CentOS 6.10
CentOS 7はこちら

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 の設定