3 min read

Linux기본설정(2)brute force 공격 대응

Linux기본설정(2)brute force 공격 대응
Photo by FlyD / Unsplash

여기저기서 봇들이 공격한다. 러시아나 중국쪽이 아닐까 라는 편견이 있다.

그래서! 나는 회사, 집 특정 ip만 22번 포트를 쓸수 있게 한다.

firewalld 로 특정 IP만 전체 IP를 허용하는 것이다. IP를 허용하면 좋은이유는 ftp나 mysql, nfs를 열어야 될때 외부허용을 굳이 할필요없는 관리PC는 별도로 허용할 필요가 없다. 집, 사무실, VPN IP만 허용해주면 외부에 허용하지 않고 사용할 수있다.

💡
옛날에 DB를 해킹당해 고스란히 비트코인 주소만 남아있더라는 글을 본적이 있다.

아마도 외부에 3306포트(mysql, mariaDB포트)를 외부에 전체 공유한뒤에 brute force 공격으로 해킹당했으리라 짐작된다.
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=공인IP/32 accept'

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=VPN_IP/32 accept'

나의 경우는 웹서비스나 내가 파일브라우저 같은 서비스 포트는 어디에서도 들어갈수 있게 열어 놓고 있다.

zerotier로 VPN 세팅을 해놓아서 회사,부모님집,오라클VM1, 오라클 VM2, 홈서버(gram 노트북으로 리눅스 설치를 해놓아서 요긴하게 쓰고 있다.전력도 많이 안먹고 wifi로 해놔서 좋다. 꺼지질 않는다.)
끼리 서버 접속이 가능한 것이다.

fail2ban이라는 프로그램도 써보았지만 몇번까지 공격을 허용하고 막고 하는 것이라 그닥 맘에 들지 않았다.


💡
Tip 명령어를 써도 되지만 기존의 firewalld 설정을 수정해도 좋다.
vi /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="cockpit"/>
  <service name="http"/>
  <service name="https"/>
  <rule family="ipv4">
    <source address="123.123.123.123/32"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="1.123.123.123/32"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="123.12.123.123/32"/>
    <accept/>
  </rule>
  <forward/>
</zone>

명령어가 어려우면
man firewall-cmd|grep rich 명령어로 --add-rich-rule='rule 복사
man firewalld.richlanguage|grep ipv4 명령어로 rule family="ipv4" source address="192.168.2.2" accept 복사

조합해서

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=1.2.3.4/32 accept'

를 칠 수 있다.