임베디드 | 라즈베리파이 | ARM | 리눅스 | Qt | 딥러닝

저는 digitalOcean (디지털오션)에서 호스팅 서비스를 이용하고있는데

어느날 디도스 공격 한다고 서버를 막아놓겠다고 메일이 왔어요

당황했는데

간단하게 복구 까지는 했습니다


여기서 복구만 하면 끝이 아니죠

왜 이런 일이 생겼는지 분석하고 앞으로 그런 디도스 공격을 예방할 수 있도록 해야겠지요?


디지털오션 담당자에게 메일을 보냈더니

패키지를 추천해주었습니다 fail2ban

fail2ban  알아보니 무작이 비밀번호 입력하여 해킹하는 것들을 방지 해줄 수 있다고해요

몇번 비밀번호 틀렸을씨 해당 ip 를 차단해버리는 기능이라고 보시면 될겁니다.

이것을 설치하면 완벽하진 못해도 어느정도 차단 효과가 있다고합니다.

패스워드 무작위 공격 피하자



저는 ubuntu 14.04 를 사용하고 있습니다.


자, 시작하겠습니다

sudo apt-get update     업데이트

sudo apt-get install fail2ban    fail2ban 설치



설치후에 폴더를 보면 /etc/fail2ban 폴더안에 jail.conf 가 있을 겁니다. 이 파일을 수정해줘야하는데

로칼에서 실행할 파일을 만들어줍니다.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


복사가 되었으면 이제 파일 수정을 하도록하겠습니다



위와 같이

bantime

findtime

maxretry 등의 값을 설정해 줄 수 있습니다.

위의 기본 설정의 의미는

600 초 동안 즉 10분 안에

3번에 로그인 실패를 했을 경우 600초간 접속이 불가능하도록 설정해주는 것입니다



또한 이러한 시도 실패시 메일 알림 설정을 할 수있습니다

action = %(action_)s

바로 위 명령어인데요

디폴트 값은 위와 같습니다

만약 메일로 해킹 시도 알림을 받고 싶다면

%(action_mw)s

또는 mwl 로 변경하면 됩니다

그리고 받는 이메일도 변경해야한다

destemail = root@localhost   이부분을 고치면된다



nginx를 사용한다면 하단에 nginx-http-auth 를 eanble=true 해줘야한다


이어서

sudo apt-get update 

sudo apt-get install nginx sendmail iptables-persistent

nginx 는 이미 설치되어있다면 절대 설치하지마라!


위 패키지들을 설치해준다.

이메일을 자동으로 보낼 수 있도록 그리고

부팅시 자동으로 방화벽 설정을 해줄 수 있도록 패키지를 설치하는 것이다


이제 방화벽 설정을하자

sudo iptables -S

이 명령어를 입력하면 현재 설정된 내용을 볼 수 있다



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 -j DROP

웹서버 포트 설정을 추가해준다


설정이 끝났다면

sudo service fail2ban stop

서비스를 재시작해주자

sudo service fail2ban start


잠시후에

sudo iptables -S 명령어를 입력하면


위와같이 자동으로 몇개 라인이 추가된것이 보일 것이다.



여기까지하면 무작위 공격 해킹 방지 fail2ban 설치는 마무리가 되어간다

이제 테스트를 해보자


무작위로 입력해보면

Permision denied 가 나오게된다




결국 계속 시도하게되면 위와같이 접속이 거부되어진다

접속을 다시 하게 하려면 어떻게 하면되나?

리부팅!하면된다


apache 와 nginx 설정이 다르다

여기서부터는 apache설정 방법을 작성하도록하겠습니다

위에서 달라지는 부분은 nginx 설치안하고 apache 설치하면되는데 이미 설치되어있으면 설치 안해도된다

/etc/fail2ban/jail.local 파일 수정에서

[apache] 부분을 enable 해준다

sudo service fail2ban restart

수정해준후 restart


sudo fail2ban-client status

현재 셋팅 상태 확인

좀더 자세히 확인

sudo fail2ban-client status apache


테스트한후 밴당한 아이피로 다시 접속하려면

sudo fail2ban-client set apache unbanip 123.123.123.123

해주면 풀린다

cat /var/log/fail2ban.log

로그 체크 

cat /var/log/auth.log





참고링크

https://www.digitalocean.com/community/tutorials/how-fail2ban-works-to-protect-services-on-a-linux-server

https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04

https://www.digitalocean.com/community/tutorials/how-to-protect-an-apache-server-with-fail2ban-on-ubuntu-14-04



iptables 사용방법

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04