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