Firewalldルールは、2つのユーザーグループをOpenVPNの他のアプリケーションにルーティングします。

Firewalldルールは、2つのユーザーグループをOpenVPNの他のアプリケーションにルーティングします。

CentOS 7従業員と管理者にhttpsアクセスを許可すると同時に、管理者以外のすべての人へのSSHアクセスをブロックするようにリモートサーバーでOpenVPNを正常に設定しました。これは、appONEが入力された従業員に提供されるとうまく機能しますhttps: / 10.8.0.1suppliersしかし、VPNにログインして入力するときに、3番目のグループがhttpsアクセスを別のアプリケーション(appTWOと呼ばれる)にルーティングできるように、ファイアウォールにどのルールを追加する必要がありますかhttps: / 10.8.0.1

@garethTheRedの提案によると、ポート80でappONEを実行し、ポート81でappTWOを実行するのが答えだと思います。これには、ベンダーのIP範囲をポート81にルーティングし、従業員のIP範囲をポート80に指定するファイアウォールルールのみが必要です。しかし、これを達成するにはファイアウォールルールをどのように定義する必要がありますか?

これまで私がしたことは次のとおりです。

必要なユーザーカテゴリ、IP範囲、およびサービスを次のようにまとめました。

Class            Virtual IP range       Allowed Services  
employees        10.8.0.0/24            https (but only appONE)
administrator    10.8.1.0/24            ssh, https  
suppliers        10.8.2.0/24            https (but only appTWO)

次に、以下を追加しました/etc/openvpn/server.conf

define the Employee IP address pool:
server 10.8.0.0 255.255.255.0

Add a route for the System Administrator IP range:
route 10.8.1.0 255.255.255.0

Add a route for the Supplier IP range:
route 10.8.2.0 255.255.255.0

Specify client configuration directory to assign a fixed IP forAdministrator:
client-config-dir ccd

/etc/openvpn/ccd/suppliersその後、次の手順で新しいプロファイルを作成しました。

nano suppliers
type the following into /etc/openvpn/ccd/suppliers:
ifconfig-push 10.8.2.1 10.8.2.2

OpenVPN 構成が最初に作成されたことを考慮するとこのチュートリアルの指示を使用してください/etc/openvpn/easy-rsasource ./vars次へと入力し、次に入力して証明書を生成しました./build-key suppliers。 (これはリファレンスチュートリアルの2つのコマンドです。)結果をクライアントシステムにコピーし、次のsuppliers.crtファイルsuppliers.keysuppliers.ovpn生成しました。

client
dev tun
proto udp
remote my.SERVER.ip.addr 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
ca /path/to/ca.crt
cert /path/to/suppliers.crt
key /path/to/suppliers.key

その後、クライアントシステムの端末に次のように入力して、クライアントからVPNにログインしようとしました openvpn --config /path/to/suppliers.ovpn。端末に印刷された最後の2行は次のようになるため、端末の結果はVPN接続が確立されているように見えます。

Tue Mar 10 15:39:50 2015 /usr/sbin/ip route add 10.8.0.1/32 via 10.8.2.2
Tue Mar 10 15:39:50 2015 Initialization Sequence Completed

正しいIPに正常に接続されているようですが、10.8.2.2まだ接続されていません。試みたときに応答を受信できませんでしたhttps : / 10.8.0.1

OpenVPNが機能していることを確認するために、クライアントに次のように入力し、期待どおりにサーバーに正常に接続openvpn --config /path/to/administrators.ovpnできました。httpsssh

サーバーに入力すると、firewall-cmd --list-all-zones結果のアクティブ領域は次のようになります。

internal (active)
  interfaces: tun0
  sources: 
  services: dhcpv6-client https ipp-client mdns samba-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
rule family="ipv4" source NOT address="10.8.1.1" service name="ssh" reject

public (default, active)
  interfaces: enp3s0
  sources: 
  services: dhcpv6-client openvpn
  ports: 
  masquerade: yes
  forward-ports: 
  icmp-blocks: 
  rich rules: 

それでは、サプライヤアカウントはなぜhttpsになることができないのですか?ベンダーhttps要求が1つのポートabcにルーティングされ、従業員と管理者https要求が別のポートxyzにルーティングされるようにファイアウォールルールを定義するにはどうすればよいですか?


編集する


@garethTheRedの提案に従ってip routeCLIENTに入力し、次のような結果を得ました。

