CentOS7でtomcat 8080ポートをこじ開ける話

まだ、enforce系の調査を終えていませんので悪しからず
今回はCentOS7ではtomcatポート(8080)ポートにアクセス出来ないのでこじ開ける方法をまとめました

正直、80ポートからajpすれば?と思われるでしょう、運用ではそうなので空いていないのです。今回ターゲットとした環境は開発環境…しかも別パッケージサービスが80ポートを占有しておりajpも仕込めませんでしたので8080を直接触ってもらう運用にしました

今回は検証用という事でVagrant環境で作りました。

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "forwarded_port", guest: 8080, host: 8888
end

今回は8080もろだしではなく8888ポートをサービス口としてみました

次にお約束とtomcatのインストール

vagrant up
vagrant provision
vagrant ssh
$ sudo yum -y update
$ sudo yum -y upgrade
$ sudo yum -y install tomcat

インストール内容のチェック…

$ java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

$ tomcat version
Server version: Apache Tomcat/7.0.76
Server built:   Nov 16 2020 16:51:26 UTC
Server number:  7.0.76.0
OS Name:        Linux
OS Version:     3.10.0-1127.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_272-b10
JVM Vendor:     Red Hat, Inc.

ちょい古いですが、今回は無視!

あと、、CATALINA系のデフォルト状態

INFO: CATALINA_BASE:         /usr/share/tomcat
INFO: CATALINA_HOME:         /usr/share/tomcat

ここまで来ると動きます

$ sudo service tomcat start
Redirecting to /bin/systemctl start tomcat.service

大人気8080ポートなのでケンカなどしますが、その場合は
$ cat /etc/tomcat/server.xml ら辺で修正してください。
Parmission と言われましたら

setenforce 0

で、SELinuxを無効にしてください

実はVagrantはこのままだと、疎通可能なのですが、サーバの場合NGになります。
本番と同じ状態、firewallを有効にします。

$ sudo service firewalld restart
Redirecting to /bin/systemctl start firewalld.service

この状態だと疎通できなくなりました。
Firewallの状態を確認すると

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

servicesがdhcpv6-clientとsshとなっており、疎通できませんね。
ここにtomcatを追加します

まずは定義ファイルを作成します

/etc/firewalld/services/tomcat.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Tomcat</short>
  <description>Tomcat HTTP Server</description>
  <port protocol="tcp" port="8080"/>
</service>

ファイルを読み取り、とりあえずfirewallを再起動させます
再起動は要らないかも…

# firewall-cmd --permanent --add-service=tomcat
# systemctl restart firewalld.service

firewallの状態を確認します

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh tomcat
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

無事にservicesにtomcatが追加されましたね。

疎通を確認すると無事サービス開始!! … 404ならOKですwデフォルトページないのでw

最後にtomcatを起動時有効にすれば、終了です

$ sudo systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

今回はCentOS7のFirewall勉強用にしましたが… apacheとかnginxとかで一度受けてから内部で投げる方が良いですねw