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 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

관련 정보