Linux에서 특정 IP 및 네트워크 범위에 대한 SSH 및 FTP 액세스를 차단하는 방법


일반적으로 우리 모두는 SSH 및 FTP 서비스를 자주 사용하여 원격 서버 및 가상 사설 서버에 액세스합니다. Linux 관리자는 보안을 강화하기 위해 Linux에서 특정 IP 또는 네트워크 범위에 대한 SSH 및 FTP 액세스를 차단하는 방법을 알고 있어야합니다.

  1. 25 Hardening Security Tips for Linux Servers
  2. 5 Useful Tips to Secure and Protect SSH Server

이 튜토리얼은 CentOS 6 및 7 서버에서 특정 IP 주소 및/또는 네트워크 범위에 대한 SSH 및 FTP 액세스를 차단하는 방법을 보여줍니다. 이 가이드는 CentOS 6.x 및 7.x 버전에서 테스트되었지만 Debian, Ubuntu 및 SUSE/openSUSE 등과 같은 다른 Linux 배포판에서도 작동 할 것입니다.

두 가지 방법으로 수행합니다. 첫 번째 방법은 IPTables/firewallD를 사용하는 것이고 두 번째 방법은 hosts.allow 및 hosts.deny 파일의 도움으로 TCP 래퍼를 사용하는 것입니다.

IPTables 및 Firewalld에 대해 자세히 알아 보려면 다음 가이드를 참조하세요.

  1. Basic Guide on IPTables (Linux Firewall) Tips / Commands
  2. How To Setup an Iptables Firewall to Enable Remote Access to Services in Linux
  3. How to Configure ‘FirewallD’ in RHEL/CentOS 7 and Fedora 21
  4. Useful ‘FirewallD’ Rules to Configure and Manage Firewall in Linux

이제 IPTables 및 FirewallD가 무엇이며 기본 사항에 대해 알게되었습니다.

방법 1 : IPTables / FirewallD를 사용하여 SSH 및 FTP 액세스 차단

이제 RHEL/CentOS/Scientific Linux 6.x 버전에서 IPtables를 사용하여 특정 IP (예 : 192.168.1.100) 및/또는 네트워크 범위 (예 : 192.168.1.0/24)에 대한 SSH 및 FTP 액세스를 차단하는 방법을 살펴 보겠습니다. "CentOS 7.x의 FirewallD.

--------------------- On IPtables Firewall ---------------------
# iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
# iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
--------------------- On FirewallD ---------------------
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j REJECT
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j REJECT

새 규칙을 적용하려면 다음 명령을 사용해야합니다.

# service iptables save         [On IPtables Firewall]
# firewall-cmd --reload         [On FirewallD]

이제 차단 된 호스트에서 서버에 SSH를 시도합니다. 여기서 192.168.1.150은 차단 된 호스트입니다.

# ssh 192.168.1.150

다음 메시지가 표시되어야합니다.

ssh: connect to host 192.168.1.150 port 22: Connection refused

SSH 액세스를 차단 해제하거나 활성화하려면 원격 서버로 이동하여 다음 명령을 실행하십시오.

--------------------- On IPtables Firewall ---------------------
# iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j ACCEPT
# iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport ssh -j ACCEPT
--------------------- On FirewallD ---------------------
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j ACCEPT
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT

SSH를 통해 서버에 액세스하려면 다음을 사용하여 변경 사항을 저장하십시오.

# service iptables save         [On IPtables Firewall]
# firewall-cmd --reload         [On FirewallD]

일반적으로 FTP의 기본 포트는 20과 21입니다. 따라서 IPTables를 사용하여 모든 FTP 트래픽을 차단하려면 다음 명령을 실행하십시오.

--------------------- On IPtables Firewall ---------------------
# iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j REJECT
# iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
--------------------- On FirewallD ---------------------
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j REJECT
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT

새 규칙을 적용하려면 다음 명령을 사용해야합니다.

# service iptables save         [On IPtables Firewall]
# firewall-cmd --reload         [On FirewallD]

이제 다음 명령을 사용하여 차단 된 호스트 (192.168.1.100)에서 서버에 액세스 해보십시오.

