나는 그것을 사용하려고 노력하고 있지만 iptables
문서를 이해하는 것에 대해 아무것도 모르고 그것을 구현하려고 시도하는 동안 서버에서 두 번이나 잠겼습니다.
제가 구현하고 싶은 간단한 규칙은 다음과 같습니다.
- 모든 사람이 포트 80, 6667 및 6697을 사용하도록 허용
- 예를 들어 내 IP에는 포트 22만 허용합니다.
10.10.10.10
나 자신을 가두지 않고 이 간단한 규칙을 구현하도록 도와줄 수 있는 사람이 있습니까?
답변1
iptables
네트워킹의 기본, TCP(ICMP/UDP/SCTP...)/IP, Linux의 넷필터 및 적절한 방화벽을 처음에 설정하는 방법을 배울 준비가 되지 않았다면 바로 시작하지 않는 것이 좋습니다. 안에.
여기서는 Debian을 사용하고 계시 ufw
므로 iptables
.
나가는 트래픽에 대해서는 ACCEPT, 들어오거나 전달되는 트래픽에 대해서는 DROP 기본 정책을 설정합니다. 필요한 유형의 ICMP/DHCP/브로드캐스트/멀티캐스트 트래픽을 차단하지 않고 필요에 따라 IPv4 및 IPv6를 처리하므로 발이 묶일 위험이 없습니다.
그런 다음 당신이 해야 할 일은 원하는 서비스에 구멍을 뚫는 것뿐입니다. 일부 패키지는 /etc/ufw/applications.d/
포트를 수동으로 지정하지 않고도 애플리케이션에 구멍을 뚫는 데 도움이 되는 파일을 설치하기도 합니다(직접 생성할 수도 있음).
ufw app list
지원되는 애플리케이션 목록을 제공합니다. 그러면 다음과 같이 할 수 있습니다:
ufw allow from 10.10.10.10 app OpenSSH
ufw allow from any app WWW
ufw allow ircd/tcp # by service name (from /etc/services...)
ufw allow 6697/tcp # by explicit port number
ufw enable
이를 실행하여 iptables-save
생성되는 규칙을 확인할 수 있습니다. 또한 IP 스택의 일부 설정도 조정됩니다. 의 추가 구성도 참조하세요 /etc/ufw
.
답변2
필터 테이블을 사용하여 iptables
원하는 규칙을 추가하고 먼저 필터 테이블의 모든 규칙을 새로 고칩니다 iptables
.
sudo iptables -t filter -F
그런 다음 ESTABLISHED, RELATED 연결을 허용하는 규칙을 추가합니다.
sudo iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
그런 다음 모든 사람이 TCP 포트 80, 6667 및 6697을 사용하도록 허용하려면 다음을 추가하십시오.
sudo iptables -t filter -A INPUT -p tcp -m multiport --dports 80,6667,6697 -j ACCEPT
IP 추가에만 포트 22를 허용하십시오.
sudo iptables -t filter -A INPUT -s <your ip address> -p tcp --dport 22 -J ACCEPT
그런 다음 다른 항목이 추가되지 않도록 합니다.
sudo iptables -t filter -A INPUT -j DROP
완벽한.
답변3
iptables 사용법을 배우고 싶다면 추천합니다.아니요서버에서 구성해 보세요. 대신 로컬 컴퓨터(예: 가상 컴퓨터 또는 노트북)에 iptables를 설치하고 실험해 보세요. 이렇게 하면 실수를 하더라도 시스템에서 빠져나오는 일이 발생하지 않습니다.
개인적으로 15년 동안 Linux 서버를 관리하고 iptables 스크립트를 수동으로 작성한 후에도 실수가 발생했을 때 서버를 즉시 다시 시작할 수 있는 방법(KVM 시스템, 호스트 Hoster의 제어판을 통해)이 아니면 방화벽 구성을 업데이트한 적이 없습니다. ) 또는 물리적으로 기계까지 걸어갈 수 있음). 결국 실수는 언제나 가능하며 간단한 오타로 인해 실수로 7시간 동안 서버에 접속할 수 없게 되는 일이 발생하고 싶지는 않습니다.