OS

[Linux] 사용하지 않는 포트 비활성화 하는 방법

파주상남자의 오답노트 ㅣ 2025. 4. 29. 14:55

반응형

1. 서비스 중지 및 비활성화

포트를 열고 있는 서비스를 중지하거나 아예 부팅 시 자동 시작을 막음.

# 예: 80번 포트를 쓰는 apache2(httpd) 서비스 중지
sudo systemctl stop httpd sudo systemctl disable httpd
  • stop: 현재 실행 중인 서비스 중지
  • disable: 부팅 시 자동 시작 비활성화

특정 포트가 어떤 서비스가 사용하는지 찾으려면?

sudo lsof -i :포트번호
# 예시: sudo lsof -i :80

2. 방화벽(firewalld, iptables)로 포트 차단

서비스는 실행하되, 외부 접속만 막고 싶을 때 사용.

Firewalld 사용 시

# 포트 차단 
sudo firewall-cmd --permanent --remove-port=포트번호/tcp
sudo firewall-cmd --permanent --remove-port=포트번호/udp
sudo firewall-cmd --reload
  • --remove-port: 등록된 포트 규칙 삭제
  • --reload: 설정 적용

 

Iptables 사용 시

# 포트 차단 규칙 추가
sudo iptables -A INPUT -p tcp --dport 포트번호 -j REJECT
sudo iptables-save > /etc/sysconfig/iptables

 

 


3. xinetd 설정으로 포트 비활성화

xinetd를 사용하는 서비스(ex. telnet 등)는 설정 파일 수정으로 비활성화 가능.

# 설정 파일 수정
sudo vi /etc/xinetd.d/서비스명

# disable = yes 로 수정
service 서비스명
{
disable = yes ...
}

# 저장 후 xinetd 재시작
sudo systemctl restart xinetd

4. 서비스 자체 설정 파일 수정

어떤 프로그램은 직접 포트를 설정 파일에서 끌 수 있음. (ex. sshd, nginx 등)

  • sshd 포트 변경 또는 끄기 예시
sudo vi /etc/ssh/sshd_config
# 포트를 주석 처리하거나 변경
#Port 22
# sshd 재시작
sudo systemctl restart sshd

요약

목적 방법
서비스 자체 끄기 systemctl stop/disable
접속만 차단 firewall-cmd, iptables
xinetd 기반 서비스 설정 파일 수정 후 restart
프로그램 설정에서 변경 ssh, nginx 등 설정 수정
반응형