ネットワーク境界保護のオ​​ープンソースUTM

こんにちは、Khabrovchans!



今日は、オープンソースソリューションに基づいて小規模組織のネットワーク境界を保護するためのデバイスを作成した経験を共有したいと思います。FirewallBuilder GUIを備えた標準Linux NETFilterファイアウォール、Snorby WebインターフェイスとOpenVPNリモートアクセスゲートウェイを備えたSuricata侵入検知および防止システム仮想マシン。



この記事が、若い管理者がオープンソースネットワークセキュリティソリューションをインストールするときに発生する可能性のある問題を解決するのに役立つことを願っています。



猫の下で興味のある人を招待します。



何をどこにインストールするか



ファイアウォール、IPS、VPNゲートウェイを組み合わせたUTMソリューション(UTMとは、 こちらをご覧ください )を収集します。



インストールおよび構成手順は次のとおりです。

•Snorby(SuricataのWebベースの監視インターフェイス)、barnyard2(SuricataとSnorby間の通信ユーティリティ)、およびSuricata(実際にはIPS自体)のインストールと構成。

•Firewall Builder(NETFilterグラフィカル構成インターフェイス)のインストール、ファイアウォールポリシー(ACLおよびNAT)の構成。

•OpenVPNサーバーとクライアントをインストールして構成します。



セキュリティソリューション自体(NETFilter、Suricata、OpenVPN)は、一種の「クラシック」で非常に一般的であるため選択されました。必要に応じて、それらのセットアップと操作に関する多くの情報を見つけることができます。 グラフィカルインターフェイスは、構成と監視の利便性のためにのみインストールされます。必要がなければ、それらを使用せずに実行できます。



UTMソリューションのプラットフォームは、Ubuntu 14.04 OSが搭載された仮想サーバーで、次の構成になります。

•4つのコア。

•4 GBのRAM。

•40 GBのハードドライブ。



つまり 小規模な組織のネットワーク境界を保護する問題を解決するには、特性に関して最も平均的なサーバーが適しています。



インストールSuricata、Snorby、barnyard2



開始する前に、アップグレードすることをお勧めします。

sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
      
      





必要なパッケージをインストールします。

 sudo apt-get install gcc g++ build-essential libssl-dev libreadline6-dev zlib1g-dev linux-headers-generic libsqlite3-dev libxslt-dev libxml2-dev imagemagick git-core libmysqlclient-dev mysql-server libmagickwand-dev default-jre ruby1.9.3
      
      





wkhtmltopdfをインストールします。

 wget http://sourceforge.net/projects/wkhtmltopdf/files/0.12.1/wkhtmltox-0.12.1_linux-trusty-i386.deb sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-i386.deb
      
      





gemをインストールします。

 sudo gem install thor i18n bundler tzinfo builder memcache-client rack rack-test erubis mail text-format rack-mount rails sqlite3
      
      





Snorbyをインストールします。

 sudo git clone http://github.com/Snorby/snorby.git /var/www/snorby
      
      





ファイル/var/www/snorby/config/database.ymlを編集します(ない場合は、* .exampleを編集できます)。

  snorby: &snorby adapter: mysql username: root password: <enter the mysql root password here> host: localhost
      
      





ファイル/var/www/snorby/config/snorby_config.ymlの編集(ない場合は、* .exampleを編集できます):

  development: domain: localhost:3000 wkhtmltopdf: /usr/bin/wkhtmltopdf #   - /usr/local/bin/wkhtmltopdf test: domain: localhost:3000 wkhtmltopdf: /usr/bin/wkhtmltopdf production: domain: localhost:3000 wkhtmltopdf: /usr/bin/wkhtmltopdf
      
      





Snorbyのセットアップを開始します。

 cd /var/www/snorby sudo bundle update activesupport railties rails sudo gem install arel ezprint && sudo bundle install sudo bundle exec rake snorby:setup
      
      





Mysqlのセットアップ:

 mysql -u root -p create user 'snorbyuser'@'localhost' IDENTIFIED BY '_'; grant all privileges on snorby.* to 'snorbyuser'@'localhost' with grant option; flush privileges; exit
      
      





ファイル/var/www/snorby/config/database.ymlの編集に戻り、新しいユーザーとパスワードを入力します。

  snorby: &snorby adapter: mysql username: snorbyuser password: _ host: localhost
      
      





