![iptables는 http/https/ssh를 제외한 모든 것을 차단합니다.](https://rvso.com/image/769301/iptables%EB%8A%94%20http%2Fhttps%2Fssh%EB%A5%BC%20%EC%A0%9C%EC%99%B8%ED%95%9C%20%EB%AA%A8%EB%93%A0%20%EA%B2%83%EC%9D%84%20%EC%B0%A8%EB%8B%A8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
Wordpress를 실행해야 하는 vps에 이 iptables 구성이 있습니다. 내가 원하는 것은 포트 80의 http, 포트 443의 https 및 포트 22의 ssh를 제외한 모든 들어오는 요청을 차단하는 것입니다.
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 f2b-sshd tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain f2b-sshd (1 references)
num target prot opt source destination
1 REJECT all -- [retracted_ip] anywhere reject-with icmp-port-unreachable
2 REJECT all -- [retracted].com anywhere reject-with icmp-port-unreachable
3 RETURN all -- anywhere anywhere
온라인에서 몇 가지 명령을 찾았지만 확실하지 않은 것은 해당 명령이 Fail2ban과 충돌할 수 있는지 여부입니다.
답변1
일반적으로:
iptables -L -v -n --line-numbers
방화벽 규칙은 설정되고 나타나는 순서대로 처리됩니다( , 및 iptables -L -v -n -t nat --line-numbers
/ iptables-save
또는 유사한 명령 의 출력에서 ).
잘못된 체인 및/또는 잘못된 순서로 새 규칙을 만들면 원치 않는 결과가 발생하고 기능, 보안이 손상되거나 유효한 트래픽이 차단됩니다.
iptables
방화벽을 관리하기 위해 낮은 수준의 명령을 실행하는 것이 항상 최선의 솔루션은 아닐 수도 있다는 점에 유의하십시오 . 내가 아는 한 Ubuntu에서는 UFW 도구를 사용하는 것이 선호되며 Fail2ban과 함께 안정적으로 작동합니다.
Fail2ban은 체인과 같이 하나 이상의 사용자 정의 체인(특정 오작동 IP 주소를 차단하기 위한 대부분의 무거운 작업을 처리함)을 생성합니다 f2b-sshd
. 일반적으로 해당 체인의 항목은 Fail2ban이 관리하도록 합니다.
또한 fall2ban은 체인에서 생성하는 사용자 정의 체인에 대한 규칙을 생성합니다 INPUT
. 일반적으로 이러한 규칙이 나와야 합니다.처음으로 INPUT
체인, 생성한 다른 규칙보다 먼저.
현재 방화벽 구성에서 스위치와 함께 iptables를 사용하여 -A
INPUT 체인에 새 규칙을 추가하면 모든 것이 작동해야 합니다.
다음 명령을 실행하면 ssh, http 및 https를 허용하고 다른 모든 수신 트래픽을 차단하는 방화벽을 생성하는 일반적인 규칙이 추가됩니다.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
답변2
먼저 백업을 해보겠습니다 :)
sudo iptables-save > ./mybackup
연결이 끊어지고 KVM이 필요한 경우 백업 시작으로 쉽게 돌아갈 수 있습니다.
sudo iptables-restore < ./mybackup
그런 다음 규칙 추가를 시작할 수 있습니다.
sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC -j DROP
인스턴스가 아닌 다른 IP에 대한 방화벽을 만들려면 YOURIPPUBLIC : 33.33.33.33 또는 넷마스크 33.33.33.33/32를 사용하세요.
관련, 확립됨 - 연결하기 전에 모든 방화벽 다음 규칙을 건너뛰면 연결을 얻으려면 다음 규칙을 따르세요 :)
전체 네트워크를 원한다면
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP
나중에 편집할 수 있도록 저장할 수 있습니다.
iptables-save > /.mynew.iptables.list.txt