はじめてのさくらVPS

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

はじめてのさくらVPS

はじめてさくらインターネットのVPSを使用する際に必要となる情報を初心者でもわかりやすくまとめていきます。

iptables(ファイアウォール)の設定

初期設定

スポンサードリンク

iptablesはパケットフィルタリング型のファイアウォールで、サーバー接続時の通信ルールを設定できます。

簡単に説明すると「使用する入り口は開けて」「使用しない入り口は閉じる」ということです。

それでは簡易的な設定を紹介します。

iptablesの確認

iptables -Lで現在のルールを確認します。以下の表示は何も設定されていない状態です。

[hoge@wwwXXXXXX ~]$ sudo 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    

ルールの設定

サーバー攻撃対策のルール

sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

上から順に以下の設定をしています。

  • データを持たないパケットの接続を破棄する
  • SYNflood攻撃と思われる接続を破棄する
  • ステルススキャンと思われる接続を破棄する

各種プロトコルごとにポート番号の設定

sudo iptables -A INPUT -p tcp -m tcp --dport (ポート番号) -j ACCEPT

主なポート番号(使わないポートは開けないようにしましょう)

プロトコルポート番号
HTTP80
HTTPS(SSL)443
SMTP25
SMTP(SSL)465
POP3110
POPS(SSL)995
IMAP143
IMAP(SSL)993
SSH22
FTP20,21

通信の許可

sudo iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

通信の拒否

許可した通信以外のサーバーに受信するパケットを拒否、サーバーから送信するパケットを許可します。

sudo iptables -P INPUT DROP 
sudo iptables -P OUTPUT ACCEPT

設定の保存

sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[   OK  ]

設定ファイルの確認

sudo cat /etc/sysconfig/iptablessudo iptables -Lで、設定内容が反映されている確認します。

sudo cat /etc/sysconfig/iptables

[sudo] password for XXX: 
# Generated by iptables-save v1.4.7 on Fri Sep  2 17:52:56 2016
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:464]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT 
COMMIT
# Completed on Fri Sep  2 17:52:56 2016
$ sudo iptables -L

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE 
DROP       tcp  --  anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW 
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:urd 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3s 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imap 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imaps 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     

以上で設定完了です。