RedHat, CentOS, Fedora 배포본 등에서 표준 방화벽 인터페이스로 제공되는 최신 FirewallD 사용을 시작해 보자. firewalld
패키지 설치는 각 배포본의 방법으로 설치하면 된다.
여기서는 OpenSUSE, Armbian 배포본을 설치한 시스템에서 firewalld
방화벽을 구성하고 설정하는 과정을 요약 정리했다.
RedHat, CentOS, Fedora 배포본 등에서 표준 방화벽 인터페이스로 제공되는 최신 FirewallD 사용을 시작해 보자. firewalld
패키지 설치는 각 배포본의 방법으로 설치하면 된다.
여기서는 OpenSUSE, Armbian 배포본을 설치한 시스템에서 firewalld
방화벽을 구성하고 설정하는 과정을 요약 정리했다.
iptables Firewall on Ubuntu/Debian
일반적인 리눅스 배포본의 기본 방화벽인 iptables
를 쉽게 사용할 수 있는 ufw
를 사용해서 리눅스에 방화벽을 구축하는 방법을 기술하고 있다.
iptables로 당연히 방화벽을 관리할 수 있다.
iptables -L
플래그방화벽 룰, 액션에 대해 INPUT, OUTPUT, FORWARD 정보를 볼 수 있다.
1 | $ sudo iptables -L |
우리 대신 사용 하 여 각 규칙 및 정책을 사용 하는 데 필요한 명령을 반영 하는 형식으로 출력을 볼 수 있는
1 | $ sudo iptables -S |
규칙을 모두 리플레시 할 수 있다
1 | sudo iptables -F |
모든 규칙은 DENY -> 일부 허용 순서로 한다. 그래서 TCP 로 1번부터 65526번 포트까지 다 막는 방법이다. 만약 UDP도 막고싶다면,
1 | sudo iptables -A INPUT -p tcp --dport 1:65526 -j DROP |
1 | sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT |
혹은 ip address 를 기반으로 설정할 수 있다.
1 | iptables -I INPUT -p tcp --dport 22 -s 222.222.222.222 -j ACCEPT |
8080번으로 들어오는 포트를 80 번으로 바꾸기
1 | sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT |
iptables정보를 저장하고 재부팅 이후에도 동작하도록 설정함. <= vi 로 열어서 맨 마지막에 추가함.
1 | sudo sh -c "iptables-save > /backup/iptables.rules" |
기본 httpd 사용을 위한 80번 포트 개방과, node.js, python 등 실습을 위한 8080번 포트를 열어 주기 위해서 /etc/sysconfig/iptables
에 아래와 같이 입력한다.
1 | -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT |
iptables 규칙을 만들 때는 순서가 매우 중요하다.
이 때 주의해야 할 것은 위의 4개 코드가 빨간 색의 코드보다 반드시 위에 적혀 있어야 한다.
예를 들어 만일 chain에서 로컬 192.168.100.0/24 서브넷에서 들어오는 모든 패킷을 drop하도록 지정한 후 (drop 하도록 지정된 서브넷에 포함되는) 192.168.100.13에서 들어오는 패킷을 모드 허용하는 chain (-A)을 그 후에 추가하면 뒤에 추가된 추가 규칙이 무시된다.
먼저 192.168.100.13를 허용하는 규칙을 설정한 후 서브넷을 drop하는 규칙을 설정해야한다.
이후에
service iptables restart
명령어를 실행해주면 2개의 포트가 열러서 정상적으로 외부접속이 가능해지는 것을 확인할 수 있다.
로그에 있는 IP 목록을 출력
1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u |
iptables
명령으로 막혀있는 ip address를 출력해 보자. [^3]
1 | $ sudo iptables -L -n --line |
1 | $ sudo iptables -L INPUT -v -n |
Ubuntu/Debian Basic Security settings
리눅스 시스템을 설치후 기본적인 보안 설정과 도구를 사용하는 과정을 정리했다.
사용자 로그인에 제약을 두고, 원격 접속에 대해서 방화벽과 sshd 보안을 강화한다.
일반적인 리눅스 배포본의 방화벽인 ufw` 를 사용해서 리눅스에 방화벽을 구축하는 방법을 기술하고 있다.
- 2019-12-10: 정리
- 2017-09-10: Log, export 추가서
{:.right-history}
여기서 사용, 테스트한 리눅스 배포본은 Ubuntu 14.04, 15.04, 16.04 계열에서 동작하리라 믿는다. 실제 Raspbian Weezy, Jessie, Armbian Ubuntu 16.04, Debian Jessie 에서 사용중이다.