各サービスを構築し、正常に動作しているらしいにも関わらず通信が出来ない(接続できない)等で悩まされている方は多々おられると思います。
代表的なのが、SSH・telnet・FTP・HTTPやSMTPなどが挙げられます。
Fedoraにはインストール時にファイアウォールの設定があり、大概の方は「セキュリティ重視!!」と言うことでファイアウォールを有効にしていると思います。
実は、このファイアウォールが有効になっていた事が仇となり通信できない場合があるのです。
(勿論、要因は他にもあるかもしれません。設定ミス等々・・・)
画面上のファイアウォールを有効にして、以下の「リモートログイン(SSH)」「Webサーバ(HTTP,HTTPS)」「ファイル転送(FTP)」「メールサーバ(SMTP)」のチェックボックスを外してしまった場合は、そのサービスへの通信が遮断されてしまい接続できなくなります。
また、上記以外のポートも通信する事が出来ません。
インストール時にファイアウォールを有効にしてしまっても、いつでも有効/無効に切り替える事が可能です。
一度、以下の手順でファイアウォールを無効にして動作確認する事をお勧めします。
ファイアウォールの設定 # system-config-securitylevel または # system-config-firewall-tui ファイアウォールの設定画面が開きます。 「セキュリティレベル:」を「(*)無効」にして「OK」を押下します。 |
余談:この設定結果は「/etc/sysconfig/iptables」に反映されています。
# cat /etc/sysconfig/iptables # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT |
下記のようにコマンドを実行して確認すると、有効化されて起動していることがわかります
# systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since 月 2014-07-14 11:25:48 JST; 4s ago Main PID: 46576 (firewalld) CGroup: /system.slice/firewalld.service └─46576 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 7月 14 11:25:48 centos.kajuhome.com systemd[1]: Started firewalld - dynamic firewall daemon. |
ファイアウォールの停止 # systemctl stop firewalld.service ファイアウォールの無効化 # systemctl disable firewalld.service rm '/etc/systemd/system/basic.target.wants/firewalld.service' rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' 設定後の確認 # systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled) Active: inactive (dead) |
SELinux(Security-Enhanced Linux)とはLinuxカーネルの セキュリティ拡張モジュールでプロセスの監視や制御などを行います。
こちらもインストール時には「有効」がデフォルトになっており、構築後に思わぬ弊害になりかねません。
実は私はこの設定を見落として「有効」のまま構築後、Webサーバがアクセス拒否されかなり悩まされました。確実に動作する事が確認できてから「有効」にした方が無難です。
(私は、現在でも「無効」のまま運用しています。)
SELinux設定ファイルの変更 # vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUXを無効「disabled」にします。 SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted SELINUXの設定内容 enforcing :SELinuxを有効にする。 permissive:すべての拒否に関する警告をログ出力する。(セキュリティポリシは適用しない) disabled :SELinuxのセキュリティ制御を無効にする。 設定を反映するにはリブートする必要があります。 # reboot |
SELinux が現在どの様な状態で動作しているか確認 # getenforce Disabled 出力結果の意味 Enforcing :SELinux有効 Permissive:SELinux有効。但し、セキュリティポリシ違反でも実行は許可 Disabled :SELinux無効 |