fail2ban ssh 해킹 방지 패스워드 무작위 공격 피하자
저는 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
'프로그래밍 > 서버' 카테고리의 다른 글
JSON 형식 체크 사이트 (0) | 2016.09.16 |
---|---|
KT ipTIME 두개의 공유기를 거친 포트포워딩 (0) | 2016.07.18 |
mac os git 삭제 및 재설치 방법 (0) | 2015.11.26 |
[DB 보안] PHPMyAdmin 설정 .htaccess 파일 작성 (0) | 2015.11.12 |
디지털오션 웹 서버 공격 안내 메일 받고 복구 과정 (0) | 2015.11.12 |