아래는 DDoS 공격이 감지될 경우 이더넷 인터페이스를 자동으로 전환하고, 추가 공격이 발생하면 다시 전환하도록 설정된 Bash 스크립트입니다.
기능 설명
- DDoS 감지:
rx_packets
를 모니터링하여 일정 초당 패킷 수(예: 10,000)를 초과하면 공격으로 판단 - 이더넷 인터페이스 전환:
eth0
⇄eth1
을 번갈아가며 변경 - 반복 실행: 지속적으로 감시하며, 공격이 다시 감지되면 재전환
Bash 스크립트
#!/bin/bash
# 감시할 네트워크 인터페이스 목록 (교차 전환)
IFACE1="eth0"
IFACE2="eth1"
# 패킷 임계값 (초당 패킷 수)
THRESHOLD=10000
# 현재 사용 중인 인터페이스 (초기값은 eth0)
CURRENT_IFACE="$IFACE1"
# 로그 파일 위치
LOGFILE="/var/log/ddos_auto_switch.log"
# DDoS 감지 함수
detect_ddos() {
RX1=$(cat /sys/class/net/$CURRENT_IFACE/statistics/rx_packets)
sleep 1
RX2=$(cat /sys/class/net/$CURRENT_IFACE/statistics/rx_packets)
PPS=$((RX2 - RX1))
echo "$(date) - $CURRENT_IFACE: $PPS PPS" >> "$LOGFILE"
if (( PPS > THRESHOLD )); then
return 0 # DDoS 감지됨
else
return 1 # 정상 상태
fi
}
# 네트워크 인터페이스 변경 함수
switch_interface() {
if [[ "$CURRENT_IFACE" == "$IFACE1" ]]; then
NEW_IFACE="$IFACE2"
else
NEW_IFACE="$IFACE1"
fi
echo "$(date) - DDoS 감지됨! $CURRENT_IFACE → $NEW_IFACE 변경" >> "$LOGFILE"
# 네트워크 인터페이스 변경
ip link set "$CURRENT_IFACE" down
ip link set "$NEW_IFACE" up
ip route replace default dev "$NEW_IFACE"
# 현재 인터페이스 업데이트
CURRENT_IFACE="$NEW_IFACE"
}
# 메인 루프 (주기적으로 체크)
while true; do
if detect_ddos; then
switch_interface
sleep 5 # 전환 후 안정화 대기
else
sleep 1 # 정상 상태면 계속 감시
fi
done
사용 방법
- 스크립트 저장
nano /usr/local/bin/ddos_auto_switch.sh
위 코드를 붙여넣고 저장합니다. - 실행 권한 부여
chmod +x /usr/local/bin/ddos_auto_switch.sh
- 백그라운드 실행
nohup /usr/local/bin/ddos_auto_switch.sh &
- 로그 확인
tail -f /var/log/ddos_auto_switch.log
작동 방식
eth0
에서 DDoS 감지 →eth1
로 전환- 다시
eth1
에서 DDoS 감지 →eth0
으로 전환 - 공격이 계속되면 계속 전환됨
2. systemd 서비스 파일 생성
이제 systemd
서비스 파일을 생성하여 자동 실행되도록 설정합니다.
sudo nano /etc/systemd/system/ddos_auto_switch.service
아래 내용을 입력 후 저장 (Ctrl + X
, Y
, Enter
) 합니다.
[Unit]
Description=DDoS Auto Ethernet Switch Service
After=network.target
[Service]
ExecStart=/usr/local/bin/ddos_auto_switch.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
3. 서비스 활성화 및 실행
(1) systemd 서비스 리로드
sudo systemctl daemon-reload
(2) 서비스 활성화 (부팅 시 자동 실행)
sudo systemctl enable ddos_auto_switch.service
(3) 서비스 즉시 실행
sudo systemctl start ddos_auto_switch.service
(4) 서비스 상태 확인
sudo systemctl status ddos_auto_switch.service
(5) 서비스 로그 확인
journalctl -u ddos_auto_switch.service -f
4. 서비스 중지 및 제거 (필요 시)
(1) 서비스 중지
sudo systemctl stop ddos_auto_switch.service
(2) 부팅 시 자동 실행 해제
sudo systemctl disable ddos_auto_switch.service
(3) 서비스 삭제
sudo rm /etc/systemd/system/ddos_auto_switch.service
sudo systemctl daemon-reload
✅ 이제 서버가 부팅될 때 자동으로 DDoS 감지 및 네트워크 인터페이스 전환이 동작합니다. 🚀
답글 남기기