CentOS 7サーバーで実行されているOpenVPNでユーザーと管理者に別々の役割を定義する方法は? 具体的には、ユーザーのみが実行を許可し、管理者には、および両方を実行することをhttps
許可する必要があります。https
ssh
これまでの進捗状況:
翻訳中@garethTheRedが提案したリンクの指示、次のステップを定義しました。 1段階、2段階、3段階も完了しました。しかし、4番目のステップを完了する方法がわかりません。 誰かがiptablesからFirewalldにステップ4を変換し、他のステップを確認する方法を教えてください。
ステップ1(十分):ユーザーカテゴリに基づいて仮想IPアドレスマッピングを作成します。
Class Virtual IP range Allowed Services
employees 10.8.0.0/24 https
administrator 10.8.1.0/24 ssh, https
ステップ2(十分): /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
Specify client configuration directory to assign a fixed IP forAdministrator:
client-config-dir ccd
第三段階(十分):新しいディレクトリ/etc/openvpn/ccd
と新しい設定ファイルから/etc/openvpn/ccd/sysadmin
:
Define the fixed IP address for the Administrator VPN client:
mkdir ccd
cd ccd
nano sysadmin1
type the following into /etc/openvpn/ccd/sysadmin1:
ifconfig-push 10.8.1.1 10.8.1.2
第4段階https
(ユーザーだけで管理者のみができるように、ssh
ファイアウォールでこれをどのように実行しますかhttps
?):
First, define a static unit number for our tun interface:
dev tun0 //where does this go?
Establish firewall rules for the employees and administrator (convert these to firewalld):
# Employee rule // MUST ONLY BE ALLOWED TO https
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.66.4.4 -j ACCEPT
# Sysadmin rule //MUST BE ALLOWED TO ssh AND https
iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 10.66.4.0/24 -j ACCEPT
注:これを入力すると、firewall-cmd --list-all
これまでのファイアウォール構成全体の合計は次のように定義されます。
public (default, active)
interfaces: enp3s0
sources:
services: dhcpv6-client openvpn smtp
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
このユースケースに最適なセキュリティを提供するために必要な方法でファイアウォール設定を変更したいと思います。
上記の内容をどのように修正して機能させることができますか?
編集する:
@garethTheRedの有用な答えを読んだ後、3つの質問/観察があります。
1.) There is no `tun` device on the firewall, but yet I am able
to connect to the VPN from the client with
`openvpn --config /path/to/client.ovpn` with the firewall
configured only as shown by the results of `firewall-cmd --list-all`.
So why is it necessary to define a `tun` device in the firewall?
2.) `ip addr` shows that I was logged in as 10.8.0.6. How can I
force being logged in as a fixed address, such as 10.8.1.1 defined
in Step Three above?
3.) What privileges/access does a user really have when they log in to the
server via OpenVPN when the firewall is configured as shown in the
results of `firewall-cmd --list-all` above? Are they be able to do
anything other than https without a password anyway? ssh would
require knowledge of both a password and a username.
編集#2
@garethTheRedの非常に便利な回答で定義されている内部ゾーンでは、内部ゾーンのユーザーは次のサービスにアクセスできるように見えますdhcpv6-client
。この文書のユースケースでは。ipp-client
mdns
samba-client
ssh
https
したがって、この投稿のソリューションには次のものが含まれているようです。
1.) setting up rules blocking the `10.8.0.0/24` ip range from
`dhcpv6-client`, `ipp-client`, `mdns`, `samba-client`, and `ssh`,
while allowing access to `https`.
2.) retaining access by the `10.8.1.0/24` ip range to all services
defined in the internal zone.
3.) creating and installing separate client certificates for the
two classes of users (administrator and user)? Each class,
and therefore each certificate, must have a Canonical Name (CN)
that matches the names of config files added to `/etc/openvpn/ccd`.
Openvpn should then use the config file whose name matches the CN.
This config file should be set to configure the network address
that will be allocated to the clients in that class
@garethTheRed's words are used here in #3.
しかし、この3つはまだ行われなければなりませんか?これら3つをどのように達成しますか?
答え1
ゾーンを変更して追加できます。豊富なルールssh
特定の範囲を除くすべてのトラフィックをブロックします -従業員サブネット。
tun
すべてのゾーンを一覧表示して、インターフェイスがあるゾーンを見つけます。
firewall-cmd --list-all-zones | less
出力には次のような内容が表示されます。
internal (active)
interfaces: tun0
sources:
services: dhcpv6-client ipp-client mdns samba-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
tun
デバイス(tun0
上記の例では)がイーサネットアダプタと同じ領域にあることがわかります。これが機能している間に別々に保つと、管理が簡単になります。
ゾーンから不要なサービスを削除することは賢明ですinternal
。あなたの場合は、すべてのサービスを削除して次のものを追加ssh
してくださいhttp
。
firewall-cmd --zone=internal --permanent --add-service=http
firewall-cmd --zone=internal --permanent --remove-service=dhcpv6-client
削除する他のサービスに対して最後のコマンドを繰り返します。削除しないように注意してくださいssh
。これにより、external
ゾーンから重複サービスも削除されます。
tun
インターフェイスがあるゾーンのゾーン定義ファイルをコピーします/etc/firewalld/zones
。たとえば、tun
デバイスがInternal
ゾーンにある場合:
sudo cp /usr/lib/firewalld/zones/internal.xml /etc/firewalld/zones
コピーしたファイルを編集して閉じる前に、以下を追加してください</zone>
。
<rule family="ipv4">
<source invert="True" address="10.8.0.0"/>
<service name="ssh"/>
<reject/>
</rule>
最後に、firewall-cmd --reload
ルールを適用するために実行します。
警告する: それでも動作しない場合は、ただロックしてください。 :-o
代替オプション:
sshd
別の簡単なオプションは、与えられたネットワークアドレス()からの接続のみを許可するように設定することです10.8.0.0
。
より簡単なオプションは、VPNを完全に捨ててファイアウォールのみを使用することです。 (そしてもし)あなたの従業員(または外部ルーター)に静的IPアドレスがある場合は、設定するだけです。豊富なルールそのIPアドレスまたはネットワークアドレスのみがサービスにアクセスでき、ssh
他のすべてのIPアドレスは拒否されます。