iptables는 http/https/ssh를 제외한 모든 것을 차단합니다.

iptables는 http/https/ssh를 제외한 모든 것을 차단합니다.

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를 사용하여 -AINPUT 체인에 새 규칙을 추가하면 모든 것이 작동해야 합니다.


다음 명령을 실행하면 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

관련 정보