Linux(CentOS 6) - iptablesの設定を変更し、ftpでのアクセスを許可する
minimal install(ミニマルインストール)したCentOS 6.4は、iptables(ファイアウォール)の設定が自動的に有効になっているため、この設定を変更しない限り、ftpサービスが起動していてもCentOSの外のネットワークからftpでのアクセスができない。
この問題を解決するには、(1)iptablesを無効にするか、(2)iptablesにftp(20、21番ポート)でのアクセスを許可する設定を追加すればよい。
以下は(2)の作業を行った時のメモ。
[root@test ~]# iptables -L -n --line-number ←iptablesの設定をnum(ファイアウォールのルール番号)およびポート番号付で一覧表示する。
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
ftpのルールは、ルール番号5に挿入して追加することとする。
[root@test ~]# iptables -I INPUT 5 -p tcp --dport 20 -j ACCEPT ←ftp(20番ポート)へのアクセスは許可する。
[root@test ~]# iptables -I INPUT 5 -p tcp --dport 21 -j ACCEPT ←ftp(21番ポート)へのアクセスは許可する。
[root@test ~]# iptables -L -n --line-number ←iptablesの設定をnum(ファイアウォールのルール番号)およびポート番号付で一覧表示する。
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
[root@test ~]# cat /etc/sysconfig/iptables ←iptablesの設定ファイル(テキスト)の中身を確認する。
# Generated by iptables-save v1.4.7 on Mon May 6 01:23:59 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [157:40257]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon May 6 01:23:59 2013
[root@test ~]# /etc/rc.d/init.d/iptables save ←設定したiptablesの情報を保存する。この作業をしないと、iptables再起動時またはOS再起動時に、今回設定したiptablesの内容が消えてしまう。
iptables: ファイアウォールのルールを /etc/sysconfig/iptable[ OK ]中:
[root@test ~]# /etc/rc.d/init.d/iptables restart ←iptablesを再起動する。
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]
[root@test ~]# cat /etc/sysconfig/iptables ←iptablesの設定ファイル(テキスト)に、設定が追記されていることを確認する。
# Generated by iptables-save v1.4.7 on Mon May 6 12:22:06 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [181:16096]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon May 6 12:22:06 2013
[root@test ~]# iptables -L -n --line-number ←iptablesを再起動しても、設定が失われていないことを確認する。
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination