iptables の再起動が返される: 不正な引数 'restart'

iptables の再起動が返される: 不正な引数 'restart'

私はUbuntu LTS数年前からシステムを稼働させています。昨日、停電でコンピュータがダウンしました。電源が回復し、システムを起動したiptablesところ、 を除いてすべて正常に起動したようです。このシステムを再起動すると、ufwが常に起動します。起動しないように設定しているにもかかわらずです。私はiptables単純にそれがわかっているので、'ufw' をシャットダウンし、iptables次の手順で再設定して再起動します。

sudo ufw disable

sudo ip_tables_reset.sh
sudo ip_tables_config.sh

sudo iptables restart

そして確認する

sudo iptables -S

結果は次のようになります:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

さて、ライン

sudo iptables restart

返品

Bad argument 'restart'

しかし、私は何年もこの手順を忠実に使用してきました。最近、私が知っている限りでは、更新プログラムをインストールしていません。

この信頼できる方法が今では失敗するほど何が変わったのでしょうか?

参照: iptables v1.4.12

答え1

このコマンドについて言及する

sudo iptables restart  #  wrong usage, its not a service

以下のスクリプトセットは、ファイアウォールをバックアップ、有効化、無効化する方法です。まず、パッケージがインストールされていることを確認してください。

dpkg -l | grep iptables

現在のiptable設定を表示する方法

sudo iptables -L -n

現在の iptable ルールを表示する標準的な方法 (変更なしの表示のみ)

sudo iptables-save

ルールを見ると、着信トラフィックをブロックしていません(シールドがダウンしています)が、次のルールでは、指定されたポートを除くすべての着信トラフィックがブロックされます。

*filter
:INPUT DROP [331:17104]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9727:1360720]
:GitHubWebHooks - [0:0]
-A INPUT -p tcp -m tcp --dport 9000 -j GitHubWebHooks
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A GitHubWebHooks -s 192.30.252.0/22 -j ACCEPT
-A GitHubWebHooks -j DROP
COMMIT

特定のIPアドレス192.30.252.0/22を開いて、着信トラフィックをリッスンするサーバーを実行できるようにしています。そのため、GitHubWebHooksの言及はすべてオプションです...上記をファイルに保存し、そのファイルをルールとしてロードすれば、準備完了です...シールドアップ

何かを変更する前に、現在のルールを出力ファイルにダンプしましょう

vi ファイアウォール_save_current_rules.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  dump current iptable rules to file

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........

curr_timestamp=$(date '+%H%M%S%N')

curr_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.current_rules

rulesdir=$( dirname $curr_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

iptables-save > ${curr_rulesfile}  # dump current iptable rules into output timestamped file


echo curr_rulesfile $curr_rulesfile

上記のスクリプトを実行して現在のiptableルールを保存します。

sudo ./firewall_save_current_rules.sh

以下のコードは、指定された部分(特にsshポート+通常のhttpおよびhttpsポート)を除くすべての着信トラフィックをデフォルトでブロックする新しいルールセットを定義します。

vi ファイアウォールシールドアップ.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  create new set of iptable rules from inline list of rules - Block all incoming traffic by default except specified

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........


curr_timestamp=$(date '+%H%M%S%N')

new_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.new_rules

rulesdir=$( dirname $new_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

# .....  park into a new file below list of iptable rules

cat << EOF > ${new_rulesfile}

*filter
:INPUT DROP [331:17104]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9727:1360720]
:GitHubWebHooks - [0:0]
-A INPUT -p tcp -m tcp --dport 9000 -j GitHubWebHooks
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A GitHubWebHooks -s 192.30.252.0/22 -j ACCEPT
-A GitHubWebHooks -j DROP
COMMIT

EOF


echo new_rulesfile $new_rulesfile


iptables-restore <  ${new_rulesfile}  #  engage new iptable rules from file


echo here is new iptable settings

iptables-save


#  ... if you are running docker you will want to bounce its daemon
#  sudo service docker restart

上記のスクリプトを実行して新しいiptableルールを定義します

sudo ./firewall_shields_up.sh 

完全を期すために、以下に、すべての受信トラフィックと送信トラフィックを開いてファイアウォールを効果的に無効にするトラブルシューティング スクリプトを示します。空白の状態に戻す場合は実行してください。ただし、適切なファイアウォールに戻すには、上記の firewall_shields_up.sh を実行してください。

vi ファイアウォールシールドダウン.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  open up all incoming and outgoing traffic ... effectively disabling the firewall

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........ lets first backup current rules into timestamped file

curr_timestamp=$(date '+%H%M%S%N')

curr_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.current_rules_before_opening_up_all_traffic

rulesdir=$( dirname $curr_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

iptables-save > ${curr_rulesfile}  # dump current iptable rules into output timestamped file

echo curr_rulesfile $curr_rulesfile

# ... now alter iptables to lower shield




iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F



# ... display new iptable rules

echo
echo following are the new iptable rules after we opened up all incoming and outgoing traffic
echo

iptables-save

関連情報