Ubuntuでiptablesサービスを開始/停止するにはどうすればよいですか?
私が試してみました
service iptables stop
しかし、それは"unrecognized service"を与えています。
なぜそうなのですか?他の方法はありますか?
「Ubuntu」については知りませんが、Linuxでは一般に「iptables」はサービスではありません。これは、netfilterカーネルファイアウォールを操作するコマンドです。すべての標準チェーンのデフォルトポリシーを「ACCEPT」に設定し、ルールをフラッシュすることで、ファイアウォールを「無効」(または停止)できます。
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
(使用した場合は、「nat」などの他のテーブルもフラッシュする必要がある場合があります)
Ubuntu Webサイトの次の記事では、NetworkManagerで使用するiptablesの設定について説明しています。 https://help.ubuntu.com/community/IptablesHowTo
あなたはすべて間違っています:-)
あなたが探しているコマンドは:
$ Sudo ufw disable
私はそれがインストールされているかどうかを最初にチェックします(おそらくそうです):
dpkg -l | grep iptables
Ubuntuでは、iptablesはサービスではありません。それを停止するには、次のことを行う必要があります。
Sudo iptables-save > /root/firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
以前のルールを復元するには:
iptables-restore < /root/firewall.rules
これは http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/ から取得され、多くのUbuntu 8.Xおよび9.10インストールでテストされました。
Iptablesはコマンドではなくサービスであるため、一般的に次のようなコマンドは使用できません。
service iptables start
または
service iptables stop
ファイアウォールを開始および停止するために、centosのような一部のディストリビューションでは、ファイアウォールを開始および停止するためのiptablesと呼ばれるサービスと、ファイアウォールを構成するための構成ファイルをインストールしています。とにかく、このスコープのスクリプトを編集またはインストールするipotableを管理するサービスを作成することは可能です。 Linuxのすべてのサービス、ubuntuは例外ではありません。/etc/init.dフォルダー内の実行可能スクリプトであり、標準インターフェイス(start、stop、restart)を実装します。可能なスクリプトは次のようになります。
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: iptables
# Required-Start: mountvirtfs ifupdown $local_fs
# Default-Start: S
# Default-Stop: 0 6
### END INIT INFO
# July 9, 2007
# James B. Crocker <[email protected]>
# Creative Commons Attribution - Share Alike 3.0 License (BY,SA)
# Script to load/unload/save iptables firewall settings.
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
IPTABLES=/sbin/iptables
IPTABLES_SAVE=/sbin/iptables-save
IPTABLES_RESTORE=/sbin/iptables-restore
IPTABLES_CONFIG=/etc/iptables.conf
[ -x $IPTABLES ] || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting firewall"
type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
;;
stop)
log_action_begin_msg "Saving current firewall configuration"
if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
log_action_begin_msg "Flushing ALL firewall rules from chains!"
if $IPTABLES -F ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
if $IPTABLES -X ; then
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
save)
log_action_begin_msg "Saving current firewall configuration"
if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
force-reload|restart)
log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
$IPTABLES -F
$IPTABLES -X
if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
*)
echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
exit 1
;;
esac
exit 0
このスクリプトはこの チュートリアル の一部です。ファイアウォールを構成するためのすべてのコマンドを、上記のスクリプトに従って/etc/iptables.confファイルに挿入する必要があります。このスクリプトは、/ etc/init.dのiptablesというファイルに挿入し、次を使用して実行可能にする必要があります
chmod+x *iptables*
を使用してランレベルにサービスを追加します
update-rc.d iptables defaults
シェルから新しいルールを追加できます。これらのルールはすぐにアクティブになり、サービスが停止すると/etc/iptables.confに追加されます(つまり、システムのシャットダウン時に確実に保存されます)。
これが皆さんのお役に立てば幸いです。
IptablesとufwはどちらもLinuxで netfilter ファイアウォールを管理する方法であり、両方ともUbuntuでデフォルトで使用できるため、ファイアウォールルールの開始と停止(および管理)のどちらにも使用できます。
iptablesはより柔軟ですが、ufwはシンプルで典型的な関数のための非常にシンプルなインターフェース言語を提供するため、使用できます。
Sudo ufw disable
#ファイアウォールを無効にするには
Sudo ufw enable
#ファイアウォールを有効にするには
現在のファイアウォール設定を表示するには、Sudo ufw status verbose
またはiptables -L
を使用します。
iptables および [〜#〜] ufw [〜#〜] のUbuntuコミュニティのドキュメントページには、より多くの情報があります。
Ubuntuでファイアウォールを管理するにはいくつかの方法があるようですので、これを読むことに興味があるかもしれません: https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup
現在のルールをすべて削除するには、次のコマンドを使用できます(スクリプトに追加します)。
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t filter -X
通常の場合、デフォルトのファイアウォールルールはファイル(たとえば、/ etc/iptables.rules)に保存されます。システムコマンドの起動中iptables-restore </etc/iptables.rules
ファイアウォールルールをロードするために実行されました。したがって、上記のコマンドを使用してすべてのルールを削除した後に同じコマンドを実行すると、要求した「ファイアウォールのリロード」が発生します。
/etc/init.d/にファイルを作成します
touch fw.rc
ファイルを実行可能にするchmod + x
/etc/rc2.d/にあるそのファイルへのシンボリックリンクを作成します
ln -s /etc/init.d/fw.rc S80firewall
S80firewallを編集して以下を追加します
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
このファイルにすべてのカスタムiptablesルールを追加できます
/etc/rc2.d/S80firewall(ルートでなければならない)を実行してファイアウォール(iptables)を再起動できるようになりました
UbuntuサーバーをVMゲスト(VirtualBoxなど)として実行している場合) libvirt が有効になっている可能性があります。その場合、libvirtには、 iptables。これらのフィルターは、ファイアウォールのセクション nwfilters の説明に従って構成できます。
Iptablesルールを無効にするには、libvirtからすべての問題のあるルールを削除する必要があります。または、libvirtを使用していない場合は無効にすることができます。手動オーバーライド構成をインストールします(その後、再起動します)。
Sudo bash -c 'echo "manual" > /etc/init/libvirt-bin.override'
私が正しく思い出した場合、ubuntuガイドでiptablesをセットアップするための推奨方法は、ネットワークスクリプトの一部としてセットアップすることです。つまり、BSDスタイルのOSにあるような/etc/init.d/iptablesスクリプトはありません。
同じ問題がありました。実際、/etc/init.d
にはiptables-persistentはありませんでした
そこで、/etc/init.d
にiptables-persistentファイルを作成しました
nano /etc/init.d/iptables-persistent
内部に次のように書きました:
#!/bin/sh
# Written by Simon Richter <[email protected]>
# modified by Jonathan Wiltshire <[email protected]>
# with help from Christoph Anton Mitterer
#
### BEGIN INIT INFO
# Provides: iptables-persistent
# Required-Start: mountkernfs $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Start-Before: $network
# X-Stop-After: $network
# Short-Description: Set up iptables rules
# Description: Loads/saves current iptables rules from/to /etc/iptables
# to provide a persistent rule set during boot time
### END INIT INFO
. /lib/lsb/init-functions
rc=0
load_rules()
{
log_action_begin_msg "Loading iptables rules"
#load IPv4 rules
if [ ! -f /etc/iptables/rules.v4 ]; then
log_action_cont_msg " skipping IPv4 (no rules to load)"
else
log_action_cont_msg " IPv4"
iptables-restore < /etc/iptables/rules.v4 2> /dev/null
if [ $? -ne 0 ]; then
rc=1
fi
fi
#load IPv6 rules
if [ ! -f /etc/iptables/rules.v6 ]; then
log_action_cont_msg " skipping IPv6 (no rules to load)"
else
log_action_cont_msg " IPv6"
ip6tables-restore < /etc/iptables/rules.v6 2> /dev/null
if [ $? -ne 0 ]; then
rc=1
fi
fi
log_action_end_msg $rc
}
save_rules()
{
log_action_begin_msg "Saving rules"
#save IPv4 rules
#need at least iptable_filter loaded:
/sbin/modprobe -q iptable_filter
if [ ! -f /proc/net/ip_tables_names ]; then
log_action_cont_msg " skipping IPv4 (no modules loaded)"
Elif [ -x /sbin/iptables-save ]; then
log_action_cont_msg " IPv4"
iptables-save > /etc/iptables/rules.v4
if [ $? -ne 0 ]; then
rc=1
fi
fi
#save IPv6 rules
#need at least ip6table_filter loaded:
/sbin/modprobe -q ip6table_filter
if [ ! -f /proc/net/ip6_tables_names ]; then
log_action_cont_msg " skipping IPv6 (no modules loaded)"
Elif [ -x /sbin/ip6tables-save ]; then
log_action_cont_msg " IPv6"
ip6tables-save > /etc/iptables/rules.v6
if [ $? -ne 0 ]; then
rc=1
fi
fi
log_action_end_msg $rc
}
flush_rules()
{
log_action_begin_msg "Flushing rules"
if [ ! -f /proc/net/ip_tables_names ]; then
log_action_cont_msg " skipping IPv4 (no module loaded)"
Elif [ -x /sbin/iptables ]; then
log_action_cont_msg " IPv4"
for param in F Z X; do /sbin/iptables -$param; done
for table in $(cat /proc/net/ip_tables_names)
do
/sbin/iptables -t $table -F
/sbin/iptables -t $table -Z
/sbin/iptables -t $table -X
done
for chain in INPUT FORWARD OUTPUT
do
/sbin/iptables -P $chain ACCEPT
done
fi
if [ ! -f /proc/net/ip6_tables_names ]; then
log_action_cont_msg " skipping IPv6 (no module loaded)"
Elif [ -x /sbin/ip6tables ]; then
log_action_cont_msg " IPv6"
for param in F Z X; do /sbin/ip6tables -$param; done
for table in $(cat /proc/net/ip6_tables_names)
do
/sbin/ip6tables -t $table -F
/sbin/ip6tables -t $table -Z
/sbin/ip6tables -t $table -X
done
for chain in INPUT FORWARD OUTPUT
do
/sbin/ip6tables -P $chain ACCEPT
done
fi
log_action_end_msg 0
}
case "$1" in
start|restart|reload|force-reload)
load_rules
;;
save)
save_rules
;;
stop)
# Why? because if stop is used, the firewall gets flushed for a variable
# amount of time during package upgrades, leaving the machine vulnerable
# It's also not always desirable to flush during purge
echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
;;
flush)
flush_rules
;;
*)
echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
exit 1
;;
esac
exit $rc
そして、chmod 755の許可を与えました。
chmod 755 /etc/init.d/iptables-persistent
今では完全に動作します!それが誰かを助けることを願っています。
UbuntuやDebianではなく、RedHatとCentOSに適したコマンドを使用しています。
http://www.cyberciti.biz/faq/ubuntu-server-disable-firewall/
デフォルトではありませんが、最近のdebian派生物(Ubuntuを含む)では、管理するサービスをインストールできますiptables:
Sudo apt install iptables-persistent
次に、以前に保存したルールをロードできます。
systemctl start netfilter-persistent
何が起こったかを確認します。
systemctl status netfilter-persistent
netfilter-persistent.service - netfilter persistent configuration
Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2019-03-24 10:49:50 IST; 16min ago
Main PID: 1674 (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CPU: 0
CGroup: /system.slice/netfilter-persistent.service
Mar 24 10:49:50 ubuntu systemd[1]: Starting netfilter persistent configuration...
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv4 (no rules to load)
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv6 (no rules to load)
Mar 24 10:49:50 ubuntu systemd[1]: Started netfilter persistent configuration.
Mar 24 11:02:49 ubuntu systemd[1]: Started netfilter persistent configuration.
またはサービスを停止します。
systemctl stop netfilter-persistent
サービスを停止すると、デフォルトでnot iptablesがフラッシュされます(つまり、ファイアウォールは無効になりません。man netfilter-persistent
を参照してください)。