Ubuntuで簡単なファイアウォールを設定する方法は?


18

誰かがUbuntuでシンプルなファイアウォールを設定する方法を構成例でいくつかの簡単なステップを与えることができますか(コンソールのみを使用して)?ssh、http、およびhttpsアクセスのみを許可する必要があります。


ネットワークファイアウォールのことですか、それともシステムファイアウォールのことですか?
ブラッドギルバート

ネットワークファイアウォールとはどういう意味ですか?ルーター上のファイアウォールですか?はいの場合、システムファイアウォールについて話していました。
klew

回答:


20

sudo ufwデフォルト拒否

sudo ufw allow http

sudo ufw allow https

sudo ufw allow ssh

sudo ufw enable


このコマンドをssh経由で順番に呼び出すと、接続が切断されますか?
-12:

信じられませんが、確認する必要があります。これにより、再起動間でもステータスが保持されるため、一度だけ実行する必要があります。
ナードフェスト2009

私は、このコンピュータに近いだろうとき、私は...それをチェックします
klew

それをスクリプトに入れて実行すれば、切断された場合でも後で再接続することができます。スクリプトについては、私の回答を参照してください。
ハミッシュダウナー

2
前のコメントは正しいです。基本的に、上記のスクリプトの最初のコマンドを最後に実行します。
ナードフェスト2009

14

このスクリプトを使用します。

着信ICMP(ping)を許可するかどうかを決定します。

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT

8

別の回答へのコメントで述べたように、sshポートを許可する前に接続を失いたくありません。manページから:

「リモート管理

ufw enableを実行するか、initscriptを介してufwを起動すると、ufwはチェーンをフラッシュします。これはufwが一貫した状態を維持できるようにするために必要ですが、既存の接続(sshなど)をドロップする場合があります。ufwは、ファイアウォールを有効にする前にルールを追加することをサポートしているため、管理者は次のことができます。

ufw allow proto tcp from any to any port 22

「ufw enable」を実行する前。ルールは引き続きフラッシュされますが、ファイアウォールを有効にするとsshポートが開きます。ufwが「有効」になると、ルールを追加または削除するときにufwはチェーンをフラッシュしません(ただし、ルールを変更したり、デフォルトポリシーを変更したりする場合は)。

そこで、スクリプトを使用して設定する方法を次に示します。このスクリプトを実行するとログアウトしますが、実行すると、sshで再度ログインできます。

以下をスクリプトに入れて、start-firewall.shと呼びます

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

そして、それを実行可能にし、次のようにして実行します

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

詳細については、manページをご覧ください


2

スクリプトiptablesに精通している場合、すべてのファイアウォール機能を完全に制御できます。Firestarterほどフレンドリーではありませんが、コンソールでnano/ vieditorsを使用して実行できます。Ubuntu向けのチュートリアルをご覧ください。


1

Quicktablesは、iptablesのルールを学ぶのに役立ちました。スクリプトを実行するだけで、iptablesスクリプトが生成されます...そして、それを開いて、質問された質問によって生成された関連コマンドを表示できます。優れた学習リソースです。

残念ながら、もはやメンテナンスされていません。

http://qtables.radom.org/


1

私は本当にfireholpackage)を使うのが好きです。

お好みのセットアップルールを作成するには、ファイル/ etc / default / fireholを編集し、START_FIREHOL = YESを変更する必要があります。

そして、/ etc / firehol / firehol.confを次のようにしたいでしょう。

version 5

interface any IfAll
    client any AnyClient accept
    server "ssh http https" accept
    # Accept everything from trusted networks
    server anystateless AllInside accept src "10.3.27.0/24"

Fireholの素晴らしい点の1つは、「try」コマンドです。設定ファイルを調整し、「firehol try」を実行できます。sshを介して接続し、変更内容がネットワークアクセスを強制終了した場合、fireholは変更を元に戻します。変更を実際に有効にするには、コミットする必要があります。


1
Fireholは、iptablesルールを操作するのに優れています。「$ firehol try」「ファイアウォールをアクティブにしますが、ユーザーがcommitという単語を入力するまで待機します。この単語が30秒以内に入力されない場合、以前のファイアウォールが復元されます。」
ガレス

ルールを追加/編集/削除してからテストできます。リモートでSSH経由でこれを行っている場合、あなた自身のサーバーからあなたを締め出すことはありません!
ガレス



-1

sudo apt-get install firestarter

次に、「システム」->「管理」メニューを見てください。


質問者がコンソールのみを使用したい
Mikeage

ああ、私の間違い。代わりに。管理者はサーバーにssh -Xを実行し、firestarterをリモートで実行できます。
spoulson

1
また、ssh -Xを起動するにはXサーバーをインストールする必要があります:)。
09

@ klew、sshでXアプリケーションを実行するために完全なXサーバーをインストールする必要はありません。複数のライブラリが必要ですが、すべてが必要というわけではありません。最低限、xauthおよびxbase-clientsパッケージのみが必要です。
ゾレダチェ2009
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.