기본적으로 설치된 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 |