Apache2と必要なパッケージをインストールします。

 sudo apt-get install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev sudo apt-get install libcurl4-openssl-dev sudo service apache2 start
      
      





乗客の設定:

 sudo gem install --no-ri --no-rdoc passenger sudo /usr/local/bin/passenger-install-apache2-module -a
      
      





ファイル/etc/apache2/mods-available/passenger.loadを作成し、そこに書き込みます。

  LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.48/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.48 PassengerDefaultRuby /usr/bin/ruby1.9.1 </IfModule>
      
      





モジュールの有効化:

 sudo a2enmod passenger sudo a2enmod rewrite sudo a2enmod ssl sudo chown www-data:www-data /var/www/snorby -R
      
      





ファイル/ etc / apache2 / sites-available / snorbyを作成してそこに書き込みます:

  <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName snorby.local DocumentRoot /var/www/snorby/public <Directory "/var/www/snorby/public"> AllowOverride all Order deny,allow Allow from all Options -MultiViews </Directory> </VirtualHost>
      
      





サイトをアクティベートします:

 sudo ln -s /etc/apache2/sites-available/snorby /etc/apache2/sites-enabled/snorby
      
      





Apacheを再起動します。

 sudo service apache2 restart
      
      





/ var / www / snorby runから:

 sudo bundle pack && sudo bundle install --path vender/cache
      
      





/etc/apache2/sites-available/000-default.confファイルで、次の行を変更します。

 DocumentRoot /var/www/
      
      





テストを実行するsnorby。 フォルダー/ var / www / snorbyで次を実行します。

 sudo bundle exec rails server -e production
      
      





http:// localhost:3000に移動し、ログインウィンドウが表示されたら、正しい方向に進んでいます。





次に、Suricata自体を直接配置します。



必要なパッケージのインストール:

 sudo apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libcap-ng-dev libnet1-dev mysql-client wget http://security.ubuntu.com/ubuntu/pool/main/m/mysql-dfsg-5.1/libmysqlclient16_5.1.73-0ubuntu0.10.04.1_i386.deb sudo dpkg -i libmysqlclient16_5.1.73-0ubuntu0.10.04.1_i386.deb wget http://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-1.0.1.tar.bz2 sudo tar xvfz libnfnetlink-1.0.1.tar.bz2 sudo ./configure && sudo make && sudo make install
      
      





Yamlインストール:

 wget http://pyyaml.org/download/libyaml/yaml-0.1.3.tar.gz sudo tar xvfz yaml-0.1.3.tar.gz cd yaml-0.1.3 sudo ./configure && sudo make && sudo make install
      
      





barnyard2をインストールします。

 wget http://ftp.psu.ac.th/pub/snort/barnyard2-1.9.tar.gz sudo tar xvfz barnyard2-1.9.tar.gz cd barnyard2-1.9 sudo ./configure --with-mysql && sudo make && sudo make install
      
      





suricataをインストールします。

 sudo apt-get install suricata sudo cp /etc/suricata/suricata-debian.yaml /etc/suricata/suricata.yaml cd /etc/suricata sudo wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz sudo tar xvfz emerging.rules.tar.gz
      
      





/etc/suricata/suricata.yamlファイルで、次の行を変更します。

  default-rule-path: /etc/suricata/rules/ HOME_NET: "[ip_/]" #  "[192.168.0.0/24]"
      
      





barnyard2の構成:

 sudo cp downloads_folder/barnyard2-1.9/etc/barnyard2.conf /etc/suricata/
      
      





/etc/suricata/barnyard2.confファイルの行を変更します。

  config reference_file: /etc/suricata/reference.config config classification_file: /etc/suricata/classification.config config gen_file: /etc/suricata/rules/gen-msg.map config sid_file: /etc/suricata/rules/sid-msg.map output database: log, mysql, user=snorbyuser password=_ dbname=snorby host=localhost sensor_name=sensor1
      
      





最後の仕上げとすべてが機能するはずです:

 sudo mkdir /var/log/barnyard2 sudo iptables -I FORWARD -j NFQUEUE sudo suricata -c /etc/suricata/suricata.yaml -q 0
      
      





再びhttp:// localhost:3000にアクセスすると、ダッシュボードといくつかのイベントに関する情報が表示されます。





これでIPSのセットアップが完了しました。



FWBuilderをインストールしてiptablesを構成する



