CentOS 7にGraylogサーバーをインストールする方法
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
iptables
Linuxカーネルの統合ファイアウォールを構成するために使用される強力なツールです。ほとんどのUbuntuディストリビューションにプリインストールされていますが、カスタマイズされたUbuntuバージョンを使用している場合、またはコンテナ内で実行している場合は、手動でインストールする必要があります。
sudo apt-get install iptables iptables-persistent
インストール後、現在のルールを保存するかどうかを尋ねられた場合、後で削除または新しいルールを作成するため、現時点では問題ありません。
netcat
(サーバーとは別のコンピューターで)コマンドを使用して、どのポートが開いているか閉じているかをテストできます。
nc -z -w5 -v SERVER_IP PORT
nc
netcatコマンドです。-z
ペイロードなしでパケットを送信するだけです。-w5
応答を最大5秒待ちます。-v
冗長モード。SERVER_IP
サーバーのアドレスに置き換えます。PORT
開いているかどうかをテストするポートに置き換えます(例:)22
。サーバーでnetstat
コマンドを使用して、現在接続を待機しているポートを確認できます。
sudo netstat -tulpn
注:netstat
は、操作したいポートを見つけるのに便利ですが、サーバーに現在インストールされているアプリケーションとリッスンしているポートを知っておく必要がありますnetstat
。出力で見つけたすべてのポートを許可する必要はありません。
sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
-A INPUT
INPUT
チェーンにルールを追加します。チェーンはルールのグループです。このガイドで最もよく使用されるのはINPUT
、OUTPUT
とPREROUTING
です。-p tcp
tcp
このルールが適用されるプロトコルとして設定します。またはudp
、などの他のプロトコルを使用することもできます。icmp
all
-m tcp
tcp
モジュールを使用します。iptables
モジュールを介して追加機能をサポートします。その一部はすでにプリインストールされてiptables
おり、その他はgeoip
モジュールなどです。--dport 22
で始まるコマンド--
は、以前に使用されたモジュールの追加オプションを示します。この場合、tcp
モジュールにポートにのみ適用するように指示します22
。-m geoip
geoip
モジュールを使用します。国ごとにパケットを制限します(ステップ5で詳細)。--src-cc PE
geoip
着信パケットをペルーからのパケットに制限するようにモジュールに指示します。その他の国コードについてISO 3166 country codes
は、インターネットで検索してください。-j ACCEPT
-j
引数が伝えiptables
たパケットが、前の引数で指定された制約と一致した場合にどうしますか。この場合、ACCEPT
それらのパケット、その他のオプションはREJECT
にDROP
なります。iptables jump targets
インターネットで検索すると、さらに多くのオプションを見つけることができます。すべてのルールをリストします。
sudo iptables -L
現在使用されているルールの作成に使用されたすべてのコマンドをリストします。ルールの編集または削除に役立ちます。
sudo iptables -S
特定のルールを削除するには、からルールを選択しsudo iptables -S
て交換-A
して-D
。
# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT
INPUT
チェーン内のすべての番号付きルールをリストします。
sudo iptables -L INPUT --line-numbers
番号付きルールを削除します。
sudo iptables -D INPUT 2
すべてのルールをクリアします。
sudo iptables -F
警告:SSHで接続すると、接続が失われる可能性があります。
OUTPUT
チェーン内のルールのみをクリアします。
sudo iptables -F OUTPUT
許可SSH
にeth0
インタフェース
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-i eth0
特定のインターフェイスにルールを適用して、任意のインターフェイスからこのコマンドを削除できるようにします。着信パケットを特定のIP(つまり10.0.3.1/32
)に制限します。
sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
-s 10.0.3.1/32
接続を許可するIP /サブネットを指定します。デフォルトのチェーンルールを設定します。
警告:リモートサーバーで作業する場合は、続行する前に正しいSSHルールを適用していることを確認してください。
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
-P INPUT DROP
すべての着信パケットを拒否します(つまり、Apache、SQLなどの実行中のサーバーに誰も接続できなくなります)。-P FORWARD DROP
転送されたすべてのパケットを拒否します(つまり、システムをルーターとして使用している場合)。-P OUTPUT ACCEPT
すべての発信パケットを許可します(つまり、HTTP
リクエストを実行するとき)。ループバックインターフェイス上のすべてのトラフィックを許可します(推奨)。
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
現在のiptables
ルールを保存します。
sudo netfilter-persistent save
sudo netfilter-persistent reload
コンテナー内で実行している場合、netfilter-persistent
コマンドは機能しない可能性が高いため、iptables-persistent
パッケージを再構成する必要があります。
sudo dpkg-reconfigure iptables-persistent
DNSクエリを許可します。
sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
state
モジュールを使用して、パケットの送信RELATED
とESTABLISHED
送信を許可します。
sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
必要なポートを許可します。この場合、HTTP
ポート。
sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
使用する可能性のあるその他のポート。
FTP
:ポート21のTCPHTTPS
:ポート443のTCPDHCP
:ポート67のudpNTP
:ポート123のudp注:許可するapt-get
場合は、FTP
およびを許可する必要がある場合がありHTTPS
ます。
返されたトラフィックをRELATED
、すでにESTABLISHED
接続されている場合にのみ許可します(場合によっては双方向通信が必要になるため推奨されます)。
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
外部からのping要求を許可します。
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
上のトラフィックを転送eth0
ポート2200
に10.0.3.21:22
(あなたは、コンテナ内で実行されているSSHサーバーを公開する場合に便利)。
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22
SSHを使用してサーバーに正常にログインすると、永続的な接続が作成されます(つまり、1時間以上接続しても新しい接続はありません)。失敗して再度ログインしようとすると、新しい接続が作成されます。これは、1時間あたりの新しい接続を制限することにより、継続的なSSHログイン試行をブロックします。
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP
ポート上のすべての要求をポート443
にリダイレクトします4430
(443
なしでポートにバインドする場合に便利ですroot
)。
sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
ens3
ネットワークインターフェース。-m geoip
国ブロックモジュール(ステップ5を参照)。警告:を使用しないでくださいlo
。OSは、ループバックインターフェイスにリダイレクトされたすべてのパケットを破棄します。
xtables-addons
xtables-addons
さまざまな方法でモジュールをインストールできます。最適なインストール方法を自由に使用してください。
を使用してインストールしapt-get
ます。
sudo apt-get install xtables-addons-common
を使用してインストールしmodule-assistant
ます。
sudo apt-get install module-assistant xtables-addons-source
sudo module-assistant --verbose --text-mode auto-install xtables-addons
ソースからインストールします。
sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
cd xtables-addons
./autogen.sh
./configure
make
sudo make install
「国」データベースを構築します。
sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv
システムを再起動します。
sudo reboot
後はxtables-addons
正常にインストールされている、最初の再起動後、実行してdepmod
それ以外の国のブロッキングは、(これは初回のみ必要です)正常に動作しません。
sudo depmod
でデータベースを毎月/etc/cron.monthly/geoip-updater
更新するスクリプトを作成しますgeoip
。
#!/usr/bin/env bash
# this script is intended to run with sudo privileges
echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip
echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl
echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater
確認し/etc/cron.monthly/geoip-updater
、実行可能。
sudo chmod +x /etc/cron.monthly/geoip-updater
_注:ルールiptables: No chain/target/match by that name
を適用しようとしたときにエラーが発生した場合はgeoip
、xtables-addons
正しくインストールされていない可能性があります。別のインストール方法を試してください。
中国、香港、ロシア、韓国からのすべての着信パケットをブロックします。
sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP
80
上記の国を除くすべての場所からのポートでの着信パケットを許可します。
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
ペルーからのens3
ポートのインターフェースで22
のみ着信パケットを許可します(たとえば、US
米国からのパケットを受け入れる国コードを自由に選択してください)。
sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT
443
ペルーからのポートでのみ着信パケットを許可します。
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。
サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。
CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。
Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。
FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。
Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。
ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。