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

일반적으로 우리 모두는 SSH 및 FTP 서비스를 자주 사용하여 원격 서버 및 가상 사설 서버에 액세스합니다. Linux 관리자는 보안을 강화하기 위해 Linux에서 특정 IP 또는 네트워크 범위에 대한 SSH 및 FTP 액세스를 차단하는 방법을 알고 있어야합니다.
- 25 Hardening Security Tips for Linux Servers
- 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에 대해 자세히 알아 보려면 다음 가이드를 참조하세요.
- Basic Guide on IPTables (Linux Firewall) Tips / Commands
- How To Setup an Iptables Firewall to Enable Remote Access to Services in Linux
- How to Configure ‘FirewallD’ in RHEL/CentOS 7 and Fedora 21
- 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 래퍼 지원으로 컴파일됩니다. 즉, 다음 두 가지 중요한 파일에서 방화벽을 건드리지 않고 연결할 수있는 호스트를 지정할 수 있습니다.
- /etc/hosts.allow
- /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 액세스를 차단하는 다른 방법을 알고 있다면 댓글 섹션에서 자유롭게 공유하십시오. 그리고 모든 소셜 네트워크에서 우리 기사를 공유하는 것을 잊지 마십시오.