default via 10.0.0.1 dev wlp1s0  proto static  metric 1024 
10.0.0.0/24 dev wlp1s0  proto kernel  scope link  src 10.0.0.2 
10.8.0.1 via 10.8.2.2 dev tun0 
10.8.2.2 dev tun0  proto kernel  scope link  src 10.8.2.1   

サーバーに結果を入力してくださいip route

default via my.server.ip.1 dev enp3s0  proto static  metric 1024 
10.8.0.0/24 via 10.8.0.2 dev tun0 
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1 
10.8.1.0/24 via 10.8.0.2 dev tun0 
my.server.ip.0/24 dev enp3s0  proto kernel  scope link  src my.server.ip.addr 

my.server.ipmy.server.ip.addr全4ブロックサーバーのIPアドレスはで表示されますmy.server.ip.addr。対照的に、最初の3つのブロックのみで表示されますmy.server.ip

内容はnano /etc/openvpn/ccd/administrators一行ですifconfig-push 10.8.1.1 10.8.1.2

上記の2つのccdファイルは/etc/openvpn/ccd/administratorsccdとccdのみです。/etc/openvpn/ccd/suppliers


編集#2


@garethTheRedの指示に従って、従業員のIPアドレス範囲を入力してappONEにログインできますが、https : / 10.8.0.1管理者はhttpsアクセス権がなくなり、ベンダーはhttpsアクセス権がなくなります。プロバイダに接続するときとhttps : / 10.8.0.1:444を入力すると、私のhttpsリクエストは拒否されますhttps : / 10.8.0.1

注:この問題を診断するためにトピックから逸​​脱しているように見えるようにしなければなりませんでした。必要に応じてこのEDIT#2の内容を別の質問で投稿したいのですが、今はファイアウォールの設定がまだ問題である可能性があるので、ここに置きます。これらの他のトピックが問題の原因であるという証拠はありません。私は実写にそれらを含めます。

プロバイダのhttpsアクセスが不足しているのは、httpdリバースプロキシの背後にあるtomcatが提供するアプリケーションが原因である可能性があると推測します。そのため、他の記事の指示に従って、tomcatにポート8081を介してappTWOを提供し、ポート8080を介してappONEを提供し続けました。 Tomcatが両方のアプリケーションを正しく提供していることを確認するために、Firewalldのパブリックエリアでポート8080と8081を開きました。

次に、httpdとtomcatを接続するリバースプロキシのコードを確認しました。

リバースプロキシは、/etc/httpd/conf.d/mydomain.com.conf次の内容を含む次のファイルによってhttpdに定義されます。

<VirtualHost *:443>
  ServerName www.mydomain.com
  ServerAlias mydomain.com
  ErrorLog /path/to/mydomain_com_error.log
  CustomLog /path/to/mydomain_com_requests.log combined
  SSLEngine on
  SSLProxyEngine on
  SSLCertificateFile /path/to/localhost.crt
  SSLCertificateKeyFile /path/to/localhost.key
  ProxyPass / ajp://my.server.ip.addr:8009/
  ProxyPassReverse / ajp://my.server.ip.addr:8009/
</VirtualHost>

mydomain.com はコンピュータのホスト名ですが、https と http がパブリックエリアで閉じられているため、インターネットから mydomain.com に到達するトラフィックはありません。 OpenVPNユーザーのみがWebアプリケーションにアクセスでき、内部ゾーンでのみ可能です。

Tomcatのserver.xmlはリバースプロキシを定義します<Connector port="8090" protocol="AJP/1.3" redirectPort="8443" />

/etc/httpd/conf.d/mydomain.com.confポート444でappTWOの別々のリバースプロキシを試すために、上記のコードセクションの後に次のものを追加しました。

#I added this entire following section as a test for this question
<VirtualHost *:444>
  ServerName www.mydomain.com
  ServerAlias mydomain.com
  ErrorLog /path/to/mydomain_com_error.log
  CustomLog /path/to/mydomain_com_requests.log combined
  SSLEngine on
  SSLProxyEngine on
  SSLCertificateFile /path/to/localhost.crt
  SSLCertificateKeyFile /path/to/localhost.key
  ProxyPass / ajp://my.server.ip.addr:8009/
  ProxyPassReverse / ajp://my.server.ip.addr:8009/
</VirtualHost>

これがserver.xmlの両方のサービスで定義されていることを確認しましたが、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />OpenVPNにプロバイダとしてログインしてもhttpsを使用できません。

次に、server.xmlでポート8010を試しましたが、/etc/httpd/conf.d/mydomain.com.confまだプロバイダとしてhttpsアクセスを取得できませんでした。

ようやく試してみました。

