열린 포트를“닫는”방법?


22

며칠 전 나는 데이터 보안에 대해 많은 관심을 가지기 시작했다 nmap.nmap 127.0.0.1

놀랍게도 놀랍게도 많은 호스트 서비스가 localhost를 듣습니다.

$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
53/tcp  open  domain
111/tcp open  rpcbind
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

내가 사용할 있는 유일한 방법은 ssh(잘 구성되어 있지 않더라도이 문제를 다른 질문으로 유지하는 것입니다).

ippCUPS가 내 프린터를 공유하기 위해 프로토콜을 사용한다는 것을 알고 있는 한, 서버에서 프린터에 액세스하기 만하면됩니다.

이것은 netstat -lntup로컬 호스트 주소를 제거하여 루트 사용자 의 출력입니다 .

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      497/sshd        
tcp        0      0 0.0.0.0:17500           0.0.0.0:*               LISTEN      2217/dropbox    
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:50022           0.0.0.0:*               LISTEN      1021/rpc.statd  
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      906/rpcbind     
tcp6       0      0 :::22                   :::*                    LISTEN      497/sshd        
tcp6       0      0 :::42712                :::*                    LISTEN      1021/rpc.statd  
tcp6       0      0 :::445                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::139                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      906/rpcbind     
udp        0      0 0.0.0.0:51566           0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:68              0.0.0.0:*                           7362/dhclient   
udp        0      0 0.0.0.0:111             0.0.0.0:*                           906/rpcbind     
udp        0      0 192.168.1.255:137       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:137        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.255:138       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:138        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:655             0.0.0.0:*                           906/rpcbind     
udp        0      0 0.0.0.0:17500           0.0.0.0:*                           2217/dropbox    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:34805           0.0.0.0:*                           1021/rpc.statd  
udp6       0      0 :::40192                :::*                                1021/rpc.statd  
udp6       0      0 :::111                  :::*                                906/rpcbind     
udp6       0      0 :::655                  :::*                                906/rpcbind     
udp6       0      0 :::5353                 :::*                                615/avahi-daemon: r
udp6       0      0 :::42629                :::*                                615/avahi-daemon: r

실제로 사용하고있을 때 외부 세계에서만들을 수 있도록 해당 서비스를 어떻게 구성합니까?


사용하고 있다는 것을 어떻게 말하고 싶습니까?
Reactormonk

직접 서비스 시작하기 (사용자 권한 및 상위 셸 사용)
RSFalcon7

2
로컬 시스템에서만 CUPS를 사용하는 경우 로컬 호스트 (127.0.0.1)의 포트 631 만 수신하도록 할 수 있습니다. 127.0.0.1뿐만 아니라 시스템에있는 실제 IP를 사용하여 nmap을 다시 실행했습니다.
slm

1
더 나은 명령은 netstat -lntup-l = listen -n = number -t = tcp -u = udp -p = pid입니다. 실행중인 프로세스와 노출중인 포트를 표시합니다. 127.0.0.1에 개방 된 것은 인터넷에 액세스 할 수 없습니다.
frogstarr78 1

1
Samba가 필요 없는 경우 간단히 제거하십시오. 당신이 경우에 필요 로컬 인터페이스 (예로 제한 할 수 있습니다 eth0에 추가하여?) smb.conf두 지시어 bind interfaces only = yesinterfaces = eth0.
LSerni

답변:


26

노출 결정

netstat명령 에서 출력을 취 하면 많은 서비스처럼 보이는 것은 실제로 매우 짧은 목록입니다.

$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd

땅을 구하기

이 목록을 보면 내가 떠날 몇 가지 서비스가 있습니다.

  • dhclient
    • IP 주소를 가져 오는 DHCP 서버 데몬에는이 주소가 있어야합니다.
  • 드롭 박스
    • 분명히 Dropbox는

감소 시작-삼바 비활성화

바로 박쥐 비활성화 삼바 떨어져 당신은 아마, 그것은 위의 서비스의 2를 차지하고, 수 nmbdsmbd. 로컬 호스트 또는 IP가 네트워크를 향하고 있는지 여부에 관계없이 랩톱에서 실행해야한다는 것은 의심의 여지가 있습니다.

실행 중인지 확인하려면 다음 명령을 사용하십시오 status.

$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423

