Перезапуск 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
задан 16 November 2017 в 19:41

3 ответа

вы упомянули эту команду

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 являются необязательными ... если вы сохраните выше в файл, а затем загрузите этот файл в качестве своих правил, тогда вам будет хорошо идти ... shields up

, прежде чем что-либо изменить выгрузите свои текущие правила в выходной файл

vi firewall_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 firewall_shields_up.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 firewall_shields_down.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
1
ответ дан 22 May 2018 в 21:37
  • 1
    Если аппаратный брандмауэр, который сидит на этом сервере, скомпрометирован, все порты, кроме 80 и 443, блокируются на упомянутом аппаратном брандмауэре - у меня есть физический доступ к серверу, так что порт 22 не нужен. Но я ценю ваш всесторонний анализ и рассмотрю обновление, как добавленный уровень безопасности - очень обязательный! Сказав это, я смущен, потому что я буквально использовал это sudo iptables restart более двух лет и не забыл видеть ответы о перезапуске. Процедура была задокументирована давно. Все еще исследуя и смотря, как ваш ответ подходит. Спасибо! – Android Addict 12 June 2017 в 21:09

вы упомянули эту команду

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 являются необязательными ... если вы сохраните выше в файл, а затем загрузите этот файл в качестве своих правил, тогда вам будет хорошо идти ... shields up

, прежде чем что-либо изменить выгрузите свои текущие правила в выходной файл

vi firewall_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 firewall_shields_up.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 firewall_shields_down.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
1
ответ дан 18 July 2018 в 11:46

вы упомянули эту команду

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 являются необязательными ... если вы сохраните выше в файл, а затем загрузите этот файл в качестве своих правил, тогда вам будет хорошо идти ... shields up

, прежде чем что-либо изменить выгрузите свои текущие правила в выходной файл

vi firewall_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 firewall_shields_up.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 firewall_shields_down.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
1
ответ дан 24 July 2018 в 19:51

Другие вопросы по тегам:

Похожие вопросы: