방화벽 설정 관리 iptables, firewalld

Iptables 명령어를 이용한 방화벽 관리

Iptables 명령어는 Cent OS 6이하에서 사용하는 방화벽 설정 관리 명령이다.

방화벽 설정 확인 후 삭제

방화벽 설정 상태를 보려면 -L 옵션을 이용해 목록을 표시할 수 있다.

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:40050
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:40050

iptables -L 옵션을 주었을때 출력되는 prot 열은 프로토콜을 의미하며, 프로토콜의 종류로 tcp, udp, icmp, 또는 all가 있다. 이때 방화벽이 입력에 대한 방화벽이라면 INPUT 체인으로 묶어서 관리하고, 외부로 나가는 것과 관련한 방화벽이면 OUTPUT 체인으로 관리한다. 만약 NAT(Network Address Translation)으로 사설 네트워크를 사용하려면 FORWARD 체인을 이용한다. 특정 체인명만 출력 하려면 -L 옵션 뒤에 <체인명>을 전달해 준다.

iptables -L OUTPUT --line-numbers
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             anywhere             tcp spt:9000
2    ACCEPT     tcp  --  anywhere             anywhere             tcp spt:9000

만약 ‘IP 주소와 포트번호를 포함한 numeric 형식으로 표시하려면 -n옵션을 추가한다.

iptables -nL

특정 체인에 특정 번호를 삭제하는 명령어 형식은 다음과 같다.

iptables -D <chain name> <rule number>

만약 OUTPUT 체인명의 1번째 RULE을 삭제하려면 다음과 같이 입력해 준다.

iptables -D OUTPUT 1

방화벽 설정 적용

service iptables restart # 재시작
service iptables start # 시작
service iptables stop  # 중지
service iptables save  # iptables 내용을 실재 /etc/sysconfig/iptables에 저장

firewall 명령어를 이용한 방화벽 설정관리

CentOS 7이상 부터 firewall 명령어를 이용한다.

방화벽 상태 확인

$ firewall-cmd --state

방화벽 설정

새로운 방화벽 설정 규칙을 추가하기 위해 -A(–append) 옵션을 이용한다.

firewall-cmd --zone=public --add-port=9000/tcp # 9000 포트 추가
firewall-cmd --permanent --add-remove=9000/tcp # 9000 포트 삭제

방화벽 적용 관리

CentOS7부터 방화벽 설정 방법이 firewalld로 바뀌었다.

systemctl restart firewalld

systemctl 관련 명령어를 나열해 보면 다음과 같다.

systemctl enable firewalld # 방화벽 사용
systemctl disable firewalld # 방화벽 비사용
systemctl start firewalld # 방화벽 시작
systemctl stop firewalld # 방화벽 중지