본문 바로가기

개발/자작나스구축(Linux)

[우분투 12.04 LTS] 개인웹하드 구축 #20- 보안설정( Firewall,UFW(Uncomplicated FireWall),Denyhosts,Fail2ban)

- 리눅스든 윈도우든 보안이 중요합니다. 특히 웹서버를 운영할거라면 더더욱 중요하죠

고가의 방화벽 서버가 아닌 개인이 할 수 있는 최대한 간단하면서도 탄탄한 보안설정을 해보도록 하겠습니다. 

1. Firewall
- Linux의 핵심인 Kernel은 Server에 대한 Client의 Network 접속을 제어하는 netfilter라는 Module을 가지고 있습니다.
Kernel은 이 netfilter를 사용하여 Packet Filtering를 수행하는데, 이것을 이용하여 Server 접속에 대한 Network 정책을 세우는 Program이 바로 Firewall입니다.
Ubutnu Server의 보안을 위해서는 무엇보다도 Firewall을 통해 Client의 악의적이거나 불필요한 접속을 차단하는 것이 좋습니다.

1-1.UFW (Uncomplicated FireWall)
- Linux System의 가장 기본적인 Firewall은 iptables입니다. 그러나 일반 사용자들이 사용하기에는 어려운 면이 있기 때문에, Ubuntu에서는 iptables를 쉽게 사용할 수 있도록 만든 UFW(Uncomplicated Firewall)라는 Firewall을 제공합니다. 
ufw는 별도로 설치할 필요가 없이 기본으로 설치되어 있습니다. 단지 비활성화 되어있으니 활성화만 해주면됩니다

ufw enable

일단 활성화 하면 비활성화 전까진 알아서 계속실행됩니다. 
이제 ufw가 활성화 되었기 때문에 허용되지 않은 포트의 서비스는 모두 접속할 수 없게됩니다. 80도 마찬가지입니다

ufw allow 포트번호
ufw allow 80

결과:
Status: active
Logging: on (low)
기본값: deny (들어오는 패킷), allow (나가는 패킷)
새 프로파일 skip

To                         Action      From
--                         ------      ----
80                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere (v6)

위 처럼 사용할 포트별로 방화벽에 등록해주셔야 합니다. 이를 손쉽게 관리할 수 있도록 YongCloud ManagerSystem 을 이용하시면 됩니다. 
반대로 삭제는,

ufw delete allow 80

을 해주시면 됩니다 
부가적 옵션

특정 IP차단: ufw deny from xxx.xxx.xxx.xxx
특정 IP를 포트단위로 차단: ufw deny from xxx.xxx.xxx.xxx to any port 80

2. Denyhosts
- 방화벽에 차단 IP를 직접 등록하면 너무 귀찮습니다 그래서 계속된 침입이 발견되면 자동으로 차단하는 시스템입니다.

설치

apt-get install denyhosts

이건 설치만 해놓으면 특별히 건들건 없습니다^^;

3. Fail2ban
Server 관리자가 늘 항상 Log를 검사하여 일일이 의심되는 IP를 찾아 Firewall에 Rule을 추가하는 일은 상당히 귀찮은 일이 될 수 있습니다.
Fail2ban은 주기적으로 정규 표현식을 사용하여 Log에서 의심스러운 IP를 검출해 내어, 해당 IP를 Firewall에 등록하여 접근을 자동으로 차단합니다.
관리자 입장에서는 의심스러운 행동을 검출할 수 있는 정규 표현식만 잘 만들어 놓으면, 자동으로 나머지 동작은 Fail2ban이 알아서 하기 때문에 좀 더 편리하게 Server의 보안을 유지할 수 있습니다.

3-1) 설치

apt-get install fail2ban

3-2) 설정

vi /etc/fail2ban/jail.conf
• ignoreip: 의심스러운 접근으로 검출되었다 할 지라도 무시해야 할 IP와 Network을 설정할 수 있습니다. 위의 설정은 Loopback과 Private Network을 무시합니다.
• bantime: 검출된 IP를 Firewall에 등록하여 접속을 차단할 기간을 초 단위로 설정합니다. 위의 설정은 1달(30일)을 설정한 것입니다.
• maxretry: 정규 표현식으로 검사했을 때, maxretry에 설정한 횟수만큼 Matching 되면 해당 IP를 검출합니다.