특정 프로세스에 대한 PORT 관련 확인을 할 일이 있어서
방화벽을 올렸다 내렸다 하면서, PORT에 대한 확인을 하려고 한다
관련하여 구글링하면 정보가 가장 많이 나오는 iptables.
일단 root계정으로 들어가서 확인해보면 설치되어있는것(?)이 확인되는데
[root@sunje ~]# iptables --version
iptables v1.4.21
구동을 위해 서비스를 열면 아래와 같은 메시지가 뜬다
[root@tech3 ~]# systemctl start iptables
Failed to execute operation: No such file or directory
이게 왜그러냐면
기존 CentOS 6 이전에 방화벽 컨트롤을 위해 사용되던 iptables가
CentOS7 이후 firewalld로 대체되었다. 더 사용하기쉽게 개발된 것
그래서 CentOS7에서 iptables도 설치가 되어있지만,
firewalld 사용을 권고하기 위해 service로는 등록을 안해둔것.
그래서 iptables의 구문은 사용할 수 있지만 service나 systemctl등으로 컨트롤할 수는 없다. (따로 설정하지 않는다는 가정)
iptables 연습 많이했지만....새로운 firewalld로 GoGo...
systemctl 구문을 통해 firewalld 상태를 확인할 수 있다.
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 금 2018-01-19 11:01:34 KST; 4h 57min ago
Docs: man:firewalld(1)
Process: 19556 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 19556 (code=exited, status=0/SUCCESS)
firewalld 서비스 구동
# systemctl start firewalld
다시 status로 상태를 확인하면
Active: active (running) since 금 2018-01-19 16:26:18 KST; 7s ago
이렇게 바뀐 것 확인된다.
113번장비(tech3 ), 240번장비(intra-consulting) 두대에서 telnet을 통해 방화벽을 확인해본다.
113번 장비에서 firewalld를 구동한 뒤,
[root@tech3 ~]# systemctl start firewalld
다른 장비에서 telnet을 통해 방화벽 상태를 확인하면 방화벽으로 막혀있음을 알 수 있다.
[root@intra-consulting ~]# telnet 192.168.0.113 22581
Trying 192.168.0.113...
telnet: connect to address 192.168.0.113: No route to host
다시 113번 장비에서 firewalld 구동을 중지하면
[root@tech3 ~]# systemctl stop firewalld
아래와같이 정상 커넥션 된다. (현재 22581에 프로세스 떠있는 상태)
[root@intra-consulting ~]# telnet 192.168.0.113 22581
Trying 192.168.0.113...
Connected to 192.168.0.113.
Escape character is '^]'.
firewalld의 ZONE 과 RULE
방화벽의 zone(영역)에 rule들을 설정한다.
모든 zone 확인
# firewall-cmd --list-all-zone
기본 zone 확인
# firewall-cmd --get-default-zone
public
public이라는 zone이 기본값으로 설정되어있음을 알 수 있다.
public zone의 configuration 확인
# firewall-cmd --zone=public --list-all
--permanent
--permanent 옵션을 붙이면 설정파일(.xml)이 수정되는데, 정상 반영되려면 반드리 reload를 해야한다. (#firewall-cmd --reload)
--permanent 옵션을 붙이지 않으면, 일시적으로 즉시 반영되고 재부팅 시 룰 삭제 된다 (썰정파일에 반영 안되었으니깐)
포트 허용에 대한 테스트
113번장비(tech3), 240번장비(intra-consulting)에서 수행한다
113번 장비에 firewalld 오픈한다
[root@tech3 ~]# systemctl start firewalld
240번 장비에서 22581 포트로 telnet 접속해보려고 하면 방화벽으로 막힌다.
[root@intra-consulting ~]# telnet 192.168.0.113 22581
Trying 192.168.0.113...
telnet: connect to address 192.168.0.113: No route to host
이 상태에서 22581/tcp 포트를 허용하는 구문 수행
[root@tech3 ~]# firewall-cmd --zone=public --add-port=22581/tcp
success
public zone에서 허용하고있는 port 확인
[root@tech3 ~]# firewall-cmd --zone=public --list-ports
22581/tcp
240번 장비에서 포트허용이 잘 되어있는지 확인해보니 잘 열려있다.
[root@intra-consulting ~]# telnet 192.168.0.113 22581
Trying 192.168.0.113...
Connected to 192.168.0.113.
Escape character is '^]'.
^]
telnet>
다시 22581/tcp포트를 차단하기 위해, 포트 제거 구문 수행
[root@tech3 ~]# firewall-cmd --zone=public --remove-port=22581/tcp
success
public zone에서 허용하고있는 port를 확인해보면, 허용하고 있는 포트가 없음이 확인된다.
[root@tech3 ~]# firewall-cmd --zone=public --list-ports
240번 장비에서 포트차단이 잘 되어있는지 확인
[root@intra-consulting ~]# telnet 192.168.0.113 22581
Trying 192.168.0.113...
telnet: connect to address 192.168.0.113: No route to host
firewalld로 컨트롤할수있는(?) 서비스 목록은 첫번째 구문 또는 두번째줄 디렉토리에서 확인 가능하다.
# firewall-cmd --get-service
# ls /usr/lib/firewalld/services/
public zone에 등록된 서비스 확인
[root@tech3 ~]# firewall-cmd --zone=public --list-service
dhcpv6-client ssh
telnet 서비스를 public 존에 추가
[root@tech3 ~]# firewall-cmd --zone=public --add-service=telnet
success
telnet2라는 서비스는 firewalld에 등록이 안되어있어서 오류
[root@tech3 ~]# firewall-cmd --zone=public --add-service=telnet2
Error: INVALID_SERVICE: telnet2
public에 추가 된 telnet 서비스 확인
[root@tech3 ~]# firewall-cmd --zone=public --list-service
dhcpv6-client ssh telnet
**
telnet 서비스를 추가하면, telnet서비스는 무조건 허용인가? 생각했는데 그건 아닌듯.
telnet 서비스 추가 된 상태에서도 No route to host가 뜬다. (차단되어있음)
[root@tech3 ~]# firewall-cmd --zone=public --list-servicedhcpv6-client ssh telnet[root@intra-consulting ~]# telnet 192.168.0.113 22581Trying 192.168.0.113...telnet: connect to address 192.168.0.113: No route to host
zone에 서비스를 추가한다는게 무엇을 의미하는지 모르겠다. => 알아볼것
'서비스에서 사용하는 룰을 적용하려면 아래와 같이 서비스를 추가하면 됩니다.' 라고 하는데 이것도 무슨말인지 모르겠.. https://conory.com/blog/42477
일단 내가 필요한 PORT에 대한 허용/차단은 확인했으니
이번건 마무리
'IT Engineer > Linux' 카테고리의 다른 글
[Linux] nmap, root계정에서와 일반계정에서 사용시 차이 (0) | 2018.01.23 |
---|---|
[Linux] nmap사용법 / nmap으로 port 상태 확인. nmap vs telnet (1) | 2018.01.23 |
[Linux] 리눅스 service 관리 차원의 /etc/rc.d/init.d/* 이해. 리눅스 서비스 관리 (1) | 2018.01.19 |
[Linux] 리눅스 centOS - systemctl과 service 명령어 차이점 (2) | 2018.01.19 |
[Linux] 어떤 리눅스를 쓰나? 리눅스 버전 확인. 리눅스 커널 버전 확인. 리눅스 배포판 확인. (0) | 2018.01.19 |