공용 IP 주소로 Ubuntu 22.04.1 LTS 서버를 가동한 전용 서버가 있습니다. 특정 IP 주소만 통과할 수 있도록 SSH 포트를 잠그고 싶습니다.
직장에서 3개의 IP 주소가 있고 IP 범위가 있는 서버에 네트워크를 설정했습니다.
이 IP 주소만 내 서버에 로그인하도록 허용하려면 어떻게 해야 합니까?
다른 게시물에서 이것을 찾았습니다.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j REJECT
각 IP 주소에 대해 실행하면 작동합니까, 아니면 합병증이 있습니까?
또, 이 정도면 됐지? 다른 포트를 잠가야 합니까? 이것은 postgresql만 새로 설치한 것입니다. Ubuntu 및 postgresql에 대해 자세히 알아보려고 하는데 내 서버가 대상이 되는 것을 원하지 않습니다.
귀하의 의견에 감사드립니다!
답변1
단일 포트 중심에서 완전한 '방어' 태세로 접근 방식을 조정할 것을 제안합니다. 즉, IP를 화이트리스트에 추가하고 다른 모든 연결 시도를 거부합니다. 이는 환경의 대부분의 모든 포트에 적용됩니다. 그렇지 않으면 블랙리스트에 추가해야 하기 때문입니다.모든서비스 검색을 수행하는 것으로 알려진 IP이므로 해당 위치에 엄청나게 긴 목록이 있게 됩니다. 서비스 스캐너는 다음을 검색합니다.모든따라서 무엇보다도 "신뢰 거부" 접근 방식을 채택해야 합니다. 웹 서버(HTTP/HTTPS의 경우 포트 80, 443은 공개 사이트인 경우 특정 IP보다 더 넓은 액세스가 필요할 수 있음)도 검사되지만 웹 서버와 콘텐츠를 적절하게 강화하면 '보호'될 수 있습니다. 하지만,모두포트는 서비스 스캐너에 의해 스캔됩니다.모두인터넷에 연결된 장치는 검사 대상이므로 모든 시작을 거부하는 것이 더 나은 접근 방식입니다.
따라서 "신뢰 거부"에 대한 가장 효과적인 접근 방식은 특정 IP가 시스템의 포트 및 기타 모든 서비스에 연결되도록 허용한 다음 다른 모든 연결 시도를 거부하는 것입니다. 또한 localhost가 자신과 통신할 수 있도록 허용하는 것은 괜찮습니다.
다른 포트를 열기 전에 화이트리스트로 모든 것을 보호하는 것부터 시작하세요. 더 많은 서비스가 필요한 경우 모든 곳의 HTTP 트래픽에 대한 추가 ALLOW 규칙을 구성할 수 있습니다.
# Allow localhost traffic
iptables -A INPUT -i lo -j ACCEPT
# INVALID type packets should be DROPped regardless of source.
iptables -A INPUT -m state --state INVALID -j DROP
# Allow traffic for related/established connections already running
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow all new connections/traffic from the local subnet you're on
# (10.20.30.0/24 is used in example)
iptables -A INPUT -m state --state NEW -s 10.20.30.0/24 -j ACCEPT
# Whitelist your IPs - repeat this step for each of your IPs permitted
# to access the machine outside of local network
iptables -A INPUT -s IPADDRESS -m state --state NEW -j ACCEPT
# If you have other services you want to configure for *public* access, then
# use this rule as a template and execute this before you follow the last step.
#
# Change PROTO to the protocol (tcp/udp, etc.) and PORT to the port number
# (80 for HTTP, ex.)
#
# Add this to the end of the rule if you want to allow only certain
# IPs to the specified service:
# -s IPADDRESS
iptables -A INPUT -p PROTO --dport PORT -m state --state NEW -j ACCEPT
# Deny all other traffic
iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable
이는 거의 15년 동안의 서버 경험과 네트워크 보안 교육을 바탕으로 한 것입니다. IT 보안 전문가로서의 지식도 마찬가지입니다.