링크 ux 셸 은 랜 의 호스트 포트 를 대량으로 닫 습 니 다.
1. nmap 명령 을 통 해 랜 의 모든 호스트 가 열 린 포트 를 조회 하고 파일 nmap 1. txt 에 저장 합 니 다.
1 # nmap , nmap1.txt
2 mkdir -p /wuhao/sh/files
3 nmap $1 > /wuhao/sh/files/nmap1.txt
nmap 192.168.20.1 - 10 을 예 로 들 면 출력 결 과 는 다음 과 같다.
Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-03 16:37 CST
Nmap scan report for oos01 (192.168.20.1)
Host is up (0.0000040s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp filtered http
Nmap scan report for oos02 (192.168.20.2)
Host is up (0.000099s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
MAC Address: 00:1C:42:FF:5A:B5 (Parallels)
Nmap scan report for oos03 (192.168.20.3)
Host is up (0.000097s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
MAC Address: 00:1C:42:38:94:3C (Parallels)
Nmap done: 10 IP addresses (3 hosts up) scanned in 1.57 seconds
2. 파일 nmap1. txt 에서 필요 한 정보 (호스트 ip, 포트 상태) 를 추출 합 니 다.
1 # nmap1.txt ( ip, )
2 sed -n '/\(Nmap scan report for\|^[0-9]\+\/\)/p' /wuhao/sh/files/nmap1.txt > /wuhao/sh/files/nmap2.txt
3 hosts=($(grep -on '(.*)' /wuhao/sh/files/nmap2.txt | sed -n 's/(\|)//gp'))
4 declare -i len=${#hosts[*]}
5 declare -i i=0
6 while [[ $i -lt $len ]]
7 do
8 lines[$i]=$(echo ${hosts[$i]} | awk -F ':' '{print $1}')
9 ips[$i]=$(echo ${hosts[$i]} | awk -F ':' '{print $2}')
10 i=$i+1
11 done
12 # echo ${lines[*]}=1 5 9
13 # echo ${ips[*]}=192.168.20.1 192.168.20.2 192.168.20.3
3. 포트 상태 줄 에 해당 하 는 호스트 ip 정 보 를 추가 하고 결 과 를 파일 nmap2. txt 에 저장 합 니 다.
1 # ip
2 declare -i j=0
3 while [[ $j -lt $len ]]
4 do
5 declare -i k=$j+1
6 if [ $j -ne $(($len-1)) ]; then
7 sed -i "$((${lines[$j]}+1)),$((${lines[$k]}-1))s/^/${ips[$j]} /" /wuhao/sh/files/nmap2.txt
8 else
9 sed -i "$((${lines[$j]}+1)),$""s/^/${ips[$j]} /" /wuhao/sh/files/nmap2.txt
10 fi
11 j=$j+1
12 done
13
14 # /
15 sed -i 's/ \+\|\// /g' /wuhao/sh/files/nmap2.txt
nmap2. txt 파일 내용 은:
Nmap scan report for oos01 (192.168.20.1)
192.168.20.1 21 tcp open ftp
192.168.20.1 22 tcp open ssh
192.168.20.1 80 tcp filtered http
Nmap scan report for oos02 (192.168.20.2)
192.168.20.2 22 tcp open ssh
192.168.20.2 80 tcp open http
192.168.20.2 3306 tcp open mysql
Nmap scan report for oos03 (192.168.20.3)
192.168.20.3 22 tcp open ssh
192.168.20.3 80 tcp open http
192.168.20.3 3306 tcp open mysql
4. 닫 아야 할 포트 를 추출 합 니 다 (포트 22 를 제외 하고 나머지 포트 는 모두 닫 습 니 다).sshpass 를 통 해 각 호스트 에 원 격 으로 로그 인하 고 iptables 에서 포트 닫 기 명령 을 실행 합 니 다.
1 # ( 22 , )
2 awk '{if($4~/open/ && $2!=22) print $0}' /wuhao/sh/files/nmap2.txt > /wuhao/sh/files/nmap3.txt
3
4 hostip=($(awk -F " " '{print $1}' /wuhao/sh/files/nmap3.txt))
5 port=($(awk -F " " '{print $2}' /wuhao/sh/files/nmap3.txt))
6 protocol=($(awk -F " " '{print $3}' /wuhao/sh/files/nmap3.txt))
7
8 # sshpass , iptables
9 for((m=0;m<${#hostip[*]};m=m+1))
10 do
11 sshpass -p 123456 ssh root@${hostip[$m]} "iptables -A INPUT -p ${protocol[$m]} --dport ${port[$m]} -j DROP;service iptables save;service iptables restart;exit"
12 done
13
14 echo "success!"
5. 스 크 립 트 를 실행 하고 결 과 를 봅 니 다.
[root@oos01 sh]# sh shutdownport.sh 192.168.20.1-10
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
success!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.