У меня есть система 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
вы упомянули эту команду
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
вы упомянули эту команду
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
вы упомянули эту команду
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