# ftp 192.168.1.150

아래와 같은 오류 메시지가 표시됩니다.

ftp: connect: Connection refused

차단을 해제하고 다시 FTP 액세스를 활성화하려면 다음을 실행하십시오.

--------------------- On IPtables Firewall ---------------------
# iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
# iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
--------------------- On FirewallD ---------------------
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT

다음 명령으로 변경 사항을 저장하십시오.

# service iptables save         [On IPtables Firewall]
# firewall-cmd --reload         [On FirewallD]

이제 FTP를 통해 서버에 액세스 해보십시오.

# ftp 192.168.1.150

ftp 사용자 이름과 암호를 입력하십시오.

Connected to 192.168.1.150.
220 Welcome to TecMint FTP service.
Name (192.168.1.150:sk): tecmint
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

방법 2 : TCP 래퍼를 사용하여 SSH 및 FTP 액세스 차단

IPTables 또는 FirewallD를 엉망으로 만들고 싶지 않다면 TCP 래퍼가 특정 IP 및/또는 네트워크 범위에 대한 SSH 및 FTP 액세스를 차단하는 더 좋은 방법입니다.

OpenSSH 및 FTP는 TCP 래퍼 지원으로 컴파일됩니다. 즉, 다음 두 가지 중요한 파일에서 방화벽을 건드리지 않고 연결할 수있는 호스트를 지정할 수 있습니다.

  1. /etc/hosts.allow
  2. /etc/hosts.deny

이름에서 알 수 있듯이 첫 번째 파일에는 허용 된 호스트의 항목이 포함되고 두 번째 파일에는 차단 된 호스트의 주소가 포함됩니다.

예를 들어 IP 주소가 192.168.1.100이고 네트워크 범위가 192.168.1.0 인 호스트에 대한 SSH 및 FTP 액세스를 차단하겠습니다. 이 방법은 CentOS 6.x 및 7.x 시리즈에서 동일합니다. 그리고 물론 Debian, Ubuntu, SUSE, openSUSE 등과 같은 다른 배포판에서도 작동합니다.

/etc/hosts.deny 파일을 열고 아래와 같이 차단하려는 다음 IP 주소 또는 네트워크 범위를 추가합니다.

##### To block SSH Access #####
sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0

##### To block FTP Access #####
vsftpd: 192.168.1.100
vsftpd: 192.168.1.0/255.255.255.0

파일을 저장하고 종료하십시오.

이제 sshd 및 vsftpd 서비스를 다시 시작하여 새로운 변경 사항을 적용하십시오.

--------------- For SSH Service ---------------
# service sshd restart        [On SysVinit]
# systemctl restart sshd      [On SystemD]
--------------- For FTP Service ---------------
# service vsftpd restart        [On SysVinit]
# systemctl restart vsftpd      [On SystemD]

이제 서버 또는 차단 된 호스트에서 SSH를 시도하십시오.

# ssh 192.168.1.150

다음 출력이 표시됩니다.

ssh_exchange_identification: read: Connection reset by peer

이제 서버 또는 차단 된 호스트에서 FTP를 시도하십시오.

# ftp 192.168.1.150

다음 출력이 표시됩니다.

Connected to 192.168.1.150.
421 Service not available.

SSH 및 FTP 서비스를 다시 차단 해제하거나 활성화하려면 hosts.deny 파일을 편집하고 모든 줄을 주석 처리 한 다음 마지막으로 vsftpd 및 sshd 서비스를 다시 시작합니다.

결론

지금은 여기까지입니다. "요약하자면 오늘 우리는 IPTables, FirewallD 및 TCP 래퍼를 사용하여 특정 IP 주소 및 네트워크 범위를 차단하는 방법을 배웠습니다. 이러한 방법은 매우 쉽고 간단합니다.

초보 Linux 관리자도 몇 분 안에이 작업을 수행 할 수 있습니다. SSH 및 FTP 액세스를 차단하는 다른 방법을 알고 있다면 댓글 섹션에서 자유롭게 공유하십시오. 그리고 모든 소셜 네트워크에서 우리 기사를 공유하는 것을 잊지 마십시오.