기본적으로 설치된 iptables를 사용하여 설정을 합니다.

– 기본 SSH 인 22번 포트만 허용된 상태입니다.
– 웹서비스(www)를 위해 22 설정 아래에 TCP 80 을 추가합니다.
– 웹서버에 SSL 인증서가 설치되어 https 주소로 서비스하는 경우 TCP 443 추가합니다.

 # vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel# Manual customization of this file is not recommended.
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp — dport 443 -j ACCEPT

COMMIT

 

방화벽을 사용하여 특정 IP 허용

-A INPUT -s ip 주소 -j ACCEPT

 

방화벽을 사용하여 특정 IP 차단

-A INPUT -s ip 주소 -j DROP

 

방화벽을 사용하여 특정 Port 허용

-A INPUT -p tcp –dport 443 -j ACCEPT

 

방화벽을 사용하여 특정 Port 차단

-A INPUT -p tcp –dport 443 -j DROP

 

방화벽을 사용하여 특정 IP와 Port 차단

-A INPUT -s 172.20.3.**-p tcp –dport 22 -j DROP

 

방화벽을 사용하여 특정 IP와 Port를 차단한 후 방어된 로그 설정

-I INPUT -s 172.20.3.** -p tcp –dport 22 -j LOG –log-prefix “[PLURA SSH Defend]”

 

아래의 내용은 [Plura서비스]에서 보여지는 로그입니다.

{“@ceelog”: {“timegenerated”:”2016-06-09T19:52:30.001446+09:00″,”programname”:”kernel”,”hostname”:”centos6″,”syslogtag”:”kernel:”,”pri”:”4″,”pri-text”:”kern.warning”,”syslogfacility”:”0″,”syslogfacility-text”:”kern”,”syslogseverity”:”4″,”syslogseverity-text”:”warning”,”msg”:”[PLURA SSH Defend]IN=eth0 OUT= MAC=08:00:27:d6:c6:1b:08:00:27:36:6b:8a:08:00 SRC=172.20.3.87 DST=172.20.3.84 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=4198 DF PROTO=TCP SPT=34381 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0“}}

 

 

방화벽 설정이 완료되면, 방화벽을 재시작해줍니다.

# /etc/init.d/iptables restart 또는 service iptables restart

 

[CentOS 7] firewall 사용방법

기본 방화벽 시스템이 변경되었습니다. 이전에는 iptables를 사용했는데 CentOS 7 에서는 ‘firewalld’라는 방화벽 시스템이 기본으로 탑재되었습니다.

  • 방화벽에는 zone(영역)이라는 것이 존재합니다. 개방된 네트워크와 연결되어 있다면 public zone(공개영역)에 있는 룰이 적용되고, 개인 네트워크에 있다면 다른 zone의 룰을 적용할 수 있습니다.
  • 우리는 서버 용도로 리눅스를 사용하기 때문에 개방된 public zone만 필요합니다. 또한 방화벽에는 public zone이 기본 zone으로 설정되어있습니다.  방화벽 설정 파일에서 변경 가능합니다.

public zone의 설정 파일

# vi /etc/firewalld/zones/public.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<zone>

 <short>Public</short>

 <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>

 <service name=”dhcpv6-client”/>

 <service name=”http”/>

 <service name=”ssh”/>

 <port protocol=”tcp” port=”80″/>

 <port protocol=”tcp” port=”8080″/>

</zone>

 

 

방화벽 재시작

# firewall-cmd –reload

  • 설정 파일은 xml 형식으로 되어있으며, firewall-cmd –permanent –zone=public 명령으로 추가했던 룰들이 저장 되어있습니다. zone의 설정 파일을 변경할 경우 방화벽 재로드를 해야 반영이 됩니다.
    * ( –permanent 와 –zone앞에는 -가 2번 들어갑니다. copy&paste 할 경우 명령어가 실행되지않습니다)*
  • 참고로 설정 파일에 추가된 룰은 영구 반영됩니다. 만약 – permanent 옵션을 넣지 않으면, 일시적으로 즉시 반영됨을 의미합니다.(재부팅할 경우 zone의 설정 파일에 추가 되지않은 룰은 전부 삭제됨. )

 

포트 추가/제거

추가 # firewall-cmd –permanent –zone=public –add-port=80/tcp

제거 # firewall-cmd –permanent –zone=public –remove-port=80/tcp

재시작 # firewall-cmd –reload

 

서비스 추가/제거

추가 # firewall-cmd –permanent –zone=public –add-service=http

제거 # firewall-cmd –permanent –zone=public –remove-service=http

재시작 # firewall-cmd –reload

 

임의의 룰 추가/제거

추가 # firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=ipv4 source address= 192.168.0.4/24 service name=http accept”

제거 # firewall-cmd –permanent –zone=public –remove-service=http”rule family=ipv4 source address= 192.168.0.4/24 service name=http accept”

재시작 # firewall-cmd –reload

 

[응용] http 서비스에서 특정 ip 차단 추가 및 해제

차단 # firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=ipv4 source address= 192.168.0.4 service name=http reject”

해제 # firewall-cmd –permanent –zone=public –remove-service=http”rule family=ipv4 source address= 192.168.0.4 service name=http reject”

재시작 # firewall-cmd –reload

 

허용한 포트 목록

# firewall-cmd –list-ports

 

방화벽 상태 확인

# firewall-cmd –state

 

활성화된 zone 목록

# firewall-cmd –get-active-zones

 

현재 존재하는 서비스 목록

# firewall-cmd –get-service

 

public zone에 있는 서비스 목록

# firewall-cmd –zone=public –list-services

 

 

[CentOS 7] iptables 사용방법

현재 작동 중인 firewalld 데몬을 중지 시킨 후 재부팅시에도 올라오지 않도록 설정합니다.

# systemctl stop firewalld

# systemctl mask firewalld

 

iptables 를 설치합니다.(OS설치시 웹서버 구성으로 설치시 자동 설치됨)

# yum install iptables-services

 

iptables 서비스 데몬 재부팅시 자동 설정합니다.

# systemctl enable iptables

 

iptables 서비스 시작합니다.(시작/재시작/중지)

# systemctl start/restart/stop iptables

 

iptables 재시작합니다.

# systemctl restart iptables

[출처]

oracle-base.com https://oracle-base.com/articles/linux/linux-firewall-firewalld

'프로그래밍 > linux' 카테고리의 다른 글

리눅스 메모리 사용량순 프로세스 보기  (0) 2019.04.09
리눅스 패스워드 털렸는지 확인하기  (0) 2018.04.05
IPTABLE  (0) 2018.03.26
스태틱 라우팅 설정  (0) 2018.03.13
CentOS 7 - 리눅스 방화벽 firewalld  (0) 2018.03.13

+ Recent posts