iptables와 해커 예방

iptables와 해커 예방

안녕하세요 우분투 주민 여러분!

다음은 내 iptables.rules 파일의 예입니다.

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:f2b-sshd - [0:0]
:f2b-sshd-ddos - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -s 202.215.160.75/32 -j DROP
-A INPUT -s 66.210.251.136/32 -j DROP
-A INPUT -s 61.40.0.0/16 -j DROP
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos
-A INPUT -i tap0 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -i br0 -j ACCEPT
-A FORWARD -i br0 -j ACCEPT
-A f2b-sshd -j RETURN
-A f2b-sshd-ddos -j RETURN
COMMIT

이것은 내 파일의 압축 버전입니다. 아마도 삭제하려는 IP/도메인이 약 100개 정도 있을 것입니다.

내 문제는 xxxx와 같은 새 IP를 삭제하면 다음과 같이 추가된다는 것입니다.

-A INPUT -i br0 -j ACCEPT
-A INPUT -s x.x.x.x/32 -j DROP
-A FORWARD -i br0 -j ACCEPT

그렇다면 이것은 실제로 내가 원하는 대로 IP 주소를 삭제하는 것이 아닙니다. 사용자/도메인을 삭제하는 데 사용하는 쉘 스크립트가 있습니다.

./드롭-사용자

sudo iptables -A INPUT -s $1 -j DROP
sudo sh -c "iptables-save > /etc/iptables.rules" 

./드롭 도메인

 sudo iptables -A INPUT -s $1/16 -j DROP
 sudo sh -c "iptables-save > /etc/iptables.rules"

이 문제를 해결하기 위해 /etc/iptables.rules 파일을 수동으로 편집하여 xxxx IP를 이 줄 위로 이동합니다.

 -A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos

그런 다음 전화를 겁니다.

sudo iptables-restore < /etc/iptables.rules

내 프로세스에 어떤 문제가 있습니까? 더 좋은 방법이 있나요? 매일 나는 해킹을 처리하는 데 약 10분을 보냈고 그 대부분의 시간은 iptables.rules 파일을 편집한 다음 iptables-restore를 통해 복원하는 데 소요되었습니다. ./drop-user 또는 ./drop-domain을 호출하여 작업을 완료하고 싶지만 iptables에 대한 이해가 충분하지 않다고 생각합니다.

iptables-restore 전에 다음 명령을 수행해야 합니까?

 sudo iptables -F
 sudo iptables -Z

미리 감사드립니다!

답변1

fail2ban기본 구성에서 완벽하게 작동하며 더 많은 서비스를 모니터링하려는 경우 추가로 사용자 정의할 수 있는 를 사용하여 금지 프로세스를 자동화할 것을 강력히 권합니다 .

와 결합하면 iptables-persistent재부팅 시 규칙을 유지하는 데 도움이 됩니다.

다음은 Ubuntu 서버로 수행하는 작업에 대한 기본 개요입니다.

Fail2ban 설치 및 구성

sudo aptitude install fail2ban && sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && sudo nano /etc/fail2ban/jail.local

그러면 이를 설치하고 사용자 정의를 위해 구성 파일을 새 파일에 복사합니다. 이는 패키지가 업데이트될 때 편집 내용을 덮어쓰는 것을 방지하기 때문에 모범 사례입니다.

개인적으로 선호하는 것은 확장하는 것입니다.금지 시간그리고시간을 찾아기본값에서. 금지 시간은 공격자가 금지되는 기간이고, 찾기 시간은 공격 속도를 제한하는 경우 시도가 계산되는 시간입니다. bantime = 21600(6시간으로 증가, 시간 값은 초 단위) 및 findtime = 3600(시간당 최대 3번의 공격 시도)을 찾아서 편집합니다 .

기존 Iptables 규칙을 플러시하고 새 기본값을 설정합니다.

이는 포트 22(SSH), 포트 80(HTTP) 및 포트 443(HTTPS)에서만 수신 대기하는 인바운드 포트가 있는 일반적인 웹 서버에서 사용하기 위한 한 줄짜리 코드입니다.이 DigitalOcean 튜토리얼나만의 것을 구축하거나 광산을 맞춤화하는 방법에 대한 좋은 참고 자료입니다.Iptables 및 DROP 규칙 설정에 주의하세요. 순서가 잘못되면 영구적으로 잠길 수 있습니다!즉, 이 한 줄짜리 내용은 제가 사용하는 것이며 안전하고 테스트되었으며 완벽하게 작동합니다.

sudo iptables -P INPUT ACCEPT && sudo iptables -F && sudo iptables -A INPUT -i lo -j ACCEPT && sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT && sudo iptables -A INPUT -j LOG && sudo iptables -A FORWARD -j LOG && sudo ip6tables -A INPUT -j LOG && sudo ip6tables -A FORWARD -j LOG && sudo iptables -A INPUT -j DROP

재부팅 후에도 변경 사항이 지속되도록 설정

iptables-persistent마지막 단계는 재부팅 시 규칙 저장 및 복원을 자동화하는 패키지를 설치하고 구성하는 것입니다 .

sudo aptitude install iptables-persistent && sudo service iptables-persistent start

IPV4 및 IPV6 규칙을 확인하라는 메시지가 표시되며 탭 키를 사용하여 각각에 대해 '예'를 선택하고 저장해야 합니다. 재부팅하면 자동으로 시작되므로 추가 구성에 대해 걱정할 필요가 없습니다.

규칙을 지속적으로 만들 때 주의할 점은 추가하거나 편집하는 새 규칙(예: 포트 443에서 HTTPS를 추가하거나 제거한 경우)에 대해 프로세스에 수동으로 알려야 한다는 것입니다. 이렇게 하려면 sudo service iptables-persistent save현재 설정된 규칙 세트를 업데이트하는 실행을 실행하세요. 14.04 이후 버전에서는 명령이 "netfilter-pertant"로 변경된 것 같아서 sudo service netfilter-persistent save첫 번째 명령이 작동하지 않는 경우 사용하십시오.

요약

이제 fall2ban은 SSH에 대한 공격을 모니터링하고 설정한 매개변수에 따라 자동으로 IP 주소를 추가하고 뺍니다. Iptables는 열지 않은 포트에 대해 들어오는 모든 트래픽을 무시하고 이러한 규칙은 재부팅 후에도 유지되므로 수행해야 할 다른 작업이 많지 않습니다. 내 생각에 여분의 자유 시간을 즐기십시오!

모든 변경 사항을 취소하려면 위의 모든 단계를 취소하세요.

어떤 이유로든 이 방법을 계속 사용하고 싶지 않은 경우 모든 작업을 빠르게 실행 취소할 수 있습니다. 이는 권장되지 않지만 귀하의 컴퓨터이므로 방법은 다음과 같습니다.

  1. 모든 Iptables 규칙을 플러시하고 모든 포트의 모든 트래픽을 허용합니다. sudo iptables -P INPUT ACCEPT && sudo iptables -F(마지막에 DROP 규칙을 제거하려면 이 작업을 수행해야 합니다. 그렇지 않으면 잠깁니다.)
  2. 이전에 설치된 패키지와 해당 설정 sudo aptitude purge fail2ban iptables-persistent(또는 netfilter-persistentUbuntu 서버 버전에 따라 )을 제거합니다. 다시 시작한 후에는 이전 방식으로 돌아가야 합니다. 현재 수행 중인 것처럼 수동으로 다시 추가해야 하는 사용자 정의 Iptables 설정은 제외됩니다.

관련 정보