
이번시간에는 원격 접속을 위한 SSH 세팅, 보안, 도메인 설정 부분을 살펴보겠습니다.
현재 네트워크 구성을 살펴보면 아래와 같이 세팅되어 있습니다.

저희 집은 LG U+ 에서 인터넷을 받아오고 있으며, 공유기를 사용하여 유, 무선으로 인테넛을 사용중입니다.
공유기로부터 시작되는 네트워크는 스마트폰, 노트북, 아이패드 등 무선 네트워크를 사용하는 기기에게 인터넷을 제공하고 있고 홈서버에게는 LAN 선을 통한 유선 네트워크를 제공하고 있습니다.
아래 명령어를 통해 초기 설정을 진행합니다
sudo apt update && sudo apt upgrade -y
ssh 의 경우 ubuntu를 설치하였을 때 설치하였으므로 sshd를 실행시켜주기만 하면 됩니다.
상태 확인
sudo systemctl status ssh
실행 명령어
sudo systemctl enable --now ssh
sudo passwd
이후 root 계정으로 접속을 시도하기 위한 명령어는
su -
이렇게 하면 커멘트 환경이 $ -> # 로 변경되며 이후 sudo 를 붙이지 않아도 됩니다.
이후 로그아웃 명령어는 exit 입니다.
sudo vi /etc/ssh/sshd_config
위 내용을 추가하여 가장 아래에
...
AllowUsers [계정명]
을 입력하고 ssh를 sudo service sshd restart 를 재시작하면 됩니다.
아래 명령어는 방화병 상태를 보여줍니다.
sudo iptables -L
설정은 아래와 같이 진행합니다.
sudo iptables -A INPUT -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
보안 설정 요약
127.0.0.1 허용 서버 내부 통신 허용
22번 포트 허용 외부 SSH 접근 허용
RELATED,ESTABLISHED apt, ping, DNS 등 응답 허용
INPUT DROP 위에서 명시하지 않은 인바운드 차단
FORWARD DROP 라우터처럼 동작하는 거 방지
iptables-persistent 재부팅 후 설정 유지
저는 아래 블로그를 참고하면서 위 설정에서 RELATED, 다음 띄워쓰기를 하여 iptables v1.8.10 nf_tables: bad ctstate try iptables -h 에러가 발생되었습니다. 꼭 붙여서 진행하셔야 합니다.
여기까지가 세팅이 완료되었습니다.
하지만 이러한 방화벽 설정은 reboot 재시작을 하게 되면 모두 사라지게 됩니다. 그러므로 설정 저장을 위해 iptables-persistent를 설치해주겠습니다.
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
무작위로 로그인을 시도하는 해킹을 막기 위해 방화벽수준에서 보호해주는 패키지입니다.
sudo apt install fail2ban
설치 이후
sudo vim /etc/fail2ban/jail.local 로
jail.local 파일을 생성하여 원하는 옵션을 지정해주도록 합니다.
[DEFAULT]
ignoreip=192.168.0.0/24
bantime=86400
maxretry=5
findtime=86400
[sshd]
enabled = true
port=22
filter=sshd
logpath=/var/log/auth.log
적용을 위해 restart를 하고 확인을 해줍니다.
sudo service fail2ban restart
sudo fail2ban-client status sshd
아래는 참고한 사이트입니다.