[root@mydomain ]# telnet localhost 8010
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
[root@mydomain ]# telnet localhost 8009
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

ポート8010がリバースプロキシに対して開かれていないため、プロバイダがappTWOにアクセスできないのが問題なのかどうか疑問に思います。

しかし、httpd.confで次のエントリのコメントを外してhttps : / 10.8.0.1:444再試行しましたが、それでも拒否されてファイアウォールに問題があるかどうか疑問に思います。

<Directory "/var/www">
  AllowOverride None
  # Allow open access:
  Require all granted
</Directory>

注:httpd.serviceを再起動しませんでした。

少なくともベンダーがhttpsを介して静的HTMLを提供できるようにすることができれば、ファイアウォールの問題は解決されたと見なすことができ、必要に応じてリバースプロキシの問題を個別に公開できます。


編集#3


@garethTheRedの編集に従って、内部領域からおよびを削除しましたhttps。内部領域の豊富な規則https-app2も削除しました。reject新しい強化ルールを追加しましたが、accept管理者にhttpsおよびを表示する権限を与えましたhttps-app2。これを入力すると、結果は次のようになりますfirewall-cmd --list-all --zone=internal

internal (active)
  interfaces: tun0
  sources: 
  services: dhcpv6-client ipp-client mdns samba-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
    rule family="ipv4" source address="10.8.1.0" service name="https" accept
    rule family="ipv4" source address="10.8.1.0" service name="https-app2" accept
    rule family="ipv4" source address="10.8.2.0" service name="https-app2" accept
    rule family="ipv4" source NOT address="10.8.1.1" service name="ssh" reject
    rule family="ipv4" source address="10.8.0.0" service name="https" accept

<VirtualHost *:444>その部分も/etc/httpd/conf.d/mydomain.com.conf写真のように保ちました。編集#2以上。ただし、以下に説明するテストを実行する前に、その情報を入力してくださいsystemctl stop httpd.servicesystemctl start https.service

ただし、どのアカウントでもhttpsまたはhttps-app2としてログインできなくなりました。

たとえば、と入力すると、openvpn --config /path/to/employees.ovpn端末は次のように応答します。

Thu Mar 12 09:46:22 2015 /usr/sbin/ip route add 10.8.0.1/32 via 10.8.0.9
Thu Mar 12 09:46:22 2015 Initialization Sequence Completed

ログインしているようですが、https : / 10.8.0.1両方ともhttps : / 10.8.0.1:444Firefoxで「接続できません」というエラーが発生します。

同様に、入力openvpn --config /path/to/suppliers.ovpn結果は次のようになります。

Thu Mar 12 09:45:19 2015 /usr/sbin/ip route add 10.8.0.1/32 via 10.8.2.2
Thu Mar 12 09:45:19 2015 Initialization Sequence Completed

しかし、https : / 10.8.0.1引き続きhttps : / 10.8.0.1:444Firefoxで「接続できません」というエラーが発生しました。

また、入力openvpn --config /etc/openvpn/administrators.ovpn結果は以下の通りです。

Thu Mar 12 09:15:36 2015 /usr/sbin/ip route add 10.8.0.1/32 via 10.8.1.2
Thu Mar 12 09:15:36 2015 Initialization Sequence Completed

ただし、https : / 10.8.0.1その後もhttps : / 10.8.0.1:444Firefoxで「接続できません」というエラーが発生します。

はいOpenVPN に管理者として接続すると可能であるため、破損しています。 ssh [email protected]httpshttps-app2

答え1

デフォルトhttpsポート(443)でapp1を実行し、別のポート(444)でapp2を実行します。 SNPPを使用しない限り、この場合は別の無料ポートを選択する必要があります。

https.xmlのファイル/usr/lib/firewalld/servicesをに複製し、/etc/firewalld/services名前をに変更します(例:)https-app2.xml

この新しいファイルを編集し、ポートを444

https(およびhttps-app2)が削除されていることを確認してくださいinternal zone

ランニング:

firewall-cmd --zone=internal --add-rich-rule='rule family="ipv4" source address="10.8.0.0/24" service name="https" accept'
firewall-cmd --zone=internal --add-rich-rule='rule family="ipv4" source address="10.8.0.0/24" service name="https-app2" accept'
firewall-cmd --zone=internal --add-rich-rule='rule family="ipv4" source address="10.8.1.0/24" service name="https" accept'
firewall-cmd --zone=internal --add-rich-rule='rule family="ipv4" source address="10.8.2.0/24" service name="https-app2" accept'

これは永続的ではないため、機能する場合は再実行して--permanent接続する必要があります。

関連情報