본문 바로가기

리눅스-기초명령어/보안

방화벽

1. 방화벽

내부 네트워크를 보호하기 위해 외부에서의 불법적인 트래픽 유입을 막고,허가되고 인증된 트래픽만을 허용하는 기능을 가진 하드웨어나 소프트웨어를 일컫는다

 

1.1 방화벽의 기능

기능 설 명
접근제어 (Access Control) 접근을 허가할 대상과 거부할 대상을 정하는 것으로 패킷 필터링(Packet Filtering) 방식과 프락시(Proxy)방식으로 나눈다.
로깅(Logging)과 감사 추적(Auditing) 접근 허가 및 거부된 내용을 기록하고 추적한다.
인증(Authentication) 메시지 인증 ,사용자 인증, 클라이언트 인증을 통해 허가된 접근을 인증한다.
데이터 암호화 가상 사설망(Virtual Public Network, VPN)을 이용하여 방방화벽에서 다른 방화벽까지 전송되는데이터를 암호화한다

2. firewalld

D-bus(desktop bus) 인터페이스 있는 호스트 기반 방화벽을 제공하는 서비스 데몬이다.

동적 관리 방화벽으로 규칙이 변경될 때마다 방화벽 데몬을 다시 시작할 필요 없이 규칙을 작성, 변경, 삭제할 수 있다. firewalld도 iptables를 기반으로 동작한다.

 

2.1 firewall-cmd 명령어

명령어 설명
--list-all 모든 방화벽 설정을 볼 수 있다.
--add- 방화벽에 argument를 추가한다
--remove- 방화벽에 argument를 제거한다
--reload, --rel 방화벽을 재시작한다
--state 방화벽에 상태를 볼 수 있다
--permanent 영구적으로 추가한다.
--get-default-zone 현재 디폴트 값인  zone을 확인한다
--set-default-zone zone값을 설정한다




firewall-cmd --list-all 

[root@Linux ~]# firewall-cmd --list-all
public (active) # firewall 에 등록되어있는리스트를 모두 부여준다.
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: cockpit dhcpv6-client grafana ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules: 





 telnet 서비스를 허용한다

[root@rocky1 ~]# firewall-cmd --list-services
cockpit dhcpv6-client grafana pmproxy ssh
[root@rocky1 ~]# firewall-cmd --add-service=telnet
success
[root@rocky1 ~]# firewall-cmd --list-services
cockpit dhcpv6-client grafana pmproxy ssh telnet








permanent 적용 후 reload=rel

[root@rocky1 ~]# firewall-cmd --list-ports
              # 현재 포트가 없음
[root@rocky1 ~]# firewall-cmd --add-port=50015/tcp # 임시적용
success
[root@rocky1 ~]# firewall-cmd --add-port=50050/tcp --permanent # 영구적용
success
[root@rocky1 ~]# firewall-cmd --list-ports
50015/tcp      # 일시 설정한 50015만 적용되어있음
[root@rocky1 ~]# firewall-cmd --reload
success         # 추가 또는 삭제 시 reload를 해야 바로 적용된다
[root@rocky1 ~]# firewall-cmd --list-ports
50050/tcp      # 일시 설정한 50015는 사라지고 영구 설정한 50050만 적용



remove제거 

[root@rocky1 ~]# firewall-cmd --list-ports
50050/tcp
[root@rocky1 ~]# firewall-cmd --remove-port=50050/tcp
success
[root@rocky1 ~]# firewall-cmd --list-ports
         
[root@rocky1 ~]# firewall-cmd --reload
success      # 추가 또는 삭제 시 reload를 해야 바로 적용된다
[root@rocky1 ~]# firewall-cmd --list-ports
50050/tcp    # 일시 삭제라 reload하면 다시 복구됨
[root@rocky1 ~]# firewall-cmd --remove-port=50050/tcp --permanent
success
[root@rocky1 ~]# firewall-cmd --reload
success
[root@rocky1 ~]# firewall-cmd --list-ports 

          # 영구 삭제를 해야 완전 삭제됨



zone 변경

[root@rocky1 ~]# firewall-cmd --get-default-zone
public     # 현재 zone은 public
[root@rocky1 ~]# firewall-cmd --set-default-zone=dmz
success
[root@rocky1 ~]# firewall-cmd --get-default-zone
dmz       # 현재 zone이 dmz로 변경




3. ssh의 포트를 변경해서 다른 pc에 접속

 

  1. 서버설정
[root@rocky1 ~]# vi /etc/ssh/sshd_config

 

  1. sshd_config에서 ssh의 port지정
# vi편집창
...
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
Port 41234
...

# vi 종료

 

  1. sshd를 재시작해 port 적용
[root@rocky1 ~]# systemctl restart sshd
[root@rocky1 ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
...
May 11 11:21:21 rocky1 systemd[1]: Starting OpenSSH server daemon...
May 11 11:21:21 rocky1 sshd[11528]: Server listening on 0.0.0.0 port 41234.
May 11 11:21:21 rocky1 sshd[11528]: Server listening on :: port 41234.
May 11 11:21:21 rocky1 systemd[1]: Started OpenSSH server daemon.
# ssh에 41234 포트 적용

 

  1. firewall에 41234 port 허용
[root@rocky1 ~]# firewall-cmd --add-port=41234/tcp --permanent
success
[root@rocky1 ~]# firewall-cmd --reload
success

 

  1. 다른 pc에서 접속

접속할 pc에서는 port를 바꾸지 않아도 -p 명령어로 port를 지정해 접속가능

[root@rocky2 ~]# ssh root@192.168.20.21 -p 41234
Web console: https://rocky1:9090/ or https://192.168.20.21:9090/

Last login: Thu May 11 11:27:25 2023 from 192.168.20.34

 

'리눅스-기초명령어 > 보안' 카테고리의 다른 글

authselect  (0) 2023.09.01
PAM  (1) 2023.09.01
selinux  (1) 2023.09.01