Beckhoff#TwinCAT BSD Firewall Rules

前回TwinCAT/BSDでWinSCP Clientを使用しFileやりとりする方法を紹介しました。次はFirwall Rules機能を説明したいと思います。TwinCAT/BSDでは完全のFull-機能 Package Filter Firewallがついております。

Default設定ではわずかなIncoming/OutComing Connectionのみ接続できるようになっていますが、そのルール設定はConfiguration Filesとして保存されています。

そしてそのFileを以下のコマンドで開けます。

doas ee /etc/pf.conf.

もちろんUser定義もでき、そのpf.conf Fileを修正すればOKです。

注意するのはDefault上で ADS port 48898の暗号化なし通信が無効になっていることです。

Reference Link

TwinCAT/BSDに関連する記事はこちらへ↓

http://soup01.com/ja/category/beckhoff/twincat3/twincat-bsd/

Enable/Disable

FirewallはDefaultで有効になっていて様々なところで使用できます。たとえばテスト環境やセキュリティ向上など。

Enable Command

以下のコマンドを実行し再Loginする。

doas service pf start

Disable Comand

以下のコマンドを実行し再Loginする。

doas service pf stop

Auto-ReEnable

rc.conf file内で以下の記述があると再起動すれば自動的にEnableになります。

pf_enable=”YES” 

Test 

では実際にテストしてFirewallのRulesを変更してみますね。みなさんはTwinCATのRuntimeにAdd Remote Routeするときに、そのSecure ADSのCheckboxをCheck外したことありますか?

暗号化ADSを使用するかどうかをOptionです。

まずこのCheckboxを外し、Add Remote Routeしてみます。

そうするとShellからADS TCP port 48898 はTargetに拒否されたとエラーメッセージが出てきます。最初にも言いましたが、TwinCAT/BSDはDefault上で ADS port 48898の暗号化なし通信が無効になっています。

Check The pf.conf

以下のコマンドでpf.confの設定を見てみます。

cat /etc/pf.conf

見てる通り48898 の記述がありません。

# Copyright (C) 2018 – 2021 Beckhoff Automation GmbH & Co. KG
# Customized Packet Filter – /etc/pf.conf

set skip on lo0
scrub in all

# allow dynamic NAT configuration (e.g. luemuctl)
nat-anchor “bhf-nat/*”

# block all incoming and allow all outgoing traffic
block return in all
pass out quick all

# allow icmp6
pass in quick proto icmp6 all

# allow icmp4 (ping)
pass in quick inet proto icmp all icmp-type { echoreq, unreach }

# allow ssh
pass in quick proto tcp to port ssh

# allow dynamic configuration for Beckhoff specific services
anchor bhf
load anchor bhf from “/etc/pf.conf.d/bhf”

Edit

この記述を記入し48898を有効にします。

pass in quick proto tcp to 

port 48898 synproxy state

# Copyright (C) 2018 – 2021 Beckhoff Automation GmbH & Co. KG
# Customized Packet Filter – /etc/pf.conf

set skip on lo0
scrub in all

# allow dynamic NAT configuration (e.g. luemuctl)
nat-anchor “bhf-nat/*”

# block all incoming and allow all outgoing traffic
block return in all
pass out quick all

# allow icmp6
pass in quick proto icmp6 all

# allow icmp4 (ping)
pass in quick inet proto icmp all icmp-type { echoreq, unreach }

# allow ssh
pass in quick proto tcp to port ssh

# allow dynamic configuration for Beckhoff specific services
anchor bhf
load anchor bhf from “/etc/pf.conf.d/bhf”


#allow encrypted ADS port 48898
pass in quick proto tcp to
port 48898 synproxy state

Test it!

最後はPythonからpyadsからテストしてみます。

もちろんTwinCATからAdd Remote RouteでもOKです。

pyads通信の記事:

Beckhoff#TwinCAT ADSデバイスとPythonで通信する

Code

import pyads

SENDER_AMS = ‘41.167.92.31.1.1’
PLC_IP = remote_ip
PLC_USERNAME = ‘Administrator’
PLC_PASSWORD = ‘abcdefsg’
ROUTE_NAME = ‘RouteToMyPC’
HOSTNAME = PLC_IP

pyads.open_port()
pyads.set_local_address(SENDER_AMS)
pyads.add_route_to_plc(SENDER_AMS, HOSTNAME, PLC_IP, PLC_USERNAME, PLC_PASSWORD, route_name=ROUTE_NAME)
pyads.close_port()

with pyads.Connection(remote_ads, pyads.PORT_TC3PLC1, remote_ip) as plc:
    value=plc.read_by_name(‘GVL.b1′, pyads.PLCTYPE_BOOL)
    print(value)

Result

GVL.b1はいまFalseなので、Falseが表示されていますね。

False

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする