정기적으로 이메일을 보내도록 Raspberry Pi를 설정했습니다. 24시간 인터넷에 연결되어 있기 때문에 IPTables를 올바르게 설정해야 합니다.
SSH 수신을 허용하고 포트 587에서 SMTP를 통해 이메일을 보낼 수 있도록 허용하고 싶습니다. 이 IPTables 스크립트를 생각해 냈는데 맞나요? 그렇지 않다면 이유를 말해주실 수 있나요? 감사해요.
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 587 -j ACCEPT
답변1
이와 같은 iptables 규칙은 잘 작동합니다.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:156]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
첫 번째 규칙은 기본적으로 들어오는 모든 연결을 삭제하고, 두 번째 규칙은 기본적으로 모든 전달을 삭제하고, 세 번째 규칙은 출력을 허용합니다. 왜 허용됩니까? IMHO, 출력 연결을 여는 것은 그다지 안전하지 않으며 닫으면 방화벽 구성이 약간 어려울 수 있습니다.
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
관련 및 설정됨 상태의 연결을 허용합니다.
나머지는 쉽죠
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
22 tcp를 허용하고 587 tcp를 허용하고 다른 모든 연결을 허용하지 않으면 파일에 저장한 다음 실행할 수 있습니다
iptables-restore < firewall.file
nmap -sS
그리고 호스트에게 확인해 보세요
답변2
이러한 명령을 사용하는 것이 불편하다면 다른 명령을 iptables
사용해도 됩니다 . UFW
UFW는 Simple Firewall의 약자로 iptables보다 사용하기 쉬운 도구입니다.
ufw
Raspberry Pi에 설치합니다.
sudo apt-get install ufw
ufw를 설치한 후 다음 명령을 사용하여 기본값을 설정할 수 있습니다.
sudo ufw default deny incoming && sudo ufw default deny outgoing
이렇게 하면 연결을 시도하는 모든 요청이 거부되고 모든 나가는 요청도 거부됩니다. 이는 좀 더 제한적인 경우에 좋습니다.
허용하다ssh
존재하다하다:
sudo ufw allow in 22
허용하다587
나가하다:
sudo ufw allow out 587
자세한 내용은 man ufw
더 많은 예제와 잘 설명된 내용을 확인하세요.