서비스를 끄면 업 스타트, /etc/rc.d, 비즈니스와 함께 진행중인 모든 흐름과 혼동 될 수 있으므로 어떤 서비스가 어떤 기술에 속하는지 파악하기 어려울 수 있습니다. Samba의 경우 다음 service명령을 사용할 수 있습니다 .

$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting

이제 그들은 꺼져 있습니다.

$ status nmbd 
nmbd stop/waiting
$ status smbd 
smbd stop/waiting

영구적으로 해제 ...

sysv-rc-conf콘솔에서 서비스를 관리하기 위해이 도구를 사용해 왔습니다 . 대부분의 경우보다 더 효과적입니다. 실행할 서비스와 시작 / 중지해야하는 런레벨을 확인할 수 있습니다.

$ sudo apt-get install sysv-rc-conf

   sysv-rc-conf의 ss

필요하지 않은 나머지 기능 비활성화

삼바는 이제 다음과 같이 남았습니다.

  • 아바 히 데몬
    • zeroconf의 일부 (플러그 앤 플레이)
  • rpcbind
    • NFS에 필요-전원을 끕니다
  • rpc.statd
    • NFS에 필요-전원을 끕니다

나머지 3 개는 삼바에서했던 것과 똑같이 할 수 있습니다.

컵?

실제로 필요하지 않은 CUPS를 끄려면 서비스를 껐다가 다시 시작하지 않는 것과 같은 춤을 수행 할 수 있습니다. 인쇄하려면 시스템에서 각 프린터를 개별적으로 설정해야합니다. system-config-printerGUI를 통해이를 수행 할 수 있습니다 .

이러한 서비스를 주문형으로 만드십니까?

이것은 실제로 귀하의 질문의 핵심이지만 이러한 서비스를 "스마트"하게하여 항상 사용되는 것이 아니라 항상 사용 중일 때 실행되도록하는 효과적인 솔루션은 아닙니다.

# 1-시스템 vs. 시작

그것의 일부는 systemdupstart 사이의 현재 분할 입니다. 여기에 2 개의 경쟁 기술에 대한 개요가 있습니다 .

IMO의 기능 세트를 고려할 때 두 기술 모두 약간 다른 일을 시도하고 있습니다. 시스템 기반은 서버를 향한 것이기보다는 업 스타트가 데스크탑 롤을 향한 것으로 보입니다. 시간이 지남에 따라 이것이 자체적으로 해결 될 것이며 IMO와 두 서비스 모두 안정적이고 기능이 풍부 할 것입니다.

결국 두 서비스 모두 온 디맨드로 시작하고 중지하여 관리하는 모든 서비스를 제공합니다. 예를 들어 같은 기능이 StopWhenUnneeded=yes이미 존재 systemd하므로 이러한 기능이 완성 될 때까지는 시간 문제 일뿐입니다.

# 2-서비스 지원

일부 서비스는 중지 / 시작을 전혀 지원하지 않습니다. 특히 서비스를 sshd많이 사용하는 경우 와 같은 서비스 는 온 디맨드로 실행하는 것이 의미가없는 것 같습니다. 또한 Apache와 같은 일부 서비스는 자체적으로 자신의 리스너를 관리하는 자체적 인 메커니즘을 제공하기위한 메커니즘을 제공합니다. 따라서 이러한 유형의 서비스가 온 디맨드 방식으로 제공 systemd하거나 upstart통합 할 방법이 확실하지 않습니다 .

이것이 정말로 필요한가?

양측 모두 이것이 과도하거나 최소한의 접근 방식을 취하여 절대적으로 필요한 것을 설치해야한다는 말을 들었지만 실제로는 개인적인 선택입니다. 이러한 서비스가 있다는 것과 그들이하는 일을 이해하는 것이 정말로 중요합니다. 하루가 끝나면 컴퓨터는 도구이며 Unix 시스템을 사용하여 커튼 뒤에서 기꺼이 들여다보고 컴퓨터가 무엇을 만드는지 이해하고 있다고 이미 말하고 있습니다.

이런 유형의 질문은 컴퓨터와 유닉스를 다룰 때 반드시 노력해야 할 마음의 틀이라고 말하고 싶습니다.

참고 문헌


2
@ RSFalcon7-천만에요! 질문 주셔서 감사합니다!
slm

12

127.0.0.1은 "외부 세계"가 아니며 집 안을 둘러보고 있습니다.

