서버는 아무나 들어오면 안된다. 서버 정보를 아무나 알아서도 안된다. 하지만 매크로 공격에는 답이 없다. 그러니 안전장치
가 필요하다.
보안 설정에 앞서 root 계정 설정을 해보자.
sudo passwd
- root 계정의 최초 비밀번호 설정을 한다.
su -
- root 계정으로 로그인 할 수 있다.
sudo를 붙이지 않고 작업하고 싶을 때 활용하면 된다.
명령어 입력 후 비밀번호를 입력하면 root 계정으로 로그인 할 수 있다.
sudo를 붙이지 않고 작업하고 싶을 때 활용하면 된다.
exit
- 로그아웃 할 수 있고, 원격 접속에서 빠져나올 수도 있다.
SSH를 통해 다른 계정들은 접속하지 못하도록 막아보자.
sudo vim /etc/ssh/sshd_config
SSH 설정 파일을 열어 맨 밑 줄에 다음을 입력한다.
AllowUsers [계정 ID]
설정을 적용하기 위해 아래 명령어로 서비스를 재시작한다.
sudo service sshd restart
리눅스에서는 방화벽 설정 도구로 iptables
를 기본 제공한다.
이를 통해, 포트를 여닫을 수 있다.
혹시라도 ufw
가 더 익숙하다면 사용해도 좋다.
어차피 결국은 iptables 설정을 대신 해주는 역할
이긴 하다.
[Linux] iptables 사용하기(방화벽 규칙 추가 및 삭제)
총 5가지 설정을 해줄 것이다.
sudo iptables -A INPUT -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport [SSH 포트] -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-RELATED
: 기존 연결과 관련된 패킷
-ESTABLISHED
: 그후의 패킷
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
이렇게 해준 다음 아주 중요한 작업이 필요하다. 바로 설정을 저장하는 것.
이대로는 서버 재부팅 시 설정이 모두 사라지므로 방화벽 관리 패키지를 사용해 저장해야 한다.
먼저, 방화벽 관리 패키지를 설치한다.
sudo apt install iptables-persistent
그리고, 설정을 저장 및 갱신 해준다.(매우 중요)
sudo netfilter-persistent save
sudo netfilter-persistent reload
집념의 해커들은 비밀번호 무작위 대입으로 서버에 공격을 가한다. 이를 위해 적용할 수 있는게 fail2ban
이다.
fail2ban은 로그인을 실패하는 IP를 감옥에 가두는 역할을 한다.
sudo apt install fail2ban
설치하고 설정파일을 확인한다.
sudo vim /etc/fail2ban/jail.local
[DEFAULT]
bantime=86400
maxretry=5
findtime=86400
[sshd]
enabled = true
port=[SSH 포트]
filter=sshd
logpath=/var/log/auth.log
→ fail2ban
서비스는 logpath
에서 filter
항목을 찾아 findtime
시간 동안 maxretry
횟수 만큼 접속을 시도한 IP를 bantime
초 동안 차단합니다.
sudo service fail2ban restart
변경한 설정을 재시작을 통해 적용해주면 된다.
감옥에 잡힌 IP들을 보고 싶다면 이 명령어를 사용하면 된다.
sudo fail2ban-client status sshd
가끔 실수로 비밀번호를 잘못 입력해서 내 IP를 차단해버리는 경우가 있는데 이 때는 감옥에서 풀어주는 명령어를 입력해주어야 한다.
sudo fail2ban-client set sshd unbanip [ip]
이제 자유롭게 서버를 꾸미는 등의 활동을 하면 된다!
보고 많이 배워갑니다:) 덕분에 착한(?) 친구들 다 봉인 시켜버렸네요