현재 저는 Linux 파일 서버에 방화벽을 구현하려고 합니다. 삼바 서버를 제외한 모든 것이 예상대로 작동합니다. 인터넷에서 검색했지만 해결책이 없습니다. 방화벽이 비활성화되어 있으면 Samba가 제대로 작동합니다. 삼바 규칙을 추가하면 Windows를 통해 서버에 액세스할 수 없습니다. 나에게 뭐가 문제 니?
고마워요, 조니
# 1. Delete all existing rules
iptables -F
# 2. Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#Allow traffic on loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#dhcp
iptables -I INPUT -i eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT
#samba server
iptables -A INPUT -i eth0 -s 192.168.178.0/24 -p udp --dport 137:138 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.178.0/24 -p udp --sport 137:138 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.178.0/24 -p tcp --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.178.0/24 -p tcp --sport 139 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -d 192.168.178.0/24 -p tcp --dport 445 -m state --state ESTABLISHED -j ACCEPT
#ntp date
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
iptables -A INPUT -p udp --sport 123 -j ACCEPT
#apt get and wget
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#incoming ssh
iptables -A INPUT -i eth0 -p tcp --dport 50555 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 50555 -m state --state ESTABLISHED -j ACCEPT
#outgoing ssh
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -d 192.168.178.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#Allow Incoming HTTP and HTTPS
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
#Allow Ping from Inside to Outside
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#Allow outgoing dns
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
#Logging
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
답변1
규칙 5를 제거합니다. 그것은해야한다:
iptables -A INPUT -i eth0 -s 192.168.178.0/24 -p tcp --dport 445 -m state --state NEW,ESTABLISHED -j ACCEPT
및 관련 연결(새 규칙)
iptables -A OUTPUT -o eth0 -d 192.168.178.0/24 -p udp --sport 445 -m state --state ESTABLISHED -j ACCEPT
또한 긴 규칙 목록을 피하기 위해 이미 설정한 각 규칙에 대한 세션을 기반으로 규칙을 생성 할 필요가 없도록 OUTPUT
기본 정책을 설정할 수 있습니다. 시간이 지남에 따라 이를 통해 규칙을 더 빠르게 만들 수 있습니다.ACCEPT
INPUT
자신도 모르게 과도한 트래픽 출력을 생성할 수 있는 서비스가 없다면 이는 다소 과잉입니다. 또는 관련 트래픽을 출력하는 특정 규칙을 만듭니다.
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT