1. CentOS7
[ 방화벽 서버 ]
# 브릿지 IP 주소 설정
BRIDGED_IP_ADDR=10.1.1.1 # read BRIDGED_IP_ADDR
# NAT IP 주소 설정
NAT_IP_ADDR=192.168.108.251 # read NAT_IP_ADDR
# 브릿지 네트워크 맥 주소 확인
BRIDGED_MAC_ADDR=00:50:56:36:E6:B0 # read BRIDGED_MAC_ADDR
# NAT 네트워크 맥 주소 확인
NAT_MAC_ADDR=00:0C:29:42:B4:81 # read NAT_MAC_ADDR
# 브릿지 네트워크 인터페이스 확인
BRIDGED_NET_INTERFACE=`ip addr | grep -B 1 -i ${BRIDGED_MAC_ADDR} | grep -P "^\d+:" | awk '{ print $2 }' | sed "s/://g"`
# NAT 네트워크 인터페이스 확인
NAT_NET_INTERFACE=`ip addr | grep -B 1 -i ${NAT_MAC_ADDR} | grep -P "^\d+:" | awk '{ print $2 }' | sed "s/://g"`
# 디바이스 연결 상태 확인 (브릿지 네트워크 설정 확인)
nmcli device status
# NAT UUID 확인
NAT_NIC_UUID=`nmcli connection | grep $NAT_NET_INTERFACE | awk '{ print $2 }'`
cat <<STATIC_IP_SETTING > /etc/sysconfig/network-scripts/ifcfg-$NAT_NET_INTERFACE
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=${NAT_NET_INTERFACE}
UUID=${NAT_NIC_UUID}
DEVICE=${NAT_NET_INTERFACE}
ONBOOT=yes
IPADDR=${NAT_IP_ADDR}
PREFIX=24
GATEWAY=${NAT_IP_ADDR%.*}.2
DNS1=168.126.63.1
STATIC_IP_SETTING
# 브릿지 네트워크 초기 설정
nmcli con add con-name "${BRIDGED_NET_INTERFACE}" ifname ${BRIDGED_NET_INTERFACE} type ethernet ip4 ${BRIDGED_IP_ADDR}/24
systemctl restart network
# 디바이스 연결 상태 확인 (브릿지 네트워크 설정 확인)
nmcli device status
# 설정 추가 확인
cat /etc/sysconfig/network-scripts/ifcfg-${BRIDGED_NET_INTERFACE}
# 수신 패킷이 자신의 것이 아닐경우 드롭하는지 확인 (0일경우 드롭)
cat /proc/sys/net/ipv4/ip_forward
cat <<FIREWALL_SETTING > /etc/sysctl.conf
net.ipv4.ip_forward = 1
FIREWALL_SETTING
# 설정 적용을 위해 재시작
systemctl restart network
# 수신 패킷을 드롭하는지 확인(1일경우 드롭하지 않음)
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/${BRIDGED_NET_INTERFACE}/forwarding
cat /proc/sys/net/ipv4/conf/${NAT_NET_INTERFACE}/forwarding
# firewalld 사용 안하기 떄문에 끄기
systemctl stop firewalld
systemctl disable firewalld
# seliunx 끄기
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
# iptable 방화벽 초기화
iptables -F
# 외부로부터 들어오는 내용 모두 드롭하도록 설정
iptables --policy FORWARD DROP
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
# 브릿지 대역대에서 방화벽 서버로 들어오는 패킷 허용
iptables --append INPUT --in-interface ${BRIDGED_NET_INTERFACE} --source ${BRIDGED_IP_ADDR%.*}.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT
# 방화벽 서버에서 브릿지 대역대로 나가는 패킷 허용
iptables --append OUTPUT --out-interface ${BRIDGED_NET_INTERFACE} --destination ${BRIDGED_IP_ADDR%.*}.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT
# 브릿지 대역대에서 방화벽 서버로 들어오는 패킷 다른 인터페이스 전달 허용
iptables --append FORWARD --in-interface ${BRIDGED_NET_INTERFACE} --source ${BRIDGED_IP_ADDR%.*}.0/24 --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED --jump ACCEPT
# 방화벽 서버에서 브릿지 대역대로 나가는 패킷 다른 인터페이스 전달 허용
iptables --append FORWARD --in-interface ${NAT_NET_INTERFACE} --destination ${BRIDGED_IP_ADDR%.*}.0/24 --match state --state ESTABLISHED --jump ACCEPT
# 외부인터넷과 연결되는 인터페이스 지정
iptables --table nat --append POSTROUTING --out-interface ${NAT_NET_INTERFACE} --jump MASQUERADE
iptables-save > /etc/iptables.rules
# 방화벽 상태 확인
iptables -L
# nslookup 으로 ip 주소 확인
# nslookup demo.testfire.net
# nslookup 으로 ip 주소 확인
# nslookup www.naver.com
# 아래 아이피에 해당하는 사이트 거부
# iptables -I FORWARD 1 -p tcp -s 65.61.137.117 -j DROP
# iptables -I FORWARD 1 -p tcp -s 223.130.200.104 -j DROP
# iptables -I FORWARD 1 -p tcp -s 223.130.200.107 -j DROP
# 정책 저장
# iptables-save > /etc/iptables.rules
# 방화벽 상태 확인
# iptables -L
[ 클라이언트 ]
# 인터페이스 이름 확인
NET_INTERFACE=`ls /sys/class/net | grep -v lo | head -1`
NIC_UUID=`nmcli connection | grep $NET_INTERFACE | awk '{ print $2 }'`
FIREWALL_SERVER_IP=10.1.1.1 # read BRIDGED_IP_ADDR
# IP 설정
IP_ADDR=10.1.1.30 # read IP_ADDR
cat <<STATIC_IP_SETTING > /etc/sysconfig/network-scripts/ifcfg-$NET_INTERFACE
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=${NET_INTERFACE}
UUID=${NIC_UUID}
DEVICE=${NET_INTERFACE}
ONBOOT=yes
IPADDR=${IP_ADDR}
PREFIX=24
GATEWAY=${FIREWALL_SERVER_IP}
DNS1=168.126.63.1
STATIC_IP_SETTING
systemctl restart network
2. Ubuntu20
[ 방화벽 서버 ]
# 브릿지 IP 주소 설정
BRIDGED_IP_ADDR=10.1.1.1 # read BRIDGED_IP_ADDR
# NAT IP 주소 설정
NAT_IP_ADDR=192.168.10.252 # read NAT_IP_ADDR
# 브릿지 네트워크 맥 주소 확인
BRIDGED_MAC_ADDR=00:50:56:3F:0D:3D # read BRIDGED_MAC_ADDR
# NAT 네트워크 맥 주소 확인
NAT_MAC_ADDR=00:0C:29:A1:9A:D5 # read NAT_MAC_ADDR
# 브릿지 네트워크 인터페이스 확인
BRIDGED_NET_INTERFACE=`ip addr | grep -B 1 -i ${BRIDGED_MAC_ADDR} | grep -P "^\d+:" | awk '{ print $2 }' | sed "s/://g"`
# NAT 네트워크 인터페이스 확인
NAT_NET_INTERFACE=`ip addr | grep -B 1 -i ${NAT_MAC_ADDR} | grep -P "^\d+:" | awk '{ print $2 }' | sed "s/://g"`
# 디바이스 연결 상태 확인 (브릿지 네트워크 설정 확인)
nmcli device status
# 연결 설정 삭제
nmcli con delete `nmcli device status | grep ${BRIDGED_NET_INTERFACE} | awk '{ print $4 }'`
nmcli con show
nmcli device status
cat <<STATIC_IP_SETTING > /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
${NAT_NET_INTERFACE}:
addresses: [${NAT_IP_ADDR}/24]
gateway4: ${NAT_IP_ADDR%.*}.2
nameservers:
addresses: [168.126.63.1,8.8.8.8]
dhcp4: no
${BRIDGED_NET_INTERFACE}:
addresses: [${BRIDGED_IP_ADDR}/24]
dhcp4: no
STATIC_IP_SETTING
netplan apply
ip route
# 디바이스 연결 상태 확인 (브릿지 네트워크 설정 확인)
nmcli con show
nmcli device status
# 수신 패킷이 자신의 것이 아닐경우 드롭하는지 확인 (0일경우 드롭)
cat /proc/sys/net/ipv4/ip_forward
cat <<FIREWALL_SETTING > /etc/sysctl.conf
net.ipv4.ip_forward = 1
FIREWALL_SETTING
# 설정 적용
sysctl -p
# 수신 패킷을 드롭하는지 확인(1일경우 드롭하지 않음)
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/${BRIDGED_NET_INTERFACE}/forwarding
cat /proc/sys/net/ipv4/conf/${NAT_NET_INTERFACE}/forwarding
# firewalld 사용 안하기 떄문에 끄기
ufw disable
# iptable 방화벽 초기화
iptables -F
# 외부로부터 들어오는 내용 모두 드롭하도록 설정
iptables --policy FORWARD DROP
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
# 브릿지 대역대에서 방화벽 서버로 들어오는 패킷 허용
iptables --append INPUT --in-interface ${BRIDGED_NET_INTERFACE} --source ${BRIDGED_IP_ADDR%.*}.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT
# 방화벽 서버에서 브릿지 대역대로 나가는 패킷 허용
iptables --append OUTPUT --out-interface ${BRIDGED_NET_INTERFACE} --destination ${BRIDGED_IP_ADDR%.*}.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT
# 브릿지 대역대에서 방화벽 서버로 들어오는 패킷 다른 인터페이스 전달 허용
iptables --append FORWARD --in-interface ${BRIDGED_NET_INTERFACE} --source ${BRIDGED_IP_ADDR%.*}.0/24 --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED --jump ACCEPT
# 방화벽 서버에서 브릿지 대역대로 나가는 패킷 다른 인터페이스 전달 허용
iptables --append FORWARD --in-interface ${NAT_NET_INTERFACE} --destination ${BRIDGED_IP_ADDR%.*}.0/24 --match state --state ESTABLISHED --jump ACCEPT
# 외부인터넷과 연결되는 인터페이스 지정
iptables --table nat --append POSTROUTING --out-interface ${NAT_NET_INTERFACE} --jump MASQUERADE
iptables-save > /etc/iptables.rules
# 방화벽 상태 확인
iptables -L
# nslookup 으로 ip 주소 확인
# nslookup demo.testfire.net
# nslookup 으로 ip 주소 확인
# nslookup www.naver.com
# 아래 아이피에 해당하는 사이트 거부
# iptables -I FORWARD 1 -p tcp -s 65.61.137.117 -j DROP
# iptables -I FORWARD 1 -p tcp -s 223.130.200.104 -j DROP
# iptables -I FORWARD 1 -p tcp -s 223.130.200.107 -j DROP
# 정책 저장
# iptables-save > /etc/iptables.rules
# 방화벽 상태 확인
# iptables -L
[ 클라이언트 ]
# 인터페이스 이름 확인
NET_INTERFACE=`ls /sys/class/net | grep -v lo | head -1`
NIC_UUID=`nmcli connection | grep $NET_INTERFACE | awk '{ print $2 }'`
FIREWALL_SERVER_IP=10.1.1.1 # read BRIDGED_IP_ADDR
# IP 설정
IP_ADDR=10.1.1.30 # read IP_ADDR
cat <<STATIC_IP_SETTING > /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
${NAT_NET_INTERFACE}:
addresses: [${IP_ADDR}/24]
gateway4: ${FIREWALL_SERVER_IP}
nameservers:
addresses: [168.126.63.1,8.8.8.8]
dhcp4: no
STATIC_IP_SETTING
netplan apply
'Operating Systems > Linux' 카테고리의 다른 글
[ Linux ] KALI 리눅스 설치 (0) | 2021.11.27 |
---|---|
[ Linux ] SNORT 서버 설치 (0) | 2021.11.25 |
[ Linux ] FIND 활용 (0) | 2021.10.25 |
[ Linux ] 파일 압축 및 해제 (0) | 2021.10.22 |
[ Linux ] PXE 서버 설치 [ 임시 작성 ] (0) | 2021.10.21 |