リンクから最新のビルドをダウンロードします。



必要なパッケージをインストールします。

 sudo apt-get install libqt4-gui
      
      





FWBuilderをインストールします。

 sudo dpkg -i fwbuilder_5.1.0.3599-ubuntu-precise-1_i386.deb
      
      





FWBuilderを起動し、ファイアウォール要素を作成します。 これを行うには、[新しいファイアウォールを作成]をクリックして、フィールドに入力します。





次に、インターフェースを構成します。







最低限必要なルールのセットを作成します。







原則として、すべてが明確であるため、ニーズに合わせてルールをさらに作成できます。



ルールの準備ができたら、[インストール]をクリックして、ユーザー名/パスワードとゲートウェイアドレスを入力します。





これで、ファイアウォールのセットアップが完了しました。



OpenVPNをインストールして構成する



OpenVPNおよびeasy-rsaをインストールします。

 sudo su apt-get install openvpn easy-rsa
      
      





キーを作成します。

 mkdir /etc/openvpn/easy-rsa cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa mv /etc/openvpn/easy-rsa/easy-rsa /etc/openvpn/easy-rsa/2.0 cd /etc/openvpn/easy-rsa/2.0 nano vars
      
      





ファイルの最後の行を変更します。

  export KEY_COUNTRY="RU" export KEY_PROVINCE="Moscow" export KEY_CITY="Moscow" export KEY_ORG="IT" export KEY_EMAIL="test@lab.local" export KEY_OU="Security Department" export KEY_NAME="UTM"
      
      





 cp openssl-1.0.0.cnf openssl.cnf . ./vars ./clean-all ./build-ca ./build-key-server server ./build-dh openvpn --genkey --secret keys/ta.key cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/
      
      





サーバー構成ファイルを作成します。

 cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ cd /etc/openvpn gunzip -d /etc/openvpn/server.conf.gz nano /etc/openvpn/server.conf
      
      





 port 1194 proto udp dev tun ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key # This file should be kept secret dh /etc/openvpn/keys/dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /etc/openvpn/ipp.txt push "route 192.168.1.0 255.255.255.0" keepalive 10 120 tls-server tls-auth /etc/openvpn/keys/ta.key 0 tls-timeout 120 auth SHA1 comp-lzo max-clients 1 persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3 mute 20
      
      





 mkdir /var/log/openvpn
      
      





クライアント構成ファイルを作成します。

 mkdir /etc/openvpn/ccd nano /etc/openvpn/ccd/client iroute 192.168.1.0 255.255.255.0
      
      





有効になっていない場合、ゲートウェイでルーティングを有効にします。

/etc/sysctl.confファイルでコメント解除#net.ipv4.ip_forward = 1、

 sudo sysctl -p
      
      





OpenVPNを再起動します。

 openvpn restart
      
      





クライアントキーの作成:

 cd /etc/openvpn/easy-rsa/2.0 . ./vars ./build-key client ./build-key-pass client
      
      





/etc/openvpn/easy-rsa/2.0/keysフォルダーから、ca.crt、dh2048.pem、client.crt、client.key、ta.keyのファイルを取得します。これらはクライアントに役立ちます。



クライアントマシンにアクセスし(Windows XPを使用しました)、 OpenVPN Clientをインストールします。

インストール後、ファイルca.crt、dh2048.pem、client.crt、client.key、ta.keyをサーバー上で作成し、OpenVPN Clientがインストールされているディレクトリの/ configフォルダーにコピーする必要があります(C:\ Program Filesがあります) \ OpenVPN \ config)。



これで、クライアント用の構成を作成できます。 / configフォルダーで、次の内容のclient.ovpnファイルを作成します。

 client dev tun proto udp remote 10.10.0.184 1194 resolv-retry infinite ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\client.crt" key "C:\\Program Files\\OpenVPN\\config\\client.key" tls-client tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1 auth SHA1 # -.  MD5 cipher BF-CBC remote-cert-tls server comp-lzo persist-key persist-tun status "C:\\Program Files\\OpenVPN\\log\\openvpn-status.log" log "C:\\Program Files\\OpenVPN\\log\\openvpn.log" verb 3 mute 20
      
      





これで、サーバーへの接続を試みることができます。



これでUTMの設定が完了しました。この記事がお役に立てば幸いです。



ご清聴ありがとうございました!



グレボフ・マキシム



All Articles