저는 CentOS 7(Virtual Box의 게스트 머신)에서 iptables 사용을 연습했습니다. 처음에는 다음을 비활성화했습니다 firewalld
.
systemctl disable firewalld
systemctl stop firewalld
그런 다음 iptables를 설치했습니다.
yum -y install iptables-services
systemctl enable iptables
systemctl start iptables
결국 nc -l 1025
명령을 사용하여 로컬 컴퓨터에서 TCP 포트를 열려고 했지만 명령이 중단되었습니다. 인터넷을 뒤져보니 이 글에서 iptables 규칙을 새로 고칠 수 있다는 걸 알았습니다.netcat 명령이 열려 있는 포트에 액세스할 수 없습니다.하지만 그 이후에는 인터넷에 전혀 연결할 수 없습니다. 그래서 방금 iptables를 설치했을 때의 상태로 CentOS7을 복원했습니다. 내 iptables 규칙은 다음과 같습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
이것은 자세한 모드입니다 nc -vl 1025
.
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::1025
Ncat: Listening on 0.0.0.0:1025
결과 ss -lnt
:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
포트 2000과 같은 또 다른 자세한 모드 nc -vl 2000
:
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::2000
Ncat: Listening on 0.0.0.0:2000
결과 ss -lnt
는 동일합니다.
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
nc
그렇다면 명령이 작동하도록 하고 CentOS7에서 일부 TCP 포트를 열려면 어떻게 해야 합니까 ?
답변1
의견에 언급됨 - 가장 중요한 사항에 대한 간략한 요약:
ncat
그리고 들어오는 연결을 한 번만 수신하고 첫 번째 시도에서 이를 중지하는 다른netcat
구현도 가능합니다(프로그램에 스위치가 없는 경우).프로그램은 현재 iptables 설정에 관계없이 포트에서 수신 대기를 시작할 수 있습니다.