-
Notifications
You must be signed in to change notification settings - Fork 0
Fortigate 방화벽 자동 등록 스크립트
5gyungjae edited this page Sep 5, 2019
·
2 revisions
- 특정 IP주소와 서브넷을 받아 방화벽에 자동으로 IP주소 추가 후 IP주소그룹에 추가
- expect를 이용해 방화벽 접속 후 명령실행
- 입력한 IP주소는 검색을 위해 HASH(SHA256)로 변경 후 별도 리스트로 관리
- fortios 5.4버전 기준
#!/bin/bash
#변수 지정
PWHASH=비밀번호 sha256sum hash값
USER=계정명
GRP=그룹명
SRVIP=방화벽 호스트
SF=스크립트 위치
## IP주소 검증
function validate_ip_address()
{
if ! [[ $IPADDR =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then
echo "IP주소를 잘못 입력했습니다."
exit 0
fi;
if ! [[ $NETMASK =~ ^([1-9]|[12][0-9]|3[02]) ]]; then
echo "SUBNETMASK를 잘못 입력했습니다."
exit 0
fi;
}
function append_dev() {
expect << EOF
set timeout 1
# 로그인
spawn ssh $USER@$SRVIP
expect "password:"
send "$PW\r"
# 첫 프롬프트
expect "$"
# IP추가
send "config firewall address\r"
expect "(address) $"
send "edit $IPADDR\r"
expect "$IPADDR $"
send "set subnet $IPADDR/$NETMASK\r"
expect "(address) $"
send "set associated-interface wan1\r"
expect "(address) $"
send "set comment $COMMENT\r"
expect "($IPADDR) $"
send "end\r"
# 프롬프트
expect "$"
# 그룹에 추가
send "config firewall addrgrp\r"
expect "(addrgrp) $"
send "edit $GRP\r"
expect "($GRP) $"
send "append member $IPADDR\r"
expect "($GRP) $"
send "end\r"
# 로그아웃
expect "$"
send "exit\r"
expect eof
EOF
}
function search2() {
IPHASH=$(echo $IPADDR | sha256sum | cut -c1-64)
cat $SF/list_hash | grep $IPHASH | wc -l
}
case $1 in
add )
read -p "1. IP주소를 입력 해 주세요 > " IPADDR
read -p "2. SUBNETMASK를 입력 해 주세요(1-32) > " NETMASK
validate_ip_address
read -p "3. 코멘트를 입력 해 주세요 > " COMMENT
echo "** 입력정보 확인 **"
echo "주소: $IPADDR/$NETMASK"
echo "코멘트: $COMMENT"
read -p "** IP주소가 맞습니까? (y/n):" CHOOSE
if [ "$CHOOSE" == "y" ]; then
echo -e "비밀번호를 입력 해 주세요"
read -sp "비밀번호:" PW
if [ `echo $PW | sha256sum | cut -c1-64` == "$PWHASH" ]; then
append_dev
echo $IPADDR | sha256sum | cut -c1-64 >> $SF/list_hash
else
echo "비밀번호가 틀렸습니다."
exit 0
fi
else
echo "종료합니다."
exit 0
fi;;
search )
read -p "1. 검색할 IP주소를 입력 해 주세요 > " IPADDR
if [ -z $IPADDR ]; then
echo "IP주소를 입력 해 주세요"
else
if [ $(search2) == 1 ]; then
echo "검색하신 IP주소는 등록되어 있습니다."
else
echo "검색하신 IP주소는 없습니다."
fi
fi
;;
*)
echo "* 도움말!"
echo "개발서버 연결허용 IP 추가: ./a2dev add"
echo "IP등록여부 검색: ./a2dev search"
;;
esac