이 글은 서버 안의 운영체제 방화벽 설정 방법입니다. 서비스에 필요한 포트만 열고 나머지는 닫아 두세요.
| 배포판 | 기본 방화벽 도구 |
|---|---|
| Ubuntu / Debian 계열 | ufw |
| Rocky / CentOS 계열 | firewalld (firewall-cmd 명령) |
주의
방화벽을 켜기 전에 SSH 포트(기본 22)를 먼저 허용하세요. SSH 포트를 막으면 지금 접속이 끊기고 다시 접속할 수 없습니다. SSH 포트를 바꿔 쓰고 있다면 바꾼 번호를 허용합니다.
아래 명령은 root 로 실행합니다. 일반 계정이라면 앞에 sudo 를 붙이세요.
Ubuntu / Debian 계열 (ufw)
상태 확인
ufw status verboseStatus: inactive 면 방화벽이 꺼져 있는 상태입니다.
SSH 허용 후 방화벽 켜기
SSH 포트를 먼저 허용합니다.
ufw allow 22/tcpRules updated가 나옵니다.방화벽을 켭니다.
ufw enableCommand may disrupt existing ssh connections. Proceed with operation (y|n)?가 나오면 1번을 했는지 다시 확인하고y를 입력합니다.Firewall is active and enabled on system startup이 나오면 켜진 것입니다. 서버를 재부팅해도 유지됩니다.
포트 열기
# 웹 서버 (HTTP, HTTPS)
ufw allow 80/tcp
ufw allow 443/tcp
# 예: 게임 서버 포트 (TCP)
ufw allow 25565/tcp
# 예: UDP 포트
ufw allow 27015/udp
# 예: 포트 범위
ufw allow 30000:30100/tcp특정 IP에서만 접속을 허용하려면:
ufw allow from 203.0.113.10 to any port 3306 proto tcp규칙 확인과 삭제
ufw status numbered규칙 앞에 번호가 붙어 나옵니다. 지울 규칙의 번호를 넣어 삭제합니다.
ufw delete 3Rocky / CentOS 계열 (firewalld)
상태 확인
systemctl status firewalldactive (running) 이면 켜져 있습니다. 지금 열려 있는 서비스와 포트는 아래 명령으로 봅니다.
firewall-cmd --list-allservices: 에 ssh 가 있는지 확인하세요.
방화벽 켜기
firewalld 를 켜고, 재부팅 후에도 자동으로 켜지게 합니다.
systemctl enable --now firewalldSSH 가 허용되어 있는지 확인하고, 없으면 추가합니다.
firewall-cmd --permanent --add-service=ssh firewall-cmd --reload
포트 열기
--permanent 를 붙여야 재부팅 후에도 유지됩니다. 추가한 뒤에는 --reload 로 적용합니다.
# 웹 서버 (HTTP, HTTPS)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
# 예: 게임 서버 포트 (TCP)
firewall-cmd --permanent --add-port=25565/tcp
# 예: UDP 포트
firewall-cmd --permanent --add-port=27015/udp
# 예: 포트 범위
firewall-cmd --permanent --add-port=30000-30100/tcp
# 적용
firewall-cmd --reload각 명령 뒤에 success 가 나오면 정상입니다.
포트 닫기
firewall-cmd --permanent --remove-port=25565/tcp
firewall-cmd --reload포트가 열렸는지 확인하기
방화벽을 열어도 그 포트에서 프로그램이 실행 중이어야 접속됩니다. 서버에서 아래 명령으로 프로그램이 포트를 열고 있는지 확인합니다.
ss -tulpnLocal Address:Port 에 해당 포트 번호가 보이면 프로그램이 대기 중입니다. 보이지 않으면 프로그램 설정이나 실행 상태를 먼저 확인하세요.
참고
방화벽 설정 실수로 서버에 접속할 수 없게 된 경우, 복구는 서버 내부 작업이라 별도 기술지원(유상)으로 진행할 수 있습니다. 비용은 고객센터로 문의하세요.