방화벽 구성 (오늘 Linux의 iptables)을 확인하십시오. 대부분 방화벽에서 액세스 할 수 없습니다.

필요없는 서비스를 실행하지 마십시오. 필요하지 않은 소프트웨어를 모두 제거하십시오.

비밀번호 를 더 강력하게 변경하십시오 . 시스템 사용을 확인하고 재미있는 웹 사이트를 무작위로 쫓지 마십시오. 브라우저의 안티 피싱, 안티 스크립트 등 구성을 확인하십시오. SSH 및 su / sudo 사용법을 수정하십시오.

그러나 무엇보다도 과도한 편집증은 비생산적입니다. 반짝이는 기술에 갇히지 마십시오 .


3
"필요하지 않은 서비스를 실행하지 마십시오"에 동의합니다. 그러나 "필요하지 않은 소프트웨어를 모두 제거하십시오." 그게 무엇에 도움이됩니까?
Hauke ​​Laging

6
@HaukeLaging, 말대로 "사용하지 않는 옷 더미에 쥐 둥지". 모든 소프트웨어에는 악용 될 수있는 취약점이있을 수 있습니다. 프로그램이 없으면 그 위험이 존재하지 않습니다. 사용하지 않으면 비용은 무시할 수 있습니다. 또한 간단한 시스템 일수록 관리가 쉽고 깔끔합니다.
vonbrand

127.0.0.1은 외부의 woruld 가 아닙니다 . 나는 완전히 구독 내가 필요하지 않는 것이 없습니다 실행되는 서비스를 할 수 있지만, 여기에 있다면 제거는 언젠가 유용했다하는 과잉의 비트입니다
RSFalcon7

2
그들이 경우 RSFalcon7 @ 있었다 유용한 (또는 다른 사람에 유용합니다, 그들은 결국 분배에있다)은 더 consecuence이다. 사용하지 않으면 척하십시오. 디스크 사용량 감소, 업데이트 횟수 감소, 전체 위험 감소 나중에 필요할 경우 다시 설치하십시오.
vonbrand

3

개별 서비스를 '종료'할 수는 있지만 방화벽을 설정하는 것이 더 쉬울 수도 있습니다. 거의 모든 일반 배포판 (Ubuntu, Debian, Centos 등)에는 iptables가 내장되어 있습니다.

시작하는 간단한 규칙 세트 : (명령 프롬프트에서 입력하면됩니다. 시작 스크립트에 영구적으로 추가하거나 사용중인 배포판을 알려주십시오. Centos의 예 : system-config -방화벽은 iptables 규칙을 구성하기에 좋은 UI입니다)

iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP

기본적으로-ssh 인바운드 허용; 다른 모든 것을 버려라.

INPUT 체인은 다음과 같습니다 :

  • 패킷이 내 컴퓨터에 'ssh'로 들어 오면 허용하십시오.
  • 패킷이 이전 규칙과 일치하지 않으면 버립니다.

그런 다음 나중에 'samba'(Windows 파일 공유)를 허용한다고 가정하십시오.

iptables -I INPUT-p tcp --dport 465 -j ACCEPT

-I목록 의 접두사와 규칙 -A규칙을 추가합니다. 체인이 다음과 같이 보입니다 :

  • 'samba'를 위해 컴퓨터에 패킷이 들어 오면 허용하십시오.
  • 패킷이 내 컴퓨터에 'ssh'로 들어 오면 허용하십시오.
  • 패킷이 이전 규칙과 일치하지 않으면 버립니다.

INPUT체인 시스템의 패킷을 의미한다. 다른 체인은 OUTPUT, 컴퓨터에서 패킷을 인터넷에가는 FORWARD당신의 컴퓨터를 통해 라우팅되는 패킷 (즉, 패킷입니다 공항의 교통 영역처럼 '대중 교통'컴퓨터 - 물건하지 INPUT가 컴퓨터를 입력하지 않기 때문에 ).

이별 노트 : nmap'ing 127.0.0.1은 그리 유용하지 않습니다. 많은 서비스는 127.0.0.1에서만 액세스 할 수 있으며 다른 주소는 없습니다. 다른 컴퓨터가 없다면 nmap을 실행할 수 있습니다-Gibson Research의 Shields UP을 사용해보십시오! ( https://www.grc.com/shieldsup)- 무료 온라인 nmap-lite입니다. 또는 IP / 이메일로 의견을 추가하면 다음과 같이 알려줄 것입니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.